testomatio-editor-blocks 0.3.0 → 0.4.1

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.
@@ -1,14 +1,111 @@
1
+ /* ============================================
2
+ COLOR PALETTE
3
+ Adjust these variables to change the theme
4
+ ============================================ */
5
+ :root {
6
+ /* Base colors */
7
+ --color-white: #ffffff;
8
+ --color-slate-900: #0f172a;
9
+ --color-slate-400: #94a3b8;
10
+
11
+ /* Primary (Blue) - used for steps, buttons, focus states */
12
+ --color-primary-900: #1e3a8a;
13
+ --color-primary-700: #1d4ed8;
14
+ --color-primary-600: #2563eb;
15
+ --color-primary-500: #3b82f6;
16
+
17
+ /* Success (Green) - used for ready status */
18
+ --color-success-500: #22c55e;
19
+
20
+ /* Danger (Red) - used for blocked status */
21
+ --color-danger-500: #ef4444;
22
+
23
+ /* Accent (Emerald/Teal) - used for snippets */
24
+ --color-accent-700: #0f766e;
25
+ --color-accent-500: #10b981;
26
+
27
+ /* Selection */
28
+ --color-selection: #f4d35e;
29
+
30
+ /* Semantic tokens - these reference the palette above */
31
+ --text-primary: #262626;
32
+ --text-muted: rgba(15, 23, 42, 0.65);
33
+
34
+ --border-light: rgba(15, 23, 42, 0.1);
35
+ --border-default: rgba(15, 23, 42, 0.12);
36
+ --shadow-subtle: rgba(15, 23, 42, 0.05);
37
+ --shadow-medium: rgba(15, 23, 42, 0.16);
38
+ --shadow-heavy: rgba(15, 23, 42, 0.35);
39
+ --overlay-dark: rgba(15, 23, 42, 0.75);
40
+
41
+ --bg-white: rgba(255, 255, 255, 0.85);
42
+ --bg-white-solid: rgba(255, 255, 255, 0.92);
43
+ --bg-white-opaque: rgba(255, 255, 255, 0.98);
44
+ --bg-muted: rgba(15, 23, 42, 0.05);
45
+
46
+ /* Step block colors */
47
+ --step-card-bg: #f7f7f8;
48
+ --step-card-border: #e5e7eb;
49
+ --step-card-shadow: rgba(15, 23, 42, 0.06);
50
+ --step-input-border: #d1d5db;
51
+ --step-input-border-focus: #4f46e5;
52
+ --step-input-shadow: rgba(79, 70, 229, 0.25);
53
+ --step-text: #1f2937;
54
+ --step-muted: #6b7280;
55
+ --step-action: #374151;
56
+ --step-bg-button: #ffffff;
57
+ --step-bg-button-hover: #f3f4f6;
58
+ --step-border-focus: rgba(79, 70, 229, 0.4);
59
+ --step-border-light: rgba(15, 23, 42, 0.12);
60
+ --step-bg-light: rgba(15, 23, 42, 0.04);
61
+ --step-shadow-hover: rgba(15, 23, 42, 0.1);
62
+
63
+ /* Step timeline design tokens */
64
+ --step-number-size: 24px;
65
+ --step-number-bg: #e5e5e5;
66
+ --step-number-text: #0a0a0a;
67
+ --step-label-color: #404040;
68
+ --step-column-gap: 16px;
69
+ --step-section-gap: 16px;
70
+ --step-input-radius: 8px;
71
+ --step-input-border: #d4d4d4;
72
+ --step-input-border-focus: #4f46e5;
73
+ --snippet-dropdown-bg: #fafafa;
74
+ --snippet-content-bg: #fafafa;
75
+ --snippet-content-border: #e5e5e5;
76
+
77
+ /* Snippet block colors */
78
+ --snippet-border: rgba(16, 185, 129, 0.75);
79
+ --snippet-bg: rgba(16, 185, 129, 0.12);
80
+ --snippet-shadow: rgba(16, 185, 129, 0.16);
81
+ --snippet-border-light: rgba(16, 185, 129, 0.25);
82
+ --snippet-border-medium: rgba(16, 185, 129, 0.35);
83
+ --snippet-border-strong: rgba(16, 185, 129, 0.55);
84
+ --snippet-border-focus: rgba(16, 185, 129, 0.7);
85
+ --snippet-bg-light: rgba(16, 185, 129, 0.1);
86
+ --snippet-bg-hover: rgba(16, 185, 129, 0.18);
87
+ --snippet-focus-ring: rgba(16, 185, 129, 0.2);
88
+
89
+ /* Status colors */
90
+ --status-default: var(--color-slate-400);
91
+ --status-default-bg: rgba(148, 163, 184, 0.12);
92
+ --status-ready: var(--color-success-500);
93
+ --status-ready-bg: rgba(34, 197, 94, 0.12);
94
+ --status-blocked: var(--color-danger-500);
95
+ --status-blocked-bg: rgba(239, 68, 68, 0.12);
96
+ }
97
+
1
98
  .testomatio-editor {
2
99
  font-family: "Inter", system-ui, -apple-system, sans-serif;
3
100
  }
