@kerebron/extension-menu 0.4.26 → 0.4.28

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.
@@ -50,7 +50,7 @@
50
50
  }
51
51
 
52
52
  .kb-custom-menu__resize-handle:hover .kb-custom-menu__resize-handle-bar {
53
- background: var(--kb-menu-dropdown-dark-border);
53
+ background: var(--kb-menu-dropdown-border);
54
54
  }
55
55
 
56
56
  .kb-custom-menu__wrapper--resizing .kb-custom-menu__resize-handle-bar {
@@ -59,7 +59,7 @@
59
59
 
60
60
  /* Toolbar */
61
61
  .kb-custom-menu {
62
- margin: 0;
62
+ margin: calc(-1 * var(--kb-space-sm)) 0 0 0;
63
63
  line-height: 1;
64
64
  font-size: var(--kb-text-sm);
65
65
  font-family:
@@ -70,8 +70,9 @@
70
70
  display: flex;
71
71
  flex-wrap: nowrap;
72
72
  align-items: center;
73
- gap: var(--kb-space-xs);
74
- padding: 6px var(--kb-space-sm);
73
+ gap: 2px;
74
+ height: 56px;
75
+ padding: 0 var(--kb-space-sm);
75
76
  background: var(--kb-color-surface-elevated);
76
77
  border-bottom: 1px solid var(--kb-color-border-strong);
77
78
  z-index: 1000;
@@ -86,21 +87,41 @@
86
87
 
87
88
  .kb-custom-menu__item .kb-menu__button,
88
89
  .kb-custom-menu__item .kb-dropdown__label {
89
- min-width: 32px;
90
- min-height: 32px;
91
- padding: var(--kb-space-xs) var(--kb-space-sm);
90
+ min-width: 44px;
91
+ min-height: 44px;
92
+ width: 44px;
93
+ height: 44px;
94
+ padding: 0;
92
95
  border: none;
93
96
  background: transparent;
94
97
  color: var(--kb-color-text);
95
98
  cursor: pointer;
96
99
  border-radius: var(--kb-radius-sm);
97
- transition: background-color 0.2s ease;
100
+ transition: background-color 0.2s ease, outline-color 0.15s ease;
98
101
  font-size: var(--kb-text-sm);
99
102
  display: inline-flex;
100
103
  align-items: center;
101
104
  justify-content: center;
102
105
  }
103
106
 
107
+ /* Focus styles for accessibility */
108
+ .kb-custom-menu__item .kb-menu__button:focus,
109
+ .kb-custom-menu__item .kb-dropdown__label:focus {
110
+ outline: 2px solid var(--kb-color-primary);
111
+ outline-offset: 2px;
112
+ }
113
+
114
+ .kb-custom-menu__item .kb-menu__button:focus:not(:focus-visible),
115
+ .kb-custom-menu__item .kb-dropdown__label:focus:not(:focus-visible) {
116
+ outline: none;
117
+ }
118
+
119
+ .kb-custom-menu__item .kb-menu__button:focus-visible,
120
+ .kb-custom-menu__item .kb-dropdown__label:focus-visible {
121
+ outline: 2px solid var(--kb-color-primary);
122
+ outline-offset: 2px;
123
+ }
124
+
104
125
  .kb-custom-menu__item .kb-menu__button:hover,
105
126
  .kb-custom-menu__item .kb-dropdown__label:hover {
106
127
  background: var(--kb-color-surface-hover);
@@ -112,22 +133,73 @@
112
133
  }
113
134
 
114
135
  .kb-custom-menu__item .kb-menu__button svg {
115
- width: 18px;
116
- height: 18px;
136
+ width: 20px !important;
137
+ height: 20px !important;
117
138
  fill: currentColor;
118
139
  }
119
140
 
141
+ /* Center icon content vertically */
142
+ .kb-custom-menu__item .kb-icon {
143
+ display: inline-flex;
144
+ align-items: center;
145
+ justify-content: center;
146
+ line-height: 1;
147
+ }
148
+
149
+ /* Hide text labels in dropdown buttons - icons only in toolbar */
150
+ .kb-custom-menu__item .kb-dropdown__label-text {
151
+ display: none;
152
+ }
153
+
154
+ /* Dropdown label styling for icon-only mode */
155
+ .kb-custom-menu__item .kb-dropdown__label {
156
+ display: inline-flex;
157
+ align-items: center;
158
+ justify-content: center;
159
+ position: relative;
160
+ }
161
+
162
+ /* Ensure dropdown icons are visible and sized correctly */
163
+ .kb-custom-menu__item .kb-dropdown__label .kb-icon {
164
+ display: inline-flex;
165
+ align-items: center;
166
+ justify-content: center;
167
+ }
168
+
169
+ .kb-custom-menu__item .kb-dropdown__label .kb-icon svg {
170
+ width: 20px !important;
171
+ height: 20px !important;
172
+ fill: currentColor;
173
+ }
174
+
175
+ /* Dropdown arrow for icon-only dropdowns */
176
+ .kb-custom-menu__item .kb-dropdown__label:after {
177
+ content: '';
178
+ border-left: 3px solid transparent;
179
+ border-right: 3px solid transparent;
180
+ border-top: 3px solid currentColor;
181
+ opacity: 0.7;
182
+ position: absolute;
183
+ right: 2px;
184
+ bottom: 2px;
185
+ }
186
+
187
+ /* Remove left padding from dropdown wrapper in custom menu */
188
+ .kb-custom-menu__item .kb-dropdown {
189
+ padding: 1px 0;
190
+ }
191
+
120
192
  /* Dropdown menus within custom menu - match toolbar dark background */
121
193
  .kb-custom-menu .kb-dropdown__menu {
122
- background: var(--kb-menu-dropdown-dark-bg);
123
- border: 1px solid var(--kb-menu-dropdown-dark-border);
194
+ background: var(--kb-menu-dropdown-bg);
195
+ border: 1px solid var(--kb-menu-dropdown-border);
124
196
  border-radius: var(--kb-radius-lg);
125
197
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
126
198
  padding: var(--kb-space-sm) 0;
127
199
  }
128
200
 
129
201
  .kb-custom-menu .kb-dropdown__item {
130
- color: var(--kb-menu-dropdown-dark-text);
202
+ color: var(--kb-menu-dropdown-text);
131
203
  padding: var(--kb-space-sm) var(--kb-space-md);
132
204
  font-size: var(--kb-text-sm);
133
205
  min-height: 36px;
@@ -155,19 +227,19 @@
155
227
  }
156
228
 
157
229
  .kb-custom-menu .kb-dropdown__item:hover {
158
- background: rgba(232, 234, 237, 0.08);
230
+ background: var(--kb-menu-dropdown-hover);
159
231
  }
160
232
 
161
233
  /* Submenu within custom menu (e.g., Heading levels) */
162
234
  .kb-custom-menu .kb-submenu__content {
163
- background: var(--kb-menu-dropdown-dark-bg) !important;
164
- border: 1px solid var(--kb-menu-dropdown-dark-border) !important;
235
+ background: var(--kb-menu-dropdown-bg) !important;
236
+ border: 1px solid var(--kb-menu-dropdown-border) !important;
165
237
  border-radius: var(--kb-radius-lg) !important;
166
238
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3) !important;
167
239
  }
168
240
 
169
241
  .kb-custom-menu .kb-submenu__label {
170
- color: var(--kb-menu-dropdown-dark-text) !important;
242
+ color: var(--kb-menu-dropdown-text) !important;
171
243
  }
172
244
 
173
245
  .kb-custom-menu .kb-submenu__label:hover {
@@ -175,7 +247,7 @@
175
247
  }
176
248
 
177
249
  .kb-custom-menu .kb-submenu__label:after {
178
- border-left-color: var(--kb-menu-dropdown-dark-text) !important;
250
+ border-left-color: var(--kb-menu-dropdown-text) !important;
179
251
  }
180
252
 
181
253
  /* Separator */
@@ -183,9 +255,8 @@
183
255
  width: 1px;
184
256
  height: var(--kb-space-lg);
185
257
  background: var(--kb-color-border-strong);
186
- margin: 0 var(--kb-space-xs);
258
+ margin: 0 8px;
187
259
  flex-shrink: 0;
188
- margin-left: auto;
189
260
  }
