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;
224
+ }
225
+
226
+ .bn-snippet .bn-step-field__label {
227
+ color: var(--color-accent-700);
122
228
  }
123
229
 
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;
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;
128
237
  }
129
238
 
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);
239
+ .bn-teststep__line {
240
+ flex: 1;
241
+ width: 1px;
242
+ background: var(--step-number-bg);
134
243
  }
135
244
 
136
- .bn-snippet .bn-step-field__label {
137
- color: #0f766e;
245
+ .bn-teststep__content {
246
+ display: flex;
247
+ flex-direction: column;
248
+ gap: var(--step-section-gap);
249
+ padding-bottom: 8px;
138
250
  }
139
251
 
140
- .bn-snippet .bn-step-toolbar__button {
141
- border-color: rgba(16, 185, 129, 0.35);
142
- color: #0f766e;
252
+ .bn-teststep__header + .bn-step-field {
253
+ margin-top: calc(8px - var(--step-section-gap));
143
254
  }
144
255
 
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);
256
+ .bn-teststep__header {
257
+ display: flex;
258
+ align-items: center;
259
+ justify-content: space-between;
260
+ gap: 1rem;
261
+ min-height: 28px;
148
262
  }
149
263
 
150
- .bn-snippet .bn-step-editor {
151
- border-color: rgba(16, 185, 129, 0.25);
264
+ .bn-teststep__meta {
265
+ display: flex;
266
+ align-items: center;
267
+ gap: 0.75rem;
152
268
  }
153
269
 
154
- .bn-snippet .bn-step-editor:focus-visible {
155
- border-color: rgba(16, 185, 129, 0.7);
156
- box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.2);
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;
307
+ }
308
+
309
+ .bn-teststep:hover .bn-teststep__view-toggle,
310
+ .bn-teststep__view-toggle:focus-visible {
311
+ opacity: 1;
312
+ }
313
+
314
+ .bn-teststep__view-toggle:hover {
315
+ background: var(--step-bg-button-hover);
316
+ }
317
+
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);
215
525
  }
216
526
 
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);
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);
545
+ }
546
+
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,39 +670,337 @@
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 {
737
+ position: relative;
278
738
  border-radius: 0.6rem;
279
- border: 1px solid rgba(37, 99, 235, 0.25);
280
- padding: 0.5rem 0.75rem;
281
- font-size: 0.95rem;
282
- background: rgba(255, 255, 255, 0.92);
283
- transition:
284
- border-color 120ms ease,
285
- box-shadow 120ms ease;
739
+ border: none;
740
+ background: transparent;
741
+ transition: none;
286
742
  min-height: 2.5rem;
287
- white-space: pre-wrap;
288
- word-break: break-word;
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;
748
+ overflow: hidden;
289
749
  }
290
750
 
