@openeditor/ui 0.0.29 → 0.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -1
- package/dist/index.css +434 -44
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +9 -2
- package/dist/index.js +348 -128
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -7,11 +7,44 @@ Optional styled UI components for OpenEditor.
|
|
|
7
7
|
- `OpenEditor` for a composed editor surface
|
|
8
8
|
- `OpenEditorSlashMenu` for the default slash menu UI
|
|
9
9
|
- `OpenEditorSelectionBubble` for inline formatting UI
|
|
10
|
+
- `OpenEditorTableMenu` for selection-aware row, column, header, cell, and table actions
|
|
10
11
|
- `OpenEditorButton`, `OpenEditorToggle`, `OpenEditorToggleGroup`, and `OpenEditorInput` as Base UI-backed app primitives
|
|
11
12
|
- `OpenEditorContent` and `useOpenEditorController` re-exported from `@openeditor/react`
|
|
12
13
|
|
|
13
14
|
The UI package owns the default CSS and interactive primitives. User-facing controls are built on Base UI so focus management, keyboard behavior, dismiss behavior, and overlay positioning share one foundation.
|
|
14
15
|
|
|
16
|
+
## Editor interaction contract
|
|
17
|
+
|
|
18
|
+
OpenEditor keeps keyboard ownership in the editable surface unless the user
|
|
19
|
+
explicitly enters another control:
|
|
20
|
+
|
|
21
|
+
- Selecting text shows the formatting toolbar without moving focus. Delete,
|
|
22
|
+
Backspace, typing, arrow keys, and formatting/history shortcuts therefore keep
|
|
23
|
+
their normal editing meaning. The toolbar follows its document selection in
|
|
24
|
+
the editor's actual scroll container and hides once that selection is clipped.
|
|
25
|
+
Pointer presses on toolbar actions preserve the document selection. `Alt+F10`
|
|
26
|
+
moves focus into the toolbar, its arrow keys move between controls, and
|
|
27
|
+
`Escape` returns focus to the document.
|
|
28
|
+
- Typing `/` opens one flat, filtered command list. Focus stays in the document;
|
|
29
|
+
`ArrowUp`/`ArrowDown`, `Home`/`End`, and `PageUp`/`PageDown` change the active
|
|
30
|
+
command, `Enter` runs it, and `Escape` dismisses the current slash session.
|
|
31
|
+
Its anchor is resolved live from the document position while scrolling and is
|
|
32
|
+
hidden when clipped. A dismissed session does not reopen merely because more
|
|
33
|
+
query characters are typed.
|
|
34
|
+
- The block handle menu is an explicit focus-owning menu. `Enter` or `Space`
|
|
35
|
+
opens it, menu arrow keys navigate it, `Enter` runs an action, and `Escape` or
|
|
36
|
+
an outside press closes it. Closing, dragging, and running an action all pass
|
|
37
|
+
through the same unlock transition, so hover targeting cannot remain frozen.
|
|
38
|
+
- Selecting a table cell shows a toolbar anchored to the table. Row and column
|
|
39
|
+
menus preserve the cell selection while insert/delete commands run, and
|
|
40
|
+
header, merge/split, and whole-table actions use the same transactional table
|
|
41
|
+
controller as custom host UI.
|
|
42
|
+
|
|
43
|
+
Formatting and history shortcuts come from Tiptap's registered mark and history
|
|
44
|
+
extensions. OpenEditor keeps focus in the editor so those extension-owned
|
|
45
|
+
bindings receive `Cmd` on macOS and `Ctrl` elsewhere without a competing global
|
|
46
|
+
shortcut layer.
|
|
47
|
+
|
|
15
48
|
## Theming
|
|
16
49
|
|
|
17
50
|
Use the typed theme contract instead of targeting OpenEditor implementation classes or defining global custom properties. The provider scopes tokens to editor content and automatically forwards them to portaled menus and dialogs.
|
|
@@ -47,7 +80,7 @@ export function Editor() {
|
|
|
47
80
|
export function HeadlessComposition() {
|
|
48
81
|
return (
|
|
49
82
|
<OpenEditorThemeProvider theme={theme}>
|
|
50
|
-
{/* OpenEditorContent, OpenEditorSelectionBubble, OpenEditorSlashMenu */}
|
|
83
|
+
{/* OpenEditorContent, OpenEditorSelectionBubble, OpenEditorTableMenu, OpenEditorSlashMenu */}
|
|
51
84
|
</OpenEditorThemeProvider>
|
|
52
85
|
);
|
|
53
86
|
}
|
package/dist/index.css
CHANGED
|
@@ -188,6 +188,229 @@
|
|
|
188
188
|
margin: var(--oe-space-block, 16px) 0;
|
|
189
189
|
max-width: 100%;
|
|
190
190
|
}
|
|
191
|
+
.oe-image {
|
|
192
|
+
border-radius: var(--oe-radius-medium, 8px);
|
|
193
|
+
margin: var(--oe-space-block, 16px) 0;
|
|
194
|
+
max-width: 100%;
|
|
195
|
+
position: relative;
|
|
196
|
+
}
|
|
197
|
+
.oe-image-preview {
|
|
198
|
+
border-radius: inherit;
|
|
199
|
+
overflow: hidden;
|
|
200
|
+
position: relative;
|
|
201
|
+
}
|
|
202
|
+
.oe-prosemirror .oe-image img {
|
|
203
|
+
border-radius: inherit;
|
|
204
|
+
height: auto;
|
|
205
|
+
margin: 0;
|
|
206
|
+
max-width: 100%;
|
|
207
|
+
}
|
|
208
|
+
.oe-image-empty {
|
|
209
|
+
align-items: center;
|
|
210
|
+
background: var(--oe-block-surface, var(--oe-surface-muted, #f5f5f5));
|
|
211
|
+
border: 1px dashed var(--oe-border, #d4d4d4);
|
|
212
|
+
border-radius: inherit;
|
|
213
|
+
display: flex;
|
|
214
|
+
gap: 8px;
|
|
215
|
+
min-height: 56px;
|
|
216
|
+
padding: 8px;
|
|
217
|
+
transition: background 120ms ease, border-color 120ms ease;
|
|
218
|
+
}
|
|
219
|
+
.oe-image:focus-within .oe-image-empty,
|
|
220
|
+
.oe-image[data-selected=true] .oe-image-empty,
|
|
221
|
+
.oe-image-empty:hover {
|
|
222
|
+
background: color-mix(in srgb, var(--oe-block-surface, var(--oe-surface-muted, #f5f5f5)) 92%, var(--oe-text, #171717));
|
|
223
|
+
border-color: var(--oe-muted, #737373);
|
|
224
|
+
}
|
|
225
|
+
.oe-image-empty-icon {
|
|
226
|
+
align-items: center;
|
|
227
|
+
color: var(--oe-muted, #737373);
|
|
228
|
+
display: inline-flex;
|
|
229
|
+
flex: 0 0 28px;
|
|
230
|
+
height: 28px;
|
|
231
|
+
justify-content: center;
|
|
232
|
+
}
|
|
233
|
+
.oe-image-empty-icon svg {
|
|
234
|
+
height: 17px;
|
|
235
|
+
width: 17px;
|
|
236
|
+
}
|
|
237
|
+
.oe-image-empty-copy {
|
|
238
|
+
display: flex;
|
|
239
|
+
flex: 1;
|
|
240
|
+
flex-direction: column;
|
|
241
|
+
line-height: 1.25;
|
|
242
|
+
min-width: 0;
|
|
243
|
+
}
|
|
244
|
+
.oe-image-empty-copy strong {
|
|
245
|
+
font-size: 13px;
|
|
246
|
+
font-weight: 600;
|
|
247
|
+
}
|
|
248
|
+
.oe-image-empty-copy span {
|
|
249
|
+
color: var(--oe-muted, #737373);
|
|
250
|
+
font-size: 11px;
|
|
251
|
+
margin-top: 2px;
|
|
252
|
+
}
|
|
253
|
+
.oe-image-empty > .oe-image-empty-action {
|
|
254
|
+
background: transparent;
|
|
255
|
+
border-color: transparent;
|
|
256
|
+
color: var(--oe-muted, #737373);
|
|
257
|
+
flex: 0 0 24px;
|
|
258
|
+
height: 24px;
|
|
259
|
+
padding: 0;
|
|
260
|
+
width: 24px;
|
|
261
|
+
}
|
|
262
|
+
.oe-image-empty > .oe-image-empty-action:hover,
|
|
263
|
+
.oe-image-empty > .oe-image-empty-action:focus-visible {
|
|
264
|
+
background: transparent;
|
|
265
|
+
border-color: transparent;
|
|
266
|
+
color: var(--oe-text, #171717);
|
|
267
|
+
}
|
|
268
|
+
.oe-image-empty > .oe-image-empty-action + .oe-image-empty-action {
|
|
269
|
+
margin-left: -6px;
|
|
270
|
+
}
|
|
271
|
+
.oe-image button {
|
|
272
|
+
align-items: center;
|
|
273
|
+
background: var(--oe-surface, #fff);
|
|
274
|
+
border: 1px solid var(--oe-border, #d4d4d4);
|
|
275
|
+
border-radius: 6px;
|
|
276
|
+
color: var(--oe-text, #171717);
|
|
277
|
+
cursor: pointer;
|
|
278
|
+
display: inline-flex;
|
|
279
|
+
font: inherit;
|
|
280
|
+
font-size: 11px;
|
|
281
|
+
font-weight: 500;
|
|
282
|
+
gap: 4px;
|
|
283
|
+
height: 26px;
|
|
284
|
+
justify-content: center;
|
|
285
|
+
padding: 0 7px;
|
|
286
|
+
}
|
|
287
|
+
.oe-image button:hover,
|
|
288
|
+
.oe-image button:focus-visible {
|
|
289
|
+
border-color: var(--oe-muted, #737373);
|
|
290
|
+
outline: none;
|
|
291
|
+
}
|
|
292
|
+
.oe-image button:disabled {
|
|
293
|
+
cursor: default;
|
|
294
|
+
opacity: .55;
|
|
295
|
+
}
|
|
296
|
+
.oe-image button svg {
|
|
297
|
+
height: 13px;
|
|
298
|
+
width: 13px;
|
|
299
|
+
}
|
|
300
|
+
.oe-image button.oe-image-primary {
|
|
301
|
+
background: var(--oe-text, #171717);
|
|
302
|
+
border-color: var(--oe-text, #171717);
|
|
303
|
+
color: var(--oe-surface, #fff);
|
|
304
|
+
}
|
|
305
|
+
.oe-image button.oe-image-remove {
|
|
306
|
+
background: transparent;
|
|
307
|
+
border-color: transparent;
|
|
308
|
+
color: var(--oe-muted, #737373);
|
|
309
|
+
padding: 0;
|
|
310
|
+
width: 24px;
|
|
311
|
+
}
|
|
312
|
+
.oe-image button.oe-image-remove:hover,
|
|
313
|
+
.oe-image button.oe-image-remove:focus-visible {
|
|
314
|
+
color: #c83232;
|
|
315
|
+
}
|
|
316
|
+
.oe-image-actions {
|
|
317
|
+
align-items: center;
|
|
318
|
+
background: color-mix(in srgb, var(--oe-surface, #fff) 94%, transparent);
|
|
319
|
+
border: 1px solid var(--oe-border, #d4d4d4);
|
|
320
|
+
border-radius: 8px;
|
|
321
|
+
bottom: 10px;
|
|
322
|
+
box-shadow: 0 8px 24px var(--oe-shadow, rgb(0 0 0 / 12%));
|
|
323
|
+
display: flex;
|
|
324
|
+
gap: 3px;
|
|
325
|
+
opacity: 0;
|
|
326
|
+
padding: 3px;
|
|
327
|
+
pointer-events: none;
|
|
328
|
+
position: absolute;
|
|
329
|
+
right: 10px;
|
|
330
|
+
transform: translateY(4px);
|
|
331
|
+
transition: opacity 120ms ease, transform 120ms ease;
|
|
332
|
+
}
|
|
333
|
+
.oe-image-preview:hover .oe-image-actions,
|
|
334
|
+
.oe-image:focus-within .oe-image-actions,
|
|
335
|
+
.oe-image[data-selected=true] .oe-image-actions {
|
|
336
|
+
opacity: 1;
|
|
337
|
+
pointer-events: auto;
|
|
338
|
+
transform: translateY(0);
|
|
339
|
+
}
|
|
340
|
+
.oe-image-actions button {
|
|
341
|
+
border: 0;
|
|
342
|
+
}
|
|
343
|
+
.oe-image-panel,
|
|
344
|
+
.oe-image-upload-status,
|
|
345
|
+
.oe-image-error {
|
|
346
|
+
align-items: end;
|
|
347
|
+
background: var(--oe-block-surface, var(--oe-surface-muted, #f5f5f5));
|
|
348
|
+
border-radius: 0 0 var(--oe-radius-medium, 8px) var(--oe-radius-medium, 8px);
|
|
349
|
+
display: flex;
|
|
350
|
+
gap: 8px;
|
|
351
|
+
padding: 10px;
|
|
352
|
+
}
|
|
353
|
+
.oe-image-panel label {
|
|
354
|
+
display: flex;
|
|
355
|
+
flex: 1;
|
|
356
|
+
flex-direction: column;
|
|
357
|
+
gap: 5px;
|
|
358
|
+
min-width: 0;
|
|
359
|
+
}
|
|
360
|
+
.oe-image-panel label span {
|
|
361
|
+
color: var(--oe-muted, #737373);
|
|
362
|
+
font-size: 11px;
|
|
363
|
+
font-weight: 600;
|
|
364
|
+
}
|
|
365
|
+
.oe-image-panel input {
|
|
366
|
+
background: var(--oe-surface, #fff);
|
|
367
|
+
border: 1px solid var(--oe-border, #d4d4d4);
|
|
368
|
+
border-radius: 6px;
|
|
369
|
+
color: var(--oe-text, #171717);
|
|
370
|
+
font: inherit;
|
|
371
|
+
height: 32px;
|
|
372
|
+
outline: none;
|
|
373
|
+
padding: 0 9px;
|
|
374
|
+
width: 100%;
|
|
375
|
+
}
|
|
376
|
+
.oe-image-panel input:focus {
|
|
377
|
+
border-color: var(--oe-muted, #737373);
|
|
378
|
+
}
|
|
379
|
+
.oe-image-upload-status {
|
|
380
|
+
align-items: center;
|
|
381
|
+
color: var(--oe-muted, #737373);
|
|
382
|
+
font-size: 12px;
|
|
383
|
+
}
|
|
384
|
+
.oe-image-progress {
|
|
385
|
+
background: var(--oe-border, #d4d4d4);
|
|
386
|
+
border-radius: 2px;
|
|
387
|
+
flex: 1;
|
|
388
|
+
height: 4px;
|
|
389
|
+
overflow: hidden;
|
|
390
|
+
}
|
|
391
|
+
.oe-image-progress span {
|
|
392
|
+
background: var(--oe-accent-strong, #171717);
|
|
393
|
+
display: block;
|
|
394
|
+
height: 100%;
|
|
395
|
+
transition: width 90ms linear;
|
|
396
|
+
}
|
|
397
|
+
.oe-image-error {
|
|
398
|
+
align-items: center;
|
|
399
|
+
color: #b42318;
|
|
400
|
+
font-size: 12px;
|
|
401
|
+
}
|
|
402
|
+
.oe-image-error span {
|
|
403
|
+
flex: 1;
|
|
404
|
+
}
|
|
405
|
+
@media (max-width: 560px) {
|
|
406
|
+
.oe-image-panel {
|
|
407
|
+
align-items: stretch;
|
|
408
|
+
flex-wrap: wrap;
|
|
409
|
+
}
|
|
410
|
+
.oe-image-panel label {
|
|
411
|
+
flex-basis: 100%;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
191
414
|
.oe-prosemirror blockquote,
|
|
192
415
|
.oe-viewer blockquote {
|
|
193
416
|
border-left: 3px solid var(--oe-structural-line, var(--oe-border, #e5e5e5));
|
|
@@ -287,15 +510,15 @@
|
|
|
287
510
|
.oe-viewer li {
|
|
288
511
|
margin: 4px 0;
|
|
289
512
|
}
|
|
290
|
-
.oe-prosemirror [data-openeditor-toggle-list],
|
|
291
|
-
.oe-viewer [data-openeditor-toggle-list] {
|
|
513
|
+
.oe-prosemirror ul[data-openeditor-toggle-list],
|
|
514
|
+
.oe-viewer ul[data-openeditor-toggle-list] {
|
|
292
515
|
list-style: none;
|
|
293
516
|
margin: 18px 0;
|
|
294
517
|
padding: 0;
|
|
295
518
|
}
|
|
296
519
|
.oe-toggle-list-item:not(details) {
|
|
297
520
|
display: grid;
|
|
298
|
-
gap: 8px;
|
|
521
|
+
column-gap: 8px;
|
|
299
522
|
grid-template-columns: 24px minmax(0, 1fr);
|
|
300
523
|
}
|
|
301
524
|
details.oe-toggle-list-item {
|
|
@@ -303,15 +526,22 @@ details.oe-toggle-list-item {
|
|
|
303
526
|
margin: 8px 0;
|
|
304
527
|
}
|
|
305
528
|
details.oe-toggle-list-item > summary {
|
|
529
|
+
color: var(--oe-text-soft, #262626);
|
|
306
530
|
cursor: pointer;
|
|
307
531
|
font-weight: 500;
|
|
308
532
|
}
|
|
533
|
+
details.oe-toggle-list-item > summary::marker {
|
|
534
|
+
color: currentColor;
|
|
535
|
+
}
|
|
536
|
+
details.oe-toggle-list-item > summary + * {
|
|
537
|
+
margin-top: 8px;
|
|
538
|
+
}
|
|
309
539
|
.oe-toggle-list-trigger {
|
|
310
540
|
align-items: center;
|
|
311
541
|
align-self: start;
|
|
312
542
|
background: transparent;
|
|
313
543
|
border: 0;
|
|
314
|
-
color: var(--oe-
|
|
544
|
+
color: var(--oe-text-soft, #262626);
|
|
315
545
|
cursor: pointer;
|
|
316
546
|
display: inline-flex;
|
|
317
547
|
height: 24px;
|
|
@@ -349,6 +579,14 @@ details.oe-toggle-list-item > summary {
|
|
|
349
579
|
.oe-toggle-list-content > [data-node-view-content-react] > :first-child {
|
|
350
580
|
margin-top: 0;
|
|
351
581
|
}
|
|
582
|
+
.oe-toggle-list-content > :first-child:not(:last-child),
|
|
583
|
+
.oe-toggle-list-content > [data-node-view-content-react] > :first-child:not(:last-child) {
|
|
584
|
+
margin-bottom: 8px;
|
|
585
|
+
}
|
|
586
|
+
.oe-toggle-list-content > :first-child + *,
|
|
587
|
+
.oe-toggle-list-content > [data-node-view-content-react] > :first-child + * {
|
|
588
|
+
margin-top: 8px;
|
|
589
|
+
}
|
|
352
590
|
.oe-toggle-list-content > :last-child,
|
|
353
591
|
.oe-toggle-list-content > [data-node-view-content-react] > :last-child {
|
|
354
592
|
margin-bottom: 0;
|
|
@@ -406,11 +644,12 @@ details.oe-toggle-list-item > summary {
|
|
|
406
644
|
min-height: 34px;
|
|
407
645
|
padding: 3px 6px;
|
|
408
646
|
text-align: left;
|
|
647
|
+
transition: background 120ms ease;
|
|
409
648
|
width: 100%;
|
|
410
649
|
}
|
|
411
650
|
.oe-page:hover,
|
|
412
651
|
.oe-page:focus-within {
|
|
413
|
-
background: var(--oe-surface-muted, #f5f5f5);
|
|
652
|
+
background: var(--oe-block-surface, var(--oe-surface-muted, #f5f5f5));
|
|
414
653
|
}
|
|
415
654
|
.oe-page[data-page-id]:not([data-page-id=""]) {
|
|
416
655
|
cursor: pointer;
|
|
@@ -815,6 +1054,15 @@ details.oe-toggle-list-item > summary {
|
|
|
815
1054
|
table-layout: fixed;
|
|
816
1055
|
width: 100%;
|
|
817
1056
|
}
|
|
1057
|
+
.oe-prosemirror .tableWrapper {
|
|
1058
|
+
margin: 18px 0;
|
|
1059
|
+
max-width: 100%;
|
|
1060
|
+
overflow-x: auto;
|
|
1061
|
+
padding: 2px;
|
|
1062
|
+
}
|
|
1063
|
+
.oe-prosemirror .tableWrapper > table {
|
|
1064
|
+
margin: 0;
|
|
1065
|
+
}
|
|
818
1066
|
.oe-prosemirror .tableWrapper > table th,
|
|
819
1067
|
.oe-prosemirror .tableWrapper > table td,
|
|
820
1068
|
.oe-prosemirror table[data-openeditor-table] th,
|
|
@@ -832,6 +1080,31 @@ details.oe-toggle-list-item > summary {
|
|
|
832
1080
|
.oe-viewer table[data-openeditor-table] th {
|
|
833
1081
|
font-weight: 700;
|
|
834
1082
|
}
|
|
1083
|
+
.oe-prosemirror .selectedCell {
|
|
1084
|
+
position: relative;
|
|
1085
|
+
}
|
|
1086
|
+
.oe-prosemirror .selectedCell::after {
|
|
1087
|
+
background: color-mix(in srgb, var(--oe-accent-strong, #171717) 10%, transparent);
|
|
1088
|
+
border: 2px solid var(--oe-accent-strong, #171717);
|
|
1089
|
+
content: "";
|
|
1090
|
+
inset: -1px;
|
|
1091
|
+
pointer-events: none;
|
|
1092
|
+
position: absolute;
|
|
1093
|
+
z-index: 1;
|
|
1094
|
+
}
|
|
1095
|
+
.oe-prosemirror .column-resize-handle {
|
|
1096
|
+
background: var(--oe-accent-strong, #171717);
|
|
1097
|
+
bottom: -1px;
|
|
1098
|
+
pointer-events: none;
|
|
1099
|
+
position: absolute;
|
|
1100
|
+
right: -2px;
|
|
1101
|
+
top: -1px;
|
|
1102
|
+
width: 3px;
|
|
1103
|
+
z-index: 2;
|
|
1104
|
+
}
|
|
1105
|
+
.oe-prosemirror.resize-cursor {
|
|
1106
|
+
cursor: col-resize;
|
|
1107
|
+
}
|
|
835
1108
|
.oe-button,
|
|
836
1109
|
.oe-input {
|
|
837
1110
|
border: 1px solid var(--oe-border-strong, #d4d4d4);
|
|
@@ -877,6 +1150,10 @@ details.oe-toggle-list-item > summary {
|
|
|
877
1150
|
outline: none;
|
|
878
1151
|
z-index: 1002;
|
|
879
1152
|
}
|
|
1153
|
+
.oe-anchored-overlay-positioner[data-anchor-hidden] {
|
|
1154
|
+
visibility: hidden;
|
|
1155
|
+
pointer-events: none;
|
|
1156
|
+
}
|
|
880
1157
|
.oe-cascade-panel {
|
|
881
1158
|
flex: 0 0 auto;
|
|
882
1159
|
}
|
|
@@ -965,6 +1242,93 @@ details.oe-toggle-list-item > summary {
|
|
|
965
1242
|
padding: 3px;
|
|
966
1243
|
z-index: 1000;
|
|
967
1244
|
}
|
|
1245
|
+
.oe-table-menu {
|
|
1246
|
+
background: var(--oe-surface, #ffffff);
|
|
1247
|
+
border-radius: 999px;
|
|
1248
|
+
box-shadow: 0 0 0 1px var(--oe-shadow, rgb(0 0 0 / 7%)), 0 10px 28px var(--oe-shadow, rgb(0 0 0 / 12%));
|
|
1249
|
+
padding: 3px;
|
|
1250
|
+
z-index: 1000;
|
|
1251
|
+
}
|
|
1252
|
+
.oe-table-toolbar {
|
|
1253
|
+
align-items: center;
|
|
1254
|
+
display: flex;
|
|
1255
|
+
gap: 2px;
|
|
1256
|
+
}
|
|
1257
|
+
.oe-table-toolbar-button,
|
|
1258
|
+
.oe-table-toolbar-trigger {
|
|
1259
|
+
align-items: center;
|
|
1260
|
+
background: transparent;
|
|
1261
|
+
border: 0;
|
|
1262
|
+
border-radius: 999px;
|
|
1263
|
+
color: var(--oe-text, #171717);
|
|
1264
|
+
cursor: pointer;
|
|
1265
|
+
display: inline-flex;
|
|
1266
|
+
font: inherit;
|
|
1267
|
+
font-size: 12px;
|
|
1268
|
+
font-weight: 650;
|
|
1269
|
+
gap: 5px;
|
|
1270
|
+
justify-content: center;
|
|
1271
|
+
min-height: 28px;
|
|
1272
|
+
min-width: 28px;
|
|
1273
|
+
padding: 0 8px;
|
|
1274
|
+
white-space: nowrap;
|
|
1275
|
+
}
|
|
1276
|
+
.oe-table-toolbar-button:hover,
|
|
1277
|
+
.oe-table-toolbar-button:focus-visible,
|
|
1278
|
+
.oe-table-toolbar-button[data-active],
|
|
1279
|
+
.oe-table-toolbar-trigger:hover,
|
|
1280
|
+
.oe-table-toolbar-trigger:focus-visible,
|
|
1281
|
+
.oe-table-toolbar-trigger[data-popup-open] {
|
|
1282
|
+
background: var(--oe-surface-muted, #f5f5f5);
|
|
1283
|
+
outline: none;
|
|
1284
|
+
}
|
|
1285
|
+
.oe-table-toolbar-button[data-danger] {
|
|
1286
|
+
color: #b42318;
|
|
1287
|
+
}
|
|
1288
|
+
.oe-table-toolbar-button:disabled,
|
|
1289
|
+
.oe-table-action-item:disabled {
|
|
1290
|
+
cursor: default;
|
|
1291
|
+
opacity: 0.38;
|
|
1292
|
+
}
|
|
1293
|
+
.oe-table-toolbar-separator {
|
|
1294
|
+
background: var(--oe-border, #e5e5e5);
|
|
1295
|
+
height: 18px;
|
|
1296
|
+
margin: 0 2px;
|
|
1297
|
+
width: 1px;
|
|
1298
|
+
}
|
|
1299
|
+
.oe-table-action-menu {
|
|
1300
|
+
background: var(--oe-surface, #ffffff);
|
|
1301
|
+
border-radius: 16px;
|
|
1302
|
+
box-shadow: 0 0 0 1px var(--oe-shadow, rgb(0 0 0 / 7%)), 0 12px 32px var(--oe-shadow, rgb(0 0 0 / 14%));
|
|
1303
|
+
display: grid;
|
|
1304
|
+
gap: 2px;
|
|
1305
|
+
min-width: 190px;
|
|
1306
|
+
padding: 5px;
|
|
1307
|
+
z-index: 1002;
|
|
1308
|
+
}
|
|
1309
|
+
.oe-table-action-item {
|
|
1310
|
+
align-items: center;
|
|
1311
|
+
background: transparent;
|
|
1312
|
+
border: 0;
|
|
1313
|
+
border-radius: 12px;
|
|
1314
|
+
color: var(--oe-text, #171717);
|
|
1315
|
+
cursor: pointer;
|
|
1316
|
+
display: flex;
|
|
1317
|
+
font-size: 13px;
|
|
1318
|
+
font-weight: 620;
|
|
1319
|
+
gap: 9px;
|
|
1320
|
+
min-height: 34px;
|
|
1321
|
+
outline: none;
|
|
1322
|
+
padding: 0 10px;
|
|
1323
|
+
}
|
|
1324
|
+
.oe-table-action-item:hover,
|
|
1325
|
+
.oe-table-action-item:focus-visible,
|
|
1326
|
+
.oe-table-action-item[data-highlighted] {
|
|
1327
|
+
background: var(--oe-surface-muted, #f5f5f5);
|
|
1328
|
+
}
|
|
1329
|
+
.oe-table-action-item[data-danger] {
|
|
1330
|
+
color: #b42318;
|
|
1331
|
+
}
|
|
968
1332
|
.oe-selection-toolbar {
|
|
969
1333
|
align-items: center;
|
|
970
1334
|
display: flex;
|
|
@@ -1205,48 +1569,61 @@ details.oe-toggle-list-item > summary {
|
|
|
1205
1569
|
opacity: 0.88;
|
|
1206
1570
|
}
|
|
1207
1571
|
.oe-attachment {
|
|
1572
|
+
--oe-attachment-inset: 3px;
|
|
1573
|
+
--oe-attachment-radius: 6px;
|
|
1574
|
+
--oe-attachment-thumbnail-radius: calc(var(--oe-attachment-radius) - var(--oe-attachment-inset));
|
|
1208
1575
|
align-items: center;
|
|
1209
|
-
background: var(--oe-surface, #
|
|
1210
|
-
border:
|
|
1211
|
-
border-radius:
|
|
1576
|
+
background: var(--oe-block-surface, var(--oe-surface-muted, #f5f5f5));
|
|
1577
|
+
border: 0;
|
|
1578
|
+
border-radius: var(--oe-attachment-radius);
|
|
1212
1579
|
color: var(--oe-text, #171717);
|
|
1213
1580
|
display: flex;
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1581
|
+
font: inherit;
|
|
1582
|
+
gap: 8px;
|
|
1583
|
+
margin: 4px 0;
|
|
1584
|
+
min-height: 34px;
|
|
1585
|
+
padding: var(--oe-attachment-inset) calc(var(--oe-attachment-inset) + var(--oe-attachment-inset));
|
|
1586
|
+
position: relative;
|
|
1218
1587
|
text-align: left;
|
|
1219
1588
|
text-decoration: none;
|
|
1220
|
-
transition:
|
|
1221
|
-
border-color 140ms,
|
|
1222
|
-
box-shadow 140ms,
|
|
1223
|
-
background 140ms;
|
|
1589
|
+
transition: background 120ms ease;
|
|
1224
1590
|
width: 100%;
|
|
1225
1591
|
}
|
|
1226
1592
|
.oe-attachment:hover,
|
|
1593
|
+
.oe-attachment-viewer:focus-visible,
|
|
1227
1594
|
.oe-attachment:focus-within {
|
|
1228
|
-
|
|
1229
|
-
box-shadow: 0 4px 18px var(--oe-shadow, rgb(0 0 0 / 8%));
|
|
1595
|
+
background: color-mix(in srgb, var(--oe-block-surface, var(--oe-surface-muted, #f5f5f5)) 88%, var(--oe-text, #171717));
|
|
1230
1596
|
outline: none;
|
|
1231
1597
|
}
|
|
1232
1598
|
.oe-attachment[data-state=error],
|
|
1233
1599
|
.oe-attachment[data-state=missing] {
|
|
1234
|
-
|
|
1600
|
+
background: color-mix(in srgb, var(--oe-surface-muted, #f5f5f5) 90%, #c83232);
|
|
1235
1601
|
}
|
|
1236
|
-
.oe-attachment-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
height: 48px;
|
|
1243
|
-
justify-content: center;
|
|
1602
|
+
.oe-attachment-thumbnail {
|
|
1603
|
+
border-radius: var(--oe-attachment-thumbnail-radius);
|
|
1604
|
+
flex: 0 0 28px;
|
|
1605
|
+
height: 28px;
|
|
1606
|
+
margin-left: calc(0px - var(--oe-attachment-inset));
|
|
1607
|
+
overflow: hidden;
|
|
1244
1608
|
}
|
|
1245
|
-
.oe-attachment-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1609
|
+
.oe-attachment-thumbnail img {
|
|
1610
|
+
border-radius: 0;
|
|
1611
|
+
display: block;
|
|
1612
|
+
height: 100%;
|
|
1613
|
+
margin: 0;
|
|
1614
|
+
object-fit: cover;
|
|
1615
|
+
width: 100%;
|
|
1616
|
+
}
|
|
1617
|
+
.oe-attachment-open-control {
|
|
1618
|
+
background: transparent;
|
|
1619
|
+
border: 0;
|
|
1620
|
+
border-radius: inherit;
|
|
1621
|
+
cursor: pointer;
|
|
1622
|
+
inset: 0;
|
|
1623
|
+
outline: none;
|
|
1624
|
+
padding: 0;
|
|
1625
|
+
position: absolute;
|
|
1626
|
+
z-index: 1;
|
|
1250
1627
|
}
|
|
1251
1628
|
.oe-attachment-body {
|
|
1252
1629
|
display: flex;
|
|
@@ -1259,7 +1636,7 @@ details.oe-toggle-list-item > summary {
|
|
|
1259
1636
|
border: 0;
|
|
1260
1637
|
color: inherit;
|
|
1261
1638
|
font: inherit;
|
|
1262
|
-
font-weight:
|
|
1639
|
+
font-weight: 500;
|
|
1263
1640
|
min-width: 0;
|
|
1264
1641
|
outline: none;
|
|
1265
1642
|
overflow: hidden;
|
|
@@ -1267,11 +1644,10 @@ details.oe-toggle-list-item > summary {
|
|
|
1267
1644
|
text-overflow: ellipsis;
|
|
1268
1645
|
white-space: nowrap;
|
|
1269
1646
|
}
|
|
1270
|
-
.oe-attachment-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
margin-top: 3px;
|
|
1647
|
+
.oe-attachment-name-input {
|
|
1648
|
+
position: relative;
|
|
1649
|
+
width: 100%;
|
|
1650
|
+
z-index: 2;
|
|
1275
1651
|
}
|
|
1276
1652
|
.oe-attachment-progress {
|
|
1277
1653
|
background: var(--oe-surface-muted, #f5f5f5);
|
|
@@ -1295,26 +1671,40 @@ details.oe-toggle-list-item > summary {
|
|
|
1295
1671
|
align-items: center;
|
|
1296
1672
|
display: flex;
|
|
1297
1673
|
flex-wrap: wrap;
|
|
1298
|
-
gap:
|
|
1674
|
+
gap: 2px;
|
|
1299
1675
|
justify-content: flex-end;
|
|
1676
|
+
position: relative;
|
|
1677
|
+
z-index: 2;
|
|
1300
1678
|
}
|
|
1301
1679
|
.oe-attachment-actions button {
|
|
1680
|
+
align-items: center;
|
|
1302
1681
|
background: transparent;
|
|
1303
1682
|
border: 0;
|
|
1304
|
-
border-radius: 7px;
|
|
1305
1683
|
color: var(--oe-muted, #737373);
|
|
1306
1684
|
cursor: pointer;
|
|
1685
|
+
display: inline-flex;
|
|
1686
|
+
flex: 0 0 24px;
|
|
1307
1687
|
font: inherit;
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1688
|
+
height: 24px;
|
|
1689
|
+
justify-content: center;
|
|
1690
|
+
min-width: 24px;
|
|
1691
|
+
padding: 0;
|
|
1692
|
+
width: 24px;
|
|
1693
|
+
}
|
|
1694
|
+
.oe-attachment-actions button svg {
|
|
1695
|
+
height: 13px;
|
|
1696
|
+
width: 13px;
|
|
1311
1697
|
}
|
|
1312
1698
|
.oe-attachment-actions button:hover,
|
|
1313
1699
|
.oe-attachment-actions button:focus-visible {
|
|
1314
|
-
background:
|
|
1700
|
+
background: transparent;
|
|
1315
1701
|
color: var(--oe-text, #171717);
|
|
1316
1702
|
outline: none;
|
|
1317
1703
|
}
|
|
1704
|
+
.oe-attachment-actions .oe-attachment-remove:hover,
|
|
1705
|
+
.oe-attachment-actions .oe-attachment-remove:focus-visible {
|
|
1706
|
+
color: #c83232;
|
|
1707
|
+
}
|
|
1318
1708
|
.oe-attachment-viewer {
|
|
1319
1709
|
cursor: pointer;
|
|
1320
1710
|
}
|