@nkzw/codiff-core 1.13.0 → 1.15.0

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/dist/style.css CHANGED
@@ -2807,6 +2807,10 @@ form._multiFieldForm_sre1d_1628 {
2807
2807
  padding-left: 20px;
2808
2808
  }
2809
2809
 
2810
+ .mdx-editor .mdx-editor-content li > ul, .mdx-editor .mdx-editor-content li > ol {
2811
+ margin-block: 0;
2812
+ }
2813
+
2810
2814
  .mdx-editor-content li {
2811
2815
  margin: 0;
2812
2816
  padding-left: 2px;
@@ -5346,6 +5350,17 @@ html[data-codiff-platform="darwin"] .workspace-top-bar {
5346
5350
  overflow: hidden;
5347
5351
  }
5348
5352
 
5353
+ @supports (text-box: trim-both cap alphabetic) {
5354
+ .review-top-bar-repository-head, .review-top-bar-repository-tail {
5355
+ text-box: trim-both cap alphabetic;
5356
+ padding-block: .5em;
5357
+ }
5358
+
5359
+ .review-top-bar-source-label {
5360
+ text-box: trim-both cap alphabetic;
5361
+ }
5362
+ }
5363
+
5349
5364
  .review-top-bar-branch {
5350
5365
  color: var(--muted);
5351
5366
  corner-shape: squircle;
@@ -5431,7 +5446,7 @@ a.review-top-bar-repository:focus-visible, a.review-top-bar-source:focus-visible
5431
5446
  color: var(--muted);
5432
5447
  corner-shape: squircle;
5433
5448
  cursor: pointer;
5434
- font: 600 11px/1 var(--font-sans);
5449
+ font: 600 11px/1.35 var(--font-sans);
5435
5450
  white-space: nowrap;
5436
5451
  background: none;
5437
5452
  border: 0;
@@ -7264,17 +7279,57 @@ html[data-codiff-platform="darwin"] .sidebar {
7264
7279
  box-shadow: inset 0 -1px 0 var(--file-border);
7265
7280
  color: var(--text);
7266
7281
  font: 13px/1.35 var(--font-sans);
7267
- grid-template-columns: minmax(0, 1fr);
7282
+ height: var(--codiff-file-header-height, 54px);
7283
+ grid-template-columns: minmax(0, 1fr) auto;
7268
7284
  grid-auto-columns: max-content;
7269
7285
  grid-auto-flow: column;
7270
7286
  align-items: center;
7271
7287
  gap: 10px;
7272
7288
  min-width: 0;
7273
- height: 54px;
7274
7289
  padding: 9px 10px;
7275
7290
  display: grid;
7276
7291
  }
7277
7292
 
7293
+ .codiff-file-details {
7294
+ align-items: center;
7295
+ gap: 10px;
7296
+ min-width: 0;
7297
+ display: flex;
7298
+ }
7299
+
7300
+ .codiff-edit-revert-button {
7301
+ width: 64px;
7302
+ }
7303
+
7304
+ .compact-file-headers .codiff-file-header:has(.codiff-file-details) {
7305
+ grid-template-rows: minmax(0, 1fr) 30px;
7306
+ grid-template-columns: minmax(0, 1fr);
7307
+ grid-auto-flow: row;
7308
+ gap: 6px;
7309
+ }
7310
+
7311
+ .compact-file-headers .codiff-file-details {
7312
+ scrollbar-width: none;
7313
+ justify-content: safe flex-end;
7314
+ gap: 6px;
7315
+ margin: -4px;
7316
+ padding: 4px;
7317
+ overflow-x: auto;
7318
+ }
7319
+
7320
+ .compact-file-headers .codiff-file-details .codiff-button, .compact-file-headers .codiff-file-details .codiff-viewed-button, .compact-file-headers .codiff-file-details .codiff-load-button {
7321
+ padding-inline: 8px;
7322
+ }
7323
+
7324
+ .compact-file-headers .codiff-copy-path-button, .compact-file-headers .codiff-open-file-button {
7325
+ width: 24px;
7326
+ height: 20px;
7327
+ }
7328
+
7329
+ .compact-file-headers .codiff-file-details > .codiff-line-count, .compact-file-headers .codiff-file-details > .codiff-section-badge, .compact-file-headers .codiff-file-details > .codiff-generated-badge {
7330
+ flex: none;
7331
+ }
7332
+
7278
7333
  .codiff-walkthrough-header-item {
7279
7334
  box-shadow: none !important;
7280
7335
  background: none !important;
@@ -7305,7 +7360,7 @@ html[data-codiff-platform="darwin"] .sidebar {
7305
7360
  color: var(--muted);
7306
7361
  }
7307
7362
 
7308
- .codiff-header-toggle, .codiff-source-description-collapse-button, .codiff-file-comment-button, .codiff-markdown-button, .codiff-button, .codiff-viewed-button, .codiff-copy-path-button {
7363
+ .codiff-header-toggle, .codiff-source-description-collapse-button, .codiff-file-comment-button, .codiff-markdown-button, .codiff-button, .codiff-viewed-button, .codiff-copy-path-button, .codiff-open-file-button {
7309
7364
  -webkit-app-region: no-drag;
7310
7365
  color: var(--text);
7311
7366
  cursor: pointer;
@@ -7317,7 +7372,7 @@ html[data-codiff-platform="darwin"] .sidebar {
7317
7372
  display: inline-flex;
7318
7373
  }
7319
7374
 
7320
- .codiff-copy-path-button {
7375
+ .codiff-copy-path-button, .codiff-open-file-button {
7321
7376
  color: var(--copy-icon);
7322
7377
  corner-shape: squircle;
7323
7378
  opacity: 0;
@@ -7326,14 +7381,14 @@ html[data-codiff-platform="darwin"] .sidebar {
7326
7381
  width: 30px;
7327
7382
  height: 30px;
7328
7383
  padding: 0;
7329
- transition: background .12s, color .12s, opacity .12s;
7384
+ transition: background .16s, box-shadow .25s, color .12s, opacity .12s, transform .25s cubic-bezier(.34, 1.56, .64, 1);
7330
7385
  }
7331
7386
 
7332
- .codiff-file-header:hover .codiff-copy-path-button, .codiff-copy-path-button:focus-visible, .codiff-copy-path-button.copied {
7387
+ .codiff-file-header:hover .codiff-copy-path-button, .codiff-file-header:hover .codiff-open-file-button, .codiff-copy-path-button:focus-visible, .codiff-open-file-button:focus-visible, .codiff-copy-path-button.copied {
7333
7388
  opacity: 1;
7334
7389
  }
7335
7390
 
7336
- .codiff-copy-path-button:hover {
7391
+ .codiff-copy-path-button:hover, .codiff-open-file-button:hover:not(:disabled) {
7337
7392
  color: var(--copy-icon);
7338
7393
  background: #7f7f7f1c;
7339
7394
  }
@@ -7342,6 +7397,14 @@ html[data-codiff-platform="darwin"] .sidebar {
7342
7397
  color: var(--viewed);
7343
7398
  }
7344
7399
 
7400
+ .codiff-open-file-button:disabled {
7401
+ cursor: default;
7402
+ }
7403
+
7404
+ .codiff-open-file-button:disabled svg {
7405
+ opacity: .4;
7406
+ }
7407
+
7345
7408
  .codiff-button.plan-download-button {
7346
7409
  width: 30px;
7347
7410
  height: 30px;
@@ -7360,13 +7423,12 @@ html[data-codiff-platform="darwin"] .sidebar {
7360
7423
 
7361
7424
  .codiff-header-toggle {
7362
7425
  text-align: left;
7363
- grid-template-columns: 30px minmax(0, 1fr) auto;
7426
+ grid-template-columns: 30px minmax(0, 1fr);
7364
7427
  justify-content: stretch;
7365
7428
  gap: 10px;
7366
7429
  min-width: 0;
7367
7430
  padding: 0;
7368
7431
  display: grid;
7369
- overflow: hidden;
7370
7432
  }
7371
7433
 
7372
7434
  .codiff-header-toggle:hover {
@@ -7389,7 +7451,7 @@ html[data-codiff-platform="darwin"] .sidebar {
7389
7451
  display: inline-flex;
7390
7452
  }
7391
7453
 
7392
- .codiff-header-toggle:hover:not(:has(.codiff-copy-path-button:hover)) .codiff-chevron-box, .codiff-source-description-collapse-button:hover .codiff-chevron-box, .codiff-file-comment-button:hover, .codiff-markdown-button:hover, .codiff-button:hover:not(:disabled), .codiff-viewed-button:hover {
7454
+ .codiff-header-toggle:hover:not(:has(.codiff-copy-path-button:hover, .codiff-open-file-button:hover)) .codiff-chevron-box, .codiff-source-description-collapse-button:hover .codiff-chevron-box, .codiff-file-comment-button:hover, .codiff-markdown-button:hover, .codiff-button:hover:is(:not(:disabled), [data-autosaving]), .codiff-viewed-button:hover {
7393
7455
  background: #7f7f7f1c;
7394
7456
  }
7395
7457
 
@@ -7405,7 +7467,6 @@ html[data-codiff-platform="darwin"] .sidebar {
7405
7467
 
7406
7468
  .codiff-file-heading {
7407
7469
  min-width: 0;
7408
- overflow: hidden;
7409
7470
  }
7410
7471
 
7411
7472
  .codiff-file-path-row {
@@ -7432,6 +7493,23 @@ html[data-codiff-platform="darwin"] .sidebar {
7432
7493
  transition: color .16s;
7433
7494
  }
7434
7495
 
7496
+ .codiff-file-path:has(.codiff-file-name) {
7497
+ display: flex;
7498
+ }
7499
+
7500
+ .codiff-file-directory {
7501
+ text-overflow: ellipsis;
7502
+ min-width: 0;
7503
+ overflow: hidden;
7504
+ }
7505
+
7506
+ .codiff-file-name {
7507
+ text-overflow: ellipsis;
7508
+ flex: none;
7509
+ max-width: 100%;
7510
+ overflow: hidden;
7511
+ }
7512
+
7435
7513
  .codiff-file-old-path {
7436
7514
  color: var(--muted);
7437
7515
  font: 11px/1.35 var(--font-mono);
@@ -7481,19 +7559,11 @@ html[data-codiff-platform="darwin"] .sidebar {
7481
7559
  color: var(--diff-deletion);
7482
7560
  }
7483
7561
 
7484
- .codiff-status-badge.added, .codiff-status-badge.untracked, .codiff-section-badge.unstaged {
7562
+ .codiff-section-badge.unstaged {
7485
7563
  color: #1f7a44;
7486
7564
  }
7487
7565
 
7488
- .codiff-status-badge.deleted {
7489
- color: #b8312f;
7490
- }
7491
-
7492
- .codiff-status-badge.conflicted {
7493
- color: var(--danger);
7494
- }
7495
-
7496
- .codiff-status-badge.renamed, .codiff-section-badge.staged {
7566
+ .codiff-section-badge.staged {
7497
7567
  color: #8f5d18;
7498
7568
  }
7499
7569
 
@@ -7525,13 +7595,16 @@ html[data-codiff-platform="darwin"] .sidebar {
7525
7595
  opacity: .72;
7526
7596
  }
7527
7597
 
7598
+ .codiff-button, .codiff-copy-path-button, .codiff-open-file-button {
7599
+ transform: scale(1);
7600
+ box-shadow: inset 0 0 0 1px #fff0, 0 10px 32px -24px #0000, 0 8px 20px -16px #0000;
7601
+ }
7602
+
7528
7603
  .codiff-button {
7529
7604
  white-space: nowrap;
7530
7605
  flex: none;
7531
7606
  gap: 7px;
7532
7607
  transition: background .16s, box-shadow .25s, transform .25s cubic-bezier(.34, 1.56, .64, 1);
7533
- transform: scale(1);
7534
- box-shadow: inset 0 0 0 1px #fff0, 0 10px 32px -24px #0000, 0 8px 20px -16px #0000;
7535
7608
  }
7536
7609
 
7537
7610
  .codiff-button-size-default {
@@ -7582,18 +7655,21 @@ html[data-codiff-platform="darwin"] .sidebar {
7582
7655
  text-decoration: underline;
7583
7656
  }
7584
7657
 
7585
- .codiff-button:hover:not(:disabled) {
7658
+ .codiff-button:hover:is(:not(:disabled), [data-autosaving]), .codiff-copy-path-button:hover:not(:disabled), .codiff-open-file-button:hover:not(:disabled) {
7586
7659
  transform: scale(1.05);
7587
7660
  box-shadow: 0 10px 32px -24px #000000eb, 0 8px 20px -16px #000000d1;
7588
7661
  }
7589
7662
 
7590
- .codiff-button:active:not(:disabled):not(:has(.review-submit-toggle:active)) {
7663
+ .codiff-button:active:not(:disabled):not(:has(.review-submit-toggle:active)), .codiff-copy-path-button:active:not(:disabled), .codiff-open-file-button:active:not(:disabled) {
7591
7664
  transform: scale(.95);
7592
7665
  }
7593
7666
 
7594
7667
  .codiff-button:disabled {
7595
- color: var(--muted);
7596
7668
  cursor: default;
7669
+ }
7670
+
7671
+ .codiff-button:disabled:not([data-autosaving]) {
7672
+ color: var(--muted);
7597
7673
  opacity: .55;
7598
7674
  }
7599
7675
 
@@ -8830,3 +8906,10 @@ diffs-container .review-comment-thread {
8830
8906
  display: none;
8831
8907
  }
8832
8908
  }
8909
+
8910
+ .codiff-code-edit-error {
8911
+ color: var(--danger);
8912
+ background: var(--app-bg);
8913
+ padding: 8px 16px;
8914
+ font-size: 12px;
8915
+ }
package/dist/types.d.ts CHANGED
@@ -245,6 +245,19 @@ export type SaveMarkdownDocumentResult = {
245
245
  document: CodiffMarkdownDocument;
246
246
  status: 'saved';
247
247
  };
248
+ export type RepositoryFileDocument = {
249
+ content: string;
250
+ path: string;
251
+ root: string;
252
+ version: string;
253
+ };
254
+ export type SaveRepositoryFileRequest = Omit<RepositoryFileDocument, 'version'> & {
255
+ baseVersion: string;
256
+ };
257
+ export type SaveRepositoryFileResult = {
258
+ document: RepositoryFileDocument;
259
+ status: 'conflict' | 'saved';
260
+ };
248
261
  export type PlanCommentAuthor = {
249
262
  avatarUrl?: string;
250
263
  email?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nkzw/codiff-core",
3
- "version": "1.13.0",
3
+ "version": "1.15.0",
4
4
  "description": "A fast diff viewer.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -51,16 +51,16 @@
51
51
  }
52
52
  },
53
53
  "dependencies": {
54
- "@nkzw/mdx-editor": "^1.0.1",
54
+ "@nkzw/mdx-editor": "^1.0.3",
55
55
  "@nkzw/use-relative-time": "^1.2.3",
56
56
  "@phosphor-icons/react": "^2.1.10",
57
- "@pierre/diffs": "1.3.6",
57
+ "@pierre/diffs": "1.5.1",
58
58
  "@pierre/trees": "1.0.0-beta.6",
59
59
  "@radix-ui/react-slot": "^1.3.3",
60
60
  "class-variance-authority": "^0.7.1",
61
61
  "ghostty-web": "^0.4.0",
62
- "lucide-react": "^1.39.0",
63
- "valibot": "^1.4.2"
62
+ "lucide-react": "^1.48.0",
63
+ "valibot": "^1.5.0"
64
64
  },
65
65
  "peerDependencies": {
66
66
  "react": "^19.2.0",