@codepress/blog 0.2.1 → 0.3.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.
@@ -0,0 +1,3 @@
1
+ /*! @codepress/blog editor.css: the editor's styles, scoped to .cp-blog-editor */
2
+ @supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){.cp-blog-editor *,*.cp-blog-editor,.cp-blog-editor :before,.cp-blog-editor:before,.cp-blog-editor :after,.cp-blog-editor:after,.cp-blog-editor ::backdrop,.cp-blog-editor::backdrop{--cp-blog-editor-tw-translate-x:0;--cp-blog-editor-tw-translate-y:0;--cp-blog-editor-tw-translate-z:0;--cp-blog-editor-tw-space-y-reverse:0;--cp-blog-editor-tw-border-style:solid;--cp-blog-editor-tw-leading:initial;--cp-blog-editor-tw-font-weight:initial;--cp-blog-editor-tw-tracking:initial;--cp-blog-editor-tw-shadow:0 0 #0000;--cp-blog-editor-tw-shadow-color:initial;--cp-blog-editor-tw-shadow-alpha:100%;--cp-blog-editor-tw-inset-shadow:0 0 #0000;--cp-blog-editor-tw-inset-shadow-color:initial;--cp-blog-editor-tw-inset-shadow-alpha:100%;--cp-blog-editor-tw-ring-color:initial;--cp-blog-editor-tw-ring-shadow:0 0 #0000;--cp-blog-editor-tw-inset-ring-color:initial;--cp-blog-editor-tw-inset-ring-shadow:0 0 #0000;--cp-blog-editor-tw-ring-inset:initial;--cp-blog-editor-tw-ring-offset-width:0px;--cp-blog-editor-tw-ring-offset-color:#fff;--cp-blog-editor-tw-ring-offset-shadow:0 0 #0000;--cp-blog-editor-tw-blur:initial;--cp-blog-editor-tw-brightness:initial;--cp-blog-editor-tw-contrast:initial;--cp-blog-editor-tw-grayscale:initial;--cp-blog-editor-tw-hue-rotate:initial;--cp-blog-editor-tw-invert:initial;--cp-blog-editor-tw-opacity:initial;--cp-blog-editor-tw-saturate:initial;--cp-blog-editor-tw-sepia:initial;--cp-blog-editor-tw-drop-shadow:initial;--cp-blog-editor-tw-drop-shadow-color:initial;--cp-blog-editor-tw-drop-shadow-alpha:100%;--cp-blog-editor-tw-drop-shadow-size:initial;--cp-blog-editor-tw-backdrop-blur:initial;--cp-blog-editor-tw-backdrop-brightness:initial;--cp-blog-editor-tw-backdrop-contrast:initial;--cp-blog-editor-tw-backdrop-grayscale:initial;--cp-blog-editor-tw-backdrop-hue-rotate:initial;--cp-blog-editor-tw-backdrop-invert:initial;--cp-blog-editor-tw-backdrop-opacity:initial;--cp-blog-editor-tw-backdrop-saturate:initial;--cp-blog-editor-tw-backdrop-sepia:initial;--cp-blog-editor-tw-duration:initial;--cp-blog-editor-tw-content:""}}.cp-blog-editor.cp-blog-editor{--font-sans:var(--cp-blog-editor-font,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-gray-200:oklch(92.8% .006 264.531);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--radius-xl:.75rem;--animate-pulse:cp-blog-editor-pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--cp-blog-editor-font,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");--default-mono-font-family:var(--font-mono)}.cp-blog-editor *,*.cp-blog-editor,.cp-blog-editor :after,.cp-blog-editor:after,.cp-blog-editor :before,.cp-blog-editor:before,.cp-blog-editor ::backdrop,.cp-blog-editor::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}.cp-blog-editor ::file-selector-button,.cp-blog-editor::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}.cp-blog-editor.cp-blog-editor{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}.cp-blog-editor hr,hr.cp-blog-editor{height:0;color:inherit;border-top-width:1px}.cp-blog-editor abbr:where([title]),abbr:where([title]).cp-blog-editor{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.cp-blog-editor h1,h1.cp-blog-editor,.cp-blog-editor h2,h2.cp-blog-editor,.cp-blog-editor h3,h3.cp-blog-editor,.cp-blog-editor h4,h4.cp-blog-editor,.cp-blog-editor h5,h5.cp-blog-editor,.cp-blog-editor h6,h6.cp-blog-editor{font-size:inherit;font-weight:inherit}.cp-blog-editor a,a.cp-blog-editor{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.cp-blog-editor b,b.cp-blog-editor,.cp-blog-editor strong,strong.cp-blog-editor{font-weight:bolder}.cp-blog-editor code,code.cp-blog-editor,.cp-blog-editor kbd,kbd.cp-blog-editor,.cp-blog-editor samp,samp.cp-blog-editor,.cp-blog-editor pre,pre.cp-blog-editor{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}.cp-blog-editor small,small.cp-blog-editor{font-size:80%}.cp-blog-editor sub,sub.cp-blog-editor,.cp-blog-editor sup,sup.cp-blog-editor{vertical-align:baseline;font-size:75%;line-height:0;position:relative}.cp-blog-editor sub,sub.cp-blog-editor{bottom:-.25em}.cp-blog-editor sup,sup.cp-blog-editor{top:-.5em}.cp-blog-editor table,table.cp-blog-editor{text-indent:0;border-color:inherit;border-collapse:collapse}.cp-blog-editor :-moz-focusring,:-moz-focusring.cp-blog-editor{outline:auto}.cp-blog-editor progress,progress.cp-blog-editor{vertical-align:baseline}.cp-blog-editor summary,summary.cp-blog-editor{display:list-item}.cp-blog-editor ol,ol.cp-blog-editor,.cp-blog-editor ul,ul.cp-blog-editor,.cp-blog-editor menu,menu.cp-blog-editor{list-style:none}.cp-blog-editor img,img.cp-blog-editor,.cp-blog-editor svg,svg.cp-blog-editor,.cp-blog-editor video,video.cp-blog-editor,.cp-blog-editor canvas,canvas.cp-blog-editor,.cp-blog-editor audio,audio.cp-blog-editor,.cp-blog-editor iframe,iframe.cp-blog-editor,.cp-blog-editor embed,embed.cp-blog-editor,.cp-blog-editor object,object.cp-blog-editor{vertical-align:middle;display:block}.cp-blog-editor img,img.cp-blog-editor,.cp-blog-editor video,video.cp-blog-editor{max-width:100%;height:auto}.cp-blog-editor button,button.cp-blog-editor,.cp-blog-editor input,input.cp-blog-editor,.cp-blog-editor select,select.cp-blog-editor,.cp-blog-editor optgroup,optgroup.cp-blog-editor,.cp-blog-editor textarea,textarea.cp-blog-editor{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}.cp-blog-editor ::file-selector-button,.cp-blog-editor::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}.cp-blog-editor :where(select:is([multiple],[size])) optgroup,:where(select:is([multiple],[size])).cp-blog-editor optgroup{font-weight:bolder}.cp-blog-editor :where(select:is([multiple],[size])) optgroup option,:where(select:is([multiple],[size])).cp-blog-editor optgroup option{padding-inline-start:20px}.cp-blog-editor ::file-selector-button,.cp-blog-editor::file-selector-button{margin-inline-end:4px}.cp-blog-editor ::placeholder,.cp-blog-editor::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){.cp-blog-editor ::placeholder,.cp-blog-editor::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){.cp-blog-editor ::placeholder,.cp-blog-editor::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}.cp-blog-editor textarea,textarea.cp-blog-editor{resize:vertical}.cp-blog-editor ::-webkit-search-decoration,.cp-blog-editor::-webkit-search-decoration{-webkit-appearance:none}.cp-blog-editor ::-webkit-date-and-time-value,.cp-blog-editor::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}.cp-blog-editor ::-webkit-datetime-edit,.cp-blog-editor::-webkit-datetime-edit{display:inline-flex}.cp-blog-editor ::-webkit-datetime-edit-fields-wrapper,.cp-blog-editor::-webkit-datetime-edit-fields-wrapper{padding:0}.cp-blog-editor ::-webkit-datetime-edit,.cp-blog-editor::-webkit-datetime-edit{padding-block:0}.cp-blog-editor ::-webkit-datetime-edit-year-field,.cp-blog-editor::-webkit-datetime-edit-year-field{padding-block:0}.cp-blog-editor ::-webkit-datetime-edit-month-field,.cp-blog-editor::-webkit-datetime-edit-month-field{padding-block:0}.cp-blog-editor ::-webkit-datetime-edit-day-field,.cp-blog-editor::-webkit-datetime-edit-day-field{padding-block:0}.cp-blog-editor ::-webkit-datetime-edit-hour-field,.cp-blog-editor::-webkit-datetime-edit-hour-field{padding-block:0}.cp-blog-editor ::-webkit-datetime-edit-minute-field,.cp-blog-editor::-webkit-datetime-edit-minute-field{padding-block:0}.cp-blog-editor ::-webkit-datetime-edit-second-field,.cp-blog-editor::-webkit-datetime-edit-second-field{padding-block:0}.cp-blog-editor ::-webkit-datetime-edit-millisecond-field,.cp-blog-editor::-webkit-datetime-edit-millisecond-field{padding-block:0}.cp-blog-editor ::-webkit-datetime-edit-meridiem-field,.cp-blog-editor::-webkit-datetime-edit-meridiem-field{padding-block:0}.cp-blog-editor ::-webkit-calendar-picker-indicator,.cp-blog-editor::-webkit-calendar-picker-indicator{line-height:1}.cp-blog-editor :-moz-ui-invalid,:-moz-ui-invalid.cp-blog-editor{box-shadow:none}.cp-blog-editor button,button.cp-blog-editor,.cp-blog-editor input:where([type=button],[type=reset],[type=submit]),input:where([type=button],[type=reset],[type=submit]).cp-blog-editor{appearance:button}.cp-blog-editor ::file-selector-button,.cp-blog-editor::file-selector-button{appearance:button}.cp-blog-editor ::-webkit-inner-spin-button,.cp-blog-editor::-webkit-inner-spin-button{height:auto}.cp-blog-editor ::-webkit-outer-spin-button,.cp-blog-editor::-webkit-outer-spin-button{height:auto}.cp-blog-editor [hidden]:where(:not([hidden=until-found])),[hidden]:where(:not([hidden=until-found])).cp-blog-editor{display:none!important}.cp-blog-editor *,*.cp-blog-editor{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.cp-blog-editor *,*.cp-blog-editor{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.cp-blog-editor.cp-blog-editor{color:var(--foreground);font-family:var(--font-sans)}.cp-blog-editor button,button.cp-blog-editor{cursor:pointer}.cp-blog-editor .invisible,.invisible.cp-blog-editor{visibility:hidden}.cp-blog-editor .visible,.visible.cp-blog-editor{visibility:visible}.cp-blog-editor .sr-only,.sr-only.cp-blog-editor{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.cp-blog-editor .absolute,.absolute.cp-blog-editor{position:absolute}.cp-blog-editor .fixed,.fixed.cp-blog-editor{position:fixed}.cp-blog-editor .relative,.relative.cp-blog-editor{position:relative}.cp-blog-editor .sticky,.sticky.cp-blog-editor{position:sticky}.cp-blog-editor .start,.start.cp-blog-editor{inset-inline-start:var(--spacing)}.cp-blog-editor .end,.end.cp-blog-editor{inset-inline-end:var(--spacing)}.cp-blog-editor .top-2,.top-2.cp-blog-editor{top:calc(var(--spacing) * 2)}.cp-blog-editor .top-full,.top-full.cp-blog-editor{top:100%}.cp-blog-editor .right-2,.right-2.cp-blog-editor{right:calc(var(--spacing) * 2)}.cp-blog-editor .right-3,.right-3.cp-blog-editor{right:calc(var(--spacing) * 3)}.cp-blog-editor .right-6,.right-6.cp-blog-editor{right:calc(var(--spacing) * 6)}.cp-blog-editor .bottom-6,.bottom-6.cp-blog-editor{bottom:calc(var(--spacing) * 6)}.cp-blog-editor .left-0,.left-0.cp-blog-editor{left:calc(var(--spacing) * 0)}.cp-blog-editor .left-1\/2,.left-1\/2.cp-blog-editor{left:50%}.cp-blog-editor .z-10,.z-10.cp-blog-editor{z-index:10}.cp-blog-editor .z-40,.z-40.cp-blog-editor{z-index:40}.cp-blog-editor .z-50,.z-50.cp-blog-editor{z-index:50}.cp-blog-editor .z-\[10050\],.z-\[10050\].cp-blog-editor{z-index:10050}.cp-blog-editor .container,.container.cp-blog-editor{width:100%}@media (min-width:40rem){.cp-blog-editor .container,.container.cp-blog-editor{max-width:40rem}}@media (min-width:48rem){.cp-blog-editor .container,.container.cp-blog-editor{max-width:48rem}}@media (min-width:64rem){.cp-blog-editor .container,.container.cp-blog-editor{max-width:64rem}}@media (min-width:80rem){.cp-blog-editor .container,.container.cp-blog-editor{max-width:80rem}}@media (min-width:96rem){.cp-blog-editor .container,.container.cp-blog-editor{max-width:96rem}}.cp-blog-editor .-mx-1,.-mx-1.cp-blog-editor{margin-inline:calc(var(--spacing) * -1)}.cp-blog-editor .mx-1,.mx-1.cp-blog-editor{margin-inline:calc(var(--spacing) * 1)}.cp-blog-editor .mx-auto,.mx-auto.cp-blog-editor{margin-inline:auto}.cp-blog-editor .my-1,.my-1.cp-blog-editor{margin-block:calc(var(--spacing) * 1)}.cp-blog-editor .my-6,.my-6.cp-blog-editor{margin-block:calc(var(--spacing) * 6)}.cp-blog-editor .prose,.prose.cp-blog-editor{color:var(--cp-blog-editor-tw-prose-body);max-width:65ch}.cp-blog-editor .prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.cp-blog-editor .prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.cp-blog-editor .prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-links);font-weight:500;text-decoration:underline}.cp-blog-editor .prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-bold);font-weight:600}.cp-blog-editor .prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.cp-blog-editor .prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.cp-blog-editor .prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.cp-blog-editor .prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.cp-blog-editor .prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.cp-blog-editor .prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.cp-blog-editor .prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.cp-blog-editor .prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.cp-blog-editor .prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.cp-blog-editor .prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.cp-blog-editor .prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.cp-blog-editor .prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.cp-blog-editor .prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.cp-blog-editor .prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.cp-blog-editor .prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker,.prose.cp-blog-editor :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--cp-blog-editor-tw-prose-counters);font-weight:400}.cp-blog-editor .prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker,.prose.cp-blog-editor :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--cp-blog-editor-tw-prose-bullets)}.cp-blog-editor .prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-headings);margin-top:1.25em;font-weight:600}.cp-blog-editor .prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--cp-blog-editor-tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.cp-blog-editor .prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--cp-blog-editor-tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.cp-blog-editor .prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose.cp-blog-editor :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.cp-blog-editor .prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose.cp-blog-editor :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.cp-blog-editor .prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.cp-blog-editor .prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.cp-blog-editor .prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.cp-blog-editor .prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.cp-blog-editor .prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.cp-blog-editor .prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.cp-blog-editor .prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.cp-blog-editor .prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.cp-blog-editor .prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.cp-blog-editor .prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.cp-blog-editor .prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.cp-blog-editor .prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-kbd);box-shadow:0 0 0 1px var(--cp-blog-editor-tw-prose-kbd-shadows), 0 3px 0 var(--cp-blog-editor-tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.cp-blog-editor .prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-code);font-size:.875em;font-weight:600}.cp-blog-editor .prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose.cp-blog-editor :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.cp-blog-editor .prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose.cp-blog-editor :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.cp-blog-editor .prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.cp-blog-editor .prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.cp-blog-editor .prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.cp-blog-editor .prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.cp-blog-editor .prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.cp-blog-editor .prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.cp-blog-editor .prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.cp-blog-editor .prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-pre-code);background-color:var(--cp-blog-editor-tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.cp-blog-editor .prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.cp-blog-editor .prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose.cp-blog-editor :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.cp-blog-editor .prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose.cp-blog-editor :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.cp-blog-editor .prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.cp-blog-editor .prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--cp-blog-editor-tw-prose-th-borders)}.cp-blog-editor .prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.cp-blog-editor .prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--cp-blog-editor-tw-prose-td-borders)}.cp-blog-editor .prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.cp-blog-editor .prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.cp-blog-editor .prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--cp-blog-editor-tw-prose-th-borders)}.cp-blog-editor .prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.cp-blog-editor .prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.cp-blog-editor .prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.cp-blog-editor .prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--cp-blog-editor-tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.cp-blog-editor .prose,.prose.cp-blog-editor{--cp-blog-editor-tw-prose-body:oklch(37.3% .034 259.733);--cp-blog-editor-tw-prose-headings:oklch(21% .034 264.665);--cp-blog-editor-tw-prose-lead:oklch(44.6% .03 256.802);--cp-blog-editor-tw-prose-links:oklch(21% .034 264.665);--cp-blog-editor-tw-prose-bold:oklch(21% .034 264.665);--cp-blog-editor-tw-prose-counters:oklch(55.1% .027 264.364);--cp-blog-editor-tw-prose-bullets:oklch(87.2% .01 258.338);--cp-blog-editor-tw-prose-hr:oklch(92.8% .006 264.531);--cp-blog-editor-tw-prose-quotes:oklch(21% .034 264.665);--cp-blog-editor-tw-prose-quote-borders:oklch(92.8% .006 264.531);--cp-blog-editor-tw-prose-captions:oklch(55.1% .027 264.364);--cp-blog-editor-tw-prose-kbd:oklch(21% .034 264.665);--cp-blog-editor-tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--cp-blog-editor-tw-prose-code:oklch(21% .034 264.665);--cp-blog-editor-tw-prose-pre-code:oklch(92.8% .006 264.531);--cp-blog-editor-tw-prose-pre-bg:oklch(27.8% .033 256.848);--cp-blog-editor-tw-prose-th-borders:oklch(87.2% .01 258.338);--cp-blog-editor-tw-prose-td-borders:oklch(92.8% .006 264.531);--cp-blog-editor-tw-prose-invert-body:oklch(87.2% .01 258.338);--cp-blog-editor-tw-prose-invert-headings:#fff;--cp-blog-editor-tw-prose-invert-lead:oklch(70.7% .022 261.325);--cp-blog-editor-tw-prose-invert-links:#fff;--cp-blog-editor-tw-prose-invert-bold:#fff;--cp-blog-editor-tw-prose-invert-counters:oklch(70.7% .022 261.325);--cp-blog-editor-tw-prose-invert-bullets:oklch(44.6% .03 256.802);--cp-blog-editor-tw-prose-invert-hr:oklch(37.3% .034 259.733);--cp-blog-editor-tw-prose-invert-quotes:oklch(96.7% .003 264.542);--cp-blog-editor-tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--cp-blog-editor-tw-prose-invert-captions:oklch(70.7% .022 261.325);--cp-blog-editor-tw-prose-invert-kbd:#fff;--cp-blog-editor-tw-prose-invert-kbd-shadows:#ffffff1a;--cp-blog-editor-tw-prose-invert-code:#fff;--cp-blog-editor-tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--cp-blog-editor-tw-prose-invert-pre-bg:#00000080;--cp-blog-editor-tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--cp-blog-editor-tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.cp-blog-editor .prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.cp-blog-editor .prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.cp-blog-editor .prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.cp-blog-editor .prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.cp-blog-editor .prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.cp-blog-editor .prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.cp-blog-editor .prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.cp-blog-editor .prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.cp-blog-editor .prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.cp-blog-editor .prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.cp-blog-editor .prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.cp-blog-editor .prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.cp-blog-editor .prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.cp-blog-editor .prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.cp-blog-editor .prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.cp-blog-editor .prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.cp-blog-editor .prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.cp-blog-editor .prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.cp-blog-editor .prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.cp-blog-editor .prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.cp-blog-editor .prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.cp-blog-editor .prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.cp-blog-editor .prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.cp-blog-editor .prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)),.prose.cp-blog-editor :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.cp-blog-editor .mt-0\.5,.mt-0\.5.cp-blog-editor{margin-top:calc(var(--spacing) * .5)}.cp-blog-editor .mt-1,.mt-1.cp-blog-editor{margin-top:calc(var(--spacing) * 1)}.cp-blog-editor .mt-1\.5,.mt-1\.5.cp-blog-editor{margin-top:calc(var(--spacing) * 1.5)}.cp-blog-editor .mt-2,.mt-2.cp-blog-editor{margin-top:calc(var(--spacing) * 2)}.cp-blog-editor .mt-3,.mt-3.cp-blog-editor{margin-top:calc(var(--spacing) * 3)}.cp-blog-editor .mt-4,.mt-4.cp-blog-editor{margin-top:calc(var(--spacing) * 4)}.cp-blog-editor .mt-6,.mt-6.cp-blog-editor{margin-top:calc(var(--spacing) * 6)}.cp-blog-editor .mb-1,.mb-1.cp-blog-editor{margin-bottom:calc(var(--spacing) * 1)}.cp-blog-editor .mb-4,.mb-4.cp-blog-editor{margin-bottom:calc(var(--spacing) * 4)}.cp-blog-editor .mb-8,.mb-8.cp-blog-editor{margin-bottom:calc(var(--spacing) * 8)}.cp-blog-editor .ml-1,.ml-1.cp-blog-editor{margin-left:calc(var(--spacing) * 1)}.cp-blog-editor .block,.block.cp-blog-editor{display:block}.cp-blog-editor .contents,.contents.cp-blog-editor{display:contents}.cp-blog-editor .flex,.flex.cp-blog-editor{display:flex}.cp-blog-editor .grid,.grid.cp-blog-editor{display:grid}.cp-blog-editor .hidden,.hidden.cp-blog-editor{display:none}.cp-blog-editor .inline,.inline.cp-blog-editor{display:inline}.cp-blog-editor .inline-block,.inline-block.cp-blog-editor{display:inline-block}.cp-blog-editor .inline-flex,.inline-flex.cp-blog-editor{display:inline-flex}.cp-blog-editor .table,.table.cp-blog-editor{display:table}.cp-blog-editor .size-2\.5,.size-2\.5.cp-blog-editor{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.cp-blog-editor .h-2,.h-2.cp-blog-editor{height:calc(var(--spacing) * 2)}.cp-blog-editor .h-3\.5,.h-3\.5.cp-blog-editor{height:calc(var(--spacing) * 3.5)}.cp-blog-editor .h-4,.h-4.cp-blog-editor{height:calc(var(--spacing) * 4)}.cp-blog-editor .h-5,.h-5.cp-blog-editor{height:calc(var(--spacing) * 5)}.cp-blog-editor .h-7,.h-7.cp-blog-editor{height:calc(var(--spacing) * 7)}.cp-blog-editor .h-8,.h-8.cp-blog-editor{height:calc(var(--spacing) * 8)}.cp-blog-editor .h-12,.h-12.cp-blog-editor{height:calc(var(--spacing) * 12)}.cp-blog-editor .h-\[18px\],.h-\[18px\].cp-blog-editor{height:18px}.cp-blog-editor .h-px,.h-px.cp-blog-editor{height:1px}.cp-blog-editor .max-h-\(--radix-dropdown-menu-content-available-height\),.max-h-\(--radix-dropdown-menu-content-available-height\).cp-blog-editor{max-height:var(--radix-dropdown-menu-content-available-height)}.cp-blog-editor .min-h-\[320px\],.min-h-\[320px\].cp-blog-editor{min-height:320px}.cp-blog-editor .w-2,.w-2.cp-blog-editor{width:calc(var(--spacing) * 2)}.cp-blog-editor .w-3\.5,.w-3\.5.cp-blog-editor{width:calc(var(--spacing) * 3.5)}.cp-blog-editor .w-4,.w-4.cp-blog-editor{width:calc(var(--spacing) * 4)}.cp-blog-editor .w-7,.w-7.cp-blog-editor{width:calc(var(--spacing) * 7)}.cp-blog-editor .w-56,.w-56.cp-blog-editor{width:calc(var(--spacing) * 56)}.cp-blog-editor .w-64,.w-64.cp-blog-editor{width:calc(var(--spacing) * 64)}.cp-blog-editor .w-72,.w-72.cp-blog-editor{width:calc(var(--spacing) * 72)}.cp-blog-editor .w-\[18px\],.w-\[18px\].cp-blog-editor{width:18px}.cp-blog-editor .w-\[min\(20rem\,calc\(100vw-1\.5rem\)\)\],.w-\[min\(20rem\,calc\(100vw-1\.5rem\)\)\].cp-blog-editor{width:min(20rem,100vw - 1.5rem)}.cp-blog-editor .w-\[min\(24rem\,calc\(100vw-1\.5rem\)\)\],.w-\[min\(24rem\,calc\(100vw-1\.5rem\)\)\].cp-blog-editor{width:min(24rem,100vw - 1.5rem)}.cp-blog-editor .w-fit,.w-fit.cp-blog-editor{width:fit-content}.cp-blog-editor .w-full,.w-full.cp-blog-editor{width:100%}.cp-blog-editor .w-px,.w-px.cp-blog-editor{width:1px}.cp-blog-editor .max-w-\[720px\],.max-w-\[720px\].cp-blog-editor{max-width:720px}.cp-blog-editor .max-w-none,.max-w-none.cp-blog-editor{max-width:none}.cp-blog-editor .min-w-0,.min-w-0.cp-blog-editor{min-width:calc(var(--spacing) * 0)}.cp-blog-editor .min-w-8,.min-w-8.cp-blog-editor{min-width:calc(var(--spacing) * 8)}.cp-blog-editor .min-w-\[8rem\],.min-w-\[8rem\].cp-blog-editor{min-width:8rem}.cp-blog-editor .flex-1,.flex-1.cp-blog-editor{flex:1}.cp-blog-editor .shrink-0,.shrink-0.cp-blog-editor{flex-shrink:0}.cp-blog-editor .origin-\(--radix-dropdown-menu-content-transform-origin\),.origin-\(--radix-dropdown-menu-content-transform-origin\).cp-blog-editor{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.cp-blog-editor .-translate-x-1\/2,.-translate-x-1\/2.cp-blog-editor{--cp-blog-editor-tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--cp-blog-editor-tw-translate-x) var(--cp-blog-editor-tw-translate-y)}.cp-blog-editor .translate-y-\[calc\(-50\%_-_2px\)\],.translate-y-\[calc\(-50\%_-_2px\)\].cp-blog-editor{--cp-blog-editor-tw-translate-y:calc(-50% - 2px);translate:var(--cp-blog-editor-tw-translate-x) var(--cp-blog-editor-tw-translate-y)}.cp-blog-editor .rotate-45,.rotate-45.cp-blog-editor{rotate:45deg}.cp-blog-editor .animate-pulse,.animate-pulse.cp-blog-editor{animation:var(--animate-pulse)}.cp-blog-editor .cursor-default,.cursor-default.cp-blog-editor{cursor:default}.cp-blog-editor .cursor-pointer,.cursor-pointer.cp-blog-editor{cursor:pointer}.cp-blog-editor .resize-none,.resize-none.cp-blog-editor{resize:none}.cp-blog-editor .list-disc,.list-disc.cp-blog-editor{list-style-type:disc}.cp-blog-editor .items-center,.items-center.cp-blog-editor{align-items:center}.cp-blog-editor .items-start,.items-start.cp-blog-editor{align-items:flex-start}.cp-blog-editor .justify-between,.justify-between.cp-blog-editor{justify-content:space-between}.cp-blog-editor .justify-center,.justify-center.cp-blog-editor{justify-content:center}.cp-blog-editor .justify-end,.justify-end.cp-blog-editor{justify-content:flex-end}.cp-blog-editor .gap-0\.5,.gap-0\.5.cp-blog-editor{gap:calc(var(--spacing) * .5)}.cp-blog-editor .gap-1,.gap-1.cp-blog-editor{gap:calc(var(--spacing) * 1)}.cp-blog-editor .gap-1\.5,.gap-1\.5.cp-blog-editor{gap:calc(var(--spacing) * 1.5)}.cp-blog-editor .gap-2,.gap-2.cp-blog-editor{gap:calc(var(--spacing) * 2)}.cp-blog-editor .gap-2\.5,.gap-2\.5.cp-blog-editor{gap:calc(var(--spacing) * 2.5)}.cp-blog-editor .gap-3,.gap-3.cp-blog-editor{gap:calc(var(--spacing) * 3)}.cp-blog-editor :where(.space-y-2>:not(:last-child)),:where(.space-y-2>:not(:last-child)).cp-blog-editor{--cp-blog-editor-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--cp-blog-editor-tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--cp-blog-editor-tw-space-y-reverse)))}.cp-blog-editor .self-stretch,.self-stretch.cp-blog-editor{align-self:stretch}.cp-blog-editor .overflow-hidden,.overflow-hidden.cp-blog-editor{overflow:hidden}.cp-blog-editor .overflow-x-auto,.overflow-x-auto.cp-blog-editor{overflow-x:auto}.cp-blog-editor .overflow-x-hidden,.overflow-x-hidden.cp-blog-editor{overflow-x:hidden}.cp-blog-editor .overflow-y-auto,.overflow-y-auto.cp-blog-editor{overflow-y:auto}.cp-blog-editor .rounded-\[2px\],.rounded-\[2px\].cp-blog-editor{border-radius:2px}.cp-blog-editor .rounded-full,.rounded-full.cp-blog-editor{border-radius:3.40282e38px}.cp-blog-editor .rounded-lg,.rounded-lg.cp-blog-editor{border-radius:var(--radius)}.cp-blog-editor .rounded-md,.rounded-md.cp-blog-editor{border-radius:calc(var(--radius) - 2px)}.cp-blog-editor .rounded-sm,.rounded-sm.cp-blog-editor{border-radius:calc(var(--radius) - 4px)}.cp-blog-editor .rounded-xl,.rounded-xl.cp-blog-editor{border-radius:var(--radius-xl)}.cp-blog-editor .border,.border.cp-blog-editor{border-style:var(--cp-blog-editor-tw-border-style);border-width:1px}.cp-blog-editor .border-0,.border-0.cp-blog-editor{border-style:var(--cp-blog-editor-tw-border-style);border-width:0}.cp-blog-editor .border-b,.border-b.cp-blog-editor{border-bottom-style:var(--cp-blog-editor-tw-border-style);border-bottom-width:1px}.cp-blog-editor .border-dashed,.border-dashed.cp-blog-editor{--cp-blog-editor-tw-border-style:dashed;border-style:dashed}.cp-blog-editor .border-\[\#BFE3CC\],.border-\[\#BFE3CC\].cp-blog-editor{border-color:#bfe3cc}.cp-blog-editor .border-\[\#D9D5CC\],.border-\[\#D9D5CC\].cp-blog-editor{border-color:#d9d5cc}.cp-blog-editor .border-\[\#E5E7EB\],.border-\[\#E5E7EB\].cp-blog-editor{border-color:#e5e7eb}.cp-blog-editor .border-\[\#E6E3DA\],.border-\[\#E6E3DA\].cp-blog-editor{border-color:#e6e3da}.cp-blog-editor .border-\[\#F1D6A3\],.border-\[\#F1D6A3\].cp-blog-editor{border-color:#f1d6a3}.cp-blog-editor .border-gray-200,.border-gray-200.cp-blog-editor{border-color:var(--color-gray-200)}.cp-blog-editor .border-red-200,.border-red-200.cp-blog-editor{border-color:var(--color-red-200)}.cp-blog-editor .border-red-300,.border-red-300.cp-blog-editor{border-color:var(--color-red-300)}.cp-blog-editor .bg-\[\#2F9E62\],.bg-\[\#2F9E62\].cp-blog-editor{background-color:#2f9e62}.cp-blog-editor .bg-\[\#8A867D\],.bg-\[\#8A867D\].cp-blog-editor{background-color:#8a867d}.cp-blog-editor .bg-\[\#111110\],.bg-\[\#111110\].cp-blog-editor{background-color:#111110}.cp-blog-editor .bg-\[\#C9C5BC\],.bg-\[\#C9C5BC\].cp-blog-editor{background-color:#c9c5bc}.cp-blog-editor .bg-\[\#C9372C\],.bg-\[\#C9372C\].cp-blog-editor{background-color:#c9372c}.cp-blog-editor .bg-\[\#D99A2B\],.bg-\[\#D99A2B\].cp-blog-editor{background-color:#d99a2b}.cp-blog-editor .bg-\[\#D14343\],.bg-\[\#D14343\].cp-blog-editor{background-color:#d14343}.cp-blog-editor .bg-\[\#E6E3DA\],.bg-\[\#E6E3DA\].cp-blog-editor{background-color:#e6e3da}.cp-blog-editor .bg-\[\#EFECE6\],.bg-\[\#EFECE6\].cp-blog-editor{background-color:#efece6}.cp-blog-editor .bg-\[\#F1FAF4\],.bg-\[\#F1FAF4\].cp-blog-editor{background-color:#f1faf4}.cp-blog-editor .bg-\[\#F7F5F0\],.bg-\[\#F7F5F0\].cp-blog-editor{background-color:#f7f5f0}.cp-blog-editor .bg-\[\#FAF9F6\],.bg-\[\#FAF9F6\].cp-blog-editor{background-color:#faf9f6}.cp-blog-editor .bg-\[\#FFF9EC\],.bg-\[\#FFF9EC\].cp-blog-editor{background-color:#fff9ec}.cp-blog-editor .bg-border,.bg-border.cp-blog-editor{background-color:var(--border)}.cp-blog-editor .bg-popover,.bg-popover.cp-blog-editor{background-color:var(--popover)}.cp-blog-editor .bg-red-50,.bg-red-50.cp-blog-editor{background-color:var(--color-red-50)}.cp-blog-editor .bg-transparent,.bg-transparent.cp-blog-editor{background-color:#0000}.cp-blog-editor .bg-white,.bg-white.cp-blog-editor{background-color:var(--color-white)}.cp-blog-editor .bg-white\/90,.bg-white\/90.cp-blog-editor{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.cp-blog-editor .bg-white\/90,.bg-white\/90.cp-blog-editor{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.cp-blog-editor .fill-white,.fill-white.cp-blog-editor{fill:var(--color-white)}.cp-blog-editor .object-contain,.object-contain.cp-blog-editor{object-fit:contain}.cp-blog-editor .p-0,.p-0.cp-blog-editor{padding:calc(var(--spacing) * 0)}.cp-blog-editor .p-1,.p-1.cp-blog-editor{padding:calc(var(--spacing) * 1)}.cp-blog-editor .p-1\.5,.p-1\.5.cp-blog-editor{padding:calc(var(--spacing) * 1.5)}.cp-blog-editor .p-2,.p-2.cp-blog-editor{padding:calc(var(--spacing) * 2)}.cp-blog-editor .p-3,.p-3.cp-blog-editor{padding:calc(var(--spacing) * 3)}.cp-blog-editor .p-4,.p-4.cp-blog-editor{padding:calc(var(--spacing) * 4)}.cp-blog-editor .px-0\.5,.px-0\.5.cp-blog-editor{padding-inline:calc(var(--spacing) * .5)}.cp-blog-editor .px-1\.5,.px-1\.5.cp-blog-editor{padding-inline:calc(var(--spacing) * 1.5)}.cp-blog-editor .px-2,.px-2.cp-blog-editor{padding-inline:calc(var(--spacing) * 2)}.cp-blog-editor .px-2\.5,.px-2\.5.cp-blog-editor{padding-inline:calc(var(--spacing) * 2.5)}.cp-blog-editor .px-3,.px-3.cp-blog-editor{padding-inline:calc(var(--spacing) * 3)}.cp-blog-editor .px-3\.5,.px-3\.5.cp-blog-editor{padding-inline:calc(var(--spacing) * 3.5)}.cp-blog-editor .px-4,.px-4.cp-blog-editor{padding-inline:calc(var(--spacing) * 4)}.cp-blog-editor .px-5,.px-5.cp-blog-editor{padding-inline:calc(var(--spacing) * 5)}.cp-blog-editor .py-0\.5,.py-0\.5.cp-blog-editor{padding-block:calc(var(--spacing) * .5)}.cp-blog-editor .py-1,.py-1.cp-blog-editor{padding-block:calc(var(--spacing) * 1)}.cp-blog-editor .py-1\.5,.py-1\.5.cp-blog-editor{padding-block:calc(var(--spacing) * 1.5)}.cp-blog-editor .py-2,.py-2.cp-blog-editor{padding-block:calc(var(--spacing) * 2)}.cp-blog-editor .py-2\.5,.py-2\.5.cp-blog-editor{padding-block:calc(var(--spacing) * 2.5)}.cp-blog-editor .py-3,.py-3.cp-blog-editor{padding-block:calc(var(--spacing) * 3)}.cp-blog-editor .py-4,.py-4.cp-blog-editor{padding-block:calc(var(--spacing) * 4)}.cp-blog-editor .pt-8,.pt-8.cp-blog-editor{padding-top:calc(var(--spacing) * 8)}.cp-blog-editor .pt-10,.pt-10.cp-blog-editor{padding-top:calc(var(--spacing) * 10)}.cp-blog-editor .pr-1\.5,.pr-1\.5.cp-blog-editor{padding-right:calc(var(--spacing) * 1.5)}.cp-blog-editor .pr-3,.pr-3.cp-blog-editor{padding-right:calc(var(--spacing) * 3)}.cp-blog-editor .pb-20,.pb-20.cp-blog-editor{padding-bottom:calc(var(--spacing) * 20)}.cp-blog-editor .pl-2\.5,.pl-2\.5.cp-blog-editor{padding-left:calc(var(--spacing) * 2.5)}.cp-blog-editor .pl-5,.pl-5.cp-blog-editor{padding-left:calc(var(--spacing) * 5)}.cp-blog-editor .font-sans,.font-sans.cp-blog-editor{font-family:var(--cp-blog-editor-font,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji")}.cp-blog-editor .text-2xl,.text-2xl.cp-blog-editor{font-size:var(--text-2xl);line-height:var(--cp-blog-editor-tw-leading,var(--text-2xl--line-height))}.cp-blog-editor .text-sm,.text-sm.cp-blog-editor{font-size:var(--text-sm);line-height:var(--cp-blog-editor-tw-leading,var(--text-sm--line-height))}.cp-blog-editor .text-xs,.text-xs.cp-blog-editor{font-size:var(--text-xs);line-height:var(--cp-blog-editor-tw-leading,var(--text-xs--line-height))}.cp-blog-editor .text-\[11px\],.text-\[11px\].cp-blog-editor{font-size:11px}.cp-blog-editor .text-\[13px\],.text-\[13px\].cp-blog-editor{font-size:13px}.cp-blog-editor .text-\[15px\],.text-\[15px\].cp-blog-editor{font-size:15px}.cp-blog-editor .text-\[17px\],.text-\[17px\].cp-blog-editor{font-size:17px}.cp-blog-editor .text-\[34px\],.text-\[34px\].cp-blog-editor{font-size:34px}.cp-blog-editor .leading-5,.leading-5.cp-blog-editor{--cp-blog-editor-tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.cp-blog-editor .leading-\[1\.08\],.leading-\[1\.08\].cp-blog-editor{--cp-blog-editor-tw-leading:1.08;line-height:1.08}.cp-blog-editor .leading-\[1\.55\],.leading-\[1\.55\].cp-blog-editor{--cp-blog-editor-tw-leading:1.55;line-height:1.55}.cp-blog-editor .font-medium,.font-medium.cp-blog-editor{--cp-blog-editor-tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.cp-blog-editor .font-semibold,.font-semibold.cp-blog-editor{--cp-blog-editor-tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.cp-blog-editor .tracking-\[-0\.01em\],.tracking-\[-0\.01em\].cp-blog-editor{--cp-blog-editor-tw-tracking:-.01em;letter-spacing:-.01em}.cp-blog-editor .tracking-\[-0\.03em\],.tracking-\[-0\.03em\].cp-blog-editor{--cp-blog-editor-tw-tracking:-.03em;letter-spacing:-.03em}.cp-blog-editor .text-\[\#4A4740\],.text-\[\#4A4740\].cp-blog-editor{color:#4a4740}.cp-blog-editor .text-\[\#6B6760\],.text-\[\#6B6760\].cp-blog-editor{color:#6b6760}.cp-blog-editor .text-\[\#8A867D\],.text-\[\#8A867D\].cp-blog-editor{color:#8a867d}.cp-blog-editor .text-\[\#111110\],.text-\[\#111110\].cp-blog-editor{color:#111110}.cp-blog-editor .text-black,.text-black.cp-blog-editor{color:#000}.cp-blog-editor .text-popover-foreground,.text-popover-foreground.cp-blog-editor{color:var(--popover-foreground)}.cp-blog-editor .text-red-600,.text-red-600.cp-blog-editor{color:var(--color-red-600)}.cp-blog-editor .text-red-700,.text-red-700.cp-blog-editor{color:var(--color-red-700)}.cp-blog-editor .text-red-800,.text-red-800.cp-blog-editor{color:var(--color-red-800)}.cp-blog-editor .text-white,.text-white.cp-blog-editor{color:var(--color-white)}.cp-blog-editor .lowercase,.lowercase.cp-blog-editor{text-transform:lowercase}.cp-blog-editor .italic,.italic.cp-blog-editor{font-style:italic}.cp-blog-editor .underline,.underline.cp-blog-editor{text-decoration-line:underline}.cp-blog-editor .shadow-\[0_8px_24px_-8px_rgba\(10\,10\,10\,0\.16\)\],.shadow-\[0_8px_24px_-8px_rgba\(10\,10\,10\,0\.16\)\].cp-blog-editor{--cp-blog-editor-tw-shadow:0 8px 24px -8px var(--cp-blog-editor-tw-shadow-color,#0a0a0a29);box-shadow:var(--cp-blog-editor-tw-inset-shadow), var(--cp-blog-editor-tw-inset-ring-shadow), var(--cp-blog-editor-tw-ring-offset-shadow), var(--cp-blog-editor-tw-ring-shadow), var(--cp-blog-editor-tw-shadow)}.cp-blog-editor .shadow-lg,.shadow-lg.cp-blog-editor{--cp-blog-editor-tw-shadow:0 10px 15px -3px var(--cp-blog-editor-tw-shadow-color,#0000001a), 0 4px 6px -4px var(--cp-blog-editor-tw-shadow-color,#0000001a);box-shadow:var(--cp-blog-editor-tw-inset-shadow), var(--cp-blog-editor-tw-inset-ring-shadow), var(--cp-blog-editor-tw-ring-offset-shadow), var(--cp-blog-editor-tw-ring-shadow), var(--cp-blog-editor-tw-shadow)}.cp-blog-editor .shadow-md,.shadow-md.cp-blog-editor{--cp-blog-editor-tw-shadow:0 4px 6px -1px var(--cp-blog-editor-tw-shadow-color,#0000001a), 0 2px 4px -2px var(--cp-blog-editor-tw-shadow-color,#0000001a);box-shadow:var(--cp-blog-editor-tw-inset-shadow), var(--cp-blog-editor-tw-inset-ring-shadow), var(--cp-blog-editor-tw-ring-offset-shadow), var(--cp-blog-editor-tw-ring-shadow), var(--cp-blog-editor-tw-shadow)}.cp-blog-editor .shadow-sm,.shadow-sm.cp-blog-editor{--cp-blog-editor-tw-shadow:0 1px 3px 0 var(--cp-blog-editor-tw-shadow-color,#0000001a), 0 1px 2px -1px var(--cp-blog-editor-tw-shadow-color,#0000001a);box-shadow:var(--cp-blog-editor-tw-inset-shadow), var(--cp-blog-editor-tw-inset-ring-shadow), var(--cp-blog-editor-tw-ring-offset-shadow), var(--cp-blog-editor-tw-ring-shadow), var(--cp-blog-editor-tw-shadow)}.cp-blog-editor .outline-hidden,.outline-hidden.cp-blog-editor{--cp-blog-editor-tw-outline-style:none;outline-style:none}@media (forced-colors:active){.cp-blog-editor .outline-hidden,.outline-hidden.cp-blog-editor{outline-offset:2px;outline:2px solid #0000}}.cp-blog-editor .blur,.blur.cp-blog-editor{--cp-blog-editor-tw-blur:blur(8px);filter:var(--cp-blog-editor-tw-blur,) var(--cp-blog-editor-tw-brightness,) var(--cp-blog-editor-tw-contrast,) var(--cp-blog-editor-tw-grayscale,) var(--cp-blog-editor-tw-hue-rotate,) var(--cp-blog-editor-tw-invert,) var(--cp-blog-editor-tw-saturate,) var(--cp-blog-editor-tw-sepia,) var(--cp-blog-editor-tw-drop-shadow,)}.cp-blog-editor .backdrop-blur-md,.backdrop-blur-md.cp-blog-editor{--cp-blog-editor-tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--cp-blog-editor-tw-backdrop-blur,) var(--cp-blog-editor-tw-backdrop-brightness,) var(--cp-blog-editor-tw-backdrop-contrast,) var(--cp-blog-editor-tw-backdrop-grayscale,) var(--cp-blog-editor-tw-backdrop-hue-rotate,) var(--cp-blog-editor-tw-backdrop-invert,) var(--cp-blog-editor-tw-backdrop-opacity,) var(--cp-blog-editor-tw-backdrop-saturate,) var(--cp-blog-editor-tw-backdrop-sepia,);backdrop-filter:var(--cp-blog-editor-tw-backdrop-blur,) var(--cp-blog-editor-tw-backdrop-brightness,) var(--cp-blog-editor-tw-backdrop-contrast,) var(--cp-blog-editor-tw-backdrop-grayscale,) var(--cp-blog-editor-tw-backdrop-hue-rotate,) var(--cp-blog-editor-tw-backdrop-invert,) var(--cp-blog-editor-tw-backdrop-opacity,) var(--cp-blog-editor-tw-backdrop-saturate,) var(--cp-blog-editor-tw-backdrop-sepia,)}.cp-blog-editor .transition-colors,.transition-colors.cp-blog-editor{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--cp-blog-editor-tw-gradient-from,--cp-blog-editor-tw-gradient-via,--cp-blog-editor-tw-gradient-to;transition-timing-function:var(--cp-blog-editor-tw-ease,var(--default-transition-timing-function));transition-duration:var(--cp-blog-editor-tw-duration,var(--default-transition-duration))}.cp-blog-editor .transition-shadow,.transition-shadow.cp-blog-editor{transition-property:box-shadow;transition-timing-function:var(--cp-blog-editor-tw-ease,var(--default-transition-timing-function));transition-duration:var(--cp-blog-editor-tw-duration,var(--default-transition-duration))}.cp-blog-editor .duration-200,.duration-200.cp-blog-editor{--cp-blog-editor-tw-duration:.2s;transition-duration:.2s}.cp-blog-editor .prose-neutral,.prose-neutral.cp-blog-editor{--cp-blog-editor-tw-prose-body:oklch(37.1% 0 0);--cp-blog-editor-tw-prose-headings:oklch(20.5% 0 0);--cp-blog-editor-tw-prose-lead:oklch(43.9% 0 0);--cp-blog-editor-tw-prose-links:oklch(20.5% 0 0);--cp-blog-editor-tw-prose-bold:oklch(20.5% 0 0);--cp-blog-editor-tw-prose-counters:oklch(55.6% 0 0);--cp-blog-editor-tw-prose-bullets:oklch(87% 0 0);--cp-blog-editor-tw-prose-hr:oklch(92.2% 0 0);--cp-blog-editor-tw-prose-quotes:oklch(20.5% 0 0);--cp-blog-editor-tw-prose-quote-borders:oklch(92.2% 0 0);--cp-blog-editor-tw-prose-captions:oklch(55.6% 0 0);--cp-blog-editor-tw-prose-kbd:oklch(20.5% 0 0);--cp-blog-editor-tw-prose-kbd-shadows:oklab(20.5% 0 0/.1);--cp-blog-editor-tw-prose-code:oklch(20.5% 0 0);--cp-blog-editor-tw-prose-pre-code:oklch(92.2% 0 0);--cp-blog-editor-tw-prose-pre-bg:oklch(26.9% 0 0);--cp-blog-editor-tw-prose-th-borders:oklch(87% 0 0);--cp-blog-editor-tw-prose-td-borders:oklch(92.2% 0 0);--cp-blog-editor-tw-prose-invert-body:oklch(87% 0 0);--cp-blog-editor-tw-prose-invert-headings:#fff;--cp-blog-editor-tw-prose-invert-lead:oklch(70.8% 0 0);--cp-blog-editor-tw-prose-invert-links:#fff;--cp-blog-editor-tw-prose-invert-bold:#fff;--cp-blog-editor-tw-prose-invert-counters:oklch(70.8% 0 0);--cp-blog-editor-tw-prose-invert-bullets:oklch(43.9% 0 0);--cp-blog-editor-tw-prose-invert-hr:oklch(37.1% 0 0);--cp-blog-editor-tw-prose-invert-quotes:oklch(97% 0 0);--cp-blog-editor-tw-prose-invert-quote-borders:oklch(37.1% 0 0);--cp-blog-editor-tw-prose-invert-captions:oklch(70.8% 0 0);--cp-blog-editor-tw-prose-invert-kbd:#fff;--cp-blog-editor-tw-prose-invert-kbd-shadows:#ffffff1a;--cp-blog-editor-tw-prose-invert-code:#fff;--cp-blog-editor-tw-prose-invert-pre-code:oklch(87% 0 0);--cp-blog-editor-tw-prose-invert-pre-bg:#00000080;--cp-blog-editor-tw-prose-invert-th-borders:oklch(43.9% 0 0);--cp-blog-editor-tw-prose-invert-td-borders:oklch(37.1% 0 0)}.cp-blog-editor .outline-none,.outline-none.cp-blog-editor{--cp-blog-editor-tw-outline-style:none;outline-style:none}.cp-blog-editor .select-none,.select-none.cp-blog-editor{-webkit-user-select:none;user-select:none}.cp-blog-editor .\[scrollbar-width\:none\],.\[scrollbar-width\:none\].cp-blog-editor{scrollbar-width:none}.cp-blog-editor .placeholder\:text-\[\#B8B4A9\]::placeholder,.placeholder\:text-\[\#B8B4A9\].cp-blog-editor::placeholder{color:#b8b4a9}@media (hover:hover){.cp-blog-editor .hover\:bg-\[\#2A2926\]:hover,.hover\:bg-\[\#2A2926\]:hover.cp-blog-editor{background-color:#2a2926}.cp-blog-editor .hover\:bg-\[\#B02F25\]:hover,.hover\:bg-\[\#B02F25\]:hover.cp-blog-editor{background-color:#b02f25}.cp-blog-editor .hover\:bg-\[\#F1EFE9\]:hover,.hover\:bg-\[\#F1EFE9\]:hover.cp-blog-editor{background-color:#f1efe9}.cp-blog-editor .hover\:text-\[\#111110\]:hover,.hover\:text-\[\#111110\]:hover.cp-blog-editor{color:#111110}}.cp-blog-editor .focus\:border-\[\#8A867D\]:focus,.focus\:border-\[\#8A867D\]:focus.cp-blog-editor{border-color:#8a867d}.cp-blog-editor .focus\:bg-\[\#F1EFE9\]:focus,.focus\:bg-\[\#F1EFE9\]:focus.cp-blog-editor{background-color:#f1efe9}.cp-blog-editor .focus\:bg-accent:focus,.focus\:bg-accent:focus.cp-blog-editor{background-color:var(--accent)}.cp-blog-editor .focus\:text-\[\#111110\]:focus,.focus\:text-\[\#111110\]:focus.cp-blog-editor{color:#111110}.cp-blog-editor .focus\:text-accent-foreground:focus,.focus\:text-accent-foreground:focus.cp-blog-editor{color:var(--accent-foreground)}.cp-blog-editor .focus\:ring-0:focus,.focus\:ring-0:focus.cp-blog-editor{--cp-blog-editor-tw-ring-shadow:var(--cp-blog-editor-tw-ring-inset,) 0 0 0 calc(0px + var(--cp-blog-editor-tw-ring-offset-width)) var(--cp-blog-editor-tw-ring-color,currentcolor);box-shadow:var(--cp-blog-editor-tw-inset-shadow), var(--cp-blog-editor-tw-inset-ring-shadow), var(--cp-blog-editor-tw-ring-offset-shadow), var(--cp-blog-editor-tw-ring-shadow), var(--cp-blog-editor-tw-shadow)}.cp-blog-editor .focus\:outline-none:focus,.focus\:outline-none:focus.cp-blog-editor{--cp-blog-editor-tw-outline-style:none;outline-style:none}.cp-blog-editor .focus-visible\:ring-2:focus-visible,.focus-visible\:ring-2:focus-visible.cp-blog-editor{--cp-blog-editor-tw-ring-shadow:var(--cp-blog-editor-tw-ring-inset,) 0 0 0 calc(2px + var(--cp-blog-editor-tw-ring-offset-width)) var(--cp-blog-editor-tw-ring-color,currentcolor);box-shadow:var(--cp-blog-editor-tw-inset-shadow), var(--cp-blog-editor-tw-inset-ring-shadow), var(--cp-blog-editor-tw-ring-offset-shadow), var(--cp-blog-editor-tw-ring-shadow), var(--cp-blog-editor-tw-shadow)}.cp-blog-editor .focus-visible\:ring-\[\#C9372C\]\/40:focus-visible,.focus-visible\:ring-\[\#C9372C\]\/40:focus-visible.cp-blog-editor{--cp-blog-editor-tw-ring-color:oklab(55.7003% .161822 .0889526/.4)}.cp-blog-editor .focus-visible\:ring-black\/40:focus-visible,.focus-visible\:ring-black\/40:focus-visible.cp-blog-editor{--cp-blog-editor-tw-ring-color:oklab(0% none none/.4)}.cp-blog-editor .focus-visible\:ring-offset-2:focus-visible,.focus-visible\:ring-offset-2:focus-visible.cp-blog-editor{--cp-blog-editor-tw-ring-offset-width:2px;--cp-blog-editor-tw-ring-offset-shadow:var(--cp-blog-editor-tw-ring-inset,) 0 0 0 var(--cp-blog-editor-tw-ring-offset-width) var(--cp-blog-editor-tw-ring-offset-color)}.cp-blog-editor .focus-visible\:outline-none:focus-visible,.focus-visible\:outline-none:focus-visible.cp-blog-editor{--cp-blog-editor-tw-outline-style:none;outline-style:none}.cp-blog-editor .disabled\:pointer-events-none:disabled,.disabled\:pointer-events-none:disabled.cp-blog-editor{pointer-events:none}.cp-blog-editor .disabled\:opacity-40:disabled,.disabled\:opacity-40:disabled.cp-blog-editor{opacity:.4}.cp-blog-editor .disabled\:opacity-50:disabled,.disabled\:opacity-50:disabled.cp-blog-editor{opacity:.5}.cp-blog-editor .aria-selected\:bg-\[\#F1EFE9\][aria-selected=true],.aria-selected\:bg-\[\#F1EFE9\][aria-selected=true].cp-blog-editor{background-color:#f1efe9}.cp-blog-editor .data-\[active\=true\]\:bg-\[\#E8E5DC\][data-active=true],.data-\[active\=true\]\:bg-\[\#E8E5DC\][data-active=true].cp-blog-editor{background-color:#e8e5dc}.cp-blog-editor .data-\[active\=true\]\:text-\[\#111110\][data-active=true],.data-\[active\=true\]\:text-\[\#111110\][data-active=true].cp-blog-editor{color:#111110}.cp-blog-editor .data-\[active\=true\]\:ring-1[data-active=true],.data-\[active\=true\]\:ring-1[data-active=true].cp-blog-editor{--cp-blog-editor-tw-ring-shadow:var(--cp-blog-editor-tw-ring-inset,) 0 0 0 calc(1px + var(--cp-blog-editor-tw-ring-offset-width)) var(--cp-blog-editor-tw-ring-color,currentcolor);box-shadow:var(--cp-blog-editor-tw-inset-shadow), var(--cp-blog-editor-tw-inset-ring-shadow), var(--cp-blog-editor-tw-ring-offset-shadow), var(--cp-blog-editor-tw-ring-shadow), var(--cp-blog-editor-tw-shadow)}.cp-blog-editor .data-\[active\=true\]\:ring-\[\#CFCABF\][data-active=true],.data-\[active\=true\]\:ring-\[\#CFCABF\][data-active=true].cp-blog-editor{--cp-blog-editor-tw-ring-color:#cfcabf}.cp-blog-editor .data-\[disabled\]\:pointer-events-none[data-disabled],.data-\[disabled\]\:pointer-events-none[data-disabled].cp-blog-editor{pointer-events:none}.cp-blog-editor .data-\[disabled\]\:opacity-50[data-disabled],.data-\[disabled\]\:opacity-50[data-disabled].cp-blog-editor{opacity:.5}.cp-blog-editor .data-\[inset\]\:pl-8[data-inset],.data-\[inset\]\:pl-8[data-inset].cp-blog-editor{padding-left:calc(var(--spacing) * 8)}.cp-blog-editor .data-\[scrolled\=true\]\:shadow-\[0_10px_24px_-18px_rgba\(17\,17\,16\,0\.35\)\][data-scrolled=true],.data-\[scrolled\=true\]\:shadow-\[0_10px_24px_-18px_rgba\(17\,17\,16\,0\.35\)\][data-scrolled=true].cp-blog-editor{--cp-blog-editor-tw-shadow:0 10px 24px -18px var(--cp-blog-editor-tw-shadow-color,#11111059);box-shadow:var(--cp-blog-editor-tw-inset-shadow), var(--cp-blog-editor-tw-inset-ring-shadow), var(--cp-blog-editor-tw-ring-offset-shadow), var(--cp-blog-editor-tw-ring-shadow), var(--cp-blog-editor-tw-shadow)}.cp-blog-editor .data-\[state\=open\]\:bg-\[\#F1EFE9\][data-state=open],.data-\[state\=open\]\:bg-\[\#F1EFE9\][data-state=open].cp-blog-editor{background-color:#f1efe9}.cp-blog-editor .data-\[state\=open\]\:text-\[\#111110\][data-state=open],.data-\[state\=open\]\:text-\[\#111110\][data-state=open].cp-blog-editor{color:#111110}.cp-blog-editor .data-\[variant\=destructive\]\:text-destructive[data-variant=destructive],.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive].cp-blog-editor{color:var(--destructive)}.cp-blog-editor .data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus,.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus.cp-blog-editor{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.cp-blog-editor .data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus,.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus.cp-blog-editor{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.cp-blog-editor .data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus,.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus.cp-blog-editor{color:var(--destructive)}@media not all and (min-width:80rem){.cp-blog-editor .max-xl\:hidden,.max-xl\:hidden.cp-blog-editor{display:none}}@media not all and (min-width:64rem){.cp-blog-editor .max-lg\:\[mask-image\:linear-gradient\(to_right\,\#000_calc\(100\%-24px\)\,transparent\)\],.max-lg\:\[mask-image\:linear-gradient\(to_right\,\#000_calc\(100\%-24px\)\,transparent\)\].cp-blog-editor{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}}@media not all and (min-width:40rem){.cp-blog-editor .max-sm\:hidden,.max-sm\:hidden.cp-blog-editor{display:none}}@media (min-width:40rem){.cp-blog-editor .sm\:right-6,.sm\:right-6.cp-blog-editor{right:calc(var(--spacing) * 6)}.cp-blog-editor .sm\:hidden,.sm\:hidden.cp-blog-editor{display:none}.cp-blog-editor .sm\:inline,.sm\:inline.cp-blog-editor{display:inline}.cp-blog-editor .sm\:w-\[7\.75rem\],.sm\:w-\[7\.75rem\].cp-blog-editor{width:7.75rem}.cp-blog-editor .sm\:grid-cols-3,.sm\:grid-cols-3.cp-blog-editor{grid-template-columns:repeat(3,minmax(0,1fr))}.cp-blog-editor .sm\:gap-3,.sm\:gap-3.cp-blog-editor{gap:calc(var(--spacing) * 3)}.cp-blog-editor .sm\:px-8,.sm\:px-8.cp-blog-editor{padding-inline:calc(var(--spacing) * 8)}.cp-blog-editor .sm\:pt-12,.sm\:pt-12.cp-blog-editor{padding-top:calc(var(--spacing) * 12)}.cp-blog-editor .sm\:pt-14,.sm\:pt-14.cp-blog-editor{padding-top:calc(var(--spacing) * 14)}.cp-blog-editor .sm\:pr-6,.sm\:pr-6.cp-blog-editor{padding-right:calc(var(--spacing) * 6)}.cp-blog-editor .sm\:pl-\[22px\],.sm\:pl-\[22px\].cp-blog-editor{padding-left:22px}.cp-blog-editor .sm\:text-\[46px\],.sm\:text-\[46px\].cp-blog-editor{font-size:46px}}@media (min-width:48rem){.cp-blog-editor .md\:pl-\[max\(22px\,calc\(50\%-338px\)\)\],.md\:pl-\[max\(22px\,calc\(50\%-338px\)\)\].cp-blog-editor{padding-left:max(22px,50% - 338px)}}@media (min-width:64rem){.cp-blog-editor .lg\:not-sr-only,.lg\:not-sr-only.cp-blog-editor{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.cp-blog-editor .lg\:right-9,.lg\:right-9.cp-blog-editor{right:calc(var(--spacing) * 9)}.cp-blog-editor .lg\:max-w-\[13rem\],.lg\:max-w-\[13rem\].cp-blog-editor{max-width:13rem}.cp-blog-editor .lg\:truncate,.lg\:truncate.cp-blog-editor{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cp-blog-editor .lg\:pr-9,.lg\:pr-9.cp-blog-editor{padding-right:calc(var(--spacing) * 9)}}@media (min-width:80rem){.cp-blog-editor .xl\:hidden,.xl\:hidden.cp-blog-editor{display:none}}.cp-blog-editor .dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus,.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus.cp-blog-editor{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.cp-blog-editor .dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus,.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus.cp-blog-editor{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.cp-blog-editor .prose-code\:before\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose-code\:before\:content-none.cp-blog-editor :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.cp-blog-editor .prose-code\:after\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose-code\:after\:content-none.cp-blog-editor :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:var(--cp-blog-editor-tw-content);--cp-blog-editor-tw-content:none;content:none}.cp-blog-editor .\[\&_svg\]\:pointer-events-none svg,.\[\&_svg\]\:pointer-events-none.cp-blog-editor svg{pointer-events:none}.cp-blog-editor .\[\&_svg\]\:shrink-0 svg,.\[\&_svg\]\:shrink-0.cp-blog-editor svg{flex-shrink:0}.cp-blog-editor .\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]),.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4.cp-blog-editor svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.cp-blog-editor .\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]),.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground.cp-blog-editor svg:not([class*=text-]){color:var(--muted-foreground)}.cp-blog-editor .\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar,.\[\&\:\:-webkit-scrollbar\]\:hidden.cp-blog-editor::-webkit-scrollbar{display:none}.cp-blog-editor :is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg),:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg).cp-blog-editor{color:var(--destructive)!important}/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */.cp-blog-editor.cp-blog-editor{--background:oklch(100% 0 0);--foreground:oklch(12.9% .042 264.695);--radius:.625rem;--card:oklch(100% 0 0);--card-foreground:oklch(12.9% .042 264.695);--popover:oklch(100% 0 0);--popover-foreground:oklch(12.9% .042 264.695);--primary:oklch(20.8% .042 265.755);--primary-foreground:oklch(98.4% .003 247.858);--secondary:oklch(96.8% .007 247.896);--secondary-foreground:oklch(20.8% .042 265.755);--muted:oklch(96.8% .007 247.896);--muted-foreground:oklch(55.4% .046 257.417);--accent:oklch(96.8% .007 247.896);--accent-foreground:oklch(20.8% .042 265.755);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.9% .013 255.508);--input:oklch(92.9% .013 255.508);--ring:oklch(70.4% .04 256.788);--radius-xl:calc(var(--radius) + 4px);--success:oklch(62.7% .17 149.2);--success-foreground:oklch(44.8% .119 151.3);--success-soft:oklch(96.2% .044 156.7);--warning:oklch(66.6% .157 58.3);--warning-foreground:oklch(47.3% .137 46.2);--warning-soft:oklch(98.7% .026 102.2)}.cp-blog-editor ::-webkit-scrollbar,.cp-blog-editor::-webkit-scrollbar{width:8px;height:8px}.cp-blog-editor ::-webkit-scrollbar-track,.cp-blog-editor::-webkit-scrollbar-track{background-color:#f0eff1}.cp-blog-editor ::-webkit-scrollbar-thumb,.cp-blog-editor::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:4px}.cp-blog-editor ::-webkit-scrollbar-thumb:hover,.cp-blog-editor::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}@property --cp-blog-editor-tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --cp-blog-editor-tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --cp-blog-editor-tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --cp-blog-editor-tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --cp-blog-editor-tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --cp-blog-editor-tw-leading{syntax:"*";inherits:false}@property --cp-blog-editor-tw-font-weight{syntax:"*";inherits:false}@property --cp-blog-editor-tw-tracking{syntax:"*";inherits:false}@property --cp-blog-editor-tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --cp-blog-editor-tw-shadow-color{syntax:"*";inherits:false}@property --cp-blog-editor-tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --cp-blog-editor-tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --cp-blog-editor-tw-inset-shadow-color{syntax:"*";inherits:false}@property --cp-blog-editor-tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --cp-blog-editor-tw-ring-color{syntax:"*";inherits:false}@property --cp-blog-editor-tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --cp-blog-editor-tw-inset-ring-color{syntax:"*";inherits:false}@property --cp-blog-editor-tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --cp-blog-editor-tw-ring-inset{syntax:"*";inherits:false}@property --cp-blog-editor-tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --cp-blog-editor-tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --cp-blog-editor-tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --cp-blog-editor-tw-blur{syntax:"*";inherits:false}@property --cp-blog-editor-tw-brightness{syntax:"*";inherits:false}@property --cp-blog-editor-tw-contrast{syntax:"*";inherits:false}@property --cp-blog-editor-tw-grayscale{syntax:"*";inherits:false}@property --cp-blog-editor-tw-hue-rotate{syntax:"*";inherits:false}@property --cp-blog-editor-tw-invert{syntax:"*";inherits:false}@property --cp-blog-editor-tw-opacity{syntax:"*";inherits:false}@property --cp-blog-editor-tw-saturate{syntax:"*";inherits:false}@property --cp-blog-editor-tw-sepia{syntax:"*";inherits:false}@property --cp-blog-editor-tw-drop-shadow{syntax:"*";inherits:false}@property --cp-blog-editor-tw-drop-shadow-color{syntax:"*";inherits:false}@property --cp-blog-editor-tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --cp-blog-editor-tw-drop-shadow-size{syntax:"*";inherits:false}@property --cp-blog-editor-tw-backdrop-blur{syntax:"*";inherits:false}@property --cp-blog-editor-tw-backdrop-brightness{syntax:"*";inherits:false}@property --cp-blog-editor-tw-backdrop-contrast{syntax:"*";inherits:false}@property --cp-blog-editor-tw-backdrop-grayscale{syntax:"*";inherits:false}@property --cp-blog-editor-tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --cp-blog-editor-tw-backdrop-invert{syntax:"*";inherits:false}@property --cp-blog-editor-tw-backdrop-opacity{syntax:"*";inherits:false}@property --cp-blog-editor-tw-backdrop-saturate{syntax:"*";inherits:false}@property --cp-blog-editor-tw-backdrop-sepia{syntax:"*";inherits:false}@property --cp-blog-editor-tw-duration{syntax:"*";inherits:false}@property --cp-blog-editor-tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes cp-blog-editor-pulse{50%{opacity:.5}}
3
+
@@ -1,5 +1,5 @@
1
1
  import type { Metadata } from "next";
2
- import { type BlogConfig } from "./config.js";
2
+ import { type BlogConfig, type BlogEditing } from "./config.js";
3
3
  type SlugParams = {
4
4
  params: Promise<{
5
5
  slug: string;
@@ -13,6 +13,11 @@ type SlugParams = {
13
13
  * - `app/blog/page.tsx`: `IndexPage`, `generateIndexMetadata`
14
14
  * - `app/blog/[slug]/page.tsx`: `PostPage`, `generatePostMetadata`, `generateStaticParams`
15
15
  *
16
+ * - `app/blog/%5F_cp/callback/page.tsx`: `CallbackPage`, `callbackMetadata`
17
+ *
18
+ * `editing` is the site's `"use client"` wrapper around `@codepress/blog/editor`
19
+ * (`init` writes it); without it the pages have no Edit link.
20
+ *
16
21
  * The feed and sitemap route handlers come from `createAppBlogRoutes`
17
22
  * (`@codepress/blog/next/routes`), which carries no React: a route handler
18
23
  * cannot bundle `next/link`.
@@ -20,10 +25,18 @@ type SlugParams = {
20
25
  * A 404 from the API is "no such post"; any other failure throws, so ISR keeps
21
26
  * serving the last good page.
22
27
  */
23
- export declare function createAppBlog(config: BlogConfig): {
28
+ export declare function createAppBlog(config: BlogConfig, editing?: BlogEditing): {
24
29
  blog: import("./config.js").ResolvedBlog;
25
30
  IndexPage(): Promise<import("react/jsx-runtime").JSX.Element>;
26
31
  PostPage({ params }: SlugParams): Promise<import("react/jsx-runtime").JSX.Element>;
32
+ /** The hand-off callback; renders nothing without `editing.callback`. */
33
+ CallbackPage(): import("react/jsx-runtime").JSX.Element | null;
34
+ callbackMetadata: {
35
+ robots: {
36
+ index: false;
37
+ follow: false;
38
+ };
39
+ };
27
40
  generateStaticParams(): Promise<{
28
41
  slug: string;
29
42
  }[]>;
@@ -1,8 +1,11 @@
1
1
  import { type ContentSource, type PostSummary } from "../content-source.js";
2
+ import type { HostEditingConfig, HostEditingProps } from "../editor/host.js";
2
3
  import type { BlogSite } from "../seo.js";
4
+ import type { ComponentType } from "react";
3
5
  export declare const DEFAULT_API_BASE = "https://api.codepress.dev/v1";
4
6
  export declare const DEFAULT_BASE_PATH = "/blog";
5
7
  export declare const DEFAULT_REVALIDATE_SECONDS = 60;
8
+ export declare const DEFAULT_APP_URL = "https://codepress.dev";
6
9
  /** How a Next.js site mounts its CodePress blog. */
7
10
  export interface BlogConfig {
8
11
  /** The content site's slug on CodePress. */
@@ -25,6 +28,19 @@ export interface BlogConfig {
25
28
  defaultImage?: string;
26
29
  /** Timeout for each API request. Defaults to 10 seconds. */
27
30
  timeoutMs?: number;
31
+ /** The CodePress app editors sign in on to edit on this site. Defaults to `https://codepress.dev`. */
32
+ appUrl?: string;
33
+ }
34
+ /**
35
+ * The site's own `"use client"` editor wrapper (written by `init`), passed to
36
+ * `createAppBlog`/`createPagesBlog`. Without it the blog has no editing; with
37
+ * it, editing still shows only when the content site reports it enabled.
38
+ */
39
+ export interface BlogEditing {
40
+ /** Wraps a post (or the index) with its Edit link and the editor. */
41
+ editor?: ComponentType<HostEditingProps>;
42
+ /** The `<basePath>/__cp/callback` page. */
43
+ callback?: ComponentType<HostEditingConfig>;
28
44
  }
29
45
  export interface ResolvedBlog {
30
46
  site: BlogSite;
@@ -32,6 +48,8 @@ export interface ResolvedBlog {
32
48
  basePath: string;
33
49
  revalidate: number;
34
50
  source: ContentSource;
51
+ /** What the editor wrapper and the callback page are given. */
52
+ editing: HostEditingConfig;
35
53
  }
36
54
  export declare function resolveBlog(config: BlogConfig): ResolvedBlog;
37
55
  /** True while `next build` prerenders pages. */
@@ -1,2 +1,2 @@
1
1
  export { createAppBlog, type AppBlog } from "./app.js";
2
- export { DEFAULT_API_BASE, DEFAULT_BASE_PATH, DEFAULT_REVALIDATE_SECONDS, resolveBlog, type BlogConfig, type ResolvedBlog, } from "./config.js";
2
+ export { DEFAULT_API_BASE, DEFAULT_APP_URL, DEFAULT_BASE_PATH, DEFAULT_REVALIDATE_SECONDS, resolveBlog, type BlogConfig, type BlogEditing, type ResolvedBlog, } from "./config.js";
@@ -2,14 +2,15 @@ import {
2
2
  BlogIndexView,
3
3
  BlogPostView,
4
4
  shareImage
5
- } from "../chunks/chunk-WJVZD4UI.js";
5
+ } from "../chunks/chunk-PPMNLNLD.js";
6
6
  import {
7
7
  DEFAULT_API_BASE,
8
+ DEFAULT_APP_URL,
8
9
  DEFAULT_BASE_PATH,
9
10
  DEFAULT_REVALIDATE_SECONDS,
10
11
  listPostsForRender,
11
12
  resolveBlog
12
- } from "../chunks/chunk-3GCZFCUK.js";
13
+ } from "../chunks/chunk-LFSX43CO.js";
13
14
  import "../chunks/chunk-AJVVTSKZ.js";
14
15
  import "../chunks/chunk-EICE5ONB.js";
15
16
  import {
@@ -23,19 +24,34 @@ import "../chunks/chunk-XLJBCIXI.js";
23
24
  import { notFound } from "next/navigation.js";
24
25
  import { cache } from "react";
25
26
  import { jsx } from "react/jsx-runtime";
26
- function createAppBlog(config) {
27
+ function createAppBlog(config, editing = {}) {
27
28
  const blog = resolveBlog(config);
28
29
  const { site } = blog;
29
30
  const getPost = cache((slug) => blog.source.getPost(slug));
30
31
  return {
31
32
  blog,
32
33
  async IndexPage() {
33
- return /* @__PURE__ */ jsx(BlogIndexView, { blog, posts: await listPostsForRender(blog) });
34
+ return /* @__PURE__ */ jsx(
35
+ BlogIndexView,
36
+ {
37
+ blog,
38
+ posts: await listPostsForRender(blog),
39
+ editor: editing.editor
40
+ }
41
+ );
34
42
  },
35
43
  async PostPage({ params }) {
36
44
  const post = await getPost((await params).slug);
37
45
  if (!post) notFound();
38
- return /* @__PURE__ */ jsx(BlogPostView, { blog, post });
46
+ return /* @__PURE__ */ jsx(BlogPostView, { blog, post, editor: editing.editor });
47
+ },
48
+ /** The hand-off callback; renders nothing without `editing.callback`. */
49
+ CallbackPage() {
50
+ const Callback = editing.callback;
51
+ return Callback ? /* @__PURE__ */ jsx(Callback, { ...blog.editing }) : null;
52
+ },
53
+ callbackMetadata: {
54
+ robots: { index: false, follow: false }
39
55
  },
40
56
  async generateStaticParams() {
41
57
  return (await listPostsForRender(blog)).map(({ slug }) => ({ slug }));
@@ -87,6 +103,7 @@ function createAppBlog(config) {
87
103
  }
88
104
  export {
89
105
  DEFAULT_API_BASE,
106
+ DEFAULT_APP_URL,
90
107
  DEFAULT_BASE_PATH,
91
108
  DEFAULT_REVALIDATE_SECONDS,
92
109
  createAppBlog,
@@ -1,6 +1,6 @@
1
1
  import type { GetServerSideProps, GetStaticPaths, GetStaticProps } from "next";
2
2
  import type { Post, PostSummary } from "../content-source.js";
3
- import { type BlogConfig, type ResolvedBlog } from "./config.js";
3
+ import { type BlogConfig, type BlogEditing, type ResolvedBlog } from "./config.js";
4
4
  export type { BlogConfig } from "./config.js";
5
5
  interface IndexProps {
6
6
  posts: PostSummary[];
@@ -13,15 +13,17 @@ interface PostProps {
13
13
  *
14
14
  * - `pages/blog/index.tsx`: `IndexPage`, `getIndexStaticProps` as `getStaticProps`
15
15
  * - `pages/blog/[slug].tsx`: `PostPage`, `getPostStaticPaths`, `getPostStaticProps`
16
+ * - `pages/blog/__cp/callback.tsx`: `CallbackPage`
16
17
  * - `pages/blog/feed.xml.tsx`, `sitemap.xml.tsx`: `getFeedServerSideProps`, `getSitemapServerSideProps`
17
18
  *
18
19
  * Pages regenerate every `revalidate` seconds (ISR). A 404 from the API is "no
19
20
  * such post"; any other failure throws, so ISR keeps the last good page.
20
21
  */
21
- export declare function createPagesBlog(config: BlogConfig): {
22
+ export declare function createPagesBlog(config: BlogConfig, editing?: BlogEditing): {
22
23
  blog: ResolvedBlog;
23
24
  IndexPage: ({ posts }: IndexProps) => import("react/jsx-runtime").JSX.Element;
24
25
  PostPage: ({ post }: PostProps) => import("react/jsx-runtime").JSX.Element;
26
+ CallbackPage: () => import("react/jsx-runtime").JSX.Element;
25
27
  getIndexStaticProps: GetStaticProps<IndexProps>;
26
28
  getPostStaticPaths: GetStaticPaths;
27
29
  getPostStaticProps: GetStaticProps<PostProps>;
@@ -4,12 +4,12 @@ import {
4
4
  indexJsonLd,
5
5
  postJsonLd,
6
6
  shareImage
7
- } from "../chunks/chunk-WJVZD4UI.js";
7
+ } from "../chunks/chunk-PPMNLNLD.js";
8
8
  import {
9
9
  isBuildPhase,
10
10
  listPostsForRender,
11
11
  resolveBlog
12
- } from "../chunks/chunk-3GCZFCUK.js";
12
+ } from "../chunks/chunk-LFSX43CO.js";
13
13
  import "../chunks/chunk-AJVVTSKZ.js";
14
14
  import "../chunks/chunk-EICE5ONB.js";
15
15
  import {
@@ -70,7 +70,7 @@ function PageHead({
70
70
  ))
71
71
  ] });
72
72
  }
73
- function createPagesBlog(config) {
73
+ function createPagesBlog(config, editing = {}) {
74
74
  const blog = resolveBlog(config);
75
75
  const { site, revalidate } = blog;
76
76
  function respond(res, body, contentType) {
@@ -96,7 +96,15 @@ function createPagesBlog(config) {
96
96
  structuredData: [indexJsonLd(site, posts)]
97
97
  }
98
98
  ),
99
- /* @__PURE__ */ jsx(BlogIndexView, { blog, posts, structuredData: false })
99
+ /* @__PURE__ */ jsx(
100
+ BlogIndexView,
101
+ {
102
+ blog,
103
+ posts,
104
+ structuredData: false,
105
+ editor: editing.editor
106
+ }
107
+ )
100
108
  ] });
101
109
  }
102
110
  function PostPage({ post }) {
@@ -113,7 +121,22 @@ function createPagesBlog(config) {
113
121
  structuredData: postJsonLd(site, post)
114
122
  }
115
123
  ),
116
- /* @__PURE__ */ jsx(BlogPostView, { blog, post, structuredData: false })
124
+ /* @__PURE__ */ jsx(
125
+ BlogPostView,
126
+ {
127
+ blog,
128
+ post,
129
+ structuredData: false,
130
+ editor: editing.editor
131
+ }
132
+ )
133
+ ] });
134
+ }
135
+ function CallbackPage() {
136
+ const Callback = editing.callback;
137
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
138
+ /* @__PURE__ */ jsx(Head, { children: /* @__PURE__ */ jsx("meta", { name: "robots", content: "noindex, nofollow" }) }),
139
+ Callback ? /* @__PURE__ */ jsx(Callback, { ...blog.editing }) : null
117
140
  ] });
118
141
  }
119
142
  const getIndexStaticProps = async () => {
@@ -153,6 +176,7 @@ function createPagesBlog(config) {
153
176
  blog,
154
177
  IndexPage,
155
178
  PostPage,
179
+ CallbackPage,
156
180
  getIndexStaticProps,
157
181
  getPostStaticPaths,
158
182
  getPostStaticProps,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  listPostsForRender,
3
3
  resolveBlog
4
- } from "../chunks/chunk-3GCZFCUK.js";
4
+ } from "../chunks/chunk-LFSX43CO.js";
5
5
  import {
6
6
  feedXml,
7
7
  sitemapXml
@@ -1,18 +1,20 @@
1
1
  import type { Post, PostSummary } from "../content-source.js";
2
2
  import { type BlogSite } from "../seo.js";
3
- import type { ResolvedBlog } from "./config.js";
3
+ import type { BlogEditing, ResolvedBlog } from "./config.js";
4
4
  /** A share image, or nothing when neither the post nor the site has one. */
5
5
  export declare function shareImage(site: BlogSite, ogImage: string | undefined): string | undefined;
6
6
  export declare function indexJsonLd(site: BlogSite, posts: PostSummary[]): string;
7
7
  export declare function postJsonLd(site: BlogSite, post: Post): string[];
8
- export declare function BlogIndexView({ blog, posts, structuredData, }: {
8
+ export declare function BlogIndexView({ blog, posts, structuredData, editor: Editor, }: {
9
9
  blog: ResolvedBlog;
10
10
  posts: PostSummary[];
11
11
  /** The Pages Router renders JSON-LD in its `<Head>` instead. */
12
12
  structuredData?: boolean;
13
+ editor?: BlogEditing["editor"];
13
14
  }): import("react/jsx-runtime").JSX.Element;
14
- export declare function BlogPostView({ blog, post, structuredData, }: {
15
+ export declare function BlogPostView({ blog, post, structuredData, editor: Editor, }: {
15
16
  blog: ResolvedBlog;
16
17
  post: Post;
17
18
  structuredData?: boolean;
19
+ editor?: BlogEditing["editor"];
18
20
  }): import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codepress/blog",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Render a CodePress blog: registry, sanitizer, schema, SEO, feed, sitemap, content source and React renderer.",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -35,7 +35,8 @@
35
35
  "types": "./dist/editor/client.d.ts",
36
36
  "default": "./dist/editor/client.js"
37
37
  },
38
- "./blog.css": "./dist/blog.css"
38
+ "./blog.css": "./dist/blog.css",
39
+ "./editor.css": "./dist/editor.css"
39
40
  },
40
41
  "publishConfig": {
41
42
  "access": "public"
@@ -1,104 +0,0 @@
1
- // src/editor/config.ts
2
- var DEFAULT_TIMINGS = {
3
- autosaveMs: 2e3,
4
- draftPollMs: 1e4,
5
- publishReloadMs: 4e3
6
- };
7
- function resolveTimings(timings) {
8
- const pick = (key) => {
9
- const value = timings?.[key];
10
- return typeof value === "number" && value > 0 ? value : DEFAULT_TIMINGS[key];
11
- };
12
- return {
13
- autosaveMs: pick("autosaveMs"),
14
- draftPollMs: pick("draftPollMs"),
15
- publishReloadMs: pick("publishReloadMs")
16
- };
17
- }
18
- var DEFAULT_COLUMN = "mx-auto w-full max-w-[720px] px-5 sm:px-8";
19
- var DEFAULT_APP_URL = "https://codepress.dev";
20
- var BLOG_TOOLBAR_BOTTOM_VAR = "--blog-toolbar-bottom";
21
-
22
- // src/editor/EditDesignLink.tsx
23
- import { jsx } from "react/jsx-runtime";
24
- function designTargetOf(capabilities) {
25
- const {
26
- organization_slug: organizationSlug,
27
- repository_full_name: repository
28
- } = capabilities;
29
- return organizationSlug && repository ? { organizationSlug, repository } : null;
30
- }
31
- function designUrl({ organizationSlug, repository }, slug, appUrl = "") {
32
- const query = new URLSearchParams({
33
- repo: repository,
34
- path: `/blog/${slug}`
35
- });
36
- return `${appUrl}/dashboard/${encodeURIComponent(organizationSlug)}/design?${query.toString()}`;
37
- }
38
- function EditDesignLink({
39
- href,
40
- children = "Edit design",
41
- ...rest
42
- }) {
43
- if (!href) return null;
44
- return /* @__PURE__ */ jsx(
45
- "a",
46
- {
47
- ...rest,
48
- href,
49
- target: "_blank",
50
- rel: "noopener noreferrer",
51
- "data-testid": "blog-edit-design",
52
- children
53
- }
54
- );
55
- }
56
-
57
- // src/editor/header.ts
58
- import { useLayoutEffect, useState } from "react";
59
- var DEFAULT_HEADER_SELECTOR = "[data-blog-header]";
60
- function findHostHeader(selector, editorRoot) {
61
- const matched = document.querySelector(
62
- selector ?? DEFAULT_HEADER_SELECTOR
63
- );
64
- if (matched) return matched;
65
- return Array.from(document.querySelectorAll("header")).find(
66
- (element) => !editorRoot?.contains(element)
67
- ) ?? null;
68
- }
69
- function useHeaderOffset(header, own) {
70
- const selector = header?.selector;
71
- const offset = header?.offset;
72
- const [height, setHeight] = useState(0);
73
- useLayoutEffect(() => {
74
- if (offset !== void 0) return;
75
- const element = findHostHeader(
76
- selector,
77
- own.current?.closest('[data-testid="blog-editor"]') ?? own.current
78
- );
79
- if (!element) {
80
- setHeight(0);
81
- return;
82
- }
83
- const update = () => setHeight(element.offsetHeight);
84
- update();
85
- if (typeof ResizeObserver === "undefined") return;
86
- const observer = new ResizeObserver(update);
87
- observer.observe(element);
88
- return () => observer.disconnect();
89
- }, [selector, offset, own]);
90
- return offset ?? height;
91
- }
92
-
93
- export {
94
- DEFAULT_TIMINGS,
95
- resolveTimings,
96
- DEFAULT_COLUMN,
97
- DEFAULT_APP_URL,
98
- BLOG_TOOLBAR_BOTTOM_VAR,
99
- designTargetOf,
100
- designUrl,
101
- EditDesignLink,
102
- DEFAULT_HEADER_SELECTOR,
103
- useHeaderOffset
104
- };