190
261
 
191
262
  /* Overflow toggle button (3-dot menu) */
@@ -193,9 +264,11 @@
193
264
  display: inline-flex;
194
265
  align-items: center;
195
266
  justify-content: center;
196
- min-width: 32px;
197
- min-height: 32px;
198
- padding: var(--kb-space-xs);
267
+ min-width: 44px;
268
+ min-height: 44px;
269
+ width: 44px;
270
+ height: 44px;
271
+ padding: 0;
199
272
  border: none;
200
273
  background: transparent;
201
274
  color: var(--kb-color-text);
@@ -203,25 +276,41 @@
203
276
  border-radius: var(--kb-radius-sm);
204
277
  margin-left: auto;
205
278
  flex-shrink: 0;
279
+ transition: background-color 0.2s ease;
206
280
  }
207
281
 
208
282
  .kb-custom-menu__overflow-toggle:hover {
209
283
  background: var(--kb-color-surface-hover);
210
284
  }
211
285
 
286
+ .kb-custom-menu__overflow-toggle:focus {
287
+ outline: 2px solid var(--kb-color-primary);
288
+ outline-offset: 2px;
289
+ }
290
+
291
+ .kb-custom-menu__overflow-toggle:focus:not(:focus-visible) {
292
+ outline: none;
293
+ }
294
+
295
+ .kb-custom-menu__overflow-toggle:focus-visible {
296
+ outline: 2px solid var(--kb-color-primary);
297
+ outline-offset: 2px;
298
+ }
299
+
212
300
  .kb-custom-menu__overflow-toggle svg {
213
301
  width: 20px;
214
302
  height: 20px;
215
303
  fill: currentColor;
216
304
  }