291
- .bn-step-editor[data-multiline="true"] {
751
+ .bn-step-editor--multiline {
292
752
  min-height: 4rem;
293
753
  }
294
754
 
295
- .bn-step-editor:focus-visible {
755
+ .bn-step-editor.bn-step-editor--focused {
296
756
  outline: none;
297
- border-color: rgba(37, 99, 235, 0.7);
298
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);
757
+ box-shadow: none;
758
+ }
759
+
760
+ .bn-step-editor .overtype-container {
761
+ height: 100%;
762
+ }
763
+
764
+ .bn-step-editor .overtype-wrapper {
765
+ min-height: 100%;
766
+ background: transparent !important;
299
767
  }
300
768
 
301
- .bn-step-editor:empty::before {
302
- content: attr(data-placeholder);
303
- color: rgba(15, 23, 42, 0.45);
769
+ .bn-step-editor .overtype-wrapper .overtype-input,
770
+ .bn-step-editor .overtype-wrapper .overtype-preview {
771
+ padding: 10px 12px !important;
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;
802
+ }
803
+
804
+ .bn-step-editor .overtype-wrapper .overtype-preview {
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;
304
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);
888
+ }
889
+
890
+ .bn-step-editor .overtype-wrapper .overtype-preview img {
891
+ display: block;
892
+ max-width: 100%;
893
+ border-radius: 0.65rem;
894
+ margin: 0.5rem 0;
895
+ pointer-events: none;
896
+ }
897
+
898
+ .bn-step-field:not(:focus-within) .overtype-wrapper .overtype-input::selection {
899
+ background-color: transparent !important;
900
+ }
901
+
902
+ .bn-step-field:focus-within .overtype-wrapper .overtype-input::selection {
903
+ background-color: rgba(244, 211, 94, 0.4) !important;
904
+ }
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
+
911
+ .bn-step-images {
912
+ display: flex;
913
+ flex-wrap: wrap;
914
+ gap: 0.5rem;
915
+ margin-top: 0.35rem;
916
+ }
917
+
918
+ .bn-step-image-thumb {
919
+ position: relative;
920
+ width: 4rem;
921
+ height: 4rem;
922
+ border-radius: 0.5rem;
923
+ border: 1px solid var(--step-border-light);
924
+ overflow: hidden;
925
+ background: var(--bg-muted);
926
+ }
927
+
928
+ .bn-step-image-thumb__button {
929
+ width: 100%;
930
+ height: 100%;
931
+ border: none;
932
+ padding: 0;
933
+ background: transparent;
934
+ cursor: pointer;
935
+ }
936
+
937
+ .bn-step-image-thumb__button img {
938
+ width: 100%;
939
+ height: 100%;
940
+ object-fit: cover;
941
+ display: block;
942
+ }
943
+
944
+ .bn-step-image-thumb__remove {
945
+ position: absolute;
946
+ top: 0.15rem;
947
+ right: 0.15rem;
948
+ border: none;
949
+ border-radius: 999px;
950
+ width: 1.35rem;
951
+ height: 1.35rem;
952
+ background: var(--overlay-dark);
953
+ color: var(--color-white);
954
+ cursor: pointer;
955
+ opacity: 0;
956
+ transition: opacity 120ms ease;
957
+ }
958
+
959
+ .bn-step-image-thumb:hover .bn-step-image-thumb__remove,
960
+ .bn-step-image-thumb__remove:focus-visible {
961
+ opacity: 1;
962
+ }
963
+
964
+ .bn-step-image-preview {
965
+ position: fixed;
966
+ inset: 0;
967
+ background: var(--overlay-dark);
968
+ display: flex;
969
+ align-items: center;
970
+ justify-content: center;
971
+ padding: 1.5rem;
972
+ z-index: 15;
973
+ }
974
+
975
+ .bn-step-image-preview__content {
976
+ position: relative;
977
+ max-width: min(90vw, 800px);
978
+ width: 100%;
979
+ background: var(--color-white);
980
+ border-radius: 0.75rem;
981
+ padding: 1rem;
982
+ box-shadow: 0 25px 45px var(--shadow-heavy);
983
+ }
984
+
985
+ .bn-step-image-preview__content img {
986
+ width: 100%;
987
+ height: auto;
988
+ display: block;
989
+ border-radius: 0.5rem;
990
+ }
991
+
992
+ .bn-step-image-preview__close {
993
+ position: absolute;
994
+ top: 0.35rem;
995
+ right: 0.35rem;
996
+ border: none;
997
+ background: rgba(15, 23, 42, 0.65);
998
+ color: var(--color-white);
999
+ border-radius: 999px;
1000
+ width: 2rem;
1001
+ height: 2rem;
1002
+ cursor: pointer;
1003
+ font-size: 1.1rem;
305
1004
  }
306
1005
 
307
1006
  .bn-step-suggestions {
@@ -309,10 +1008,10 @@
309
1008
  left: 0;
310
1009
  right: 0;
311
1010
  top: calc(100% + 0.25rem);
312
- background: rgba(255, 255, 255, 0.98);
1011
+ background: var(--bg-white-opaque);
313
1012
  border-radius: 0.65rem;
314
- border: 1px solid rgba(37, 99, 235, 0.25);
315
- 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);
316
1015
  padding: 0.25rem;
317
1016
  display: flex;
318
1017
  flex-direction: column;
@@ -333,12 +1032,12 @@
333
1032
  justify-content: space-between;
334
1033
  gap: 0.5rem;
335
1034
  cursor: pointer;
336
- color: #0f172a;
1035
+ color: var(--text-primary);
337
1036
  }
338
1037
 
339
1038
  .bn-step-suggestion:hover,
340
1039
  .bn-step-suggestion--active {
341
- background: rgba(59, 130, 246, 0.1);
1040
+ background: var(--step-bg-light);
342
1041
  }
343
1042
 
344
1043
  .bn-step-suggestion__title {
@@ -349,7 +1048,7 @@
349
1048
  .bn-step-suggestion__meta {
350
1049
  font-size: 0.75rem;
351
1050
  font-weight: 600;
352
- color: rgba(15, 23, 42, 0.65);
1051
+ color: var(--step-muted);
353
1052
  }
354
1053
 
355
1054
  .bn-inline-image {
@@ -370,5 +1069,5 @@
370
1069
  }
371
1070
 
372
1071
  .bn-testcase--draft {
373
- --status-color: #94a3b8;
1072
+ --status-color: var(--status-default);
374
1073
  }