@dnax/ui 0.0.26 → 0.0.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.
- package/components/QConfigProvider.vue +25 -0
- package/components/QDialog.vue +26 -12
- package/components/QEditorJs.vue +146 -0
- package/components/QFab.vue +19 -2
- package/components/QSyntax.vue +22 -9
- package/components/QTiptap.vue +993 -0
- package/components/internal/QTiptapTableView.vue +123 -0
- package/components/internal/QTiptapTaskItemView.vue +49 -0
- package/index.ts +12 -0
- package/lib/icons.ts +26 -0
- package/lib/q.ts +5 -1
- package/lib/storage.ts +175 -0
- package/lib/tiptap-table.ts +19 -0
- package/lib/tiptap-task-list.ts +16 -0
- package/lib/touchHold.ts +221 -0
- package/lib/touchPan.ts +237 -0
- package/lib/touchRepeat.ts +148 -0
- package/lib/touchSwipe.ts +182 -0
- package/module.ts +8 -0
- package/package.json +25 -1
- package/scripts/generate-exports.ts +10 -0
- package/styles/main.css +873 -32
package/styles/main.css
CHANGED
|
@@ -6484,18 +6484,11 @@ html.dark body {
|
|
|
6484
6484
|
}
|
|
6485
6485
|
}
|
|
6486
6486
|
|
|
6487
|
-
/* slide-* :
|
|
6488
|
-
|
|
6489
|
-
|
|
6490
|
-
|
|
6491
|
-
.
|
|
6492
|
-
.q-dialog-slide-left-enter-active,
|
|
6493
|
-
.q-dialog-slide-left-leave-active,
|
|
6494
|
-
.q-dialog-slide-right-enter-active,
|
|
6495
|
-
.q-dialog-slide-right-leave-active {
|
|
6496
|
-
transition: opacity var(--q-dialog-duration-enter, 0.2s) ease;
|
|
6497
|
-
}
|
|
6498
|
-
|
|
6487
|
+
/* slide-* : vrai glissement plein écran — le panneau arrive depuis le bord
|
|
6488
|
+
(100vh / 100vw) et y retourne à la fermeture, comme les transitions par
|
|
6489
|
+
position (q-dialog-in-bottom…). Le fondu du fond est porté par l'overlay ;
|
|
6490
|
+
le panneau glisse sans fade (l'ancienne translation de 32px + fade
|
|
6491
|
+
ressemblait à un simple fondu). */
|
|
6499
6492
|
.q-dialog-slide-up-enter-active,
|
|
6500
6493
|
.q-dialog-slide-down-enter-active,
|
|
6501
6494
|
.q-dialog-slide-left-enter-active,
|
|
@@ -6520,19 +6513,16 @@ html.dark body {
|
|
|
6520
6513
|
|
|
6521
6514
|
@keyframes q-dialog-slide-up-in {
|
|
6522
6515
|
from {
|
|
6523
|
-
|
|
6524
|
-
transform: translateY(32px);
|
|
6516
|
+
transform: translateY(100vh);
|
|
6525
6517
|
}
|
|
6526
6518
|
to {
|
|
6527
|
-
opacity: 1;
|
|
6528
6519
|
transform: none;
|
|
6529
6520
|
}
|
|
6530
6521
|
}
|
|
6531
6522
|
|
|
6532
6523
|
@keyframes q-dialog-slide-up-out {
|
|
6533
6524
|
to {
|
|
6534
|
-
|
|
6535
|
-
transform: translateY(32px);
|
|
6525
|
+
transform: translateY(100vh);
|
|
6536
6526
|
}
|
|
6537
6527
|
}
|
|
6538
6528
|
|
|
@@ -6546,19 +6536,16 @@ html.dark body {
|
|
|
6546
6536
|
|
|
6547
6537
|
@keyframes q-dialog-slide-down-in {
|
|
6548
6538
|
from {
|
|
6549
|
-
|
|
6550
|
-
transform: translateY(-32px);
|
|
6539
|
+
transform: translateY(-100vh);
|
|
6551
6540
|
}
|
|
6552
6541
|
to {
|
|
6553
|
-
opacity: 1;
|
|
6554
6542
|
transform: none;
|
|
6555
6543
|
}
|
|
6556
6544
|
}
|
|
6557
6545
|
|
|
6558
6546
|
@keyframes q-dialog-slide-down-out {
|
|
6559
6547
|
to {
|
|
6560
|
-
|
|
6561
|
-
transform: translateY(-32px);
|
|
6548
|
+
transform: translateY(-100vh);
|
|
6562
6549
|
}
|
|
6563
6550
|
}
|
|
6564
6551
|
|
|
@@ -6572,19 +6559,16 @@ html.dark body {
|
|
|
6572
6559
|
|
|
6573
6560
|
@keyframes q-dialog-slide-left-in {
|
|
6574
6561
|
from {
|
|
6575
|
-
|
|
6576
|
-
transform: translateX(32px);
|
|
6562
|
+
transform: translateX(100vw);
|
|
6577
6563
|
}
|
|
6578
6564
|
to {
|
|
6579
|
-
opacity: 1;
|
|
6580
6565
|
transform: none;
|
|
6581
6566
|
}
|
|
6582
6567
|
}
|
|
6583
6568
|
|
|
6584
6569
|
@keyframes q-dialog-slide-left-out {
|
|
6585
6570
|
to {
|
|
6586
|
-
|
|
6587
|
-
transform: translateX(32px);
|
|
6571
|
+
transform: translateX(100vw);
|
|
6588
6572
|
}
|
|
6589
6573
|
}
|
|
6590
6574
|
|
|
@@ -6598,22 +6582,49 @@ html.dark body {
|
|
|
6598
6582
|
|
|
6599
6583
|
@keyframes q-dialog-slide-right-in {
|
|
6600
6584
|
from {
|
|
6601
|
-
|
|
6602
|
-
transform: translateX(-32px);
|
|
6585
|
+
transform: translateX(-100vw);
|
|
6603
6586
|
}
|
|
6604
6587
|
to {
|
|
6605
|
-
opacity: 1;
|
|
6606
6588
|
transform: none;
|
|
6607
6589
|
}
|
|
6608
6590
|
}
|
|
6609
6591
|
|
|
6610
6592
|
@keyframes q-dialog-slide-right-out {
|
|
6611
6593
|
to {
|
|
6612
|
-
|
|
6613
|
-
transform: translateX(-32px);
|
|
6594
|
+
transform: translateX(-100vw);
|
|
6614
6595
|
}
|
|
6615
6596
|
}
|
|
6616
6597
|
|
|
6598
|
+
/* sheet-up / sheet-down : mêmes mouvements que slide-up/down (plein écran),
|
|
6599
|
+
mais l'OUVERTURE décélère en fin de course — courbe « pose » type sheet
|
|
6600
|
+
natif (cubic-bezier(0.32, 0.72, 0, 1)) ; la fermeture reste identique à
|
|
6601
|
+
slide. Keyframes partagées avec slide-*. */
|
|
6602
|
+
.q-dialog-sheet-up-enter-active,
|
|
6603
|
+
.q-dialog-sheet-down-enter-active {
|
|
6604
|
+
transition: opacity var(--q-dialog-duration-enter, 0.2s) ease;
|
|
6605
|
+
}
|
|
6606
|
+
|
|
6607
|
+
.q-dialog-sheet-up-leave-active,
|
|
6608
|
+
.q-dialog-sheet-down-leave-active {
|
|
6609
|
+
transition: opacity var(--q-dialog-duration-leave, 0.15s) ease-in-out;
|
|
6610
|
+
}
|
|
6611
|
+
|
|
6612
|
+
.q-dialog-sheet-up-enter-active .q-dialog__content {
|
|
6613
|
+
animation: q-dialog-slide-up-in var(--q-dialog-duration-enter, 0.3s) cubic-bezier(0.32, 0.72, 0, 1);
|
|
6614
|
+
}
|
|
6615
|
+
|
|
6616
|
+
.q-dialog-sheet-up-leave-active .q-dialog__content {
|
|
6617
|
+
animation: q-dialog-slide-up-out var(--q-dialog-duration-leave, 0.15s) ease-in-out forwards;
|
|
6618
|
+
}
|
|
6619
|
+
|
|
6620
|
+
.q-dialog-sheet-down-enter-active .q-dialog__content {
|
|
6621
|
+
animation: q-dialog-slide-down-in var(--q-dialog-duration-enter, 0.3s) cubic-bezier(0.32, 0.72, 0, 1);
|
|
6622
|
+
}
|
|
6623
|
+
|
|
6624
|
+
.q-dialog-sheet-down-leave-active .q-dialog__content {
|
|
6625
|
+
animation: q-dialog-slide-down-out var(--q-dialog-duration-leave, 0.15s) ease-in-out forwards;
|
|
6626
|
+
}
|
|
6627
|
+
|
|
6617
6628
|
/* swipe-* : le panneau glisse depuis un bord et y REVIENT à la fermeture
|
|
6618
6629
|
(aller-retour, comme la sidebar) — swipe-left : vient de la droite et y
|
|
6619
6630
|
retourne ; swipe-right : vient de la gauche et y retourne. */
|
|
@@ -6666,6 +6677,34 @@ html.dark body {
|
|
|
6666
6677
|
}
|
|
6667
6678
|
}
|
|
6668
6679
|
|
|
6680
|
+
/* Easing sur mesure — props transition-easing-enter / transition-easing-leave :
|
|
6681
|
+
l'overlay porte les variables CSS inline (--q-dialog-easing-enter/leave),
|
|
6682
|
+
posées uniquement quand la prop est fournie. Les sélecteurs d'attribut
|
|
6683
|
+
`style*` ne matchent que dans ce cas → la courbe par défaut de chaque
|
|
6684
|
+
transition (ease, ease-in-out, cubic-bezier de sheet/swipe…) reste intacte
|
|
6685
|
+
tant qu'on n'a rien réglé. */
|
|
6686
|
+
/* Le panneau : animation-timing-function de TOUTES les transitions qui
|
|
6687
|
+
animent .q-dialog__content (zoom, slide-*, sheet-*, swipe-*, défaut selon
|
|
6688
|
+
position). */
|
|
6689
|
+
.q-dialog__overlay[style*="--q-dialog-easing-enter"] .q-dialog__content {
|
|
6690
|
+
animation-timing-function: var(--q-dialog-easing-enter, ease);
|
|
6691
|
+
}
|
|
6692
|
+
|
|
6693
|
+
.q-dialog__overlay[style*="--q-dialog-easing-leave"] .q-dialog__content {
|
|
6694
|
+
animation-timing-function: var(--q-dialog-easing-leave, ease-in-out);
|
|
6695
|
+
}
|
|
6696
|
+
|
|
6697
|
+
/* Le fond (overlay) : même easing pour son fondu d'opacité — la phase courante
|
|
6698
|
+
est détectée via la classe de transition (*-enter-active / *-leave-active,
|
|
6699
|
+
commune à fade, zoom, slide…). */
|
|
6700
|
+
.q-dialog__overlay[style*="--q-dialog-easing-enter"][class*="-enter-active"] {
|
|
6701
|
+
transition-timing-function: var(--q-dialog-easing-enter, ease);
|
|
6702
|
+
}
|
|
6703
|
+
|
|
6704
|
+
.q-dialog__overlay[style*="--q-dialog-easing-leave"][class*="-leave-active"] {
|
|
6705
|
+
transition-timing-function: var(--q-dialog-easing-leave, ease-in-out);
|
|
6706
|
+
}
|
|
6707
|
+
|
|
6669
6708
|
/* ===== QContainer ===== */
|
|
6670
6709
|
.q-container {
|
|
6671
6710
|
width: 100%;
|
|
@@ -8352,3 +8391,805 @@ html.dark body {
|
|
|
8352
8391
|
animation: none;
|
|
8353
8392
|
}
|
|
8354
8393
|
}
|
|
8394
|
+
|
|
8395
|
+
/* ===== QTiptap ===== */
|
|
8396
|
+
.q-tiptap {
|
|
8397
|
+
--q-tiptap-bg: #fff;
|
|
8398
|
+
--q-tiptap-toolbar-bg: #f6f7f9;
|
|
8399
|
+
--q-tiptap-border: var(--border, rgb(0 0 0 / 0.12));
|
|
8400
|
+
--q-tiptap-text: var(--foreground, #1d1d1d);
|
|
8401
|
+
/* ⚠ --muted est un token de FOND (bg grisé shadcn), pas une couleur de texte
|
|
8402
|
+
→ icônes/secondary en gris texte explicite */
|
|
8403
|
+
--q-tiptap-muted: #8b93a1;
|
|
8404
|
+
--q-tiptap-primary: var(--primary, #1976d2);
|
|
8405
|
+
--q-tiptap-radius: var(--q-radius, 12px);
|
|
8406
|
+
--q-tiptap-code-bg: rgb(0 0 0 / 0.06);
|
|
8407
|
+
--q-tiptap-quote-bg: rgb(25 118 210 / 0.07);
|
|
8408
|
+
display: flex;
|
|
8409
|
+
flex-direction: column;
|
|
8410
|
+
overflow: hidden;
|
|
8411
|
+
border: 1px solid var(--q-tiptap-border);
|
|
8412
|
+
border-radius: var(--q-tiptap-radius);
|
|
8413
|
+
background-color: var(--q-tiptap-bg);
|
|
8414
|
+
color: var(--q-tiptap-text);
|
|
8415
|
+
}
|
|
8416
|
+
.dark .q-tiptap {
|
|
8417
|
+
--q-tiptap-bg: #1e1e22;
|
|
8418
|
+
--q-tiptap-toolbar-bg: #27272c;
|
|
8419
|
+
--q-tiptap-border: rgb(255 255 255 / 0.12);
|
|
8420
|
+
--q-tiptap-text: #ececef;
|
|
8421
|
+
--q-tiptap-muted: #9aa2b1;
|
|
8422
|
+
--q-tiptap-code-bg: rgb(255 255 255 / 0.08);
|
|
8423
|
+
--q-tiptap-quote-bg: rgb(25 118 210 / 0.18);
|
|
8424
|
+
}
|
|
8425
|
+
.q-tiptap--filled {
|
|
8426
|
+
--q-tiptap-bg: #f6f7f9;
|
|
8427
|
+
--q-tiptap-toolbar-bg: transparent;
|
|
8428
|
+
border-color: transparent;
|
|
8429
|
+
box-shadow: inset 0 0 0 1px var(--q-tiptap-border);
|
|
8430
|
+
}
|
|
8431
|
+
.dark .q-tiptap--filled {
|
|
8432
|
+
--q-tiptap-bg: #26262b;
|
|
8433
|
+
--q-tiptap-toolbar-bg: transparent;
|
|
8434
|
+
box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.1);
|
|
8435
|
+
}
|
|
8436
|
+
.q-tiptap--square {
|
|
8437
|
+
border-radius: 0;
|
|
8438
|
+
}
|
|
8439
|
+
.q-tiptap--disable {
|
|
8440
|
+
opacity: 0.7;
|
|
8441
|
+
}
|
|
8442
|
+
.q-tiptap--disable .q-tiptap__body {
|
|
8443
|
+
pointer-events: none;
|
|
8444
|
+
}
|
|
8445
|
+
|
|
8446
|
+
/* — barre d'outils — */
|
|
8447
|
+
.q-tiptap__toolbar {
|
|
8448
|
+
display: flex;
|
|
8449
|
+
align-items: center;
|
|
8450
|
+
flex-wrap: wrap;
|
|
8451
|
+
gap: 2px;
|
|
8452
|
+
padding: 4px 6px;
|
|
8453
|
+
background-color: var(--q-tiptap-toolbar-bg);
|
|
8454
|
+
border-bottom: 1px solid var(--q-tiptap-border);
|
|
8455
|
+
}
|
|
8456
|
+
.q-tiptap__group {
|
|
8457
|
+
display: flex;
|
|
8458
|
+
align-items: center;
|
|
8459
|
+
gap: 2px;
|
|
8460
|
+
}
|
|
8461
|
+
.q-tiptap__group + .q-tiptap__group {
|
|
8462
|
+
margin-left: 6px;
|
|
8463
|
+
padding-left: 6px;
|
|
8464
|
+
border-left: 1px solid var(--q-tiptap-border);
|
|
8465
|
+
}
|
|
8466
|
+
.q-tiptap__tool {
|
|
8467
|
+
display: inline-flex;
|
|
8468
|
+
align-items: center;
|
|
8469
|
+
justify-content: center;
|
|
8470
|
+
width: 30px;
|
|
8471
|
+
height: 30px;
|
|
8472
|
+
padding: 0;
|
|
8473
|
+
border: 0;
|
|
8474
|
+
border-radius: 8px;
|
|
8475
|
+
background: transparent;
|
|
8476
|
+
color: var(--q-tiptap-muted);
|
|
8477
|
+
cursor: pointer;
|
|
8478
|
+
transition:
|
|
8479
|
+
background-color 0.15s ease,
|
|
8480
|
+
color 0.15s ease;
|
|
8481
|
+
}
|
|
8482
|
+
.q-tiptap__tool svg {
|
|
8483
|
+
width: 17px;
|
|
8484
|
+
height: 17px;
|
|
8485
|
+
}
|
|
8486
|
+
.q-tiptap__tool:hover:not(:disabled) {
|
|
8487
|
+
background-color: rgb(0 0 0 / 0.06);
|
|
8488
|
+
color: var(--q-tiptap-text);
|
|
8489
|
+
}
|
|
8490
|
+
.dark .q-tiptap__tool:hover:not(:disabled) {
|
|
8491
|
+
background-color: rgb(255 255 255 / 0.08);
|
|
8492
|
+
}
|
|
8493
|
+
.q-tiptap__tool--active {
|
|
8494
|
+
background-color: rgb(25 118 210 / 0.14);
|
|
8495
|
+
background-color: color-mix(in srgb, var(--q-tiptap-primary) 14%, transparent);
|
|
8496
|
+
color: var(--q-tiptap-primary);
|
|
8497
|
+
}
|
|
8498
|
+
.q-tiptap__tool:disabled {
|
|
8499
|
+
opacity: 0.4;
|
|
8500
|
+
cursor: not-allowed;
|
|
8501
|
+
}
|
|
8502
|
+
.q-tiptap--dense .q-tiptap__tool {
|
|
8503
|
+
width: 26px;
|
|
8504
|
+
height: 26px;
|
|
8505
|
+
}
|
|
8506
|
+
|
|
8507
|
+
/* — zone d'édition — */
|
|
8508
|
+
.q-tiptap__body {
|
|
8509
|
+
position: relative;
|
|
8510
|
+
flex: 1;
|
|
8511
|
+
min-width: 0;
|
|
8512
|
+
}
|
|
8513
|
+
.q-tiptap__editor {
|
|
8514
|
+
position: relative;
|
|
8515
|
+
z-index: 1;
|
|
8516
|
+
min-height: 180px;
|
|
8517
|
+
}
|
|
8518
|
+
.q-tiptap__editor > div,
|
|
8519
|
+
.q-tiptap__editor .ProseMirror {
|
|
8520
|
+
min-height: inherit;
|
|
8521
|
+
}
|
|
8522
|
+
.q-tiptap__editor .ProseMirror {
|
|
8523
|
+
padding: var(--q-tiptap-content-padding, 5%);
|
|
8524
|
+
outline: none;
|
|
8525
|
+
font-size: 14px;
|
|
8526
|
+
line-height: 1.7;
|
|
8527
|
+
color: var(--q-tiptap-text);
|
|
8528
|
+
caret-color: var(--q-tiptap-primary);
|
|
8529
|
+
word-wrap: break-word;
|
|
8530
|
+
}
|
|
8531
|
+
|
|
8532
|
+
/* placeholder (visible quand le document est vide) — aligné sur le padding
|
|
8533
|
+
par défaut (5% sur les 4 côtés) */
|
|
8534
|
+
.q-tiptap__placeholder {
|
|
8535
|
+
position: absolute;
|
|
8536
|
+
z-index: 0;
|
|
8537
|
+
top: 5%;
|
|
8538
|
+
left: 5%;
|
|
8539
|
+
right: 5%;
|
|
8540
|
+
font-style: italic;
|
|
8541
|
+
font-size: 14px;
|
|
8542
|
+
line-height: 1.7;
|
|
8543
|
+
color: var(--q-tiptap-muted);
|
|
8544
|
+
pointer-events: none;
|
|
8545
|
+
white-space: pre-wrap;
|
|
8546
|
+
}
|
|
8547
|
+
|
|
8548
|
+
/* — typographie du contenu édité (ProseMirror) — */
|
|
8549
|
+
.q-tiptap__editor .ProseMirror p {
|
|
8550
|
+
margin: 0 0 0.6em;
|
|
8551
|
+
}
|
|
8552
|
+
.q-tiptap__editor .ProseMirror h1,
|
|
8553
|
+
.q-tiptap__editor .ProseMirror h2,
|
|
8554
|
+
.q-tiptap__editor .ProseMirror h3 {
|
|
8555
|
+
margin: 0.8em 0 0.4em;
|
|
8556
|
+
color: var(--q-tiptap-text);
|
|
8557
|
+
font-weight: 700;
|
|
8558
|
+
line-height: 1.3;
|
|
8559
|
+
}
|
|
8560
|
+
.q-tiptap__editor .ProseMirror h1 {
|
|
8561
|
+
font-size: 1.55em;
|
|
8562
|
+
}
|
|
8563
|
+
.q-tiptap__editor .ProseMirror h2 {
|
|
8564
|
+
font-size: 1.3em;
|
|
8565
|
+
}
|
|
8566
|
+
.q-tiptap__editor .ProseMirror h3 {
|
|
8567
|
+
font-size: 1.1em;
|
|
8568
|
+
}
|
|
8569
|
+
.q-tiptap__editor .ProseMirror > *:first-child {
|
|
8570
|
+
margin-top: 0;
|
|
8571
|
+
}
|
|
8572
|
+
.q-tiptap__editor .ProseMirror ul,
|
|
8573
|
+
.q-tiptap__editor .ProseMirror ol {
|
|
8574
|
+
margin: 0 0 0.8em;
|
|
8575
|
+
/* listes décalées d'un retrait (margin-left) ; petit padding pour les
|
|
8576
|
+
marqueurs (puces / numéros) */
|
|
8577
|
+
margin-left: 1.5em;
|
|
8578
|
+
padding-left: 0.4em;
|
|
8579
|
+
}
|
|
8580
|
+
/* listes imbriquées : retrait réduit pour rester lisible */
|
|
8581
|
+
.q-tiptap__editor .ProseMirror ul ul,
|
|
8582
|
+
.q-tiptap__editor .ProseMirror ul ol,
|
|
8583
|
+
.q-tiptap__editor .ProseMirror ol ul,
|
|
8584
|
+
.q-tiptap__editor .ProseMirror ol ol {
|
|
8585
|
+
margin-left: 0.75em;
|
|
8586
|
+
}
|
|
8587
|
+
/* Tailwind preflight met ul/ol { list-style: none } → restaurer les marqueurs */
|
|
8588
|
+
.q-tiptap__editor .ProseMirror ul {
|
|
8589
|
+
list-style-type: disc;
|
|
8590
|
+
}
|
|
8591
|
+
.q-tiptap__editor .ProseMirror ol {
|
|
8592
|
+
list-style-type: decimal;
|
|
8593
|
+
}
|
|
8594
|
+
.q-tiptap__editor .ProseMirror ul ul {
|
|
8595
|
+
list-style-type: circle;
|
|
8596
|
+
}
|
|
8597
|
+
.q-tiptap__editor .ProseMirror ul ul ul {
|
|
8598
|
+
list-style-type: square;
|
|
8599
|
+
}
|
|
8600
|
+
.q-tiptap__editor .ProseMirror li {
|
|
8601
|
+
margin: 0.15em 0;
|
|
8602
|
+
}
|
|
8603
|
+
.q-tiptap__editor .ProseMirror li p {
|
|
8604
|
+
margin: 0;
|
|
8605
|
+
}
|
|
8606
|
+
.q-tiptap__editor .ProseMirror blockquote {
|
|
8607
|
+
margin: 0.6em 0;
|
|
8608
|
+
padding: 6px 12px;
|
|
8609
|
+
border-left: 3px solid var(--q-tiptap-primary);
|
|
8610
|
+
border-radius: 0 8px 8px 0;
|
|
8611
|
+
background: var(--q-tiptap-quote-bg);
|
|
8612
|
+
}
|
|
8613
|
+
.q-tiptap__editor .ProseMirror blockquote p {
|
|
8614
|
+
margin: 0;
|
|
8615
|
+
}
|
|
8616
|
+
.q-tiptap__editor .ProseMirror pre {
|
|
8617
|
+
margin: 0.6em 0;
|
|
8618
|
+
padding: 10px 12px;
|
|
8619
|
+
overflow-x: auto;
|
|
8620
|
+
border: 1px solid var(--q-tiptap-border);
|
|
8621
|
+
border-radius: 8px;
|
|
8622
|
+
background: var(--q-tiptap-code-bg);
|
|
8623
|
+
font-size: 0.92em;
|
|
8624
|
+
}
|
|
8625
|
+
.q-tiptap__editor .ProseMirror pre code {
|
|
8626
|
+
background: none;
|
|
8627
|
+
padding: 0;
|
|
8628
|
+
font-size: 1em;
|
|
8629
|
+
}
|
|
8630
|
+
.q-tiptap__editor .ProseMirror code {
|
|
8631
|
+
padding: 0.1em 0.35em;
|
|
8632
|
+
border-radius: 4px;
|
|
8633
|
+
background: var(--q-tiptap-code-bg);
|
|
8634
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
8635
|
+
font-size: 0.92em;
|
|
8636
|
+
}
|
|
8637
|
+
.q-tiptap__editor .ProseMirror a {
|
|
8638
|
+
color: var(--q-tiptap-primary);
|
|
8639
|
+
text-decoration: underline;
|
|
8640
|
+
cursor: pointer;
|
|
8641
|
+
}
|
|
8642
|
+
.q-tiptap__editor .ProseMirror hr {
|
|
8643
|
+
margin: 0.8em 0;
|
|
8644
|
+
border: none;
|
|
8645
|
+
border-top: 1px solid var(--q-tiptap-border);
|
|
8646
|
+
}
|
|
8647
|
+
.q-tiptap__editor .ProseMirror img {
|
|
8648
|
+
display: block;
|
|
8649
|
+
max-width: 100%;
|
|
8650
|
+
height: auto;
|
|
8651
|
+
margin: 0.6em auto;
|
|
8652
|
+
border-radius: 8px;
|
|
8653
|
+
box-shadow: 0 0 0 1px var(--q-tiptap-border);
|
|
8654
|
+
}
|
|
8655
|
+
.q-tiptap__editor .ProseMirror .ProseMirror-selectednode {
|
|
8656
|
+
outline: 2px solid var(--q-tiptap-primary);
|
|
8657
|
+
border-radius: 4px;
|
|
8658
|
+
}
|
|
8659
|
+
|
|
8660
|
+
/* — couleur de texte (toolbar + palette popover) — */
|
|
8661
|
+
.q-tiptap__tool--color {
|
|
8662
|
+
position: relative;
|
|
8663
|
+
}
|
|
8664
|
+
.q-tiptap__color-bar {
|
|
8665
|
+
position: absolute;
|
|
8666
|
+
right: 7px;
|
|
8667
|
+
bottom: 4px;
|
|
8668
|
+
left: 7px;
|
|
8669
|
+
height: 3px;
|
|
8670
|
+
border-radius: 2px;
|
|
8671
|
+
pointer-events: none;
|
|
8672
|
+
}
|
|
8673
|
+
.q-tiptap__tool--disabled {
|
|
8674
|
+
opacity: 0.4;
|
|
8675
|
+
cursor: not-allowed;
|
|
8676
|
+
}
|
|
8677
|
+
.q-tiptap__tool--color:focus-visible {
|
|
8678
|
+
box-shadow: inset 0 0 0 2px var(--q-tiptap-primary);
|
|
8679
|
+
}
|
|
8680
|
+
.q-tiptap__palette {
|
|
8681
|
+
position: fixed;
|
|
8682
|
+
z-index: 4000;
|
|
8683
|
+
width: 224px;
|
|
8684
|
+
padding: 10px;
|
|
8685
|
+
background: var(--q-tiptap-bg);
|
|
8686
|
+
border: 1px solid var(--q-tiptap-border);
|
|
8687
|
+
border-radius: 12px;
|
|
8688
|
+
box-shadow: 0 14px 34px rgb(0 0 0 / 0.18);
|
|
8689
|
+
}
|
|
8690
|
+
.q-tiptap__palette-title {
|
|
8691
|
+
margin: 0 2px 8px;
|
|
8692
|
+
font-size: 11px;
|
|
8693
|
+
font-weight: 600;
|
|
8694
|
+
text-transform: uppercase;
|
|
8695
|
+
letter-spacing: 0.05em;
|
|
8696
|
+
color: var(--q-tiptap-muted);
|
|
8697
|
+
}
|
|
8698
|
+
.q-tiptap__palette-swatches {
|
|
8699
|
+
display: grid;
|
|
8700
|
+
grid-template-columns: repeat(7, 1fr);
|
|
8701
|
+
gap: 6px;
|
|
8702
|
+
}
|
|
8703
|
+
.q-tiptap__swatch {
|
|
8704
|
+
position: relative;
|
|
8705
|
+
width: 100%;
|
|
8706
|
+
aspect-ratio: 1;
|
|
8707
|
+
padding: 0;
|
|
8708
|
+
border: 1px solid var(--q-tiptap-border);
|
|
8709
|
+
border-radius: 6px;
|
|
8710
|
+
background: transparent;
|
|
8711
|
+
cursor: pointer;
|
|
8712
|
+
transition: transform 0.1s ease;
|
|
8713
|
+
}
|
|
8714
|
+
.q-tiptap__swatch:hover {
|
|
8715
|
+
transform: scale(1.12);
|
|
8716
|
+
}
|
|
8717
|
+
.q-tiptap__swatch--active {
|
|
8718
|
+
box-shadow:
|
|
8719
|
+
0 0 0 2px var(--q-tiptap-bg),
|
|
8720
|
+
0 0 0 4px var(--q-tiptap-primary);
|
|
8721
|
+
}
|
|
8722
|
+
.q-tiptap__swatch--none {
|
|
8723
|
+
background: #fff;
|
|
8724
|
+
background-image: linear-gradient(
|
|
8725
|
+
to top right,
|
|
8726
|
+
transparent calc(50% - 1px),
|
|
8727
|
+
#e5484d calc(50% - 1px),
|
|
8728
|
+
#e5484d calc(50% + 1px),
|
|
8729
|
+
transparent calc(50% + 1px)
|
|
8730
|
+
);
|
|
8731
|
+
}
|
|
8732
|
+
.q-tiptap__palette-custom {
|
|
8733
|
+
display: flex;
|
|
8734
|
+
align-items: center;
|
|
8735
|
+
gap: 8px;
|
|
8736
|
+
margin-top: 10px;
|
|
8737
|
+
padding-top: 10px;
|
|
8738
|
+
border-top: 1px solid var(--q-tiptap-border);
|
|
8739
|
+
font-size: 12px;
|
|
8740
|
+
color: var(--q-tiptap-muted);
|
|
8741
|
+
cursor: pointer;
|
|
8742
|
+
}
|
|
8743
|
+
.q-tiptap__palette-custom input[type="color"] {
|
|
8744
|
+
width: 26px;
|
|
8745
|
+
height: 26px;
|
|
8746
|
+
padding: 0;
|
|
8747
|
+
border: 1px solid var(--q-tiptap-border);
|
|
8748
|
+
border-radius: 6px;
|
|
8749
|
+
background: none;
|
|
8750
|
+
cursor: pointer;
|
|
8751
|
+
}
|
|
8752
|
+
.q-tiptap__palette-custom input[type="color"]::-webkit-color-swatch-wrapper {
|
|
8753
|
+
padding: 2px;
|
|
8754
|
+
}
|
|
8755
|
+
.q-tiptap__palette-custom input[type="color"]::-webkit-color-swatch {
|
|
8756
|
+
border: none;
|
|
8757
|
+
border-radius: 4px;
|
|
8758
|
+
}
|
|
8759
|
+
|
|
8760
|
+
/* — mentions (@) : puce dans le document + popup de suggestion — */
|
|
8761
|
+
.q-tiptap__editor .ProseMirror span[data-type="mention"] {
|
|
8762
|
+
display: inline-block;
|
|
8763
|
+
padding: 0 5px;
|
|
8764
|
+
margin: 0 1px;
|
|
8765
|
+
border-radius: 6px;
|
|
8766
|
+
background: rgb(25 118 210 / 0.12);
|
|
8767
|
+
background: color-mix(in srgb, var(--q-tiptap-primary) 14%, transparent);
|
|
8768
|
+
color: var(--q-tiptap-primary);
|
|
8769
|
+
font-weight: 500;
|
|
8770
|
+
white-space: nowrap;
|
|
8771
|
+
}
|
|
8772
|
+
.q-tiptap__mention-list {
|
|
8773
|
+
display: flex;
|
|
8774
|
+
flex-direction: column;
|
|
8775
|
+
gap: 2px;
|
|
8776
|
+
width: 220px;
|
|
8777
|
+
max-height: 240px;
|
|
8778
|
+
overflow-y: auto;
|
|
8779
|
+
padding: 4px;
|
|
8780
|
+
background: var(--q-tiptap-bg);
|
|
8781
|
+
border: 1px solid var(--q-tiptap-border);
|
|
8782
|
+
border-radius: 10px;
|
|
8783
|
+
box-shadow: 0 12px 28px rgb(0 0 0 / 0.18);
|
|
8784
|
+
}
|
|
8785
|
+
.q-tiptap__mention-item {
|
|
8786
|
+
display: flex;
|
|
8787
|
+
align-items: center;
|
|
8788
|
+
width: 100%;
|
|
8789
|
+
padding: 6px 10px;
|
|
8790
|
+
border: 0;
|
|
8791
|
+
border-radius: 7px;
|
|
8792
|
+
background: transparent;
|
|
8793
|
+
color: var(--q-tiptap-text);
|
|
8794
|
+
font-size: 13px;
|
|
8795
|
+
text-align: left;
|
|
8796
|
+
cursor: pointer;
|
|
8797
|
+
white-space: nowrap;
|
|
8798
|
+
overflow: hidden;
|
|
8799
|
+
text-overflow: ellipsis;
|
|
8800
|
+
}
|
|
8801
|
+
.q-tiptap__mention-item:hover,
|
|
8802
|
+
.q-tiptap__mention-item--active {
|
|
8803
|
+
background: rgb(25 118 210 / 0.12);
|
|
8804
|
+
background: color-mix(in srgb, var(--q-tiptap-primary) 14%, transparent);
|
|
8805
|
+
color: var(--q-tiptap-primary);
|
|
8806
|
+
}
|
|
8807
|
+
.q-tiptap__mention-empty {
|
|
8808
|
+
padding: 8px 10px;
|
|
8809
|
+
font-size: 13px;
|
|
8810
|
+
color: var(--q-tiptap-muted);
|
|
8811
|
+
}
|
|
8812
|
+
|
|
8813
|
+
/* — bubble menu : barre contextuelle de formatage (sélection) — */
|
|
8814
|
+
.q-tiptap__bubble {
|
|
8815
|
+
display: flex;
|
|
8816
|
+
align-items: center;
|
|
8817
|
+
gap: 2px;
|
|
8818
|
+
width: max-content;
|
|
8819
|
+
padding: 4px;
|
|
8820
|
+
background: var(--q-tiptap-bg);
|
|
8821
|
+
border: 1px solid var(--q-tiptap-border);
|
|
8822
|
+
border-radius: 12px;
|
|
8823
|
+
box-shadow: 0 10px 28px rgb(0 0 0 / 0.16);
|
|
8824
|
+
}
|
|
8825
|
+
.q-tiptap__bubble-btn {
|
|
8826
|
+
display: inline-flex;
|
|
8827
|
+
align-items: center;
|
|
8828
|
+
justify-content: center;
|
|
8829
|
+
width: 28px;
|
|
8830
|
+
height: 28px;
|
|
8831
|
+
padding: 0;
|
|
8832
|
+
border: 0;
|
|
8833
|
+
border-radius: 8px;
|
|
8834
|
+
background: transparent;
|
|
8835
|
+
color: var(--q-tiptap-muted);
|
|
8836
|
+
cursor: pointer;
|
|
8837
|
+
transition:
|
|
8838
|
+
background-color 0.15s ease,
|
|
8839
|
+
color 0.15s ease;
|
|
8840
|
+
}
|
|
8841
|
+
.q-tiptap__bubble-btn svg {
|
|
8842
|
+
width: 15px;
|
|
8843
|
+
height: 15px;
|
|
8844
|
+
}
|
|
8845
|
+
.q-tiptap__bubble-btn:hover:not(:disabled) {
|
|
8846
|
+
background-color: rgb(0 0 0 / 0.06);
|
|
8847
|
+
color: var(--q-tiptap-text);
|
|
8848
|
+
}
|
|
8849
|
+
.dark .q-tiptap__bubble-btn:hover:not(:disabled) {
|
|
8850
|
+
background-color: rgb(255 255 255 / 0.08);
|
|
8851
|
+
}
|
|
8852
|
+
.q-tiptap__bubble-btn--active {
|
|
8853
|
+
background-color: rgb(25 118 210 / 0.14);
|
|
8854
|
+
background-color: color-mix(in srgb, var(--q-tiptap-primary) 14%, transparent);
|
|
8855
|
+
color: var(--q-tiptap-primary);
|
|
8856
|
+
}
|
|
8857
|
+
.q-tiptap__bubble-btn:disabled {
|
|
8858
|
+
opacity: 0.4;
|
|
8859
|
+
cursor: not-allowed;
|
|
8860
|
+
}
|
|
8861
|
+
.q-tiptap__bubble-sep {
|
|
8862
|
+
width: 1px;
|
|
8863
|
+
height: 16px;
|
|
8864
|
+
margin: 0 3px;
|
|
8865
|
+
background: var(--q-tiptap-border);
|
|
8866
|
+
}
|
|
8867
|
+
.q-tiptap__bubble .q-tiptap__color-bar {
|
|
8868
|
+
right: 6px;
|
|
8869
|
+
bottom: 3px;
|
|
8870
|
+
left: 6px;
|
|
8871
|
+
}
|
|
8872
|
+
|
|
8873
|
+
/* — drag handle : poignée de déplacement des blocs — */
|
|
8874
|
+
.q-tiptap__drag-handle {
|
|
8875
|
+
display: inline-flex;
|
|
8876
|
+
align-items: center;
|
|
8877
|
+
justify-content: center;
|
|
8878
|
+
width: 20px;
|
|
8879
|
+
height: 20px;
|
|
8880
|
+
/* espace minimum entre l'icône et l'élément dragué (≥ 5% de la largeur de
|
|
8881
|
+
l'éditeur, relatif au conteneur positionné .q-tiptap__body) */
|
|
8882
|
+
margin-right: 5%;
|
|
8883
|
+
color: var(--q-tiptap-muted);
|
|
8884
|
+
cursor: grab;
|
|
8885
|
+
border-radius: 6px;
|
|
8886
|
+
transition: color 0.15s ease, background-color 0.15s ease;
|
|
8887
|
+
}
|
|
8888
|
+
.q-tiptap__drag-handle:hover {
|
|
8889
|
+
color: var(--q-tiptap-primary);
|
|
8890
|
+
background: rgb(25 118 210 / 0.12);
|
|
8891
|
+
background: color-mix(in srgb, var(--q-tiptap-primary) 14%, transparent);
|
|
8892
|
+
}
|
|
8893
|
+
.q-tiptap__drag-handle:active {
|
|
8894
|
+
cursor: grabbing;
|
|
8895
|
+
}
|
|
8896
|
+
.q-tiptap__drag-handle svg {
|
|
8897
|
+
width: 16px;
|
|
8898
|
+
height: 16px;
|
|
8899
|
+
}
|
|
8900
|
+
|
|
8901
|
+
/* Les popups (mentions, palette, bubble) sont montés HORS de .q-tiptap
|
|
8902
|
+
(Teleport / body via props.mount) → ils n'héritent PAS de --q-tiptap-*.
|
|
8903
|
+
On leur redéfinit leurs variables localement : fond blanc en light
|
|
8904
|
+
(--card), sombre via html.dark. */
|
|
8905
|
+
.q-tiptap__mention-list,
|
|
8906
|
+
.q-tiptap__palette,
|
|
8907
|
+
.q-tiptap__bubble,
|
|
8908
|
+
.q-tiptap__table-menu {
|
|
8909
|
+
--q-tiptap-bg: var(--card, #ffffff);
|
|
8910
|
+
--q-tiptap-border: var(--border, rgb(0 0 0 / 0.12));
|
|
8911
|
+
--q-tiptap-text: var(--foreground, #1d1d1d);
|
|
8912
|
+
--q-tiptap-muted: #8b93a1;
|
|
8913
|
+
--q-tiptap-primary: var(--primary, #1976d2);
|
|
8914
|
+
}
|
|
8915
|
+
.dark .q-tiptap__mention-list,
|
|
8916
|
+
.dark .q-tiptap__palette,
|
|
8917
|
+
.dark .q-tiptap__bubble,
|
|
8918
|
+
.dark .q-tiptap__table-menu {
|
|
8919
|
+
--q-tiptap-bg: #1e1e22;
|
|
8920
|
+
--q-tiptap-border: rgb(255 255 255 / 0.12);
|
|
8921
|
+
--q-tiptap-text: #ececef;
|
|
8922
|
+
--q-tiptap-muted: #9aa2b1;
|
|
8923
|
+
--q-tiptap-primary: var(--primary, #1976d2);
|
|
8924
|
+
}
|
|
8925
|
+
|
|
8926
|
+
/* — sélecteur de taille de police (toolbar, q-select) — */
|
|
8927
|
+
.q-tiptap__size {
|
|
8928
|
+
display: inline-flex;
|
|
8929
|
+
align-items: center;
|
|
8930
|
+
margin: 0 2px;
|
|
8931
|
+
}
|
|
8932
|
+
.q-tiptap__font-size {
|
|
8933
|
+
width: 100px;
|
|
8934
|
+
font-size: 12px;
|
|
8935
|
+
}
|
|
8936
|
+
.q-tiptap__font-size .q-select__display {
|
|
8937
|
+
font-size: 12px;
|
|
8938
|
+
}
|
|
8939
|
+
.q-tiptap__font-size.q-field--dense .q-select__arrow {
|
|
8940
|
+
width: 14px;
|
|
8941
|
+
height: 14px;
|
|
8942
|
+
}
|
|
8943
|
+
.q-tiptap__font-size .q-select__popup {
|
|
8944
|
+
width: 100px;
|
|
8945
|
+
min-width: 100px;
|
|
8946
|
+
}
|
|
8947
|
+
.q-tiptap__font-size .q-select__option-label {
|
|
8948
|
+
font-size: 12px;
|
|
8949
|
+
}
|
|
8950
|
+
|
|
8951
|
+
/* — tableaux : rendu dans le document + popup d'actions — */
|
|
8952
|
+
.q-tiptap__editor .ProseMirror .tableWrapper {
|
|
8953
|
+
overflow-x: auto;
|
|
8954
|
+
}
|
|
8955
|
+
.q-tiptap__editor .ProseMirror table {
|
|
8956
|
+
width: 100%;
|
|
8957
|
+
margin: 0.6em 0;
|
|
8958
|
+
border-collapse: collapse;
|
|
8959
|
+
table-layout: fixed;
|
|
8960
|
+
}
|
|
8961
|
+
.q-tiptap__editor .ProseMirror th,
|
|
8962
|
+
.q-tiptap__editor .ProseMirror td {
|
|
8963
|
+
position: relative;
|
|
8964
|
+
min-width: 60px;
|
|
8965
|
+
padding: 6px 10px;
|
|
8966
|
+
border: 1px solid var(--q-tiptap-border);
|
|
8967
|
+
vertical-align: top;
|
|
8968
|
+
}
|
|
8969
|
+
.q-tiptap__editor .ProseMirror th {
|
|
8970
|
+
background: var(--q-tiptap-toolbar-bg);
|
|
8971
|
+
font-weight: 600;
|
|
8972
|
+
text-align: left;
|
|
8973
|
+
}
|
|
8974
|
+
.q-tiptap__editor .ProseMirror .selectedCell::after {
|
|
8975
|
+
content: "";
|
|
8976
|
+
position: absolute;
|
|
8977
|
+
inset: 0;
|
|
8978
|
+
background: rgb(25 118 210 / 0.14);
|
|
8979
|
+
background: color-mix(in srgb, var(--q-tiptap-primary) 14%, transparent);
|
|
8980
|
+
pointer-events: none;
|
|
8981
|
+
}
|
|
8982
|
+
.q-tiptap__editor .ProseMirror .column-resize-handle {
|
|
8983
|
+
position: absolute;
|
|
8984
|
+
top: 0;
|
|
8985
|
+
right: -3px;
|
|
8986
|
+
bottom: 0;
|
|
8987
|
+
width: 5px;
|
|
8988
|
+
background: var(--q-tiptap-primary);
|
|
8989
|
+
cursor: col-resize;
|
|
8990
|
+
}
|
|
8991
|
+
.q-tiptap__editor .ProseMirror td p,
|
|
8992
|
+
.q-tiptap__editor .ProseMirror th p {
|
|
8993
|
+
margin: 0 0 0.2em;
|
|
8994
|
+
}
|
|
8995
|
+
.q-tiptap__table-menu {
|
|
8996
|
+
position: fixed;
|
|
8997
|
+
z-index: 4000;
|
|
8998
|
+
display: flex;
|
|
8999
|
+
flex-direction: column;
|
|
9000
|
+
gap: 2px;
|
|
9001
|
+
width: 212px;
|
|
9002
|
+
padding: 5px;
|
|
9003
|
+
background: var(--q-tiptap-bg);
|
|
9004
|
+
border: 1px solid var(--q-tiptap-border);
|
|
9005
|
+
border-radius: 10px;
|
|
9006
|
+
box-shadow: 0 12px 28px rgb(0 0 0 / 0.18);
|
|
9007
|
+
}
|
|
9008
|
+
.q-tiptap__table-action {
|
|
9009
|
+
display: flex;
|
|
9010
|
+
align-items: center;
|
|
9011
|
+
width: 100%;
|
|
9012
|
+
padding: 6px 10px;
|
|
9013
|
+
border: 0;
|
|
9014
|
+
border-radius: 7px;
|
|
9015
|
+
background: transparent;
|
|
9016
|
+
color: var(--q-tiptap-text);
|
|
9017
|
+
font-size: 13px;
|
|
9018
|
+
text-align: left;
|
|
9019
|
+
cursor: pointer;
|
|
9020
|
+
}
|
|
9021
|
+
.q-tiptap__table-action:hover {
|
|
9022
|
+
background: rgb(25 118 210 / 0.12);
|
|
9023
|
+
background: color-mix(in srgb, var(--q-tiptap-primary) 14%, transparent);
|
|
9024
|
+
color: var(--q-tiptap-primary);
|
|
9025
|
+
}
|
|
9026
|
+
|
|
9027
|
+
/* ===== QEditorJs (Editor.js, éditeur par blocs) ===== */
|
|
9028
|
+
.q-editor-js {
|
|
9029
|
+
border: 1px solid var(--border, rgb(0 0 0 / 0.12));
|
|
9030
|
+
border-radius: var(--q-radius, 12px);
|
|
9031
|
+
background: var(--card, #ffffff);
|
|
9032
|
+
color: var(--foreground, #1d1d1d);
|
|
9033
|
+
overflow: hidden;
|
|
9034
|
+
transition: border-color 0.15s ease;
|
|
9035
|
+
}
|
|
9036
|
+
.q-editor-js:focus-within {
|
|
9037
|
+
border-color: var(--primary, #1976d2);
|
|
9038
|
+
}
|
|
9039
|
+
.q-editor-js--disable {
|
|
9040
|
+
opacity: 0.7;
|
|
9041
|
+
pointer-events: none;
|
|
9042
|
+
}
|
|
9043
|
+
.q-editor-js__holder {
|
|
9044
|
+
padding: 14px 16px;
|
|
9045
|
+
}
|
|
9046
|
+
.q-editor-js .codex-editor__redactor {
|
|
9047
|
+
padding-bottom: 40px;
|
|
9048
|
+
}
|
|
9049
|
+
.q-editor-js .ce-block__content,
|
|
9050
|
+
.q-editor-js .ce-toolbar__content {
|
|
9051
|
+
max-width: none;
|
|
9052
|
+
}
|
|
9053
|
+
.q-editor-js .ce-block {
|
|
9054
|
+
margin-bottom: 8px;
|
|
9055
|
+
}
|
|
9056
|
+
.q-editor-js .ce-paragraph {
|
|
9057
|
+
color: var(--foreground, #1d1d1d);
|
|
9058
|
+
font-size: 14px;
|
|
9059
|
+
line-height: 1.7;
|
|
9060
|
+
outline: none;
|
|
9061
|
+
}
|
|
9062
|
+
.q-editor-js .ce-paragraph[data-placeholder]:empty::before {
|
|
9063
|
+
color: var(--muted, #8b93a1);
|
|
9064
|
+
}
|
|
9065
|
+
.q-editor-js .ce-header {
|
|
9066
|
+
color: var(--foreground, #1d1d1d);
|
|
9067
|
+
font-weight: 700;
|
|
9068
|
+
line-height: 1.3;
|
|
9069
|
+
}
|
|
9070
|
+
.q-editor-js h1.ce-header {
|
|
9071
|
+
font-size: 1.55em;
|
|
9072
|
+
}
|
|
9073
|
+
.q-editor-js h2.ce-header {
|
|
9074
|
+
font-size: 1.3em;
|
|
9075
|
+
}
|
|
9076
|
+
.q-editor-js h3.ce-header {
|
|
9077
|
+
font-size: 1.1em;
|
|
9078
|
+
}
|
|
9079
|
+
.q-editor-js .cdx-list {
|
|
9080
|
+
color: var(--foreground, #1d1d1d);
|
|
9081
|
+
line-height: 1.7;
|
|
9082
|
+
}
|
|
9083
|
+
.q-editor-js .cdx-checklist {
|
|
9084
|
+
color: var(--foreground, #1d1d1d);
|
|
9085
|
+
}
|
|
9086
|
+
.q-editor-js .ce-code__textarea {
|
|
9087
|
+
background: color-mix(in srgb, var(--foreground, #1d1d1d) 6%, transparent);
|
|
9088
|
+
color: var(--foreground, #1d1d1d);
|
|
9089
|
+
border: 1px solid var(--border, rgb(0 0 0 / 0.12));
|
|
9090
|
+
border-radius: 8px;
|
|
9091
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
9092
|
+
}
|
|
9093
|
+
.q-editor-js .cdx-quote {
|
|
9094
|
+
margin: 0;
|
|
9095
|
+
padding: 10px 14px;
|
|
9096
|
+
border-left: 3px solid var(--primary, #1976d2);
|
|
9097
|
+
background: color-mix(in srgb, var(--primary, #1976d2) 8%, transparent);
|
|
9098
|
+
color: var(--foreground, #1d1d1d);
|
|
9099
|
+
border-radius: 0 8px 8px 0;
|
|
9100
|
+
}
|
|
9101
|
+
.q-editor-js .ce-toolbar__plus,
|
|
9102
|
+
.q-editor-js .ce-toolbar__settings-btn {
|
|
9103
|
+
color: var(--foreground, #1d1d1d);
|
|
9104
|
+
}
|
|
9105
|
+
.q-editor-js .ce-toolbar__plus:hover,
|
|
9106
|
+
.q-editor-js .ce-toolbar__settings-btn:hover {
|
|
9107
|
+
color: var(--primary, #1976d2);
|
|
9108
|
+
}
|
|
9109
|
+
.q-editor-js .ce-inline-toolbar,
|
|
9110
|
+
.q-editor-js .ce-conv-toolbar,
|
|
9111
|
+
.q-editor-js .ce-toolbox__button,
|
|
9112
|
+
.q-editor-js .ce-popover {
|
|
9113
|
+
background: var(--card, #ffffff);
|
|
9114
|
+
color: var(--foreground, #1d1d1d);
|
|
9115
|
+
border: 1px solid var(--border, rgb(0 0 0 / 0.12));
|
|
9116
|
+
}
|
|
9117
|
+
.q-editor-js .ce-toolbox__button--active,
|
|
9118
|
+
.q-editor-js .ce-inline-tool--active {
|
|
9119
|
+
color: var(--primary, #1976d2);
|
|
9120
|
+
}
|
|
9121
|
+
|
|
9122
|
+
/* NodeView Vue de la table : wrapper + table + tbody (contentDOM) */
|
|
9123
|
+
.q-tiptap__editor .ProseMirror .q-tiptap__table-wrapper {
|
|
9124
|
+
position: relative;
|
|
9125
|
+
overflow-x: auto;
|
|
9126
|
+
margin: 0.6em 0;
|
|
9127
|
+
}
|
|
9128
|
+
.q-tiptap__editor .ProseMirror .q-tiptap__table-wrapper table {
|
|
9129
|
+
margin: 0;
|
|
9130
|
+
width: 100%;
|
|
9131
|
+
table-layout: fixed;
|
|
9132
|
+
}
|
|
9133
|
+
/* Poignées de redimensionnement des colonnes (NodeView Vue) */
|
|
9134
|
+
.q-tiptap__resize-handle {
|
|
9135
|
+
position: absolute;
|
|
9136
|
+
top: 0;
|
|
9137
|
+
bottom: 0;
|
|
9138
|
+
z-index: 2;
|
|
9139
|
+
width: 7px;
|
|
9140
|
+
margin-left: -3.5px;
|
|
9141
|
+
cursor: col-resize;
|
|
9142
|
+
touch-action: none;
|
|
9143
|
+
}
|
|
9144
|
+
.q-tiptap__resize-handle::after {
|
|
9145
|
+
content: "";
|
|
9146
|
+
position: absolute;
|
|
9147
|
+
top: 0;
|
|
9148
|
+
bottom: 0;
|
|
9149
|
+
left: 2.5px;
|
|
9150
|
+
width: 2px;
|
|
9151
|
+
border-radius: 2px;
|
|
9152
|
+
background: transparent;
|
|
9153
|
+
transition: background-color 0.15s ease;
|
|
9154
|
+
}
|
|
9155
|
+
.q-tiptap__resize-handle:hover::after,
|
|
9156
|
+
.q-tiptap__resize-handle:active::after {
|
|
9157
|
+
background: var(--q-tiptap-primary);
|
|
9158
|
+
}
|
|
9159
|
+
|
|
9160
|
+
/* — dialog image / lien (saisie URL) — */
|
|
9161
|
+
.q-tiptap__dialog {
|
|
9162
|
+
display: flex;
|
|
9163
|
+
flex-direction: column;
|
|
9164
|
+
gap: 10px;
|
|
9165
|
+
min-width: 300px;
|
|
9166
|
+
padding: 14px 16px;
|
|
9167
|
+
}
|
|
9168
|
+
|
|
9169
|
+
/* — task list (NodeView Vue → q-checkbox dnax.ui) — */
|
|
9170
|
+
.q-tiptap__editor .ProseMirror ul[data-type="taskList"] {
|
|
9171
|
+
padding-left: 0;
|
|
9172
|
+
list-style: none;
|
|
9173
|
+
}
|
|
9174
|
+
.q-tiptap__editor .ProseMirror ul[data-type="taskList"] li[data-node-view-wrapper] {
|
|
9175
|
+
display: flex;
|
|
9176
|
+
align-items: flex-start;
|
|
9177
|
+
gap: 9px;
|
|
9178
|
+
list-style: none;
|
|
9179
|
+
}
|
|
9180
|
+
.q-tiptap__task-check {
|
|
9181
|
+
display: inline-flex;
|
|
9182
|
+
align-items: center;
|
|
9183
|
+
flex-shrink: 0;
|
|
9184
|
+
margin-top: 2px;
|
|
9185
|
+
cursor: pointer;
|
|
9186
|
+
user-select: none;
|
|
9187
|
+
}
|
|
9188
|
+
.q-tiptap__task-content {
|
|
9189
|
+
flex: 1;
|
|
9190
|
+
min-width: 0;
|
|
9191
|
+
}
|
|
9192
|
+
.q-tiptap__task-content--checked {
|
|
9193
|
+
color: var(--q-tiptap-muted);
|
|
9194
|
+
text-decoration: line-through;
|
|
9195
|
+
}
|