@brett_lamy/docstream 1.7.0 → 1.8.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PathBreadcrumb.js","sourceRoot":"","sources":["../../src/demo/PathBreadcrumb.tsx"],"names":[],"mappings":"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"}
package/dist/styles.css CHANGED
@@ -2064,13 +2064,76 @@
2064
2064
  .docs-demo-files {
2065
2065
  flex-shrink: 0;
2066
2066
  box-sizing: border-box;
2067
- width: 188px;
2067
+ /* --docs-demo-files-w is set (px) once the reader drags the handle; 188px until then. */
2068
+ width: var(--docs-demo-files-w, 188px);
2068
2069
  padding: 8px;
2069
2070
  overflow-y: auto;
2070
2071
  border-right: 1px solid var(--gb-border);
2071
2072
  background: var(--gb-muted);
2072
2073
  }
2073
2074
 
2075
+ /* The drag handle between the file list and the source: zero layout width, with a wider hit area
2076
+ and the same grip as the preview handle straddling the divider. */
2077
+ .docs-demo-files-handle {
2078
+ position: relative;
2079
+ z-index: 2;
2080
+ flex: 0 0 0;
2081
+ width: 0;
2082
+ cursor: col-resize;
2083
+ touch-action: none;
2084
+ }
2085
+
2086
+ .docs-demo-files-handle::before {
2087
+ position: absolute;
2088
+ top: 0;
2089
+ bottom: 0;
2090
+ left: -5px;
2091
+ width: 10px;
2092
+ content: "";
2093
+ }
2094
+
2095
+ .docs-demo-files-handle::after {
2096
+ position: absolute;
2097
+ top: 50%;
2098
+ left: -2.5px;
2099
+ width: 5px;
2100
+ height: 40px;
2101
+ margin-top: -20px;
2102
+ border-radius: 3px;
2103
+ background: var(--gb-stage-dot);
2104
+ content: "";
2105
+ opacity: 0;
2106
+ transition: opacity 150ms ease, background 150ms ease, height 200ms ease, margin 200ms ease;
2107
+ }
2108
+
2109
+ .docs-demo-code:hover .docs-demo-files-handle::after {
2110
+ opacity: 1;
2111
+ }
2112
+
2113
+ .docs-demo-files-handle:hover::after,
2114
+ .docs-demo-files-handle:focus-visible::after,
2115
+ .docs-demo-files-handle[data-dragging]::after {
2116
+ height: 56px;
2117
+ margin-top: -28px;
2118
+ background: var(--gb-primary);
2119
+ opacity: 1;
2120
+ }
2121
+
2122
+ .docs-demo-files-handle:focus-visible {
2123
+ outline: none;
2124
+ }
2125
+
2126
+ .docs-demo-files-handle:focus-visible::before {
2127
+ outline: 2px solid var(--gb-primary);
2128
+ outline-offset: -1px;
2129
+ border-radius: 2px;
2130
+ }
2131
+
2132
+ .docs-demo-code[data-dragging] {
2133
+ cursor: col-resize;
2134
+ user-select: none;
2135
+ }
2136
+
2074
2137
  .docs-demo-files-h {
2075
2138
  padding: 6px 8px 8px;
2076
2139
  color: var(--gb-muted-foreground);
@@ -2143,18 +2206,174 @@
2143
2206
  align-items: center;
2144
2207
  justify-content: space-between;
2145
2208
  gap: 8px;
2146
- padding: 5px 6px 5px 14px;
2209
+ padding: 5px 6px 5px 8px;
2147
2210
  border-bottom: 1px solid var(--gb-border);
2148
2211
  color: var(--gb-muted-foreground);
2149
2212
  font: 12px/1 var(--docs-demo-mono);
2150
2213
  }
2151
2214
 
