magic-editor-x 1.3.4 → 1.3.6

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.
@@ -7,10 +7,10 @@ const admin = require("@strapi/strapi/admin");
7
7
  const styled = require("styled-components");
8
8
  const outline = require("@heroicons/react/24/outline");
9
9
  const EditorJS = require("@editorjs/editorjs");
10
- const getTranslation = require("./getTranslation-DB9tlKh9.js");
11
- const tools = require("./tools-3bMqs3Or.js");
12
- const index = require("./index-DO-QpiC9.js");
13
- const LicensePage = require("./LicensePage-BIaCAB4C.js");
10
+ const getTranslation = require("./getTranslation-BFYSgCMJ.js");
11
+ const tools = require("./tools-CZFxM_lD.js");
12
+ const index = require("./index-B_gIy3qL.js");
13
+ const LicensePage = require("./LicensePage-DuV_uXao.js");
14
14
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
15
15
  const styled__default = /* @__PURE__ */ _interopDefault(styled);
16
16
  const EditorJS__default = /* @__PURE__ */ _interopDefault(EditorJS);
@@ -5,10 +5,10 @@ import { useFetchClient, useNotification, Page } from "@strapi/strapi/admin";
5
5
  import styled, { css, keyframes } from "styled-components";
6
6
  import { HashtagIcon, DocumentTextIcon, ListBulletIcon, CheckIcon, ChatBubbleBottomCenterTextIcon, CodeBracketIcon, PhotoIcon, TableCellsIcon, LinkIcon, ExclamationTriangleIcon, PaperClipIcon, BellAlertIcon, SparklesIcon, BeakerIcon, PlayCircleIcon, ArrowPathIcon, EyeIcon, DocumentDuplicateIcon, ChevronRightIcon, CubeTransparentIcon, Cog6ToothIcon, UserGroupIcon, BookOpenIcon, CommandLineIcon, UserPlusIcon, TrashIcon, CheckCircleIcon, XMarkIcon, KeyIcon } from "@heroicons/react/24/outline";
7
7
  import EditorJS from "@editorjs/editorjs";
8
- import { u as useIntl, g as getTranslation, L as Loader, a as Box, T as Typography, F as Flex, c as TextInput, B as Button$2 } from "./getTranslation-CZ77ytJY.mjs";
9
- import { g as getTools } from "./tools-CNqrBm-q.mjs";
10
- import { P as PLUGIN_ID } from "./index-BNxjfrVK.mjs";
11
- import LicensePage from "./LicensePage-Cj6-z6rO.mjs";
8
+ import { u as useIntl, g as getTranslation, L as Loader, a as Box, T as Typography, F as Flex, c as TextInput, B as Button$2 } from "./getTranslation-DP4KaXRi.mjs";
9
+ import { g as getTools } from "./tools-Qb0aXrud.mjs";
10
+ import { P as PLUGIN_ID } from "./index-BYzgJaH8.mjs";
11
+ import LicensePage from "./LicensePage-DunwoRaq.mjs";
12
12
  const fadeInUp = keyframes`
13
13
  from { opacity: 0; transform: translateY(20px); }
14
14
  to { opacity: 1; transform: translateY(0); }
@@ -3,9 +3,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
5
  const admin = require("@strapi/strapi/admin");
6
- const getTranslation = require("./getTranslation-DB9tlKh9.js");
6
+ const getTranslation = require("./getTranslation-BFYSgCMJ.js");
7
7
  const styled = require("styled-components");
8
- const index = require("./index-DO-QpiC9.js");
8
+ const index = require("./index-B_gIy3qL.js");
9
9
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
10
10
  const styled__default = /* @__PURE__ */ _interopDefault(styled);
11
11
  const Container = styled__default.default(getTranslation.Box)`
@@ -1,9 +1,9 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useState, useEffect } from "react";
3
3
  import { useFetchClient, useNotification } from "@strapi/strapi/admin";
4
- import { u as useIntl, F as Flex, L as Loader, T as Typography, d as Badge, a as Box, g as getTranslation, B as Button } from "./getTranslation-CZ77ytJY.mjs";
4
+ import { u as useIntl, F as Flex, L as Loader, T as Typography, d as Badge, a as Box, g as getTranslation, B as Button } from "./getTranslation-DP4KaXRi.mjs";
5
5
  import styled from "styled-components";