4
101
 
5
102
  .bn-testcase {
6
- --status-color: #94a3b8;
103
+ --status-color: var(--status-default);
7
104
  position: relative;
8
105
  border-radius: 1rem;
9
106
  border-left: 6px solid var(--status-color);
10
107
  padding: 1rem 1.25rem;
11
- background: rgba(148, 163, 184, 0.12);
108
+ background: var(--status-default-bg);
12
109
  display: flex;
13
110
  flex-direction: column;
14
111
  gap: 0.75rem;
@@ -20,7 +117,7 @@
20
117
  inset: 0;
21
118
  border-radius: inherit;
22
119
  pointer-events: none;
23
- box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.05);
120
+ box-shadow: 0 0 0 1px var(--shadow-subtle);
24
121
  }
25
122
 
26
123
  .bn-testcase__header {
@@ -42,20 +139,20 @@
42
139
  font-weight: 700;
43
140
  text-transform: uppercase;
44
141
  letter-spacing: 0.08em;
45
- color: #0f172a;
142
+ color: var(--text-primary);
46
143
  }
47
144
 
48
145
  .bn-testcase__reference {
49
146
  padding: 0.35rem 0.6rem;
50
147
  border-radius: 0.5rem;
51
- border: 1px solid rgba(15, 23, 42, 0.1);
52
- background: rgba(255, 255, 255, 0.85);
148
+ border: 1px solid var(--border-light);
149
+ background: var(--bg-white);
53
150
  font-size: 0.85rem;
54
151
  min-width: 8rem;
55
152
  }
56
153
 
57
154
  .bn-testcase__reference:focus-visible {
58
- outline: 2px solid rgba(37, 99, 235, 0.4);
155
+ outline: 2px solid var(--step-focus-outline);
59
156
  outline-offset: 2px;
60
157
  }
61
158
 
@@ -64,13 +161,13 @@
64
161
  align-items: center;
65
162
  gap: 0.35rem;
66
163
  font-size: 0.85rem;
67
- color: #0f172a;
164
+ color: var(--text-primary);
68
165
  font-weight: 600;
69
166
  }
70
167
 
71
168
  .bn-testcase__status select {
72
169
  border-radius: 0.5rem;
73
- border: 1px solid rgba(15, 23, 42, 0.12);
170
+ border: 1px solid var(--border-default);
74
171
  padding: 0.35rem 0.6rem;
75
172
  background: rgba(255, 255, 255, 0.95);
76
173
  font-size: 0.85rem;
@@ -83,150 +180,413 @@
83
180
  }
84
181
 
85
182
  .bn-testcase--ready {
86
- --status-color: #22c55e;
87
- background: rgba(34, 197, 94, 0.12);
183
+ --status-color: var(--status-ready);
184
+ background: var(--status-ready-bg);
88
185
  }
89
186
 
90
187
  .bn-testcase--blocked {
91
- --status-color: #ef4444;
92
- background: rgba(239, 68, 68, 0.12);
188
+ --status-color: var(--status-blocked);
189
+ background: var(--status-blocked-bg);
190
+ }
191
+
192
+ .bn-teststep,
193
+ .bn-teststep button,
194
+ .bn-teststep input,
195
+ .bn-teststep textarea,
196
+ .bn-teststep select {
197
+ font-family: "Inter", system-ui, -apple-system, sans-serif;
93
198
  }
94
199
 
95
200
  .bn-teststep {
96
- border-radius: 0.85rem;
97
- border-left: 5px solid rgba(59, 130, 246, 0.65);
98
- background: rgba(59, 130, 246, 0.12);
99
- padding: 0.85rem 1.1rem 1rem;
100
201
  display: grid;
101
- gap: 0.75rem;
202
+ grid-template-columns: var(--step-number-size) 1fr;
203
+ gap: 0 var(--step-column-gap);
102
204
  position: relative;
103
205
  width: 100%;
104
206
  }
105
207
 
106
208
  .bn-teststep::after {
107
- content: "";
108
- position: absolute;
109
- inset: 0;
110
- border-radius: inherit;
111
- pointer-events: none;
112
- box-shadow: 0 0 0 1px rgba(37, 99, 235, 0.08);
209
+ display: none;
210
+ }
211
+
212
+ .bn-block-content.ProseMirror-selectednode > .bn-teststep,
213
+ .ProseMirror-selectednode > .bn-block-content > .bn-teststep {
214
+ outline: none;
113
215
  }
114
216
 
115
217
  .bn-snippet {
116
- border-left-color: rgba(16, 185, 129, 0.75);
117
- background: rgba(16, 185, 129, 0.12);
218
+ border-color: var(--snippet-border);
219
+ background: var(--snippet-bg);
118
220
  }
119
221
 