2152
- .docs-demo-source-path {
2215
+ /* Breadcrumb path: one button per segment. The list is clipped to the header; the fit logic in
2216
+ PathBreadcrumb collapses the middle to a "…" before that matters. */
2217
+ .docs-demo-crumbs {
2218
+ position: relative;
2219
+ flex: 1;
2220
+ min-width: 0;
2221
+ overflow: hidden;
2222
+ }
2223
+
2224
+ .docs-demo-crumbs > .docs-demo-crumbs-list {
2225
+ display: flex;
2226
+ align-items: center;
2227
+ margin: 0;
2228
+ padding: 0;
2229
+ list-style: none;
2230
+ white-space: nowrap;
2231
+ }
2232
+
2233
+ .docs-demo-crumbs > .docs-demo-crumbs-measure {
2234
+ position: absolute;
2235
+ top: 0;
2236
+ left: 0;
2237
+ height: 0;
2238
+ visibility: hidden;
2239
+ pointer-events: none;
2240
+ }
2241
+
2242
+ .docs-demo-crumbs-list > .docs-demo-crumb-item {
2243
+ display: flex;
2244
+ flex: 0 0 auto;
2245
+ align-items: center;
2246
+ min-width: 0;
2247
+ margin: 0;
2248
+ padding: 0;
2249
+ }
2250
+
2251
+ .docs-demo-crumbs-list > .docs-demo-crumb-item[data-last] {
2252
+ flex: 0 1 auto;
2253
+ }
2254
+
2255
+ .docs-demo-crumb-sep {
2256
+ flex-shrink: 0;
2257
+ color: var(--gb-muted-foreground);
2258
+ opacity: 0.7;
2259
+ }
2260
+
2261
+ .docs-demo-crumb {
2262
+ display: inline-flex;
2263
+ align-items: center;
2264
+ gap: 5px;
2265
+ min-width: 0;
2266
+ box-sizing: border-box;
2267
+ height: 24px;
2268
+ padding: 0 6px;
2269
+ border: 0;
2270
+ border-radius: 6px;
2271
+ background: none;
2272
+ color: var(--gb-muted-foreground);
2273
+ font: inherit;
2274
+ cursor: pointer;
2275
+ transition: background 150ms ease, color 150ms ease;
2276
+ }
2277
+
2278
+ .docs-demo-crumb svg {
2279
+ flex-shrink: 0;
2280
+ }
2281
+
2282
+ .docs-demo-crumb-text {
2153
2283
  overflow: hidden;
2154
2284
  text-overflow: ellipsis;
2155
2285
  white-space: nowrap;
2156
2286
  }
2157
2287
 
2288
+ .docs-demo-crumb:hover,
2289
+ .docs-demo-crumb[aria-expanded="true"] {
2290
+ background: var(--gb-hover);
2291
+ color: var(--gb-panel-foreground);
2292
+ }
2293
+
2294
+ .docs-demo-crumb[data-current] {
2295
+ color: var(--gb-panel-foreground);
2296
+ font-weight: 600;
2297
+ }
2298
+
2299
+ .docs-demo-crumb[data-current] svg {
2300
+ color: var(--gb-primary);
2301
+ }
2302
+
2303
+ .docs-demo-crumb:focus-visible {
2304
+ outline: 2px solid var(--gb-primary);
2305
+ outline-offset: -2px;
2306
+ }
2307
+
2308
+ /* The sibling / hidden-segment menu. Portalled next to the docs root (so it isn't clipped by the
2309
+ viewer) and fixed under its trigger; --crumb-x / --crumb-y are set from the trigger's rect. */
2310
+ .docs-demo-crumb-menu {
2311
+ position: fixed;
2312
+ top: var(--crumb-y, 0);
2313
+ left: var(--crumb-x, 0);
2314
+ z-index: 60;
2315
+ box-sizing: border-box;
2316
+ min-width: 160px;
2317
+ max-width: min(320px, calc(100vw - 16px));
2318
+ max-height: min(320px, calc(100vh - 16px));
2319
+ padding: 4px;
2320
+ overflow-y: auto;
2321
+ border: 1px solid var(--gb-border);
2322
+ border-radius: 10px;
2323
+ background: var(--gb-panel);
2324
+ box-shadow: var(--gb-menu-shadow);
2325
+ color: var(--gb-panel-foreground);
2326
+ font: 12.5px/1.3 var(--docs-demo-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
2327
+ }
2328
+
2329
+ .docs-demo-crumb-option {
2330
+ display: flex;
2331
+ align-items: center;
2332
+ gap: 7px;
2333
+ box-sizing: border-box;
2334
+ width: 100%;
2335
+ padding: 6px 8px;
2336
+ border: 0;
2337
+ border-radius: 6px;
2338
+ background: none;
2339
+ color: inherit;
2340
+ font: inherit;
2341
+ text-align: left;
2342
+ cursor: pointer;
2343
+ }
2344
+
2345
+ .docs-demo-crumb-option svg {
2346
+ flex-shrink: 0;
2347
+ color: var(--gb-muted-foreground);
2348
+ }
2349
+
2350
+ .docs-demo-crumb-option:hover,
2351
+ .docs-demo-crumb-option:focus-visible {
2352
+ outline: none;
2353
+ background: var(--gb-hover);
2354
+ }
2355
+
2356
+ .docs-demo-crumb-option[data-current] {
2357
+ color: var(--gb-primary);
2358
+ font-weight: 600;
2359
+ }
2360
+
2361
+ .docs-demo-crumb-option[data-current] svg {
2362
+ color: var(--gb-primary);
2363
+ }
2364
+
2365
+ .docs-demo-crumb-option-text {
2366
+ flex: 1;
2367
+ min-width: 0;
2368
+ overflow: hidden;
2369
+ text-overflow: ellipsis;
2370
+ white-space: nowrap;
2371
+ }
2372
+
2373
+ .docs-demo-crumb-option .docs-demo-crumb-check {
2374
+ margin-left: auto;
2375
+ }
2376
+
2158
2377
  .docs-demo-source-body {
2159
2378
  flex: 1;
2160
2379
  min-height: 0;
@@ -2195,7 +2414,8 @@
2195
2414
  }
2196
2415
 
2197
2416
  .docs-demo-files-h,
2198
- .docs-demo-dir {
2417
+ .docs-demo-dir,
2418
+ .docs-demo-files-handle {
2199
2419
  display: none;
2200
2420
  }
2201
2421
 
@@ -2338,6 +2558,8 @@
2338
2558
  }
2339
2559
 
2340
2560
  .docs-demo-handle::after,
2561
+ .docs-demo-files-handle::after,
2562
+ .docs-demo-crumb,
2341
2563
  .docs-page-actions-more svg {
2342
2564
  transition: none;
2343
2565
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brett_lamy/docstream",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "GitBook-aware readonly markdown and AI stream renderer.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -38,6 +38,7 @@ import { PillTabs, Segmented, rovingKeyDown } from "../docs/controls"
38
38
  import { useDemoResolver, useDemoRuntime } from "./context"
39
39
  import { createDocstreamClipboard, type DemoSourceSnapshot, type DocstreamClipboard } from "./clipboard"
40
40
  import { CopyDemoButton } from "./copy-demo"
41
+ import { PathBreadcrumb } from "./PathBreadcrumb"
41
42
  import { languageForPath } from "./glob"
42
43
  import { useDemoVFSContext, useDemoVFSEntry, type DemoVFS } from "./vfs"
43
44
  import { cssToSurface, surfaceStyle, surfaceToCss } from "./surface"
@@ -455,6 +456,22 @@ function fileTree(files: DemoFile[]): TreeRow[] {
455
456
  return rows
456
457
  }
457
458
 
459
+ export const FILES_DEFAULT_WIDTH = 188
460
+ export const FILES_MIN_WIDTH = 140
461
+ /** The file list never takes more than this share of the viewer, so the source pane can't collapse. */
462
+ export const FILES_MAX_SHARE = 0.6
463
+
464
+ /** The widest the file list may be inside a viewer `container` px wide (never below the minimum). */
465
+ export function filesMaxWidth(container: number): number {
466
+ return Math.max(FILES_MIN_WIDTH, Math.floor(container * FILES_MAX_SHARE))
467
+ }
468
+
469
+ /** Clamp a file list width to [min, 60% of the viewer]. An unmeasured viewer (0) only enforces the minimum. */
470
+ export function clampFilesWidth(width: number, container: number): number {
471
+ const max = container > 0 ? filesMaxWidth(container) : Infinity
472
+ return Math.round(Math.min(max, Math.max(FILES_MIN_WIDTH, width)))
473
+ }
474
+
458
475
  function CodeView({ src, files, height, id }: { src: string; files: DemoFile[]; height: string; id: string }) {
459
476
  const [active, setActive] = useState(files[0]?.path ?? "")
460
477
  useEffect(() => {
@@ -465,8 +482,67 @@ function CodeView({ src, files, height, id }: { src: string; files: DemoFile[];
465
482
  const paths = files.map((f) => f.path)
466
483
  const tabId = (path: string) => `${id}-file-${paths.indexOf(path)}`
467
484
  const panelId = `${id}-source`
485
+
486
+ // The file list width is the user's choice (null: the default). It lives here, so it survives file switches.
487
+ const code = useRef<HTMLDivElement | null>(null)
488
+ const [chosen, setChosen] = useState<number | null>(null)
489
+ const [container, setContainer] = useState(0)
490
+ const [dragging, setDragging] = useState(false)
491
+ useEffect(() => {
492
+ const el = code.current
493
+ if (!el || typeof ResizeObserver === "undefined") return
494
+ const observer = new ResizeObserver(() => setContainer(Math.round(el.getBoundingClientRect().width)))
495
+ observer.observe(el)
496
+ return () => observer.disconnect()
497
+ }, [])
498
+ const width = clampFilesWidth(chosen ?? FILES_DEFAULT_WIDTH, container)
499
+ const max = container > 0 ? filesMaxWidth(container) : undefined
500
+
501
+ const startDrag = (event: ReactPointerEvent<HTMLDivElement>) => {
502
+ const el = code.current
503
+ if (!el || event.button !== 0) return
504
+ event.preventDefault()
505
+ const handle = event.currentTarget
506
+ const pointer = event.pointerId
507
+ try {
508
+ handle.setPointerCapture(pointer)
509
+ } catch {
510
+ /* not capturable (synthetic event): the window listeners still follow the drag */
511
+ }
512
+ const left = el.getBoundingClientRect().left
513
+ setDragging(true)
514
+ const move = (ev: PointerEvent) => setChosen(clampFilesWidth(ev.clientX - left, el.getBoundingClientRect().width))
515
+ const up = () => {
516
+ setDragging(false)
517
+ if (handle.hasPointerCapture?.(pointer)) handle.releasePointerCapture(pointer)
518
+ window.removeEventListener("pointermove", move)
519
+ window.removeEventListener("pointerup", up)
520
+ window.removeEventListener("pointercancel", up)
521
+ }
522
+ window.addEventListener("pointermove", move)
523
+ window.addEventListener("pointerup", up)
524
+ window.addEventListener("pointercancel", up)
525
+ }
526
+
527
+ const onResizeKey = (event: ReactKeyboardEvent<HTMLDivElement>) => {
528
+ const step = event.shiftKey ? 50 : 10
529
+ let next: number | undefined
530
+ if (event.key === "ArrowLeft") next = width - step
531
+ else if (event.key === "ArrowRight") next = width + step
532
+ else if (event.key === "Home") next = FILES_MIN_WIDTH
533
+ else if (event.key === "End") next = max ?? width
534
+ if (next === undefined) return
535
+ event.preventDefault()
536
+ setChosen(clampFilesWidth(next, container))
537
+ }
538
+
468
539
  return (
469
- <div className="docs-demo-code" style={{ height }}>
540
+ <div
541
+ ref={code}
542
+ className="docs-demo-code"
543
+ style={{ height, ...(chosen === null ? null : { "--docs-demo-files-w": `${width}px` }) } as CSSProperties}
544
+ data-dragging={dragging || undefined}
545
+ >
470
546
  <div
471
547
  className="docs-demo-files"
472
548
  role="tablist"
@@ -502,9 +578,25 @@ function CodeView({ src, files, height, id }: { src: string; files: DemoFile[];
502
578
  ),
503
579
  )}
504
580
  </div>
581
+ <div
582
+ className="docs-demo-files-handle"
583
+ role="separator"
584
+ tabIndex={0}
585
+ aria-orientation="vertical"
586
+ aria-label="Resize file list"
587
+ aria-controls={panelId}
588
+ aria-valuemin={FILES_MIN_WIDTH}
589
+ aria-valuemax={max}
590
+ aria-valuenow={width}
591
+ aria-valuetext={`${width} pixels wide`}
592
+ data-dragging={dragging || undefined}
593
+ onPointerDown={startDrag}
594
+ onKeyDown={onResizeKey}
595
+ onDoubleClick={() => setChosen(null)}
596
+ />
505
597
  <div className="docs-demo-source" role="tabpanel" id={panelId} aria-labelledby={file ? tabId(file.path) : undefined}>
506
598
  <div className="docs-demo-source-h">
507
- <span className="docs-demo-source-path">{src && file ? `${src}/${file.path}` : file?.path}</span>
599
+ {file ? <PathBreadcrumb src={src} path={file.path} paths={paths} onSelect={setActive} /> : <span className="docs-demo-crumbs" />}
508
600
  {file ? <CopyButton text={file.content} label={`Copy ${file.path}`} /> : null}
509
601
  </div>
510
602
  <div className="docs-demo-source-body" tabIndex={0} aria-label={file ? `${file.path} source` : undefined}>