6
- import { F as ForwardRef$2o, a as ForwardRef$26, b as ForwardRef$o, c as ForwardRef$1g, d as ForwardRef$y } from "./index-BNxjfrVK.mjs";
6
+ import { F as ForwardRef$2o, a as ForwardRef$26, b as ForwardRef$o, c as ForwardRef$1g, d as ForwardRef$y } from "./index-BYzgJaH8.mjs";
7
7
  const Container = styled(Box)`
8
8
  padding: 32px;
9
9
  max-width: 1400px;
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { useState, useEffect, useMemo } from "react";
3
- import { u as useIntl, F as Flex, g as getTranslation } from "./getTranslation-CZ77ytJY.mjs";
3
+ import { u as useIntl, F as Flex, g as getTranslation } from "./getTranslation-DP4KaXRi.mjs";
4
4
  import styled, { css, keyframes } from "styled-components";
5
5
  const pulse = keyframes`
6
6
  0%, 100% {
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
- const getTranslation = require("./getTranslation-DB9tlKh9.js");
5
+ const getTranslation = require("./getTranslation-BFYSgCMJ.js");
6
6
  const styled = require("styled-components");
7
7
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
8
8
  const styled__default = /* @__PURE__ */ _interopDefault(styled);
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { useState, useEffect } from "react";
3
- import { u as useIntl, L as Loader, a as Box, A as Alert, F as Flex, T as Typography, B as Button, d as Badge, e as Accordion, g as getTranslation } from "./getTranslation-CZ77ytJY.mjs";
3
+ import { u as useIntl, L as Loader, a as Box, A as Alert, F as Flex, T as Typography, B as Button, d as Badge, e as Accordion, g as getTranslation } from "./getTranslation-DP4KaXRi.mjs";
4
4
  import { useFetchClient, useNotification } from "@strapi/strapi/admin";
5
5
  import { ArrowPathIcon, DocumentDuplicateIcon, ArrowDownTrayIcon, UserIcon, UsersIcon, ShieldCheckIcon, SparklesIcon, ChartBarIcon } from "@heroicons/react/24/outline";
6
6
  import styled, { css, keyframes } from "styled-components";
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
- const getTranslation = require("./getTranslation-DB9tlKh9.js");
5
+ const getTranslation = require("./getTranslation-BFYSgCMJ.js");
6
6
  const admin = require("@strapi/strapi/admin");
7
7
  const outline = require("@heroicons/react/24/outline");
8
8
  const styled = require("styled-components");
@@ -3,7 +3,7 @@ const React = require("react");
3
3
  const styled = require("styled-components");
4
4
  const jsxRuntime = require("react/jsx-runtime");
5
5
  const ReactDOM = require("react-dom");
6
- const index$1 = require("./index-DO-QpiC9.js");
6
+ const index$1 = require("./index-B_gIy3qL.js");
7
7
  function _interopNamespace(e) {
8
8
  if (e && e.__esModule) return e;
9
9
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -4,7 +4,7 @@ import { styled, css, keyframes, createGlobalStyle, useTheme } from "styled-comp
4
4
  import { jsx, jsxs, Fragment as Fragment$1 } from "react/jsx-runtime";
5
5
  import * as ReactDOM from "react-dom";
6
6
  import ReactDOM__default, { flushSync, createPortal } from "react-dom";
7
- import { a as ForwardRef$26, e as ForwardRef$2n, f as ForwardRef$2, g as ForwardRef$1l, h as ForwardRef$1b, i as ForwardRef$2v, j as ForwardRef$1U, k as ForwardRef$2j, l as ForwardRef$12, m as ForwardRef$2k, n as ForwardRef$2x, o as ForwardRef$2h, p as ForwardRef$v, P as PLUGIN_ID } from "./index-BNxjfrVK.mjs";
7
+ import { a as ForwardRef$26, e as ForwardRef$2n, f as ForwardRef$2, g as ForwardRef$1l, h as ForwardRef$1b, i as ForwardRef$2v, j as ForwardRef$1U, k as ForwardRef$2j, l as ForwardRef$12, m as ForwardRef$2k, n as ForwardRef$2x, o as ForwardRef$2h, p as ForwardRef$v, P as PLUGIN_ID } from "./index-BYzgJaH8.mjs";
8
8
  var __assign = function() {
9
9
  __assign = Object.assign || function __assign2(t2) {
10
10
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -2383,7 +2383,7 @@ const index = {
2383
2383
  icon: PluginIcon,
2384
2384
  // Input component for Content Manager
2385
2385
  components: {
2386
- Input: async () => import("./index-Byp_IaHi.mjs").then((module) => ({
2386
+ Input: async () => import("./index-JeJFUWv9.mjs").then((module) => ({
2387
2387
  default: module.default
2388
2388
  }))
2389
2389
  },
@@ -2445,7 +2445,7 @@ const index = {
2445
2445
  defaultMessage: "Magic Editor X"
2446
2446
  },
2447
2447
  // Use lazy import without async wrapper to avoid deprecation warning
2448
- Component: () => import("./App-Czke2os9.mjs"),
2448
+ Component: () => import("./App-CWCkeXGo.mjs"),
2449
2449
  permissions: []
2450
2450
  });
2451
2451
  app.createSettingSection(
@@ -2464,7 +2464,7 @@ const index = {
2464
2464
  id: "upgrade",
2465
2465
  // relative path (no leading slash)
2466
2466
  to: `${PLUGIN_ID}/upgrade`,
2467
- Component: () => import("./LicensePage-Cj6-z6rO.mjs")
2467
+ Component: () => import("./LicensePage-DunwoRaq.mjs")
2468
2468
  },
2469
2469
  {
2470
2470
  intlLabel: {
@@ -2474,7 +2474,7 @@ const index = {
2474
2474
  id: "license",
2475
2475
  // relative path (no leading slash)
2476
2476
  to: `${PLUGIN_ID}/license`,
2477
- Component: () => import("./Settings-CsaF0hO7.mjs")
2477
+ Component: () => import("./Settings-CDbiC2pb.mjs")
2478
2478
  }
2479
2479
  ]
2480
2480
  );
@@ -2484,7 +2484,7 @@ const index = {
2484
2484
  * Bootstrap the plugin
2485
2485
  */
2486
2486
  async bootstrap(app) {
2487
- const { default: LiveCollaborationPanel } = await import("./LiveCollaborationPanel-D11eAcKk.mjs");
2487
+ const { default: LiveCollaborationPanel } = await import("./LiveCollaborationPanel-C-xwOtK-.mjs");
2488
2488
  try {
2489
2489
  const contentManagerPlugin = app.getPlugin("content-manager");
2490
2490
  if (contentManagerPlugin && contentManagerPlugin.apis) {
@@ -2384,7 +2384,7 @@ const index = {
2384
2384
  icon: PluginIcon,
2385
2385
  // Input component for Content Manager
2386
2386
  components: {
2387
- Input: async () => Promise.resolve().then(() => require("./index-BmWx_nJX.js")).then((module2) => ({
2387
+ Input: async () => Promise.resolve().then(() => require("./index-C2pIXifO.js")).then((module2) => ({
2388
2388
  default: module2.default
2389
2389
  }))
2390
2390
  },
@@ -2446,7 +2446,7 @@ const index = {
2446
2446
  defaultMessage: "Magic Editor X"
2447
2447
  },
2448
2448
  // Use lazy import without async wrapper to avoid deprecation warning
2449
- Component: () => Promise.resolve().then(() => require("./App-CWXreQMz.js")),
2449
+ Component: () => Promise.resolve().then(() => require("./App-BpSMhQIR.js")),
2450
2450
  permissions: []
2451
2451
  });
2452
2452
  app.createSettingSection(
@@ -2465,7 +2465,7 @@ const index = {
2465
2465
  id: "upgrade",
2466
2466
  // relative path (no leading slash)
2467
2467
  to: `${PLUGIN_ID}/upgrade`,
2468
- Component: () => Promise.resolve().then(() => require("./LicensePage-BIaCAB4C.js"))
2468
+ Component: () => Promise.resolve().then(() => require("./LicensePage-DuV_uXao.js"))
2469
2469
  },
2470
2470
  {
2471
2471
  intlLabel: {
@@ -2475,7 +2475,7 @@ const index = {
2475
2475
  id: "license",
2476
2476
  // relative path (no leading slash)
2477
2477
  to: `${PLUGIN_ID}/license`,
2478
- Component: () => Promise.resolve().then(() => require("./Settings-BsoK7S5l.js"))
2478
+ Component: () => Promise.resolve().then(() => require("./Settings-DvH7epUa.js"))
2479
2479
  }
2480
2480
  ]
2481
2481
  );
@@ -2485,7 +2485,7 @@ const index = {
2485
2485
  * Bootstrap the plugin
2486
2486
  */
2487
2487
  async bootstrap(app) {
2488
- const { default: LiveCollaborationPanel } = await Promise.resolve().then(() => require("./LiveCollaborationPanel-BmAFvNll.js"));
2488
+ const { default: LiveCollaborationPanel } = await Promise.resolve().then(() => require("./LiveCollaborationPanel-Cszm9ewD.js"));
2489
2489
  try {
2490
2490
  const contentManagerPlugin = app.getPlugin("content-manager");
2491
2491
  if (contentManagerPlugin && contentManagerPlugin.apis) {
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
- const getTranslation = require("./getTranslation-DB9tlKh9.js");
5
+ const getTranslation = require("./getTranslation-BFYSgCMJ.js");
6
6
  const styled = require("styled-components");
7
7
  const outline = require("@heroicons/react/24/outline");
8
8
  const EditorJS = require("@editorjs/editorjs");
9
- const tools = require("./tools-3bMqs3Or.js");
9
+ const tools = require("./tools-CZFxM_lD.js");
10
10
  const admin = require("@strapi/strapi/admin");
11
- const index = require("./index-DO-QpiC9.js");
11
+ const index = require("./index-B_gIy3qL.js");
12
12
  const socket_ioClient = require("socket.io-client");
13
13
  const Y = require("yjs");
14
14
  const yIndexeddb = require("y-indexeddb");
@@ -2154,22 +2154,24 @@ const EditorJSGlobalStyles = styled.createGlobalStyle`
2154
2154
  z-index: 99999 !important;
2155
2155
  background: white !important;
2156
2156
  border: 1px solid #e2e8f0 !important;
2157
- border-radius: 8px !important;
2158
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12) !important;
2159
- padding: 4px !important;
2157
+ border-radius: 12px !important;
2158
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1) !important;
2159
+ padding: 6px !important;
2160
+ position: absolute !important;
2161
+ transform: translateY(-8px) !important;
2160
2162
  }
2161
2163
 
2162
2164
  .ce-popover--inline .ce-popover__container {
2163
2165
  display: block !important;
2166
+ height: auto !important;
2164
2167
  }
2165
2168
 
2166
2169
  /* Items container - HORIZONTAL layout for inline tools */
2167
2170
  .ce-popover--inline .ce-popover__items {
2168
2171
  display: flex !important;
2169
2172
  flex-direction: row !important;
2170
- flex-wrap: wrap !important;
2171
- align-items: center !important;
2172
- gap: 2px !important;
2173
+ flex-wrap: nowrap !important;
2174
+ gap: 4px !important;
2173
2175
  opacity: 1 !important;
2174
2176
  visibility: visible !important;
2175
2177
  }
@@ -2186,26 +2188,28 @@ const EditorJSGlobalStyles = styled.createGlobalStyle`
2186
2188
  display: flex !important;
2187
2189
  align-items: center !important;
2188
2190
  justify-content: center !important;
2189
- width: 32px !important;
2190
- height: 32px !important;
2191
+ width: 36px !important;
2192
+ height: 36px !important;
2191
2193
  opacity: 1 !important;
2192
2194
  visibility: visible !important;
2193
2195
  background: transparent !important;
2194
2196
  border: none !important;
2195
- border-radius: 6px !important;
2197
+ border-radius: 8px !important;
2196
2198
  cursor: pointer !important;
2197
2199
  color: #64748b !important;
2198
- transition: background 0.15s ease, color 0.15s ease !important;
2200
+ transition: all 0.15s ease !important;
2199
2201
  }
2200
2202
 
2201
2203
  .ce-popover--inline .ce-inline-tool:hover {
2202
2204
  background: #f1f5f9 !important;
2203
2205
  color: #334155 !important;
2206
+ transform: scale(1.05) !important;
2204
2207
  }
2205
2208
 
2206
2209
  .ce-popover--inline .ce-inline-tool--active {
2207
- background: #ede9fe !important;
2210
+ background: linear-gradient(135deg, #ede9fe 0%, #ddd6fe 100%) !important;
2208
2211
  color: #7C3AED !important;
2212
+ font-weight: 600 !important;
2209
2213
  }
2210
2214
 
2211
2215
  .ce-popover--inline .ce-inline-tool svg {
@@ -2213,6 +2217,28 @@ const EditorJSGlobalStyles = styled.createGlobalStyle`
2213
2217
  height: 18px !important;
2214
2218
  }
2215
2219
 
2220
+ /* AI Assistant button in inline toolbar - special styling */
2221
+ .ce-popover--inline .ce-inline-tool[data-tool="aiAssistant"] {
2222
+ background: linear-gradient(135deg, #7C3AED 0%, #6d28d9 100%) !important;
2223
+ color: white !important;
2224
+ margin-left: 4px !important;
2225
+ position: relative !important;
2226
+ }
2227
+
2228
+ .ce-popover--inline .ce-inline-tool[data-tool="aiAssistant"]:hover {
2229
+ background: linear-gradient(135deg, #6d28d9 0%, #5b21b6 100%) !important;
2230
+ color: white !important;
2231
+ box-shadow: 0 4px 12px rgba(124, 58, 237, 0.4) !important;
2232
+ }
2233
+
2234
+ .ce-popover--inline .ce-inline-tool[data-tool="aiAssistant"]::before {
2235
+ content: '✨';
2236
+ position: absolute;
2237
+ top: -2px;
2238
+ right: -2px;
2239
+ font-size: 12px;
2240
+ }
2241
+
2216
2242
  /* Convert-to button (block type changer) */
2217
2243
  .ce-popover--inline .ce-popover-item[data-item-name="convert-to"] {
2218
2244
  display: flex !important;
@@ -2226,18 +2252,31 @@ const EditorJSGlobalStyles = styled.createGlobalStyle`
2226
2252
  background: #f1f5f9 !important;
2227
2253
  }
2228
2254
 
2229
- /* Separator line between convert-to and inline tools */
2255
+ /* Separator line between tool groups */
2230
2256
  .ce-popover--inline .ce-popover-item-separator {
2231
2257
  width: 1px !important;
2232
- height: 24px !important;
2233
- background: #e2e8f0 !important;
2234
- margin: 0 4px !important;
2258
+ height: 28px !important;
2259
+ background: linear-gradient(180deg, transparent 0%, #e2e8f0 20%, #e2e8f0 80%, transparent 100%) !important;
2260
+ margin: 0 6px !important;
2261
+ flex-shrink: 0 !important;
2235
2262
  }
2236
2263
 
2237
2264
  .ce-popover--inline .ce-popover-item-separator__line {
2238
2265
  display: none !important;
2239
2266
  }
2240
2267
 
2268
+ /* Separator before AI button */
2269
+ .ce-popover--inline .ce-inline-tool[data-tool="aiAssistant"]::after {
2270
+ content: '';
2271
+ position: absolute;
2272
+ left: -8px;
2273
+ top: 50%;
2274
+ transform: translateY(-50%);
2275
+ width: 1px;
2276
+ height: 28px;
2277
+ background: linear-gradient(180deg, transparent 0%, #c4b5fd 20%, #c4b5fd 80%, transparent 100%);
2278
+ }
2279
+
2241
2280
  /* ============================================
2242
2281
  GLOBAL Z-INDEX FOR ALL EDITOR POPOVERS
2243
2282
  ============================================ */
@@ -2247,10 +2286,73 @@ const EditorJSGlobalStyles = styled.createGlobalStyle`
2247
2286
  .ce-popover--opened,
2248
2287
  .ce-inline-toolbar,
2249
2288
  .ce-settings,
2250
- .ce-conversion-toolbar {
2289
+ .ce-conversion-toolbar,
2290
+ .ce-toolbox {
2251
2291
  z-index: 99999 !important;
2252
2292
  }
2253
2293
 
2294
+ /* ============================================
2295
+ TOOLBOX POPOVER (Plus Button) - CRITICAL FIX
2296
+ Make sure items are visible and properly displayed
2297
+ ============================================ */
2298
+
2299
+ .ce-popover:not(.ce-popover--inline) {
2300
+ display: block !important;
2301
+ visibility: visible !important;
2302
+ opacity: 1 !important;
2303
+ z-index: 99999 !important;
2304
+ }
2305
+
2306
+ .ce-popover--opened {
2307
+ display: block !important;
2308
+ visibility: visible !important;
2309
+ opacity: 1 !important;
2310
+ }
2311
+
2312
+ .ce-popover__container {
2313
+ display: block !important;
2314
+ visibility: visible !important;
2315
+ opacity: 1 !important;
2316
+ }
2317
+
2318
+ .ce-popover__items {
2319
+ display: block !important;
2320
+ visibility: visible !important;
2321
+ opacity: 1 !important;
2322
+ max-height: 400px !important;
2323
+ overflow-y: auto !important;
2324
+ }
2325
+
2326
+ .ce-popover-item {
2327
+ display: flex !important;
2328
+ visibility: visible !important;
2329
+ opacity: 1 !important;
2330
+ }
2331
+
2332
+ .ce-popover-item__icon {
2333
+ display: flex !important;
2334
+ visibility: visible !important;
2335
+ opacity: 1 !important;
2336
+ }
2337
+
2338
+ .ce-popover-item__title {
2339
+ display: block !important;
2340
+ visibility: visible !important;
2341
+ opacity: 1 !important;
2342
+ }
2343
+
2344
+ /* Hide empty/nothing-found message for main toolbox */
2345
+ .ce-popover:not(.ce-popover--inline) .ce-popover__nothing-found-message {
2346
+ display: none !important;
2347
+ }
2348
+
2349
+ /* Make sure search is visible */
2350
+ .ce-popover__search {
2351
+ display: block !important;
2352
+ visibility: visible !important;
2353
+ opacity: 1 !important;
2354
+ }
2355
+
2254
2356
  /* ============================================
2255
2357
  READONLY MODE - Block all editing interactions
2256
2358
  ============================================ */
@@ -2330,11 +2432,29 @@ const EditorJSGlobalStyles = styled.createGlobalStyle`
2330
2432
  /* Inline toolbar */
2331
2433
  .ce-inline-toolbar {
2332
2434
  z-index: 99998 !important;
2435
+ background: white !important;
2436
+ border: 1px solid #e2e8f0 !important;
2437
+ border-radius: 12px !important;
2438
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15) !important;
2333
2439
  }
2334
2440
 
2335
2441
  /* Conversion toolbar */
2336
2442
  .ce-conversion-toolbar {
2337
2443
  z-index: 99999 !important;
2444
+ padding: 8px !important;
2445
+ display: flex !important;
2446
+ flex-wrap: wrap !important;
2447
+ align-items: center !important;
2448
+ justify-content: center !important;
2449
+ gap: 4px !important;
2450
+ background: white !important;
2451
+ border: 1px solid #e2e8f0 !important;
2452
+ border-radius: 12px !important;
2453
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15) !important;
2454
+ }
2455
+
2456
+ .ce-conversion-tool {
2457
+ margin: 0 !important;
2338
2458
  }
2339
2459
 
2340
2460
  /* Block tune popovers */
@@ -3170,8 +3290,12 @@ const EditorWrapper = styled__default.default.div`
3170
3290
  border-radius: 12px !important;
3171
3291
  }
3172
3292
 
3173
- .ce-popover__items {
3174
- padding: 8px !important;
3293
+ /* Only inline toolbar (text selection) needs overflow visible */
3294
+ .ce-inline-toolbar,
3295
+ .ce-inline-toolbar .ce-popover,
3296
+ .ce-inline-toolbar .ce-popover__container,
3297
+ .ce-inline-toolbar .ce-popover__items {
3298
+ overflow: visible !important;
3175
3299
  }
3176
3300
 
3177
3301
  .ce-popover-item {