120
222
  .bn-snippet::after {
121
- box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.16);
223
+ box-shadow: none;
122
224
  }
123
225
 
124
- .bn-snippet .bn-teststep__toggle {
125
- border-color: rgba(16, 185, 129, 0.45);
126
- background: rgba(16, 185, 129, 0.1);
127
- color: #0f766e;
226
+ .bn-snippet .bn-step-field__label {
227
+ color: var(--color-accent-700);
128
228
  }
129
229
 
130
- .bn-snippet .bn-teststep__toggle:hover {
131
- background: rgba(16, 185, 129, 0.18);
132
- border-color: rgba(16, 185, 129, 0.55);
133
- box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.2);
230
+ .bn-teststep__timeline {
231
+ grid-row: 1 / -1;
232
+ display: flex;
233
+ flex-direction: column;
234
+ align-items: center;
235
+ gap: 10px;
236
+ padding-top: 2px;
134
237
  }
135
238
 
136
- .bn-snippet .bn-step-field__label {
137
- color: #0f766e;
239
+ .bn-teststep__line {
240
+ flex: 1;
241
+ width: 1px;
242
+ background: var(--step-number-bg);
138
243
  }
139
244
 
140
- .bn-snippet .bn-step-toolbar__button {
141
- border-color: rgba(16, 185, 129, 0.35);
142
- color: #0f766e;
245
+ .bn-teststep__content {
246
+ display: flex;
247
+ flex-direction: column;
248
+ gap: var(--step-section-gap);
249
+ padding-bottom: 8px;
250
+ }
251
+
252
+ .bn-teststep__header + .bn-step-field {
253
+ margin-top: calc(8px - var(--step-section-gap));
254
+ }
255
+
256
+ .bn-teststep__header {
257
+ display: flex;
258
+ align-items: center;
259
+ justify-content: space-between;
260
+ gap: 1rem;
261
+ min-height: 28px;
262
+ }
263
+
264
+ .bn-teststep__meta {
265
+ display: flex;
266
+ align-items: center;
267
+ gap: 0.75rem;
268
+ }
269
+
270
+ .bn-teststep__number {
271
+ width: var(--step-number-size);
272
+ height: var(--step-number-size);
273
+ border-radius: 999px;
274
+ background: var(--step-number-bg);
275
+ color: var(--step-number-text);
276
+ font-weight: 500;
277
+ font-size: 14px;
278
+ line-height: 20px;
279
+ display: inline-flex;
280
+ align-items: center;
281
+ justify-content: center;
282
+ flex-shrink: 0;
283
+ }
284
+
285
+ .bn-teststep__title {
286
+ font-size: 14px;
287
+ font-weight: 600;
288
+ line-height: 20px;
289
+ color: var(--step-label-color);
290
+ }
291
+
292
+ .bn-teststep__view-toggle {
293
+ border: none;
294
+ background: transparent;
295
+ width: 28px;
296
+ height: 28px;
297
+ padding: 0;
298
+ border-radius: 8px;
299
+ cursor: pointer;
300
+ display: inline-flex;
301
+ align-items: center;
302
+ justify-content: center;
303
+ opacity: 0;
304
+ transition:
305
+ background-color 120ms ease,
306
+ opacity 120ms ease;
143
307
  }
144
308
 
145
- .bn-snippet .bn-step-toolbar__button:hover {
146
- background: rgba(16, 185, 129, 0.12);
147
- border-color: rgba(16, 185, 129, 0.55);
309
+ .bn-teststep:hover .bn-teststep__view-toggle,
310
+ .bn-teststep__view-toggle:focus-visible {
311
+ opacity: 1;
148
312
  }
149
313
 
150
- .bn-snippet .bn-step-editor {
151
- border-color: rgba(16, 185, 129, 0.25);
314
+ .bn-teststep__view-toggle:hover {
315
+ background: var(--step-bg-button-hover);
152
316
  }
153
317
 
154
- .bn-snippet .bn-step-editor.bn-step-editor--focused {
155
- border-color: rgba(16, 185, 129, 0.7);
156
- box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.2);
318
+ .bn-teststep__view-toggle svg {
319
+ display: block;
320
+ color: #0a0a0a;
321
+ }
322
+
323
+ .bn-teststep__view-toggle--horizontal {
324
+ transform: rotate(90deg);
325
+ }
326
+
327
+ .bn-teststep__horizontal-fields {
328
+ display: flex;
329
+ gap: 16px;
330
+ }
331
+
332
+ .bn-teststep__horizontal-col {
333
+ flex: 1 0 0%;
334
+ min-width: 0;
335
+ display: flex;
336
+ flex-direction: column;
337
+ gap: 4px;
338
+ }
339
+
340
+ @media (max-width: 860px) {
341
+ .bn-teststep__horizontal-fields {
342
+ flex-direction: column;
343
+ }
344
+ }
345
+
346
+ .bn-snippet .bn-step-field__input {
347
+ border-color: var(--snippet-border-light);
348
+ }
349
+
350
+ .bn-snippet .bn-step-field__input--focused {
351
+ border-color: var(--snippet-border-focus);
352
+ box-shadow: 0 0 0 3px var(--snippet-focus-ring);
353
+ }
354
+
355
+ .bn-snippet .bn-step-toolbar__button {
356
+ color: var(--color-accent-700);
157
357
  }
158
358
 
159
359
  .bn-snippet .bn-step-suggestions {
160
- border-color: rgba(16, 185, 129, 0.25);
360
+ border-color: var(--snippet-border-light);
161
361
  }
162
362
 
163
363
  .bn-snippet .bn-step-suggestion:hover,
164
364
  .bn-snippet .bn-step-suggestion--active {
165
- background: rgba(16, 185, 129, 0.1);
365
+ background: var(--snippet-bg-light);
166
366
  }
167
367
 
168
368
  .bn-snippet .bn-step-suggestion__meta {
169
369
  color: rgba(15, 118, 110, 0.65);
170
370
  }
171
371
 
172
- .bn-snippet__empty {
173
- margin: 0;
174
- font-size: 0.9rem;
175
- color: rgba(15, 23, 42, 0.65);
372
+ .bn-snippet {
373
+ display: flex;
374
+ flex-direction: column;
375
+ gap: 12px;
376
+ background: transparent;
377
+ border-color: transparent;
176
378
  }
177
379
 
178
- .bn-step-add {
179
- align-self: flex-start;
180
- margin-top: 0.25rem;
181
- border: none;
182
- background: rgba(37, 99, 235, 0.12);
183
- color: #1d4ed8;
380
+ .bn-snippet__header {
381
+ display: flex;
382
+ align-items: center;
383
+ gap: 20px;
384
+ }
385
+
386
+ .bn-snippet__label {
387
+ font-size: 14px;
184
388
  font-weight: 600;
185
- font-size: 0.85rem;
186
- padding: 0.35rem 0.65rem;
187
- border-radius: 0.5rem;
389
+ line-height: 20px;
390
+ color: var(--step-label-color);
391
+ flex-shrink: 0;
392
+ }
393
+
394
+ .bn-snippet-dropdown {
395
+ position: relative;
396
+ }
397
+
398
+ .bn-snippet-dropdown__trigger {
399
+ display: inline-flex;
400
+ align-items: center;
401
+ gap: 4px;
402
+ height: 28px;
403
+ padding: 0 8px 0 12px;
404
+ background: var(--snippet-dropdown-bg);
405
+ border: 1px solid var(--step-input-border);
406
+ border-radius: 8px;
188
407
  cursor: pointer;
189
- transition:
190
- background-color 120ms ease,
191
- box-shadow 120ms ease;
408
+ font-family: inherit;
409
+ font-size: 14px;
410
+ font-weight: 500;
411
+ line-height: 20px;
412
+ color: var(--step-label-color);
413
+ transition: border-color 120ms ease;
192
414
  }
193
415
 
194
- .bn-step-add:hover {
195
- background: rgba(37, 99, 235, 0.2);
196
- box-shadow: 0 0 0 1px rgba(37, 99, 235, 0.18);
416
+ .bn-snippet-dropdown__trigger:hover {
417
+ border-color: var(--snippet-border-medium);
197
418
  }
198
419
 
199
- .bn-teststep__toggle {
200
- align-self: flex-start;
201
- padding: 0.35rem 0.6rem;
202
- border-radius: 0.5rem;
203
- border: 1px dashed rgba(37, 99, 235, 0.45);
204
- background: rgba(59, 130, 246, 0.1);
205
- color: #1d4ed8;
206
- font-size: 0.75rem;
207
- font-weight: 700;
208
- letter-spacing: 0.06em;
209
- text-transform: uppercase;
420
+ .bn-snippet-dropdown__chevron {
421
+ flex-shrink: 0;
422
+ width: 16px;
423
+ height: 16px;
424
+ color: #737373;
425
+ }
426
+
427
+ .bn-snippet-dropdown__text {
428
+ white-space: nowrap;
429
+ overflow: hidden;
430
+ text-overflow: ellipsis;
431
+ max-width: 200px;
432
+ }
433
+
434
+ /* Dropdown panel */
435
+ .bn-snippet-dropdown__panel {
436
+ position: absolute;
437
+ left: 0;
438
+ top: calc(100% + 4px);
439
+ width: 260px;
440
+ background: white;
441
+ border: 1px solid #e5e5e5;
442
+ border-radius: 8px;
443
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
444
+ z-index: 10;
445
+ display: flex;
446
+ flex-direction: column;
447
+ padding: 8px 0;
448
+ }
449
+
450
+ .bn-snippet-dropdown__search {
451
+ display: flex;
452
+ align-items: center;
453
+ gap: 8px;
454
+ height: 32px;
455
+ padding: 0 12px;
456
+ margin: 0 16px 12px;
457
+ border: 1px solid #d4d4d4;
458
+ border-radius: 6px;
459
+ transition: border-color 120ms ease;
460
+ }
461
+
462
+ .bn-snippet-dropdown__search:focus-within {
463
+ border-color: #6366f1;
464
+ }
465
+
466
+ .bn-snippet-dropdown__search-icon {
467
+ flex-shrink: 0;
468
+ width: 24px;
469
+ height: 24px;
470
+ color: #a4a4a4;
471
+ }
472
+
473
+ .bn-snippet-dropdown__search-input {
474
+ border: none;
475
+ outline: none;
476
+ background: transparent;
477
+ font-family: inherit;
478
+ font-size: 14px;
479
+ font-weight: 500;
480
+ line-height: normal;
481
+ color: var(--text-primary);
482
+ width: 100%;
483
+ padding: 0;
484
+ }
485
+
486
+ .bn-snippet-dropdown__search-input::placeholder {
487
+ color: #a4a4a4;
488
+ }
489
+
490
+ .bn-snippet-dropdown__list {
491
+ max-height: 252px;
492
+ overflow-y: auto;
493
+ border-top: 1px solid #e5e5e5;
494
+ }
495
+
496
+ .bn-snippet-dropdown__item {
497
+ display: flex;
498
+ align-items: center;
499
+ gap: 8px;
500
+ width: 100%;
501
+ height: 36px;
502
+ padding: 8px 16px;
503
+ border: none;
504
+ background: transparent;
505
+ font-family: inherit;
506
+ font-size: 14px;
507
+ font-weight: 400;
508
+ line-height: 20px;
509
+ color: var(--text-primary);
510
+ text-align: left;
210
511
  cursor: pointer;
211
- transition:
212
- background-color 120ms ease,
213
- border-color 120ms ease,
214
- box-shadow 120ms ease;
512
+ white-space: nowrap;
513
+ overflow: hidden;
514
+ text-overflow: ellipsis;
515
+ }
516
+
517
+ .bn-snippet-dropdown__item:hover {
518
+ background: var(--step-bg-light);
519
+ }
520
+
521
+ .bn-snippet-dropdown__empty {
522
+ padding: 8px 16px;
523
+ font-size: 14px;
524
+ color: var(--text-muted);
525
+ }
526
+
527
+ .bn-snippet__content {
528
+ background: var(--snippet-content-bg);
529
+ border: 1px solid var(--snippet-content-border);
530
+ border-radius: 8px;
531
+ padding: 10px 16px;
532
+ min-height: 92px;
533
+ font-size: 14px;
534
+ font-weight: 400;
535
+ line-height: 24px;
536
+ color: var(--text-primary);
537
+ white-space: pre-wrap;
538
+ word-break: break-word;
539
+ }
540
+
541
+ .bn-snippet__empty {
542
+ margin: 0;
543
+ font-size: 0.9rem;
544
+ color: var(--text-muted);
215
545
  }
216
546
 
217
- .bn-teststep__toggle:hover {
218
- background: rgba(59, 130, 246, 0.18);
219
- border-color: rgba(37, 99, 235, 0.55);
220
- box-shadow: 0 0 0 1px rgba(37, 99, 235, 0.2);
547
+ .bn-step-actions {
548
+ display: flex;
549
+ flex-wrap: wrap;
550
+ gap: 0.75rem;
551
+ align-items: center;
552
+ }
553
+
554
+ .bn-step-action-btn {
555
+ border: none;
556
+ background: transparent;
557
+ color: #404040;
558
+ font-weight: 500;
559
+ font-size: 14px;
560
+ line-height: 20px;
561
+ height: 28px;
562
+ padding: 0 12px 0 8px;
563
+ border-radius: 8px;
564
+ cursor: pointer;
565
+ display: inline-flex;
566
+ align-items: center;
567
+ gap: 8px;
568
+ transition: background-color 120ms ease;
569
+ }
570
+
571
+ .bn-step-action-btn:hover {
572
+ background: var(--step-bg-button-hover);
573
+ }
574
+
575
+ .bn-step-action-btn__icon {
576
+ flex-shrink: 0;
221
577
  }
222
578
 
223
579
  .bn-step-field {
224
580
  display: flex;
225
581
  flex-direction: column;
226
- gap: 0.35rem;
582
+ gap: 8px;
227
583
  position: relative;
228
584
  }
229
585
 
586
+ .bn-step-field--collapsed {
587
+ align-items: flex-start;
588
+ }
589
+
230
590
  .bn-step-field__top {
231
591
  display: flex;
232
592
  justify-content: space-between;
@@ -234,31 +594,72 @@
234
594
  gap: 0.5rem;
235
595
  }
236
596
 
597
+ .bn-step-field__label-row {
598
+ display: flex;
599
+ align-items: center;
600
+ gap: 0.35rem;
601
+ }
602
+
237
603
  .bn-step-field__label {
238
604
  display: inline-flex;
239
605
  align-items: center;
240
606
  gap: 0.35rem;
241
- font-size: 0.8rem;
242
- text-transform: uppercase;
243
- letter-spacing: 0.08em;
244
- font-weight: 700;
245
- color: #1d4ed8;
607
+ font-size: 14px;
608
+ font-weight: 600;
609
+ line-height: 20px;
610
+ color: var(--step-label-color);
246
611
  }
247
612
 
248
- .bn-step-toolbar {
249
- display: flex;
613
+ .bn-step-field__label--toggle {
614
+ cursor: pointer;
615
+ display: inline-flex;
616
+ align-items: center;
250
617
  gap: 0.35rem;
618
+ text-decoration-line: underline;
619
+ text-decoration-style: dashed;
620
+ text-underline-offset: 0.2em;
621
+ text-decoration-color: var(--step-muted);
251
622
  }
252
623
 
253
- .bn-step-toolbar__button {
254
- width: 2rem;
255
- height: 2rem;
624
+ .bn-step-field__label--toggle:hover {
625
+ color: var(--step-text);
626
+ }
627
+
628
+ .bn-step-field__label-action {
629
+ display: inline-flex;
630
+ align-items: center;
631
+ }
632
+
633
+ .bn-step-field__dismiss {
634
+ border: none;
635
+ background: transparent;
636
+ color: #737373;
637
+ width: 28px;
638
+ height: 28px;
639
+ display: inline-flex;
640
+ align-items: center;
641
+ justify-content: center;
642
+ border-radius: 8px;
643
+ cursor: pointer;
644
+ padding: 0;
645
+ font-size: 16px;
646
+ line-height: 1;
647
+ }
648
+
649
+ .bn-step-field__dismiss:hover {
650
+ color: var(--step-text);
651
+ background: var(--step-bg-button-hover);
652
+ }
653
+
654
+ .bn-step-suggestions-toggle {
655
+ width: 1.75rem;
656
+ height: 1.75rem;
256
657
  border-radius: 0.4rem;
257
- border: 1px solid rgba(37, 99, 235, 0.35);
258
- background: rgba(255, 255, 255, 0.85);
259
- color: #1d4ed8;
658
+ border: 1px solid var(--step-border-light);
659
+ background: transparent;
660
+ color: var(--step-text);
260
661
  font-weight: 700;
261
- font-size: 0.9rem;
662
+ font-size: 1rem;
262
663
  display: flex;
263
664
  align-items: center;
264
665
  justify-content: center;
@@ -269,21 +670,81 @@
269
670
  box-shadow 120ms ease;
270
671
  }
271
672
 
673
+ .bn-step-suggestions-toggle:hover {
674
+ background: var(--step-bg-button-hover);
675
+ border-color: rgba(15, 23, 42, 0.2);
676
+ }
677
+
678
+ .bn-step-field__input {
679
+ position: relative;
680
+ border: 1px solid var(--step-input-border);
681
+ border-radius: var(--step-input-radius);
682
+ background: transparent;
683
+ display: flex;
684
+ flex-direction: column;
685
+ gap: 0.25rem;
686
+ overflow: visible;
687
+ transition:
688
+ border-color 120ms ease,
689
+ box-shadow 120ms ease,
690
+ outline-color 120ms ease;
691
+ }
692
+
693
+ .bn-step-field__input--multiline {
694
+ min-height: 80px;
695
+ }
696
+
697
+ .bn-step-field__input--focused {
698
+ border-color: var(--step-input-border-focus);
699
+ box-shadow: 0 0 0 1px var(--step-input-border-focus);
700
+ }
701
+
702
+ .bn-step-toolbar {
703
+ display: flex;
704
+ align-items: center;
705
+ gap: 4px;
706
+ padding: 0 16px 4px;
707
+ }
708
+
709
+ .bn-step-toolbar__divider {
710
+ width: 1px;
711
+ align-self: stretch;
712
+ background: #e5e5e5;
713
+ margin: 4px;
714
+ }
715
+
716
+ .bn-step-toolbar__button {
717
+ border: none;
718
+ background: transparent;
719
+ color: #0a0a0a;
720
+ width: 28px;
721
+ height: 28px;
722
+ border-radius: 8px;
723
+ display: inline-flex;
724
+ align-items: center;
725
+ justify-content: center;
726
+ cursor: pointer;
727
+ padding: 0;
728
+ font-weight: 600;
729
+ font-size: 14px;
730
+ }
731
+
272
732
  .bn-step-toolbar__button:hover {
273
- background: rgba(37, 99, 235, 0.12);
274
- border-color: rgba(37, 99, 235, 0.55);
733
+ background: var(--step-bg-button-hover);
275
734
  }
276
735
 
277
736
  .bn-step-editor {
278
737
  position: relative;
279
738
  border-radius: 0.6rem;
280
- border: 1px solid rgba(37, 99, 235, 0.25);
281
- background: rgba(255, 255, 255, 0.92);
282
- transition:
283
- border-color 120ms ease,
284
- box-shadow 120ms ease;
739
+ border: none;
740
+ background: transparent;
741
+ transition: none;
285
742
  min-height: 2.5rem;
286
- font-size: 0.95rem;
743
+ font-family: "Inter", system-ui, -apple-system, sans-serif;
744
+ font-size: 14px;
745
+ font-weight: 400;
746
+ line-height: 20px;
747
+ color: #262626;
287
748
  overflow: hidden;
288
749
  }
289
750
 
@@ -293,8 +754,7 @@
293
754
 
294
755
  .bn-step-editor.bn-step-editor--focused {
295
756
  outline: none;
296
- border-color: rgba(37, 99, 235, 0.7);
297
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);
757
+ box-shadow: none;
298
758
  }
299
759
 
300
760
  .bn-step-editor .overtype-container {
@@ -308,12 +768,123 @@
308
768
 
309
769
  .bn-step-editor .overtype-wrapper .overtype-input,
310
770
  .bn-step-editor .overtype-wrapper .overtype-preview {
311
- padding: 0.5rem 0.75rem !important;
771
+ padding: 10px 12px !important;
312
772
  min-height: inherit !important;
773
+ background: transparent !important;
774
+ font-family: "Inter", system-ui, -apple-system, sans-serif !important;
775
+ font-size: inherit !important;
776
+ font-weight: inherit !important;
777
+ line-height: inherit !important;
778
+ }
779
+
780
+ .bn-step-editor .overtype-wrapper .overtype-input {
781
+ color: transparent !important;
782
+ caret-color: #262626 !important;
783
+ }
784
+
785
+ .bn-step-editor .overtype-wrapper .overtype-input.bn-step-caret-hidden {
786
+ caret-color: transparent !important;
787
+ }
788
+
789
+ .bn-step-editor .overtype-wrapper .overtype-preview {
790
+ color: inherit !important;
791
+ }
792
+
793
+ .bn-step-editor .overtype-wrapper textarea.overtype-input::placeholder {
794
+ color: #a1a1a1 !important;
795
+ font-weight: 400 !important;
796
+ opacity: 1 !important;
797
+ }
798
+
799
+ .bn-step-editor .overtype-wrapper textarea.overtype-input::-webkit-input-placeholder {
800
+ color: #a1a1a1 !important;
801
+ font-weight: 400 !important;
313
802
  }
314
803
 
315
804
  .bn-step-editor .overtype-wrapper .overtype-preview {
316
- color: #0f172a !important;
805
+ color: var(--text-primary) !important;
806
+ }
807
+
808
+ .bn-step-editor .overtype-wrapper .overtype-preview a.step-preview-link {
809
+ color: #4f46e5 !important;
810
+ text-decoration: underline !important;
811
+ pointer-events: none !important;
812
+ }
813
+
814
+ .bn-step-editor .overtype-wrapper .overtype-preview strong.step-preview-bold {
815
+ font-weight: bold !important;
816
+ color: inherit !important;
817
+ }
818
+
819
+ .bn-step-editor .overtype-wrapper .overtype-preview em.step-preview-italic {
820
+ font-style: italic !important;
821
+ color: inherit !important;
822
+ }
823
+
824
+ .bn-step-custom-caret {
825
+ display: none;
826
+ position: absolute;
827
+ width: 1px;
828
+ background: #262626;
829
+ z-index: 2;
830
+ pointer-events: none;
831
+ animation: bn-step-caret-blink 1s step-end infinite;
832
+ }
833
+
834
+ @keyframes bn-step-caret-blink {
835
+ 0%, 100% { opacity: 1; }
836
+ 50% { opacity: 0; }
837
+ }
838
+
839
+ .bn-step-link-tooltip {
840
+ display: flex;
841
+ align-items: center;
842
+ gap: 6px;
843
+ padding: 4px 8px;
844
+ background: #fff;
845
+ border: 1px solid var(--step-input-border, #d4d4d4);
846
+ border-radius: 8px;
847
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
848
+ font-size: 12px;
849
+ position: absolute;
850
+ z-index: 20;
851
+ bottom: calc(100% + 4px);
852
+ left: 0;
853
+ white-space: nowrap;
854
+ }
855
+
856
+ .bn-step-link-tooltip__url {
857
+ color: #6b7280;
858
+ max-width: 200px;
859
+ overflow: hidden;
860
+ text-overflow: ellipsis;
861
+ white-space: nowrap;
862
+ }
863
+
864
+ .bn-step-link-tooltip__btn {
865
+ display: inline-flex;
866
+ align-items: center;
867
+ gap: 4px;
868
+ padding: 2px 6px;
869
+ border: none;
870
+ background: transparent;
871
+ color: #4f46e5;
872
+ font-size: 12px;
873
+ cursor: pointer;
874
+ border-radius: 4px;
875
+ text-decoration: none;
876
+ }
877
+
878
+ .bn-step-link-tooltip__btn:hover {
879
+ background: rgba(79, 70, 229, 0.08);
880
+ }
881
+
882
+ .bn-step-link-tooltip__btn--danger {
883
+ color: #ef4444;
884
+ }
885
+
886
+ .bn-step-link-tooltip__btn--danger:hover {
887
+ background: rgba(239, 68, 68, 0.08);
317
888
  }
318
889
 
319
890
  .bn-step-editor .overtype-wrapper .overtype-preview img {
@@ -332,6 +903,11 @@
332
903
  background-color: rgba(244, 211, 94, 0.4) !important;
333
904
  }
334
905
 
906
+ /* Hide OverType's built-in link tooltip — we use our own */
907
+ .bn-step-editor .overtype-link-tooltip {
908
+ display: none !important;
909
+ }
910
+
335
911
  .bn-step-images {
336
912
  display: flex;
337
913
  flex-wrap: wrap;
@@ -344,9 +920,9 @@
344
920
  width: 4rem;
345
921
  height: 4rem;
346
922
  border-radius: 0.5rem;
347
- border: 1px solid rgba(37, 99, 235, 0.25);
923
+ border: 1px solid var(--step-border-light);
348
924
  overflow: hidden;
349
- background: rgba(15, 23, 42, 0.05);
925
+ background: var(--bg-muted);
350
926
  }
351
927
 
352
928
  .bn-step-image-thumb__button {
@@ -373,8 +949,8 @@
373
949
  border-radius: 999px;
374
950
  width: 1.35rem;
375
951
  height: 1.35rem;
376
- background: rgba(15, 23, 42, 0.75);
377
- color: white;
952
+ background: var(--overlay-dark);
953
+ color: var(--color-white);
378
954
  cursor: pointer;
379
955
  opacity: 0;
380
956
  transition: opacity 120ms ease;
@@ -388,7 +964,7 @@
388
964
  .bn-step-image-preview {
389
965
  position: fixed;
390
966
  inset: 0;
391
- background: rgba(15, 23, 42, 0.75);
967
+ background: var(--overlay-dark);
392
968
  display: flex;
393
969
  align-items: center;
394
970
  justify-content: center;
@@ -400,10 +976,10 @@
400
976
  position: relative;
401
977
  max-width: min(90vw, 800px);
402
978
  width: 100%;
403
- background: white;
979
+ background: var(--color-white);
404
980
  border-radius: 0.75rem;
405
981
  padding: 1rem;
406
- box-shadow: 0 25px 45px rgba(15, 23, 42, 0.35);
982
+ box-shadow: 0 25px 45px var(--shadow-heavy);
407
983
  }
408
984
 
409
985
  .bn-step-image-preview__content img {
@@ -419,7 +995,7 @@
419
995
  right: 0.35rem;
420
996
  border: none;
421
997
  background: rgba(15, 23, 42, 0.65);
422
- color: white;
998
+ color: var(--color-white);
423
999
  border-radius: 999px;
424
1000
  width: 2rem;
425
1001
  height: 2rem;
@@ -432,10 +1008,10 @@
432
1008
  left: 0;
433
1009
  right: 0;
434
1010
  top: calc(100% + 0.25rem);
435
- background: rgba(255, 255, 255, 0.98);
1011
+ background: var(--bg-white-opaque);
436
1012
  border-radius: 0.65rem;
437
- border: 1px solid rgba(37, 99, 235, 0.25);
438
- box-shadow: 0 18px 35px rgba(15, 23, 42, 0.16);
1013
+ border: 1px solid var(--step-border-light);
1014
+ box-shadow: 0 18px 35px var(--shadow-medium);
439
1015
  padding: 0.25rem;
440
1016
  display: flex;
441
1017
  flex-direction: column;
@@ -456,12 +1032,12 @@
456
1032
  justify-content: space-between;
457
1033
  gap: 0.5rem;
458
1034
  cursor: pointer;
459
- color: #0f172a;
1035
+ color: var(--text-primary);
460
1036
  }
461
1037
 
462
1038
  .bn-step-suggestion:hover,
463
1039
  .bn-step-suggestion--active {
464
- background: rgba(59, 130, 246, 0.1);
1040
+ background: var(--step-bg-light);
465
1041
  }
466
1042
 
467
1043
  .bn-step-suggestion__title {
@@ -472,7 +1048,7 @@
472
1048
  .bn-step-suggestion__meta {
473
1049
  font-size: 0.75rem;
474
1050
  font-weight: 600;
475
- color: rgba(15, 23, 42, 0.65);
1051
+ color: var(--step-muted);
476
1052
  }
477
1053
 
478
1054
  .bn-inline-image {
@@ -493,5 +1069,5 @@
493
1069
  }
494
1070
 
495
1071
  .bn-testcase--draft {
496
- --status-color: #94a3b8;
1072
+ --status-color: var(--status-default);
497
1073
  }