217
305
 
218
- /* Overflow menu dropdown */
306
+ /* Overflow menu dropdown - Google Docs style */
219
307
  .kb-custom-menu__overflow-menu {
220
308
  position: absolute;
221
309
  top: 48px;
222
310
  right: var(--kb-space-sm);
223
- min-width: 220px;
224
- max-width: 280px;
311
+ width: auto;
312
+ min-width: 180px;
313
+ max-width: 320px;
225
314
  background: var(--kb-color-surface);
226
315
  border: 1px solid var(--kb-color-border-strong);
227
316
  border-radius: var(--kb-radius-lg);
@@ -237,13 +326,24 @@
237
326
  .kb-custom-menu__overflow-content {
238
327
  flex: 1;
239
328
  overflow-y: auto;
240
- padding: var(--kb-space-sm) 0;
329
+ padding: var(--kb-space-sm);
241
330
  min-height: 0;
242
331
  max-height: 800px;
243
332
  }
244
333
 
334
+ /* Google Docs style grid layout for overflow menu */
335
+ .kb-custom-menu__overflow-content--grid {
336
+ display: flex;
337
+ flex-wrap: wrap;
338
+ align-items: center;
339
+ justify-content: flex-start;
340
+ gap: 2px;
341
+ padding: var(--kb-space-sm);
342
+ }
343
+
245
344
  /* Overflow menu section header */
246
345
  .kb-custom-menu__overflow-header {
346
+ width: 100%;
247
347
  padding: var(--kb-space-sm) var(--kb-space-md) var(--kb-space-xs)
248
348
  var(--kb-space-md);
249
349
  font-size: 11px;
@@ -254,7 +354,7 @@
254
354
  margin-bottom: var(--kb-space-xs);
255
355
  }
256
356
 
257
- /* Overflow menu items */
357
+ /* Overflow menu items - default list style */
258
358
  .kb-custom-menu__overflow-item {
259
359
  display: flex;
260
360
  align-items: center;
@@ -266,12 +366,97 @@
266
366
  margin: 0 var(--kb-space-sm);
267
367
  }
268
368
 
269
- .kb-custom-menu__overflow-item:hover {
369
+ /* Focus styles for overflow menu items */
370
+ .kb-custom-menu__overflow-item:focus {
371
+ outline: 2px solid var(--kb-color-primary);
372
+ outline-offset: -2px;
373
+ }
374
+
375
+ .kb-custom-menu__overflow-item:focus:not(:focus-visible) {
376
+ outline: none;
377
+ }
378
+
379
+ .kb-custom-menu__overflow-item:focus-visible {
380
+ outline: 2px solid var(--kb-color-primary);
381
+ outline-offset: -2px;
382
+ }
383
+
384
+ /* Grid style item (Google Docs style) */
385
+ .kb-custom-menu__overflow-item--grid {
386
+ display: inline-flex;
387
+ align-items: center;
388
+ justify-content: center;
389
+ width: 44px;
390
+ height: 44px;
391
+ padding: 6px;
392
+ margin: 0;
393
+ gap: 0;
394
+ flex-shrink: 0;
395
+ position: relative;
396
+ border-radius: var(--kb-radius-sm);
397
+ }
398
+
399
+ .kb-custom-menu__overflow-item--grid:hover {
400
+ background: var(--kb-color-surface-hover);
401
+ }
402
+
403
+ /* Dropdown items in grid have indicator - same size as regular grid items */
404
+ .kb-custom-menu__overflow-item--grid.kb-custom-menu__overflow-item--dropdown {
405
+ width: 44px;
406
+ min-width: 44px;
407
+ padding: 6px;
408
+ gap: 0;
409
+ position: relative;
410
+ }
411
+
412
+ /* Dropdown indicator (small down arrow) - vertically centered on right */
413
+ .kb-custom-menu__overflow-item-indicator {
414
+ position: absolute;
415
+ right: 2px;
416
+ top: 50%;
417
+ transform: translateY(-50%);
418
+ border-left: 3px solid transparent;
419
+ border-right: 3px solid transparent;
420
+ border-top: 3px solid currentColor;
421
+ opacity: 0.7;
422
+ font-size: 0;
423
+ line-height: 0;
424
+ margin-left: 0;
425
+ }
426
+
427
+ /* Regular list items hover */
428
+ .kb-custom-menu__overflow-item:not(.kb-custom-menu__overflow-item--grid):hover {
270
429
  background: var(--kb-color-surface-hover);
271
430
  }
272
431
 
273
- .kb-custom-menu__overflow-item .kb-menu__button,
274
- .kb-custom-menu__overflow-item .kb-dropdown__label {
432
+ /* Grid items button styles */
433
+ .kb-custom-menu__overflow-item--grid .kb-menu__button,
434
+ .kb-custom-menu__overflow-item--grid .kb-dropdown__label {
435
+ min-width: 44px;
436
+ min-height: 44px;
437
+ width: 44px;
438
+ height: 44px;
439
+ padding: 0;
440
+ border: none;
441
+ background: transparent;
442
+ color: var(--kb-color-text);
443
+ cursor: pointer;
444
+ border-radius: 0;
445
+ display: flex;
446
+ align-items: center;
447
+ justify-content: center;
448
+ }
449
+
450
+ .kb-custom-menu__overflow-item--grid .kb-menu__button svg {
451
+ width: 20px !important;
452
+ height: 20px !important;
453
+ }
454
+
455
+ /* List-style item button styles */
456
+ .kb-custom-menu__overflow-item:not(.kb-custom-menu__overflow-item--grid)
457
+ .kb-menu__button,
458
+ .kb-custom-menu__overflow-item:not(.kb-custom-menu__overflow-item--grid)
459
+ .kb-dropdown__label {
275
460
  min-height: 36px;
276
461
  padding: var(--kb-space-sm) 0;
277
462
  border: none;
@@ -286,16 +471,15 @@
286
471
  flex-shrink: 0;
287
472
  }
288
473
 
289
- /* Hide buttons without icons (empty buttons in submenu items) */
290
- .kb-custom-menu__overflow-item
474
+ /* Hide buttons without icons in list-style items (empty buttons in submenu items) */
475
+ .kb-custom-menu__overflow-item:not(.kb-custom-menu__overflow-item--grid)
291
476
  .kb-menu__button:not(:has(svg)):not(:has(.kb-icon)) {
292
477
  display: none;
293
478
  }
294
479
 
295
- /* Hide empty overflow items with no label text */
296
- .kb-custom-menu__overflow-item:not(:has(.kb-custom-menu__overflow-item-label)),
297
- .kb-custom-menu__overflow-item:has(.kb-custom-menu__overflow-item-label:empty) {
298
- display: none;
480
+ /* Grid items always show the button */
481
+ .kb-custom-menu__overflow-item--grid .kb-menu__button {
482
+ display: flex !important;
299
483
  }
300
484
 
301
485
  .kb-custom-menu__overflow-item[data-tool-id='tool-toggle-underline']
@@ -303,14 +487,10 @@
303
487
  display: flex;
304
488
  }
305
489
 
306
- .kb-custom-menu__overflow-item[data-tool-id='tool-insert'],
307
- .kb-custom-menu__overflow-item[data-tool-id='tool-type'] {
308
- height: 68px;
309
- }
310
- .kb-custom-menu__overflow-item[data-tool-id='tool-insert'] button,
311
- .kb-custom-menu__overflow-item[data-tool-id='tool-type'] button,
312
- .kb-custom-menu__overflow-item[data-tool-id='tool-select-parent-node'] {
313
- display: none;
490
+ /* Grid-style items don't need specific height overrides */
491
+ .kb-custom-menu__overflow-item--grid[data-tool-id='tool-insert'],
492
+ .kb-custom-menu__overflow-item--grid[data-tool-id='tool-type'] {
493
+ height: 36px;
314
494
  }
315
495
 
316
496
  .kb-custom-menu__overflow-item[data-tool-id='tool-text-color'] button {
@@ -323,20 +503,17 @@
323
503
  position: relative;
324
504
  }
325
505
 
326
- .kb-custom-menu__item[data-tool-id='tool-insert'] > div > button,
327
- .kb-custom-menu__item[data-tool-id='tool-type'] > div > button,
328
- .kb-custom-menu__item[data-tool-id='tool-table'] > div > button {
329
- padding-right: 20px;
330
- }
331
-
332
506
  .kb-custom-menu__item[data-tool-id='tool-insert'] > div > button:after,
333
507
  .kb-custom-menu__item[data-tool-id='tool-type'] > div > button:after,
334
508
  .kb-custom-menu__item[data-tool-id='tool-table'] > div > button:after {
335
- content: '';
336
- font-size: 4px;
337
- color: var(--kb-color-text-muted);
509
+ content: '';
510
+ border-left: 3px solid transparent;
511
+ border-right: 3px solid transparent;
512
+ border-top: 3px solid currentColor;
513
+ opacity: 0.7;
338
514
  position: absolute;
339
- right: 4px;
515
+ right: 2px;
516
+ bottom: 2px;
340
517
  }
341
518
 
342
519
  .kb-custom-menu__item[data-tool-id='tool-toggle-code-font'] button > span,
@@ -414,6 +591,20 @@
414
591
  background: var(--kb-color-surface-hover);
415
592
  }
416
593
 
594
+ .kb-custom-menu__overflow-back-button:focus {
595
+ outline: 2px solid var(--kb-color-primary);
596
+ outline-offset: 2px;
597
+ }
598
+
599
+ .kb-custom-menu__overflow-back-button:focus:not(:focus-visible) {
600
+ outline: none;
601
+ }
602
+
603
+ .kb-custom-menu__overflow-back-button:focus-visible {
604
+ outline: 2px solid var(--kb-color-primary);
605
+ outline-offset: 2px;
606
+ }
607
+
417
608
  .kb-custom-menu__overflow-back-button svg {
418
609
  width: 20px;
419
610
  height: 20px;
@@ -666,48 +857,23 @@
666
857
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.16);
667
858
  }
668
859
 
669
- /* Mobile responsive (Bootstrap md breakpoint: < 768px) */
860
+ /* Small screen adjustments - toolbar stays at top */
670
861
  @media (max-width: 767.98px) {
671
- .kb-custom-menu {
672
- position: fixed;
673
- bottom: 0;
674
- left: 0;
675
- right: 0;
676
- top: auto;
677
- border-bottom: none;
678
- border-top: 1px solid var(--kb-color-border-strong);
679
- box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);
680
- backdrop-filter: blur(10px);
681
- background: rgba(249, 249, 249, 0.95);
682
- }
683
-
684
862
  .kb-custom-menu__overflow-menu {
685
- position: fixed;
686
- bottom: 60px;
687
- left: 0;
688
- right: 0;
689
- top: auto;
863
+ /* Dropdown stays below toolbar */
690
864
  max-width: 100%;
691
- border-radius: 0;
692
- max-height: 60vh;
693
- height: auto;
694
- border: none;
695
- border-top: 1px solid var(--kb-color-border-strong);
696
- }
697
-
698
- .kb-custom-menu__overflow-content {
699
- flex: 1;
700
- overflow-y: auto;
701
- -webkit-overflow-scrolling: touch;
702
- max-height: calc(60vh - 80px);
865
+ left: var(--kb-space-sm);
866
+ right: var(--kb-space-sm);
703
867
  }
704
868
 
705
- .kb-custom-menu__overflow-footer {
706
- padding: 12px 0;
707
- box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);
869
+ /* Larger touch targets for overflow menu items on mobile */
870
+ .kb-custom-menu__overflow-item {
871
+ min-height: 44px;
872
+ padding: var(--kb-space-md);
708
873
  }
709
874
 
710
- .kb-custom-menu__manage-button {
875
+ .kb-custom-menu__overflow-item--grid {
876
+ min-width: 44px;
711
877
  min-height: 44px;
712
878
  }
713
879
 
@@ -718,7 +884,8 @@
718
884
  border-radius: 12px 12px 0 0;
719
885
  }
720
886
 
721
- .kb-custom-menu__overflow-toggle {
887
+ /* Larger back button touch target */
888
+ .kb-custom-menu__overflow-back-button {
722
889
  min-width: 44px;
723
890
  min-height: 44px;
724
891
  }
@@ -736,7 +903,7 @@
736
903
  }
737
904
 
738
905
  .kb-custom-menu__resize-handle-bar {
739
- background: var(--kb-menu-dropdown-dark-border);
906
+ background: var(--kb-menu-dropdown-border);
740
907
  }
741
908
 
742
909
  .kb-custom-menu__resize-handle:hover .kb-custom-menu__resize-handle-bar {
@@ -750,22 +917,22 @@
750
917
  .kb-custom-menu__item .kb-menu__button,
751
918
  .kb-custom-menu__item .kb-dropdown__label,
752
919
  .kb-custom-menu__overflow-toggle {
753
- color: var(--kb-menu-dropdown-dark-text);
920
+ color: var(--kb-menu-dropdown-text);
754
921
  }
755
922
 
756
923
  .kb-custom-menu__item .kb-menu__button:hover,
757
924
  .kb-custom-menu__item .kb-dropdown__label:hover,
758
925
  .kb-custom-menu__overflow-toggle:hover {
759
- background: rgba(232, 234, 237, 0.08);
926
+ background: var(--kb-menu-dropdown-hover);
760
927
  }
761
928
 
762
929
  .kb-custom-menu__separator {
763
- background: var(--kb-menu-dropdown-dark-border);
930
+ background: var(--kb-menu-dropdown-border);
764
931
  }
765
932
 
766
933
  .kb-custom-menu__overflow-menu {
767
- background: var(--kb-menu-dropdown-dark-bg);
768
- border-color: var(--kb-menu-dropdown-dark-border);
934
+ background: var(--kb-menu-dropdown-bg);
935
+ border-color: var(--kb-menu-dropdown-border);
769
936
  }
770
937
 
771
938
  .kb-custom-menu__overflow-header {
@@ -774,24 +941,24 @@
774
941
 
775
942
  .kb-custom-menu__overflow-item .kb-menu__button,
776
943
  .kb-custom-menu__overflow-item .kb-dropdown__label {
777
- color: var(--kb-menu-dropdown-dark-text);
944
+ color: var(--kb-menu-dropdown-text);
778
945
  }
779
946
 
780
947
  .kb-custom-menu__overflow-item-label {
781
- color: var(--kb-menu-dropdown-dark-text);
948
+ color: var(--kb-menu-dropdown-text);
782
949
  }
783
950
 
784
951
  .kb-custom-menu__overflow-item:hover {
785
- background: rgba(232, 234, 237, 0.08);
952
+ background: var(--kb-menu-dropdown-hover);
786
953
  }
787
954
 
788
955
  .kb-custom-menu__overflow-separator {
789
- background: var(--kb-menu-dropdown-dark-border);
956
+ background: var(--kb-menu-dropdown-border);
790
957
  }
791
958
 
792
959
  .kb-custom-menu__overflow-footer {
793
- background: var(--kb-menu-dropdown-dark-bg);
794
- border-top-color: var(--kb-menu-dropdown-dark-border);
960
+ background: var(--kb-menu-dropdown-bg);
961
+ border-top-color: var(--kb-menu-dropdown-border);
795
962
  }
796
963
 
797
964
  .kb-custom-menu__modal {
@@ -799,11 +966,11 @@
799
966
  }
800
967
 
801
968
  .kb-custom-menu__modal-header {
802
- border-bottom-color: var(--kb-menu-dropdown-dark-border);
969
+ border-bottom-color: var(--kb-menu-dropdown-border);
803
970
  }
804
971
 
805
972
  .kb-custom-menu__modal-header h2 {
806
- color: var(--kb-menu-dropdown-dark-text);
973
+ color: var(--kb-menu-dropdown-text);
807
974
  }
808
975
 
809
976
  .kb-custom-menu__modal-close {
@@ -813,26 +980,154 @@
813
980
  .kb-custom-menu__modal-message {
814
981
  background: var(--kb-menu-info-bg);
815
982
  color: var(--kb-menu-info-text);
816
- border-bottom-color: var(--kb-menu-dropdown-dark-border);
983
+ border-bottom-color: var(--kb-menu-dropdown-border);
817
984
  }
818
985
 
819
986
  .kb-custom-menu__modal-footer {
820
- border-top-color: var(--kb-menu-dropdown-dark-border);
987
+ border-top-color: var(--kb-menu-dropdown-border);
821
988
  }
822
989
 
823
990
  .kb-custom-menu__tool-item span {
824
- color: var(--kb-menu-dropdown-dark-text);
991
+ color: var(--kb-menu-dropdown-text);
825
992
  }
826
993
  }
827
994
 
995
+ /* Drag and drop styles */
996
+ .kb-custom-menu__wrapper--dragging {
997
+ user-select: none;
998
+ cursor: grabbing !important;
999
+ }
1000
+
1001
+ .kb-custom-menu__wrapper--dragging * {
1002
+ cursor: grabbing !important;
1003
+ }
1004
+
1005
+ .kb-custom-menu__item {
1006
+ cursor: grab;
1007
+ transition: opacity 0.2s ease, transform 0.2s ease;
1008
+ }
1009
+
1010
+ /* Only show grabbing cursor when wrapper has dragging class, not just on :active */
1011
+ .kb-custom-menu__wrapper--dragging .kb-custom-menu__item {
1012
+ cursor: grabbing !important;
1013
+ }
1014
+
1015
+ /* Ensure buttons inside items have pointer cursor for click feedback */
1016
+ .kb-custom-menu__item .kb-menu__button,
1017
+ .kb-custom-menu__item .kb-dropdown__label {
1018
+ cursor: pointer !important;
1019
+ }
1020
+
1021
+ /* Override to grabbing cursor only when actively dragging */
1022
+ .kb-custom-menu__wrapper--dragging .kb-custom-menu__item .kb-menu__button,
1023
+ .kb-custom-menu__wrapper--dragging .kb-custom-menu__item .kb-dropdown__label {
1024
+ cursor: grabbing !important;
1025
+ }
1026
+
1027
+ .kb-custom-menu__item--dragging {
1028
+ opacity: 0.3;
1029
+ }
1030
+
1031
+ .kb-custom-menu__overflow-item--dragging {
1032
+ opacity: 0.3;
1033
+ }
1034
+
1035
+ .kb-custom-menu__drag-ghost {
1036
+ opacity: 0.9;
1037
+ background: var(--kb-color-surface-elevated);
1038
+ border-radius: var(--kb-radius-sm);
1039
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1040
+ transform: scale(1.05);
1041
+ }
1042
+
1043
+ .kb-custom-menu__drop-placeholder {
1044
+ width: 4px;
1045
+ min-height: 32px;
1046
+ background: var(--kb-color-primary);
1047
+ border-radius: 2px;
1048
+ margin: 0 2px;
1049
+ display: inline-flex;
1050
+ flex-shrink: 0;
1051
+ }
1052
+
828
1053
  /* Pinned dropdown menu (independent from overflow) */
829
1054
  .kb-custom-menu__pinned-dropdown {
830
1055
  min-width: 200px;
831
1056
  max-width: 300px;
832
- background: var(--kb-menu-dropdown-dark-bg) !important;
1057
+ background: var(--kb-menu-dropdown-bg) !important;
833
1058
  border: 1px solid var(--kb-color-border-strong);
834
1059
  border-radius: var(--kb-radius-lg);
835
1060
  box-shadow: var(--kb-shadow-lg);
836
1061
  max-height: 400px;
837
1062
  overflow-y: auto;
838
1063
  }
1064
+
1065
+ /* Overflow menu footer (for Reset to Default) */
1066
+ .kb-custom-menu__overflow-footer {
1067
+ padding: var(--kb-space-sm);
1068
+ border-top: 1px solid var(--kb-color-border);
1069
+ display: flex;
1070
+ justify-content: center;
1071
+ }
1072
+
1073
+ /* Reset to Default button */
1074
+ .kb-custom-menu__reset-button {
1075
+ display: flex;
1076
+ align-items: center;
1077
+ gap: var(--kb-space-sm);
1078
+ padding: var(--kb-space-sm) var(--kb-space-md);
1079
+ font-size: 12px;
1080
+ color: var(--kb-color-text-muted);
1081
+ background: transparent;
1082
+ border: 1px solid var(--kb-color-border);
1083
+ border-radius: var(--kb-radius-sm);
1084
+ cursor: pointer;
1085
+ transition: all 0.2s ease;
1086
+ }
1087
+
1088
+ .kb-custom-menu__reset-button:hover {
1089
+ background: var(--kb-color-surface-hover);
1090
+ color: var(--kb-color-text);
1091
+ border-color: var(--kb-color-border-strong);
1092
+ }
1093
+
1094
+ .kb-custom-menu__reset-button:focus {
1095
+ outline: 2px solid var(--kb-color-primary);
1096
+ outline-offset: 2px;
1097
+ }
1098
+
1099
+ .kb-custom-menu__reset-button:focus:not(:focus-visible) {
1100
+ outline: none;
1101
+ }
1102
+
1103
+ .kb-custom-menu__reset-button:focus-visible {
1104
+ outline: 2px solid var(--kb-color-primary);
1105
+ outline-offset: 2px;
1106
+ }
1107
+
1108
+ .kb-custom-menu__reset-button svg {
1109
+ width: 14px;
1110
+ height: 14px;
1111
+ flex-shrink: 0;
1112
+ }
1113
+
1114
+ .kb-custom-menu__reset-button span {
1115
+ white-space: nowrap;
1116
+ }
1117
+
1118
+ /* Icon-only variant for toolbar display */
1119
+ .kb-custom-menu__reset-button--icon-only {
1120
+ padding: var(--kb-space-sm);
1121
+ border: none;
1122
+ background: transparent;
1123
+ }
1124
+
1125
+ .kb-custom-menu__reset-button--icon-only:hover {
1126
+ background: var(--kb-color-surface-hover);
1127
+ border: none;
1128
+ }
1129
+
1130
+ .kb-custom-menu__reset-button--icon-only svg {
1131
+ width: 18px;
1132
+ height: 18px;
1133
+ }