@peasant-labs/fairtrade 0.0.36 → 0.0.38
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/lib/{ChartLine-Cycmpjep.js → ChartLine-MZVbpUu1.js} +1 -1
- package/dist/lib/analytics.css +1 -1
- package/dist/lib/analytics.js +191 -191
- package/dist/lib/commons.js +175 -186
- package/dist/lib/components.css +1 -1
- package/dist/lib/graph.css +1 -1
- package/dist/lib/graph.js +94 -85
- package/dist/lib/tokens.css +1 -0
- package/dist/lib/tokens.json +4 -0
- package/dist/lib/types/AppSidebar.d.ts +43 -16
- package/dist/lib/types/CliOnboard.d.ts +7 -1
- package/dist/lib/types/Publish.d.ts +20 -3
- package/dist/lib/types/Settings.d.ts +4 -1
- package/dist/lib/types/StepsWaterfall.d.ts +1 -1
- package/dist/lib/types/graph/ChangeDetail.d.ts +3 -1
- package/dist/lib/types/graph/Changes.d.ts +3 -1
- package/dist/lib/types/transcript/adapter.d.ts +7 -0
- package/dist/lib/types/transcript/index.d.ts +2 -2
- package/dist/lib/types/transcript/time.d.ts +29 -4
- package/dist/lib/{ui-CfdUlwCE.js → ui-DIoBcgLp.js} +1869 -1752
- package/dist/lib/ui.js +3 -3
- package/package.json +5 -3
package/dist/lib/graph.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer graph{.gmp-root{background:var(--canvas);min-width:0;height:100%;min-height:0;font-family:var(--font-body);--gmp-map-pad-x:max(var(--sp-4), calc((100% - 1360px) / 2));flex-direction:column;display:flex}.gmp-map-canvas-region{border:var(--bd);background:var(--canvas);height:100%;min-height:0;position:relative}.gmp-map-legend{align-items:center;gap:var(--sp-4);row-gap:var(--sp-1);margin-top:var(--sp-2);flex-wrap:wrap;display:flex}.gmp-map-swatch{width:10px;height:10px;margin-right:var(--sp-1);vertical-align:middle;border:1px solid var(--rule-strong);background:var(--surface-2);display:inline-block}.gmp-map-swatch--empty{border-color:var(--ink-5);background:var(--surface)}.gmp-map-swatch--edge{border:0;border-top:1px solid var(--rule-strong);background:0 0;width:16px;height:0;margin-top:-1px}.gmp-map-legend-danger{color:var(--danger)}.gmp-navigator{background:var(--canvas);min-height:100%;color:var(--ink);flex-direction:column;display:flex}.gmp-sr{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gmp-navigator-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-4);border-bottom:var(--bd);background:var(--surface-2);display:flex}.gmp-navigator-search{min-width:min(100%, var(--rail-w));height:var(--control-h);border:var(--bd-strong);background:var(--surface);align-items:center;display:flex}.gmp-navigator-search:focus-within{border-color:var(--amber-dim);box-shadow:inset 0 0 0 var(--focus-ring-width) var(--focus-ring)}.gmp-navigator-search>.lucide{width:var(--ic-sm);height:var(--ic-sm);margin-inline:var(--sp-2);color:var(--ink-3)}.gmp-navigator-search input{min-width:0;height:100%;padding:0 var(--sp-2) 0 0;color:var(--ink);font-family:var(--font-mono);font-size:var(--fs-label);background:0 0;border:0;outline:0;flex:1}.gmp-navigator-search input::placeholder{color:var(--ink-4);text-transform:lowercase}.gmp-navigator-body{grid-template-columns:minmax(0, 1fr) var(--rail-w);min-height:0;display:grid}.gmp-navigator-tree{min-height:calc(var(--control-h) * 8);padding:var(--sp-3) 0;border-right:var(--bd)}.gmp-navigator-row-wrap{grid-template-columns:var(--control-h-sm) minmax(0, 1fr);align-items:center;gap:var(--sp-2);min-height:var(--control-h);padding:var(--sp-2) var(--sp-4) var(--sp-2) calc(var(--sp-4) + var(--gmp-tree-depth) * var(--sp-5));border-left:var(--stroke-emphasis) solid transparent;display:grid}.gmp-navigator-row-wrap:hover{background:var(--surface-hover)}.gmp-navigator-row-wrap:has(.gmp-navigator-row:focus-visible){box-shadow:inset 0 0 0 var(--focus-ring-width) var(--focus-ring)}.gmp-navigator-row-wrap[data-selected=true]{border-left-color:var(--amber);background:var(--surface-2)}.gmp-navigator-row{grid-template-columns:var(--ic-sm) minmax(0, 1fr) auto;align-items:center;gap:var(--sp-2);cursor:pointer;outline:0;min-width:0;display:grid}.gmp-navigator-row>.lucide{width:var(--ic-sm);height:var(--ic-sm);color:var(--ink-3)}.gmp-navigator-disclosure,.gmp-navigator-disclosure-placeholder{width:var(--control-h-sm);height:var(--control-h-sm)}.gmp-navigator-disclosure{color:var(--ink-3);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.gmp-navigator-disclosure:hover{background:var(--surface-hover);color:var(--ink)}.gmp-navigator-disclosure:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.gmp-navigator-disclosure[aria-disabled=true]{cursor:default;opacity:.6}.gmp-navigator-chevron{visibility:hidden}@media (prefers-reduced-motion:no-preference){.gmp-navigator-chevron{transition:transform var(--dur-1) var(--ease-standard)}}.gmp-navigator-disclosure[aria-expanded] .gmp-navigator-chevron{visibility:visible}.gmp-navigator-disclosure[aria-expanded=true] .gmp-navigator-chevron{transform:rotate(90deg)}.gmp-navigator-path{white-space:normal;overflow-wrap:anywhere;min-width:0;font-size:var(--fs-sm);line-height:var(--lh-mono);color:var(--ink)}.gmp-navigator-meta{gap:var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-label);font-variant-numeric:tabular-nums;color:var(--ink-4);display:flex}.gmp-navigator-actions{padding:var(--sp-4);background:var(--surface)}.gmp-navigator-selected{color:var(--ink-strong);overflow-wrap:anywhere;margin:0;font-weight:600}.gmp-navigator-selected-path{margin:var(--sp-1) 0 var(--sp-4);color:var(--ink-4);font-family:var(--font-mono);font-size:var(--fs-label);overflow-wrap:anywhere}.gmp-navigator-action{align-items:center;gap:var(--sp-2);width:100%;min-height:var(--control-h);padding:var(--sp-2) var(--sp-3);border:var(--bd-strong);color:var(--ink-2);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;cursor:pointer;background:0 0;display:flex}.gmp-navigator-action+.gmp-navigator-action{margin-top:var(--sp-2)}.gmp-navigator-action:hover{background:var(--surface-hover);color:var(--ink)}.gmp-navigator-action:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.gmp-navigator-action>.lucide{width:var(--ic-sm);height:var(--ic-sm)}.gmp-navigator-action--primary{border-color:var(--amber-dim);color:var(--amber)}.gmp-navigator-empty{padding:var(--sp-4);color:var(--ink-4);font-size:var(--fs-sm);line-height:var(--lh-body);margin:0}.gmp-navigator-missing{padding:var(--sp-3) var(--sp-4);border-bottom:var(--bd);color:var(--clay);font-size:var(--fs-sm);margin:0}.gmp-navigator-missing button{color:var(--ink);cursor:pointer;background:0 0;border:0;text-decoration:underline}@media (width<768px){.gmp-navigator-head{flex-direction:column}.gmp-navigator-search{width:100%}.gmp-navigator-body{grid-template-columns:1fr}.gmp-navigator-tree{border-right:0;border-bottom:var(--bd)}.gmp-navigator-row{grid-template-columns:var(--ic-sm) minmax(0, 1fr)}.gmp-navigator-meta{gap:var(--sp-2);flex-wrap:wrap;grid-column:2}}@media (prefers-reduced-motion:reduce){.gmp-navigator-chevron{transition:none}}.gmp-toolbar-spacer{flex:1}.gmp-rank-toolbar{align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-bottom:var(--bd);flex-wrap:wrap;display:flex}.gmp-scent-filter{gap:var(--sp-1);flex-wrap:wrap;display:inline-flex}.gmp-rank-overflow{min-height:var(--target-min);padding:var(--sp-2) var(--sp-3);border:0;border-top:var(--bd);background:var(--surface);color:var(--ink-3);font-family:var(--font-mono);font-size:var(--fs-label);text-align:left;cursor:pointer;margin:0}.gmp-rank-overflow:hover{background:var(--surface-hover);color:var(--ink-2)}.gmp-presentation-switch{min-height:var(--control-h-sm);border:var(--bd-strong);display:inline-flex}.gmp-presentation-switch button{min-height:var(--target-min);padding:0 var(--sp-3);border:0;border-left:var(--bd);color:var(--ink-3);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;cursor:pointer;background:0 0}.gmp-presentation-switch button:first-child{border-left:0}.gmp-presentation-switch button:hover{background:var(--surface-hover);color:var(--ink)}.gmp-presentation-switch button[aria-pressed=true]{box-shadow:inset var(--stroke-emphasis) 0 0 var(--amber-dim);background:var(--surface-2);color:var(--ink-strong)}.gmp-presentation-switch button:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset-inset)}@media (width<768px){.gmp-toolbar-spacer{display:none}}.gmp-rail-inner{border:0}.gmp-rail-pad{padding:var(--sp-3) var(--sp-4)}.gmp-root .rs-sec:has(.gmp-rail-inner){padding:0!important}.gmp-root .rs-sec-body:has(>.gmp-rail-inner){padding:0!important}.gmp-root .rs-sec-body>.gmp-rail-inner>.sb-sec:last-child{border-bottom:0}.gmp-coverage{gap:var(--sp-2);flex-direction:column;display:flex}.gmp-coverage-top{justify-content:space-between;align-items:baseline;gap:var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-2);display:flex}.gmp-coverage-top>.label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gmp-coverage-pct{white-space:nowrap;color:var(--ink-strong);flex:none;font-weight:600}.gmp-coverage-bar{background:var(--surface-2);border:1px solid var(--rule);height:6px}.gmp-coverage-bar>span{background:var(--amber-dim);height:100%;display:block}.gmp-coverage-sub{font-size:var(--fs-label);color:var(--ink-4)}.gmp-tasklist,.gmp-convos,.gmp-coupling{padding:var(--sp-1) 0;margin:0;list-style:none}.gmp-task-row{align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-4);border:0;border-left:var(--stroke-emphasis) solid transparent;text-align:left;cursor:pointer;min-height:var(--target-min);background:0 0;grid-template-columns:auto minmax(0,1fr) auto;display:grid}.gmp-task-row:hover,.gmp-task-row:focus-visible{background:var(--surface-hover);border-left-color:var(--amber);outline:none}.gmp-task-row:focus-visible{box-shadow:inset 0 0 0 var(--focus-ring-width) var(--focus-ring)}.gmp-task-title{font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink);overflow-wrap:anywhere}.gmp-task-when{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-4);white-space:nowrap}.gmp-outcome{white-space:nowrap;flex:none}.gmp-rail-filter{margin:0}.gmp-rail-filter .input{height:var(--control-h-sm)}.gmp-showall{align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-4);border:0;border-top:var(--bd);color:var(--amber);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;text-align:left;cursor:pointer;background:0 0;display:flex}.gmp-showall:hover{background:var(--surface-hover);color:var(--amber-bright)}.gmp-rail-node-head{padding:var(--sp-3) var(--sp-4)}.gmp-rail-close{width:var(--control-h-sm);height:var(--control-h-sm);border:var(--bd-strong);color:var(--ink-3);cursor:pointer;background:0 0;justify-content:center;align-items:center;display:inline-flex}.gmp-rail-close:hover{color:var(--ink);border-color:var(--amber-dim)}.gmp-rail-name{margin-top:var(--sp-2);font-size:var(--fs-sm);color:var(--ink-strong);word-break:break-all}.gmp-rail-meta{gap:var(--sp-3);margin-top:var(--sp-2);flex-wrap:wrap;display:flex}.gmp-connects{gap:var(--sp-3);flex-direction:column;display:flex}.gmp-connect-grp{gap:var(--sp-2);flex-direction:column;display:flex}.gmp-connect-chips{gap:var(--sp-2)}.gmp-connect-chip{cursor:pointer;max-width:100%}.gmp-connect-chip:hover{border-color:var(--amber-dim);color:var(--ink)}.gmp-connect-chip .mono{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gmp-convo-task{border-bottom:var(--bd)}.gmp-convo-task:last-child{border-bottom:0}.gmp-convo-task-btn{width:100%;padding:var(--sp-3) var(--sp-4);text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;gap:3px;display:flex}.gmp-convo-task-btn:hover{background:var(--surface-hover)}.gmp-convo-task-btn:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset-inset)}.gmp-convo-task-top{align-items:center;gap:var(--sp-2);display:flex}.gmp-convo-task-title{font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink);overflow-wrap:anywhere}.gmp-retry{color:var(--amber);flex:none;align-items:center;margin-left:auto;display:inline-flex}.gmp-retry .lucide{width:var(--ic-sm);height:var(--ic-sm)}.gmp-convo-task-sub{font-size:var(--fs-label);color:var(--ink-4);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gmp-convo-commit{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:var(--surface-2);border-bottom:var(--bd);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-3);display:flex}.gmp-convo-commit .lucide{color:var(--ink-4);width:var(--ic-sm);height:var(--ic-sm);flex:none}.gmp-commit-hash{color:var(--ink-2);flex:none}.gmp-commit-msg{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gmp-label-chips{gap:var(--sp-1);flex-wrap:wrap;display:flex}.gmp-coupling-row{align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-4);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.gmp-coupling-row:hover{background:var(--surface-hover)}.gmp-coupling-row:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset-inset)}.gmp-coupling-row .lucide{color:var(--ink-5);flex:none}.gmp-coupling-id{font-size:var(--fs-label);color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gmp-coupling-shared{font-size:var(--fs-label);color:var(--ink-4);white-space:nowrap;flex:none;margin-left:auto}.gmp-effort{gap:var(--sp-2);flex-direction:column;display:flex}.gmp-effort-row{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.gmp-effort-row b{color:var(--ink);font-weight:600}.gmp-effort-spend b{color:var(--amber)}.gmp-contribute{align-items:center;gap:var(--sp-2);width:100%;margin-top:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:0;border-top:var(--bd);color:var(--amber);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;text-align:left;cursor:pointer;background:0 0;display:flex}.gmp-contribute:hover{background:var(--surface-hover);color:var(--amber-bright)}.gmp-contribute .lucide:last-child{margin-left:auto}.gmp-session-destination-title{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:700;line-height:var(--lh-body);color:var(--ink-strong);overflow-wrap:anywhere;margin:0}.gmp-session-destination-context{margin:var(--sp-2) 0 var(--sp-4);color:var(--ink-3);font-size:var(--fs-sm)}.gmp-session-destination-summary{border:var(--bd);background:var(--surface-2);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.gmp-session-destination-summary>div{gap:var(--sp-3);min-height:var(--control-h);padding:var(--sp-3) var(--sp-4);border-bottom:var(--bd);grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:baseline;display:grid}.gmp-session-destination-summary>div:nth-last-child(-n+2){border-bottom:0}.gmp-session-destination-summary>div:nth-child(odd){border-right:var(--bd)}.gmp-session-destination-summary dt{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-4)}.gmp-session-destination-summary dd{overflow-wrap:anywhere;min-width:0;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-2);margin:0}@media (width<768px){.gmp-session-destination-summary{grid-template-columns:minmax(0,1fr)}.gmp-session-destination-summary>div{border-right:0}.gmp-session-destination-summary>div:nth-last-child(-n+2){border-bottom:var(--bd)}.gmp-session-destination-summary>div:last-child{border-bottom:0}}.gmp-changes-root{--gmp-pad-x:max(var(--sp-4), calc((100% - 1360px) / 2));max-width:none;margin-inline:0;overflow:auto}.gmp-changes-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-4) var(--gmp-pad-x);border-bottom:var(--bd);background:var(--surface);flex:none;display:flex}.gmp-changes-sub{font-size:var(--fs-label);color:var(--ink-4);margin-top:var(--sp-1)}.gmp-changes-body{padding:var(--sp-4) var(--gmp-pad-x);min-width:0}.gmp-unlinked-sessions{margin-top:var(--sp-5);border-top:var(--bd);padding-top:var(--sp-4)}.gmp-unlinked-sessions-head{padding:0 0 var(--sp-2);border:0}.gmp-unlinked-sessions-list{gap:var(--sp-2);flex-wrap:wrap;display:flex}.gmp-unlinked-session{min-height:var(--sp-6);align-items:center;gap:var(--sp-2);max-width:100%;padding:var(--sp-1) var(--sp-2);border:var(--bd);background:var(--surface-2);color:var(--ink-2);font-family:var(--font-mono);font-size:var(--fs-label);text-align:left;cursor:pointer;display:inline-flex}.gmp-unlinked-session:hover{background:var(--surface-hover)}.gmp-unlinked-session:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.gmp-merged-chip{align-items:center;gap:var(--sp-2);padding:3px var(--sp-3);background:var(--surface-2);border:1px dashed var(--ink-5);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-4);cursor:pointer;z-index:3;display:inline-flex;position:absolute}.gmp-merged-chip:hover{color:var(--ink-2);border-color:var(--rule-strong)}.gmp-merged-chip:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.gmp-merged-chip .lucide{width:var(--ic-sm);height:var(--ic-sm);flex:none}.gmp-merged-sec{margin-top:var(--sp-5);border-top:var(--bd);padding-top:var(--sp-4)}.gmp-merged-head{padding:0 0 var(--sp-2);border:0}.gmp-merged-list{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.gmp-merged-revert{position:static}.gmp-legend-item{align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-3);display:inline-flex}.gmp-legend-dim{color:var(--ink-4)}.gmp-changes-legend{align-items:center;gap:var(--sp-4);margin-top:var(--sp-5);padding-top:var(--sp-4);border-top:var(--bd);flex-wrap:wrap;display:flex}.gmp-changes-legend .cg-dot{flex:none;position:static!important;transform:none!important}.gmp-changes-legend .cg-dot-filled{place-items:center;display:inline-grid}.gmp-changes-legend .cg-spark{position:static!important;transform:none!important}@media (width<1440px){.gmp-merged-chip{margin-top:var(--sp-2);position:static!important}}@media (width<768px){.gmp-changes-body{padding:var(--sp-3);overflow:hidden}.gmp-merged-chip{margin-top:var(--sp-2);position:static!important}}.gmp-detail-root{padding:var(--sp-5);gap:0;overflow:auto}.gmp-detail-head{margin-bottom:var(--sp-5)}.gmp-detail-title{font-family:var(--font-display);color:var(--ink-strong);font-weight:700;font-size:var(--fs-lg);margin-top:var(--sp-2)}.gmp-caption{margin-top:var(--sp-4);color:var(--ink-2);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);max-width:var(--measure-prose)}.gmp-frag{padding:0 var(--sp-1);border:0;border-bottom:var(--stroke-hairline) dotted var(--amber-dim);color:var(--amber);font-family:var(--font-mono);font-size:var(--fs-body);cursor:pointer;background:0 0;display:inline}.gmp-frag:hover{color:var(--amber-bright);border-bottom-style:solid}.gmp-frag-on{color:var(--amber-bright);background:color-mix(in srgb, var(--amber) 12%, transparent);border-bottom-style:solid}.gmp-caption-hint{margin-top:var(--sp-2);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-4);display:block}.gmp-signals{gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.gmp-signal{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface);border:var(--bd);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-3);display:inline-flex}.gmp-signal .lucide{color:var(--ink-4);width:var(--ic-sm);height:var(--ic-sm)}.gmp-signal b{color:var(--ink);font-weight:600}.gmp-signal .mono{text-transform:none;color:var(--ink-2)}.gmp-signal-warn{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, var(--rule))}.gmp-signal-warn .lucide,.gmp-signal-warn b{color:var(--danger)}.gmp-totals{gap:var(--sp-4);padding:var(--sp-3) 0;border-top:var(--bd);border-bottom:var(--bd);margin-bottom:var(--sp-5);flex-wrap:wrap;display:flex}.gmp-add{color:var(--add-rail)}.gmp-del{color:var(--del-rail)}.gmp-detail-sec{margin-bottom:var(--sp-5)}.gmp-detail-sechead{padding:0 0 var(--sp-3);border:0}.gmp-label-chip{align-items:center;gap:var(--sp-1);padding:0 var(--sp-2);border:var(--bd-strong);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-2);display:inline-flex}.gmp-label-chip .lucide{color:var(--amber);width:var(--ic-sm);height:var(--ic-sm)}.gmp-files{flex-direction:column;display:flex}.gmp-file{border:var(--bd)}.gmp-file+.gmp-file{border-top:0}.gmp-file-head{align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-3);background:var(--surface);text-align:left;cursor:pointer;border:0;display:flex}.gmp-file-head:hover{background:var(--surface-hover)}.gmp-file-head:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset-inset)}.gmp-file-head .lucide:first-child{color:var(--ink-4);flex:none}.gmp-file-path{font-size:var(--fs-sm);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.gmp-file-status{height:22px;padding:0 var(--sp-2);flex:none}.gmp-file-convos{color:var(--ink-4);flex:none}.gmp-file-convos .lucide{color:var(--ink-4)}.gmp-file-body{border-top:var(--bd);background:var(--canvas)}.gmp-diff-state{padding:var(--sp-2) var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-4)}.gmp-diff-error{color:var(--danger)}.gmp-hunk{border-bottom:var(--bd)}.gmp-hunk:last-child{border-bottom:0}.gmp-hunk-attrib{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface-2);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-3);display:flex}.gmp-hunk-attrib .lucide{color:var(--ink-5);flex:none}.gmp-hunk-from{color:var(--ink-4);text-transform:lowercase;flex:none}.gmp-hunk-link{color:var(--amber);font:inherit;cursor:pointer;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;min-width:0;padding:0;overflow:hidden}.gmp-hunk-link:hover{color:var(--amber-bright);text-underline-offset:2px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.gmp-hunk-hash{color:var(--ink-4);flex:none;margin-left:auto}.gmp-hunk-diff{border:0}.gmp-annot{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex;position:relative}.gmp-annot-chip{min-height:var(--target-min);padding:0 var(--sp-1) 0 var(--sp-2);font-size:var(--fs-label)}.gmp-annot-x{width:16px;height:16px;color:var(--ink-4);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin-left:2px;display:inline-flex}.gmp-annot-x:hover{color:var(--ink)}.gmp-annot-add{align-items:center;gap:var(--sp-2);height:var(--control-h-sm);padding:0 var(--sp-3);border:var(--bd-strong);color:var(--ink-3);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;cursor:pointer;background:0 0;display:inline-flex}.gmp-annot-add:hover{color:var(--ink);border-color:var(--amber-dim)}.gmp-annot-add .lucide{color:var(--amber);width:var(--ic-sm);height:var(--ic-sm)}.gmp-annot-pop{z-index:var(--z-dropdown);gap:var(--sp-2);width:min(280px,90vw);padding:var(--sp-3);background:var(--surface-elev);border:var(--bd-strong);box-shadow:var(--overlay-shadow);flex-direction:column;display:flex;position:absolute;top:calc(100% + 4px);left:0}.gmp-annot-pop .input{height:var(--control-h-sm)}.gmp-annot-pop-foot{justify-content:flex-end;gap:var(--sp-2);display:flex}.gmp-exits{align-items:center;gap:var(--sp-3);padding-top:var(--sp-4);border-top:var(--bd);flex-wrap:wrap;display:flex}.gmp-gitdiff{padding:0 var(--sp-3);height:var(--control-h);background:var(--canvas);border:var(--bd);font-size:var(--fs-label);color:var(--ink-2);align-items:center;display:inline-flex}.gmp-boundary{margin-top:var(--sp-4);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-4);border-left:var(--stroke-emphasis) solid var(--rule-strong);padding-left:var(--sp-3);line-height:var(--lh-mono)}.tb-graph{background:var(--canvas);--edge:var(--rule-strong);--edge-error:var(--danger);flex-direction:column;height:100%;display:flex;position:relative}.tb-graph-flow{flex:1;min-height:0;position:relative}.tb-graph .react-flow__attribution{display:none}.tb-graph-minimap{border:var(--bd)!important;background:var(--surface)!important;width:160px!important;height:100px!important;bottom:.75rem!important;left:3rem!important}.tb-graph-controls{z-index:var(--z-sticky);border:var(--bd);background:var(--surface);flex-direction:column;display:flex;position:absolute;bottom:.75rem;left:.75rem}.tb-graph-controls-btn{width:var(--control-h-sm);height:var(--control-h-sm);border:0;border-bottom:var(--bd);color:var(--ink-2);cursor:pointer;background:0 0;justify-content:center;align-items:center;display:inline-flex}.tb-graph-controls-btn:last-child{border-bottom:0}.tb-graph-controls-btn:hover{background:var(--surface-hover);color:var(--ink)}.tb-graph-controls-btn:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset-inset)}.tb-graph-legend{z-index:var(--z-sticky);padding:var(--sp-2) var(--sp-3);border:var(--bd);background:var(--surface);position:absolute;top:.75rem;right:.75rem}.tb-gnode-handle{background:var(--rule-strong)!important;border:0!important;width:6px!important;height:6px!important}.tb-gnode-handle-top{top:-3px!important}.tb-gnode-handle-bottom{bottom:-3px!important}.tb-gnode-handle-right{top:50%!important;right:-3px!important;transform:translateY(-50%)!important}.tb-gnode-handle-left{top:50%!important;left:-3px!important;transform:translateY(-50%)!important}@media (prefers-reduced-motion:no-preference){.tb-graph-controls-btn{transition:background var(--dur-1) var(--ease-standard), color var(--dur-1) var(--ease-standard)}}}
|
|
1
|
+
@layer graph{.gmp-root{background:var(--canvas);min-width:0;height:100%;min-height:0;font-family:var(--font-body);--gmp-map-pad-x:max(var(--sp-4), calc((100% - 1360px) / 2));flex-direction:column;display:flex}.gmp-map-canvas-region{border:var(--bd);background:var(--canvas);height:100%;min-height:0;position:relative}.gmp-map-legend{align-items:center;gap:var(--sp-4);row-gap:var(--sp-1);margin-top:var(--sp-2);flex-wrap:wrap;display:flex}.gmp-map-swatch{width:10px;height:10px;margin-right:var(--sp-1);vertical-align:middle;border:1px solid var(--rule-strong);background:var(--surface-2);display:inline-block}.gmp-map-swatch--empty{border-color:var(--ink-5);background:var(--surface)}.gmp-map-swatch--edge{border:0;border-top:1px solid var(--rule-strong);background:0 0;width:16px;height:0;margin-top:-1px}.gmp-map-legend-danger{color:var(--danger)}.gmp-navigator{background:var(--canvas);min-height:100%;color:var(--ink);flex-direction:column;display:flex}.gmp-sr{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gmp-head-actions{justify-content:flex-end;align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:inline-flex}.gmp-head-row{justify-content:space-between;align-items:center;gap:var(--sp-2) var(--sp-3);flex-wrap:wrap;display:flex}.gmp-navigator-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-4);border-bottom:var(--bd);background:var(--surface-2);display:flex}.gmp-navigator-search{min-width:min(100%, var(--rail-w));height:var(--control-h);border:var(--bd-strong);background:var(--surface);align-items:center;display:flex}.gmp-navigator-search:focus-within{border-color:var(--amber-dim);box-shadow:inset 0 0 0 var(--focus-ring-width) var(--focus-ring)}.gmp-navigator-search>.lucide{width:var(--ic-sm);height:var(--ic-sm);margin-inline:var(--sp-2);color:var(--ink-3)}.gmp-navigator-search input{min-width:0;height:100%;padding:0 var(--sp-2) 0 0;color:var(--ink);font-family:var(--font-mono);font-size:var(--fs-label);background:0 0;border:0;outline:0;flex:1}.gmp-navigator-search input::placeholder{color:var(--ink-4);text-transform:lowercase}.gmp-navigator-body{grid-template-columns:minmax(0, 1fr) var(--rail-w);min-height:0;display:grid}.gmp-navigator-tree{min-height:calc(var(--control-h) * 8);padding:var(--sp-3) 0;border-right:var(--bd)}.gmp-navigator-row-wrap{grid-template-columns:var(--control-h-sm) minmax(0, 1fr);align-items:center;gap:var(--sp-2);min-height:var(--control-h);padding:var(--sp-2) var(--sp-4) var(--sp-2) calc(var(--sp-4) + var(--gmp-tree-depth) * var(--sp-5));border-left:var(--stroke-emphasis) solid transparent;display:grid}.gmp-navigator-row-wrap:hover{background:var(--surface-hover)}.gmp-navigator-row-wrap:has(.gmp-navigator-row:focus-visible){box-shadow:inset 0 0 0 var(--focus-ring-width) var(--focus-ring)}.gmp-navigator-row-wrap[data-selected=true]{border-left-color:var(--amber);background:var(--surface-2)}.gmp-navigator-row{grid-template-columns:var(--ic-sm) minmax(0, 1fr) auto;align-items:center;gap:var(--sp-2);cursor:pointer;outline:0;min-width:0;display:grid}.gmp-navigator-row>.lucide{width:var(--ic-sm);height:var(--ic-sm);color:var(--ink-3)}.gmp-navigator-disclosure,.gmp-navigator-disclosure-placeholder{width:var(--control-h-sm);height:var(--control-h-sm)}.gmp-navigator-disclosure{color:var(--ink-3);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.gmp-navigator-disclosure:hover{background:var(--surface-hover);color:var(--ink)}.gmp-navigator-disclosure:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.gmp-navigator-disclosure[aria-disabled=true]{cursor:default;opacity:.6}.gmp-navigator-chevron{visibility:hidden}@media (prefers-reduced-motion:no-preference){.gmp-navigator-chevron{transition:transform var(--dur-1) var(--ease-standard)}}.gmp-navigator-disclosure[aria-expanded] .gmp-navigator-chevron{visibility:visible}.gmp-navigator-disclosure[aria-expanded=true] .gmp-navigator-chevron{transform:rotate(90deg)}.gmp-navigator-path{white-space:normal;overflow-wrap:anywhere;min-width:0;font-size:var(--fs-sm);line-height:var(--lh-mono);color:var(--ink)}.gmp-navigator-meta{gap:var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-label);font-variant-numeric:tabular-nums;color:var(--ink-4);display:flex}.gmp-navigator-actions{padding:var(--sp-4);background:var(--surface)}.gmp-navigator-selected{color:var(--ink-strong);overflow-wrap:anywhere;margin:0;font-weight:600}.gmp-navigator-selected-path{margin:var(--sp-1) 0 var(--sp-4);color:var(--ink-4);font-family:var(--font-mono);font-size:var(--fs-label);overflow-wrap:anywhere}.gmp-navigator-action{align-items:center;gap:var(--sp-2);width:100%;min-height:var(--control-h);padding:var(--sp-2) var(--sp-3);border:var(--bd-strong);color:var(--ink-2);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;cursor:pointer;background:0 0;display:flex}.gmp-navigator-action+.gmp-navigator-action{margin-top:var(--sp-2)}.gmp-navigator-action:hover{background:var(--surface-hover);color:var(--ink)}.gmp-navigator-action:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.gmp-navigator-action>.lucide{width:var(--ic-sm);height:var(--ic-sm)}.gmp-navigator-action--primary{border-color:var(--amber-dim);color:var(--amber)}.gmp-navigator-empty{padding:var(--sp-4);color:var(--ink-4);font-size:var(--fs-sm);line-height:var(--lh-body);margin:0}.gmp-navigator-missing{padding:var(--sp-3) var(--sp-4);border-bottom:var(--bd);color:var(--clay);font-size:var(--fs-sm);margin:0}.gmp-navigator-missing button{color:var(--ink);cursor:pointer;background:0 0;border:0;text-decoration:underline}@media (width<768px){.gmp-navigator-head{flex-direction:column}.gmp-navigator-search{width:100%}.gmp-navigator-body{grid-template-columns:1fr}.gmp-navigator-tree{border-right:0;border-bottom:var(--bd)}.gmp-navigator-row{grid-template-columns:var(--ic-sm) minmax(0, 1fr)}.gmp-navigator-meta{gap:var(--sp-2);flex-wrap:wrap;grid-column:2}}@media (prefers-reduced-motion:reduce){.gmp-navigator-chevron{transition:none}}.gmp-toolbar-spacer{flex:1}.gmp-rank-toolbar{align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-bottom:var(--bd);flex-wrap:wrap;display:flex}.gmp-scent-filter{gap:var(--sp-1);flex-wrap:wrap;display:inline-flex}.gmp-rank-overflow{min-height:var(--target-min);padding:var(--sp-2) var(--sp-3);border:0;border-top:var(--bd);background:var(--surface);color:var(--ink-3);font-family:var(--font-mono);font-size:var(--fs-label);text-align:left;cursor:pointer;margin:0}.gmp-rank-overflow:hover{background:var(--surface-hover);color:var(--ink-2)}.gmp-presentation-switch{min-height:var(--control-h-sm);border:var(--bd-strong);display:inline-flex}.gmp-presentation-switch button{min-height:var(--target-min);padding:0 var(--sp-3);border:0;border-left:var(--bd);color:var(--ink-3);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;cursor:pointer;background:0 0}.gmp-presentation-switch button:first-child{border-left:0}.gmp-presentation-switch button:hover{background:var(--surface-hover);color:var(--ink)}.gmp-presentation-switch button[aria-pressed=true]{box-shadow:inset var(--stroke-emphasis) 0 0 var(--amber-dim);background:var(--surface-2);color:var(--ink-strong)}.gmp-presentation-switch button:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset-inset)}@media (width<768px){.gmp-toolbar-spacer{display:none}}.gmp-rail-inner{border:0}.gmp-rail-pad{padding:var(--sp-3) var(--sp-4)}.gmp-root .rs-sec:has(.gmp-rail-inner){padding:0!important}.gmp-root .rs-sec-body:has(>.gmp-rail-inner){padding:0!important}.gmp-root .rs-sec-body>.gmp-rail-inner>.sb-sec:last-child{border-bottom:0}.gmp-coverage{gap:var(--sp-2);flex-direction:column;display:flex}.gmp-coverage-top{justify-content:space-between;align-items:baseline;gap:var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-2);display:flex}.gmp-coverage-top>.label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gmp-coverage-pct{white-space:nowrap;color:var(--ink-strong);flex:none;font-weight:600}.gmp-coverage-bar{background:var(--surface-2);border:1px solid var(--rule);height:6px}.gmp-coverage-bar>span{background:var(--amber-dim);height:100%;display:block}.gmp-coverage-sub{font-size:var(--fs-label);color:var(--ink-4)}.gmp-tasklist,.gmp-convos,.gmp-coupling{padding:var(--sp-1) 0;margin:0;list-style:none}.gmp-task-row{align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-4);border:0;border-left:var(--stroke-emphasis) solid transparent;text-align:left;cursor:pointer;min-height:var(--target-min);background:0 0;grid-template-columns:auto minmax(0,1fr) auto;display:grid}.gmp-task-row:hover,.gmp-task-row:focus-visible{background:var(--surface-hover);border-left-color:var(--amber);outline:none}.gmp-task-row:focus-visible{box-shadow:inset 0 0 0 var(--focus-ring-width) var(--focus-ring)}.gmp-task-title{font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink);overflow-wrap:anywhere}.gmp-task-when{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-4);white-space:nowrap}.gmp-outcome{white-space:nowrap;flex:none}.gmp-rail-filter{margin:0}.gmp-rail-filter .input{height:var(--control-h-sm)}.gmp-showall{align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-4);border:0;border-top:var(--bd);color:var(--amber);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;text-align:left;cursor:pointer;background:0 0;display:flex}.gmp-showall:hover{background:var(--surface-hover);color:var(--amber-bright)}.gmp-rail-node-head{padding:var(--sp-3) var(--sp-4)}.gmp-rail-close{width:var(--control-h-sm);height:var(--control-h-sm);border:var(--bd-strong);color:var(--ink-3);cursor:pointer;background:0 0;justify-content:center;align-items:center;display:inline-flex}.gmp-rail-close:hover{color:var(--ink);border-color:var(--amber-dim)}.gmp-rail-name{margin-top:var(--sp-2);font-size:var(--fs-sm);color:var(--ink-strong);word-break:break-all}.gmp-rail-meta{gap:var(--sp-3);margin-top:var(--sp-2);flex-wrap:wrap;display:flex}.gmp-connects{gap:var(--sp-3);flex-direction:column;display:flex}.gmp-connect-grp{gap:var(--sp-2);flex-direction:column;display:flex}.gmp-connect-chips{gap:var(--sp-2)}.gmp-connect-chip{cursor:pointer;max-width:100%}.gmp-connect-chip:hover{border-color:var(--amber-dim);color:var(--ink)}.gmp-connect-chip .mono{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gmp-convo-task{border-bottom:var(--bd)}.gmp-convo-task:last-child{border-bottom:0}.gmp-convo-task-btn{width:100%;padding:var(--sp-3) var(--sp-4);text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;gap:3px;display:flex}.gmp-convo-task-btn:hover{background:var(--surface-hover)}.gmp-convo-task-btn:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset-inset)}.gmp-convo-task-top{align-items:center;gap:var(--sp-2);display:flex}.gmp-convo-task-title{font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink);overflow-wrap:anywhere}.gmp-retry{color:var(--amber);flex:none;align-items:center;margin-left:auto;display:inline-flex}.gmp-retry .lucide{width:var(--ic-sm);height:var(--ic-sm)}.gmp-convo-task-sub{font-size:var(--fs-label);color:var(--ink-4);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gmp-convo-commit{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:var(--surface-2);border-bottom:var(--bd);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-3);display:flex}.gmp-convo-commit .lucide{color:var(--ink-4);width:var(--ic-sm);height:var(--ic-sm);flex:none}.gmp-commit-hash{color:var(--ink-2);flex:none}.gmp-commit-msg{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gmp-label-chips{gap:var(--sp-1);flex-wrap:wrap;display:flex}.gmp-coupling-row{align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-4);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.gmp-coupling-row:hover{background:var(--surface-hover)}.gmp-coupling-row:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset-inset)}.gmp-coupling-row .lucide{color:var(--ink-5);flex:none}.gmp-coupling-id{font-size:var(--fs-label);color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gmp-coupling-shared{font-size:var(--fs-label);color:var(--ink-4);white-space:nowrap;flex:none;margin-left:auto}.gmp-effort{gap:var(--sp-2);flex-direction:column;display:flex}.gmp-effort-row{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.gmp-effort-row b{color:var(--ink);font-weight:600}.gmp-effort-spend b{color:var(--amber)}.gmp-contribute{align-items:center;gap:var(--sp-2);width:100%;margin-top:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:0;border-top:var(--bd);color:var(--amber);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;text-align:left;cursor:pointer;background:0 0;display:flex}.gmp-contribute:hover{background:var(--surface-hover);color:var(--amber-bright)}.gmp-contribute .lucide:last-child{margin-left:auto}.gmp-session-destination-title{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:700;line-height:var(--lh-body);color:var(--ink-strong);overflow-wrap:anywhere;margin:0}.gmp-session-destination-context{margin:var(--sp-2) 0 var(--sp-4);color:var(--ink-3);font-size:var(--fs-sm)}.gmp-session-destination-summary{border:var(--bd);background:var(--surface-2);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.gmp-session-destination-summary>div{gap:var(--sp-3);min-height:var(--control-h);padding:var(--sp-3) var(--sp-4);border-bottom:var(--bd);grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:baseline;display:grid}.gmp-session-destination-summary>div:nth-last-child(-n+2){border-bottom:0}.gmp-session-destination-summary>div:nth-child(odd){border-right:var(--bd)}.gmp-session-destination-summary dt{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-4)}.gmp-session-destination-summary dd{overflow-wrap:anywhere;min-width:0;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-2);margin:0}@media (width<768px){.gmp-session-destination-summary{grid-template-columns:minmax(0,1fr)}.gmp-session-destination-summary>div{border-right:0}.gmp-session-destination-summary>div:nth-last-child(-n+2){border-bottom:var(--bd)}.gmp-session-destination-summary>div:last-child{border-bottom:0}}.gmp-changes-root{--gmp-pad-x:max(var(--sp-4), calc((100% - 1360px) / 2));max-width:none;margin-inline:0;overflow:auto}.gmp-changes-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-4) var(--gmp-pad-x);border-bottom:var(--bd);background:var(--surface);flex:none;display:flex}.gmp-changes-sub{font-size:var(--fs-label);color:var(--ink-4);margin-top:var(--sp-1)}.gmp-changes-body{padding:var(--sp-4) var(--gmp-pad-x);min-width:0}.gmp-unlinked-sessions{margin-top:var(--sp-5);border-top:var(--bd);padding-top:var(--sp-4)}.gmp-unlinked-sessions-head{padding:0 0 var(--sp-2);border:0}.gmp-unlinked-sessions-list{gap:var(--sp-2);flex-wrap:wrap;display:flex}.gmp-unlinked-session{min-height:var(--sp-6);align-items:center;gap:var(--sp-2);max-width:100%;padding:var(--sp-1) var(--sp-2);border:var(--bd);background:var(--surface-2);color:var(--ink-2);font-family:var(--font-mono);font-size:var(--fs-label);text-align:left;cursor:pointer;display:inline-flex}.gmp-unlinked-session:hover{background:var(--surface-hover)}.gmp-unlinked-session:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.gmp-merged-chip{align-items:center;gap:var(--sp-2);padding:3px var(--sp-3);background:var(--surface-2);border:1px dashed var(--ink-5);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-4);cursor:pointer;z-index:3;display:inline-flex;position:absolute}.gmp-merged-chip:hover{color:var(--ink-2);border-color:var(--rule-strong)}.gmp-merged-chip:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.gmp-merged-chip .lucide{width:var(--ic-sm);height:var(--ic-sm);flex:none}.gmp-merged-sec{margin-top:var(--sp-5);border-top:var(--bd);padding-top:var(--sp-4)}.gmp-merged-head{padding:0 0 var(--sp-2);border:0}.gmp-merged-list{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.gmp-merged-revert{position:static}.gmp-legend-item{align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-3);display:inline-flex}.gmp-legend-dim{color:var(--ink-4)}.gmp-changes-legend{align-items:center;gap:var(--sp-4);margin-top:var(--sp-5);padding-top:var(--sp-4);border-top:var(--bd);flex-wrap:wrap;display:flex}.gmp-changes-legend .cg-dot{flex:none;position:static!important;transform:none!important}.gmp-changes-legend .cg-dot-filled{place-items:center;display:inline-grid}.gmp-changes-legend .cg-spark{position:static!important;transform:none!important}@media (width<1440px){.gmp-merged-chip{margin-top:var(--sp-2);position:static!important}}@media (width<768px){.gmp-changes-body{padding:var(--sp-3);overflow:hidden}.gmp-merged-chip{margin-top:var(--sp-2);position:static!important}}.gmp-detail-root{padding:var(--sp-5);gap:0;overflow:auto}.gmp-detail-head{margin-bottom:var(--sp-5)}.gmp-detail-title{font-family:var(--font-display);color:var(--ink-strong);font-weight:700;font-size:var(--fs-lg);margin-top:var(--sp-2)}.gmp-caption{margin-top:var(--sp-4);color:var(--ink-2);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);max-width:var(--measure-prose)}.gmp-frag{padding:0 var(--sp-1);border:0;border-bottom:var(--stroke-hairline) dotted var(--amber-dim);color:var(--amber);font-family:var(--font-mono);font-size:var(--fs-body);cursor:pointer;background:0 0;display:inline}.gmp-frag:hover{color:var(--amber-bright);border-bottom-style:solid}.gmp-frag-on{color:var(--amber-bright);background:color-mix(in srgb, var(--amber) 12%, transparent);border-bottom-style:solid}.gmp-caption-hint{margin-top:var(--sp-2);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-4);display:block}.gmp-signals{gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.gmp-signal{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface);border:var(--bd);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-3);display:inline-flex}.gmp-signal .lucide{color:var(--ink-4);width:var(--ic-sm);height:var(--ic-sm)}.gmp-signal b{color:var(--ink);font-weight:600}.gmp-signal .mono{text-transform:none;color:var(--ink-2)}.gmp-signal-warn{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, var(--rule))}.gmp-signal-warn .lucide,.gmp-signal-warn b{color:var(--danger)}.gmp-totals{gap:var(--sp-4);padding:var(--sp-3) 0;border-top:var(--bd);border-bottom:var(--bd);margin-bottom:var(--sp-5);flex-wrap:wrap;display:flex}.gmp-add{color:var(--add-rail)}.gmp-del{color:var(--del-rail)}.gmp-detail-sec{margin-bottom:var(--sp-5)}.gmp-detail-sechead{padding:0 0 var(--sp-3);border:0}.gmp-label-chip{align-items:center;gap:var(--sp-1);padding:0 var(--sp-2);border:var(--bd-strong);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-2);display:inline-flex}.gmp-label-chip .lucide{color:var(--amber);width:var(--ic-sm);height:var(--ic-sm)}.gmp-files{flex-direction:column;display:flex}.gmp-file{border:var(--bd)}.gmp-file+.gmp-file{border-top:0}.gmp-file-head{align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-3);background:var(--surface);text-align:left;cursor:pointer;border:0;display:flex}.gmp-file-head:hover{background:var(--surface-hover)}.gmp-file-head:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset-inset)}.gmp-file-head .lucide:first-child{color:var(--ink-4);flex:none}.gmp-file-path{font-size:var(--fs-sm);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.gmp-file-status{height:22px;padding:0 var(--sp-2);flex:none}.gmp-file-convos{color:var(--ink-4);flex:none}.gmp-file-convos .lucide{color:var(--ink-4)}.gmp-file-body{border-top:var(--bd);background:var(--canvas)}.gmp-diff-state{padding:var(--sp-2) var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-4)}.gmp-diff-error{color:var(--danger)}.gmp-hunk{border-bottom:var(--bd)}.gmp-hunk:last-child{border-bottom:0}.gmp-hunk-attrib{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface-2);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-3);display:flex}.gmp-hunk-attrib .lucide{color:var(--ink-5);flex:none}.gmp-hunk-from{color:var(--ink-4);text-transform:lowercase;flex:none}.gmp-hunk-link{color:var(--amber);font:inherit;cursor:pointer;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;min-width:0;padding:0;overflow:hidden}.gmp-hunk-link:hover{color:var(--amber-bright);text-underline-offset:2px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.gmp-hunk-hash{color:var(--ink-4);flex:none;margin-left:auto}.gmp-hunk-diff{border:0}.gmp-annot{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex;position:relative}.gmp-annot-chip{min-height:var(--target-min);padding:0 var(--sp-1) 0 var(--sp-2);font-size:var(--fs-label)}.gmp-annot-x{width:16px;height:16px;color:var(--ink-4);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin-left:2px;display:inline-flex}.gmp-annot-x:hover{color:var(--ink)}.gmp-annot-add{align-items:center;gap:var(--sp-2);height:var(--control-h-sm);padding:0 var(--sp-3);border:var(--bd-strong);color:var(--ink-3);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;cursor:pointer;background:0 0;display:inline-flex}.gmp-annot-add:hover{color:var(--ink);border-color:var(--amber-dim)}.gmp-annot-add .lucide{color:var(--amber);width:var(--ic-sm);height:var(--ic-sm)}.gmp-annot-pop{z-index:var(--z-dropdown);gap:var(--sp-2);width:min(280px,90vw);padding:var(--sp-3);background:var(--surface-elev);border:var(--bd-strong);box-shadow:var(--overlay-shadow);flex-direction:column;display:flex;position:absolute;top:calc(100% + 4px);left:0}.gmp-annot-pop .input{height:var(--control-h-sm)}.gmp-annot-pop-foot{justify-content:flex-end;gap:var(--sp-2);display:flex}.gmp-exits{align-items:center;gap:var(--sp-3);padding-top:var(--sp-4);border-top:var(--bd);flex-wrap:wrap;display:flex}.gmp-gitdiff{padding:0 var(--sp-3);height:var(--control-h);background:var(--canvas);border:var(--bd);font-size:var(--fs-label);color:var(--ink-2);align-items:center;display:inline-flex}.gmp-boundary{margin-top:var(--sp-4);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-4);border-left:var(--stroke-emphasis) solid var(--rule-strong);padding-left:var(--sp-3);line-height:var(--lh-mono)}.tb-graph{background:var(--canvas);--edge:var(--rule-strong);--edge-error:var(--danger);flex-direction:column;height:100%;display:flex;position:relative}.tb-graph-flow{flex:1;min-height:0;position:relative}.tb-graph .react-flow__attribution{display:none}.tb-graph-minimap{border:var(--bd)!important;background:var(--surface)!important;width:160px!important;height:100px!important;bottom:.75rem!important;left:3rem!important}.tb-graph-controls{z-index:var(--z-sticky);border:var(--bd);background:var(--surface);flex-direction:column;display:flex;position:absolute;bottom:.75rem;left:.75rem}.tb-graph-controls-btn{width:var(--control-h-sm);height:var(--control-h-sm);border:0;border-bottom:var(--bd);color:var(--ink-2);cursor:pointer;background:0 0;justify-content:center;align-items:center;display:inline-flex}.tb-graph-controls-btn:last-child{border-bottom:0}.tb-graph-controls-btn:hover{background:var(--surface-hover);color:var(--ink)}.tb-graph-controls-btn:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset-inset)}.tb-graph-legend{z-index:var(--z-sticky);padding:var(--sp-2) var(--sp-3);border:var(--bd);background:var(--surface);position:absolute;top:.75rem;right:.75rem}.tb-gnode-handle{background:var(--rule-strong)!important;border:0!important;width:6px!important;height:6px!important}.tb-gnode-handle-top{top:-3px!important}.tb-gnode-handle-bottom{bottom:-3px!important}.tb-gnode-handle-right{top:50%!important;right:-3px!important;transform:translateY(-50%)!important}.tb-gnode-handle-left{top:50%!important;left:-3px!important;transform:translateY(-50%)!important}@media (prefers-reduced-motion:no-preference){.tb-graph-controls-btn{transition:background var(--dur-1) var(--ease-standard), color var(--dur-1) var(--ease-standard)}}}
|
package/dist/lib/graph.js
CHANGED
|
@@ -73,20 +73,20 @@ function Rt(e) {
|
|
|
73
73
|
}
|
|
74
74
|
//#endregion
|
|
75
75
|
//#region src/ui/graph/Changes.jsx
|
|
76
|
-
function zt({ payload: e, projectLabel: t, selectedId: n, onNavigate: r, onSelectChange: i, onOpenMap: a, hasMore: o = !1, onShowOlder: s, onOpenSession: c, nowMs: l }) {
|
|
77
|
-
let
|
|
76
|
+
function zt({ payload: e, projectLabel: t, selectedId: n, onNavigate: r, onSelectChange: i, onOpenMap: a, hasMore: o = !1, onShowOlder: s, onOpenSession: c, nowMs: l, headerActions: u }) {
|
|
77
|
+
let d = l ?? Date.now(), { commits: f, reverted: p, unlinkedSessions: m, outsideWindowSessions: h, openCount: g, mergedCount: _ } = B(() => Lt(e, { nowMs: d }), [e, d]), v = e.defaultBranch, y = B(() => new Set(f.filter((e) => (e.sessionRefs?.length ?? 0) > 2).map((e) => e.id)), [f]), [b, x] = H([]);
|
|
78
78
|
z(() => {
|
|
79
|
-
|
|
80
|
-
let t = e.filter((e) =>
|
|
79
|
+
x((e) => {
|
|
80
|
+
let t = e.filter((e) => y.has(e));
|
|
81
81
|
return t.length === e.length ? e : t;
|
|
82
82
|
});
|
|
83
|
-
}, [
|
|
84
|
-
let
|
|
85
|
-
|
|
83
|
+
}, [y]);
|
|
84
|
+
let S = R((e) => {
|
|
85
|
+
y.has(e) && x((t) => {
|
|
86
86
|
let n = new Set(t);
|
|
87
87
|
return n.has(e) ? n.delete(e) : n.add(e), [...n];
|
|
88
88
|
});
|
|
89
|
-
}, [
|
|
89
|
+
}, [y]);
|
|
90
90
|
return /* @__PURE__ */ W("div", {
|
|
91
91
|
className: "gmp-root gmp-changes-root",
|
|
92
92
|
children: [/* @__PURE__ */ W("div", {
|
|
@@ -97,29 +97,32 @@ function zt({ payload: e, projectLabel: t, selectedId: n, onNavigate: r, onSelec
|
|
|
97
97
|
}), /* @__PURE__ */ W("div", {
|
|
98
98
|
className: "gmp-changes-sub mono",
|
|
99
99
|
children: [
|
|
100
|
-
|
|
101
|
-
h,
|
|
102
|
-
" open, ",
|
|
100
|
+
v ? `default branch ${v}, ` : "",
|
|
103
101
|
g,
|
|
102
|
+
" open, ",
|
|
103
|
+
_,
|
|
104
104
|
" merged"
|
|
105
105
|
]
|
|
106
|
-
})] }), /* @__PURE__ */ W("
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
106
|
+
})] }), /* @__PURE__ */ W("div", {
|
|
107
|
+
className: "gmp-head-actions",
|
|
108
|
+
children: [u, /* @__PURE__ */ W("button", {
|
|
109
|
+
type: "button",
|
|
110
|
+
className: "btn btn-secondary btn-sm",
|
|
111
|
+
onClick: () => {
|
|
112
|
+
r ? r({ type: "open-map" }) : a?.();
|
|
113
|
+
},
|
|
114
|
+
children: [/* @__PURE__ */ U(Oe, {
|
|
115
|
+
size: 14,
|
|
116
|
+
"aria-hidden": "true"
|
|
117
|
+
}), " open the map"]
|
|
118
|
+
})]
|
|
116
119
|
})]
|
|
117
120
|
}), /* @__PURE__ */ W("div", {
|
|
118
121
|
className: "gmp-changes-body",
|
|
119
122
|
children: [
|
|
120
123
|
/* @__PURE__ */ U(ue, {
|
|
121
124
|
className: "gmp-cg",
|
|
122
|
-
commits:
|
|
125
|
+
commits: f,
|
|
123
126
|
selectedId: n,
|
|
124
127
|
label: "default-branch commit history",
|
|
125
128
|
onNavigate: r,
|
|
@@ -127,10 +130,10 @@ function zt({ payload: e, projectLabel: t, selectedId: n, onNavigate: r, onSelec
|
|
|
127
130
|
onOpenSession: c,
|
|
128
131
|
hasMore: o,
|
|
129
132
|
onShowOlder: s,
|
|
130
|
-
expandedCommitSessions:
|
|
131
|
-
onToggleCommitSessions:
|
|
133
|
+
expandedCommitSessions: b,
|
|
134
|
+
onToggleCommitSessions: S
|
|
132
135
|
}),
|
|
133
|
-
|
|
136
|
+
m.length > 0 && /* @__PURE__ */ W("section", {
|
|
134
137
|
className: "gmp-unlinked-sessions",
|
|
135
138
|
"aria-labelledby": "gmp-unlinked-sessions-heading",
|
|
136
139
|
children: [/* @__PURE__ */ U("h2", {
|
|
@@ -139,7 +142,7 @@ function zt({ payload: e, projectLabel: t, selectedId: n, onNavigate: r, onSelec
|
|
|
139
142
|
children: "sessions not linked to a commit"
|
|
140
143
|
}), /* @__PURE__ */ U("div", {
|
|
141
144
|
className: "gmp-unlinked-sessions-list",
|
|
142
|
-
children:
|
|
145
|
+
children: m.map((e) => /* @__PURE__ */ W("button", {
|
|
143
146
|
type: "button",
|
|
144
147
|
className: "gmp-unlinked-session",
|
|
145
148
|
onClick: () => {
|
|
@@ -153,7 +156,7 @@ function zt({ payload: e, projectLabel: t, selectedId: n, onNavigate: r, onSelec
|
|
|
153
156
|
}, e.sessionId))
|
|
154
157
|
})]
|
|
155
158
|
}),
|
|
156
|
-
|
|
159
|
+
h.length > 0 && /* @__PURE__ */ W("section", {
|
|
157
160
|
className: "gmp-unlinked-sessions",
|
|
158
161
|
"aria-labelledby": "gmp-outside-window-sessions-heading",
|
|
159
162
|
children: [/* @__PURE__ */ U("h2", {
|
|
@@ -162,7 +165,7 @@ function zt({ payload: e, projectLabel: t, selectedId: n, onNavigate: r, onSelec
|
|
|
162
165
|
children: "sessions linked outside this visible commit window"
|
|
163
166
|
}), /* @__PURE__ */ U("div", {
|
|
164
167
|
className: "gmp-unlinked-sessions-list",
|
|
165
|
-
children:
|
|
168
|
+
children: h.map((e) => /* @__PURE__ */ W("button", {
|
|
166
169
|
type: "button",
|
|
167
170
|
className: "gmp-unlinked-session",
|
|
168
171
|
onClick: () => {
|
|
@@ -176,14 +179,14 @@ function zt({ payload: e, projectLabel: t, selectedId: n, onNavigate: r, onSelec
|
|
|
176
179
|
}, e.sessionId))
|
|
177
180
|
})]
|
|
178
181
|
}),
|
|
179
|
-
|
|
182
|
+
p.length > 0 && /* @__PURE__ */ W("div", {
|
|
180
183
|
className: "gmp-merged-sec",
|
|
181
184
|
children: [/* @__PURE__ */ U("div", {
|
|
182
185
|
className: "sb-head gmp-merged-head",
|
|
183
186
|
children: "already merged in"
|
|
184
187
|
}), /* @__PURE__ */ U("div", {
|
|
185
188
|
className: "gmp-merged-list",
|
|
186
|
-
children:
|
|
189
|
+
children: p.map((e) => /* @__PURE__ */ W("button", {
|
|
187
190
|
type: "button",
|
|
188
191
|
className: "gmp-merged-chip gmp-merged-revert",
|
|
189
192
|
onClick: () => {
|
|
@@ -382,19 +385,19 @@ function Kt({ file: t, diff: n, open: r, onToggle: i }) {
|
|
|
382
385
|
})]
|
|
383
386
|
});
|
|
384
387
|
}
|
|
385
|
-
function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnotation: i, onRemoveAnnotation: a, onOpenMap: o, onShare: s, onCopyRecap: c, initialOpenFiles: l = {} }) {
|
|
388
|
+
function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnotation: i, onRemoveAnnotation: a, onOpenMap: o, onShare: s, onCopyRecap: c, initialOpenFiles: l = {}, headerActions: u }) {
|
|
386
389
|
v(e);
|
|
387
|
-
let [
|
|
390
|
+
let [d, f] = H(l), [p, m] = H(null), [h, g] = H(!1), [_, y] = H(""), b = V({}), x = V(null), S = n ?? Ut(e.branch), C = e.work.length, w = e.newEdges.length, T = e.removedEdges.length, E = (e) => f((t) => ({
|
|
388
391
|
...t,
|
|
389
392
|
[e]: !t[e]
|
|
390
393
|
}));
|
|
391
|
-
function
|
|
392
|
-
if (
|
|
393
|
-
|
|
394
|
+
function D(e, t) {
|
|
395
|
+
if (m(e), t) {
|
|
396
|
+
f((e) => ({
|
|
394
397
|
...e,
|
|
395
398
|
[t]: !0
|
|
396
399
|
}));
|
|
397
|
-
let e =
|
|
400
|
+
let e = b.current[t], n = x.current;
|
|
398
401
|
if (e && n) {
|
|
399
402
|
let t = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
400
403
|
n.scrollTo({
|
|
@@ -404,44 +407,50 @@ function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnota
|
|
|
404
407
|
}
|
|
405
408
|
}
|
|
406
409
|
}
|
|
407
|
-
function
|
|
410
|
+
function O(e) {
|
|
408
411
|
e.preventDefault();
|
|
409
|
-
let t =
|
|
410
|
-
t && i?.(t),
|
|
412
|
+
let t = _.trim();
|
|
413
|
+
t && i?.(t), g(!1), y("");
|
|
411
414
|
}
|
|
412
|
-
let
|
|
415
|
+
let k = e.files[0]?.path;
|
|
413
416
|
return /* @__PURE__ */ W("div", {
|
|
414
417
|
className: "gmp-root gmp-detail-root",
|
|
415
|
-
ref:
|
|
418
|
+
ref: x,
|
|
416
419
|
children: [
|
|
417
420
|
/* @__PURE__ */ W("div", {
|
|
418
421
|
className: "gmp-detail-head",
|
|
419
422
|
children: [
|
|
420
423
|
/* @__PURE__ */ W("div", {
|
|
421
|
-
className: "
|
|
422
|
-
children: [
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
424
|
+
className: "gmp-head-row",
|
|
425
|
+
children: [/* @__PURE__ */ W("div", {
|
|
426
|
+
className: "crumb",
|
|
427
|
+
children: [
|
|
428
|
+
"review ",
|
|
429
|
+
/* @__PURE__ */ U(G, {
|
|
430
|
+
size: 14,
|
|
431
|
+
"aria-hidden": "true"
|
|
432
|
+
}),
|
|
433
|
+
" ",
|
|
434
|
+
e.defaultBranch,
|
|
435
|
+
" ",
|
|
436
|
+
/* @__PURE__ */ U(G, {
|
|
437
|
+
size: 14,
|
|
438
|
+
"aria-hidden": "true"
|
|
439
|
+
}),
|
|
440
|
+
" ",
|
|
441
|
+
/* @__PURE__ */ U("span", {
|
|
442
|
+
className: "cur",
|
|
443
|
+
children: e.branch
|
|
444
|
+
})
|
|
445
|
+
]
|
|
446
|
+
}), u ? /* @__PURE__ */ U("div", {
|
|
447
|
+
className: "gmp-head-actions",
|
|
448
|
+
children: u
|
|
449
|
+
}) : null]
|
|
441
450
|
}),
|
|
442
451
|
/* @__PURE__ */ U("div", {
|
|
443
452
|
className: "gmp-detail-title",
|
|
444
|
-
children:
|
|
453
|
+
children: S
|
|
445
454
|
}),
|
|
446
455
|
/* @__PURE__ */ W("p", {
|
|
447
456
|
className: "gmp-caption",
|
|
@@ -450,8 +459,8 @@ function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnota
|
|
|
450
459
|
" ",
|
|
451
460
|
/* @__PURE__ */ W("button", {
|
|
452
461
|
type: "button",
|
|
453
|
-
className: "gmp-frag" + (
|
|
454
|
-
onClick: () =>
|
|
462
|
+
className: "gmp-frag" + (p === "files" ? " gmp-frag-on" : ""),
|
|
463
|
+
onClick: () => D("files", k),
|
|
455
464
|
children: [e.filesChanged, " files"]
|
|
456
465
|
}),
|
|
457
466
|
" ",
|
|
@@ -459,21 +468,21 @@ function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnota
|
|
|
459
468
|
" ",
|
|
460
469
|
/* @__PURE__ */ W("button", {
|
|
461
470
|
type: "button",
|
|
462
|
-
className: "gmp-frag" + (
|
|
463
|
-
onClick: () =>
|
|
464
|
-
children: [
|
|
471
|
+
className: "gmp-frag" + (p === "conversations" ? " gmp-frag-on" : ""),
|
|
472
|
+
onClick: () => D("conversations"),
|
|
473
|
+
children: [C, " conversations"]
|
|
465
474
|
}),
|
|
466
475
|
", reshaping",
|
|
467
476
|
" ",
|
|
468
477
|
/* @__PURE__ */ W("button", {
|
|
469
478
|
type: "button",
|
|
470
|
-
className: "gmp-frag" + (
|
|
471
|
-
onClick: () =>
|
|
479
|
+
className: "gmp-frag" + (p === "conn" ? " gmp-frag-on" : ""),
|
|
480
|
+
onClick: () => D("conn"),
|
|
472
481
|
children: [
|
|
473
482
|
"+",
|
|
474
|
-
C,
|
|
475
|
-
"/−",
|
|
476
483
|
w,
|
|
484
|
+
"/−",
|
|
485
|
+
T,
|
|
477
486
|
" connections"
|
|
478
487
|
]
|
|
479
488
|
}),
|
|
@@ -547,12 +556,12 @@ function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnota
|
|
|
547
556
|
children: [
|
|
548
557
|
/* @__PURE__ */ W("span", {
|
|
549
558
|
className: "gmp-add",
|
|
550
|
-
children: ["+",
|
|
559
|
+
children: ["+", w]
|
|
551
560
|
}),
|
|
552
561
|
"/",
|
|
553
562
|
/* @__PURE__ */ W("span", {
|
|
554
563
|
className: "gmp-del",
|
|
555
|
-
children: ["−",
|
|
564
|
+
children: ["−", T]
|
|
556
565
|
}),
|
|
557
566
|
" connections"
|
|
558
567
|
]
|
|
@@ -591,13 +600,13 @@ function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnota
|
|
|
591
600
|
className: "gmp-files",
|
|
592
601
|
children: e.files.map((e) => /* @__PURE__ */ U("div", {
|
|
593
602
|
ref: (t) => {
|
|
594
|
-
|
|
603
|
+
b.current[e.path] = t;
|
|
595
604
|
},
|
|
596
605
|
children: /* @__PURE__ */ U(Kt, {
|
|
597
606
|
file: e,
|
|
598
|
-
diff:
|
|
599
|
-
open: !!
|
|
600
|
-
onToggle: () =>
|
|
607
|
+
diff: d[e.path] ? t?.(e) : void 0,
|
|
608
|
+
open: !!d[e.path],
|
|
609
|
+
onToggle: () => E(e.path)
|
|
601
610
|
})
|
|
602
611
|
}, e.path))
|
|
603
612
|
})]
|
|
@@ -634,8 +643,8 @@ function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnota
|
|
|
634
643
|
/* @__PURE__ */ W("button", {
|
|
635
644
|
type: "button",
|
|
636
645
|
className: "gmp-annot-add",
|
|
637
|
-
"aria-expanded":
|
|
638
|
-
onClick: () =>
|
|
646
|
+
"aria-expanded": h,
|
|
647
|
+
onClick: () => g((e) => !e),
|
|
639
648
|
children: [
|
|
640
649
|
/* @__PURE__ */ U(Ye, {
|
|
641
650
|
size: 14,
|
|
@@ -645,9 +654,9 @@ function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnota
|
|
|
645
654
|
r ? "change label" : "add a label"
|
|
646
655
|
]
|
|
647
656
|
}),
|
|
648
|
-
|
|
657
|
+
h && /* @__PURE__ */ W("form", {
|
|
649
658
|
className: "gmp-annot-pop",
|
|
650
|
-
onSubmit:
|
|
659
|
+
onSubmit: O,
|
|
651
660
|
children: [
|
|
652
661
|
/* @__PURE__ */ U("span", {
|
|
653
662
|
className: "label",
|
|
@@ -657,8 +666,8 @@ function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnota
|
|
|
657
666
|
className: "input",
|
|
658
667
|
type: "text",
|
|
659
668
|
autoFocus: !0,
|
|
660
|
-
value:
|
|
661
|
-
onChange: (e) =>
|
|
669
|
+
value: _,
|
|
670
|
+
onChange: (e) => y(e.target.value),
|
|
662
671
|
placeholder: "e.g. good handoff",
|
|
663
672
|
"aria-label": "annotation value"
|
|
664
673
|
}),
|
|
@@ -667,7 +676,7 @@ function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnota
|
|
|
667
676
|
children: [/* @__PURE__ */ U("button", {
|
|
668
677
|
type: "button",
|
|
669
678
|
className: "btn btn-ghost btn-sm",
|
|
670
|
-
onClick: () =>
|
|
679
|
+
onClick: () => g(!1),
|
|
671
680
|
children: "cancel"
|
|
672
681
|
}), /* @__PURE__ */ W("button", {
|
|
673
682
|
type: "submit",
|
|
@@ -705,7 +714,7 @@ function qt({ payload: e, getDiff: t, title: n, annotation: r = "", onSaveAnnota
|
|
|
705
714
|
"aria-hidden": "true"
|
|
706
715
|
}),
|
|
707
716
|
" share ",
|
|
708
|
-
|
|
717
|
+
C,
|
|
709
718
|
" conversations…"
|
|
710
719
|
]
|
|
711
720
|
}),
|
package/dist/lib/tokens.css
CHANGED
package/dist/lib/tokens.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The shared app sidebar, in one order for every app: the brand mark with a collapse handle on the
|
|
3
|
-
* column's edge, the
|
|
4
|
-
*
|
|
3
|
+
* column's edge, the shortcuts (search, the docs and community, the app's links that leave it), the
|
|
4
|
+
* app's own pages, then the footer row (the account on the left, the settings gear and the theme
|
|
5
|
+
* toggle on the right). A sticky resizable column on desktop
|
|
5
6
|
* that collapses to an icon rail; a top bar plus an opaque drawer below 768px.
|
|
6
7
|
* @param {AppSidebarProps} props
|
|
7
8
|
*/
|
|
8
|
-
export default function AppSidebar({ app, apps, groups, currentId, homeHref, brand, search, theme, onThemeChange, account, accountSlot, LinkComponent, storageKey, defaultCollapsed, defaultWidth, minWidth, maxWidth, onCollapsedChange, label, className, }: AppSidebarProps): import("react").JSX.Element;
|
|
9
|
+
export default function AppSidebar({ app, apps, groups, currentId, homeHref, brand, search, elsewhere, settingsHref, theme, onThemeChange, account, accountSlot, LinkComponent, storageKey, defaultCollapsed, defaultWidth, minWidth, maxWidth, onCollapsedChange, label, className, }: AppSidebarProps): import("react").JSX.Element;
|
|
9
10
|
/**
|
|
10
11
|
* The page frame for an app screen: the sidebar column beside a main column that takes the rest
|
|
11
12
|
* (min-width 0, so wide content stays contained). One column below 768px, the top bar above the page.
|
|
@@ -24,8 +25,10 @@ export function AppPage({ children, as: Tag, className, ...rest }: AppPageProps)
|
|
|
24
25
|
* @property {string} id 'online' | 'local' | 'docs', or another app id (shown with a generic icon).
|
|
25
26
|
* @property {string} label the switcher label.
|
|
26
27
|
* @property {string} [href] where the app lives. An app without an href is omitted, unless it has a tag.
|
|
27
|
-
* @property {string} [tag] a short note after the label
|
|
28
|
-
*
|
|
28
|
+
* @property {string} [tag] a short note after the label. With no href the entry is shown as text, not a link.
|
|
29
|
+
* @property {boolean} [soon] a place that does not exist yet: shown as text, aria-disabled, with a 'soon' note
|
|
30
|
+
* and no hover or press. The switcher always ends with community as soon unless
|
|
31
|
+
* `apps` names a community entry of its own.
|
|
29
32
|
* @property {string} [target] default '_blank': another app opens in a new tab.
|
|
30
33
|
* @property {string} [rel] default 'noopener noreferrer' when the target is '_blank'.
|
|
31
34
|
*/
|
|
@@ -37,8 +40,9 @@ export function AppPage({ children, as: Tag, className, ...rest }: AppPageProps)
|
|
|
37
40
|
* @property {(id: string) => void} [onSelect] with no href, renders a button that calls this.
|
|
38
41
|
* @property {import('react').ComponentType<any>} [icon] a lucide icon component.
|
|
39
42
|
* @property {string} [swatch] a CSS colour for a 12px square in place of an icon, e.g. 'var(--olive)'.
|
|
40
|
-
* @property {boolean} [external] the item leaves this app: a trailing marker and a spoken suffix.
|
|
41
|
-
*
|
|
43
|
+
* @property {boolean} [external] the item leaves this app: a trailing marker and a spoken suffix. It is
|
|
44
|
+
* listed with the shortcuts, never among the pages.
|
|
45
|
+
* @property {string} [title] ignored: a visible label takes no tooltip, and the rail shows the label.
|
|
42
46
|
* @property {0|1} [depth] 1 indents the item under the one above it.
|
|
43
47
|
* @property {string} [target]
|
|
44
48
|
* @property {string} [rel]
|
|
@@ -64,13 +68,18 @@ export function AppPage({ children, as: Tag, className, ...rest }: AppPageProps)
|
|
|
64
68
|
*/
|
|
65
69
|
/**
|
|
66
70
|
* @typedef {Object} AppSidebarProps
|
|
67
|
-
* @property {'online'|'local'|'docs'|string} app which app renders the sidebar; its own switcher entry is left out.
|
|
71
|
+
* @property {'online'|'local'|'docs'|string} app which app renders the sidebar; its own switcher entry is left out, and online and local never show.
|
|
68
72
|
* @property {AppSidebarApp[]} [apps] the app switcher entries (default APP_SIDEBAR_APPS, no hrefs).
|
|
69
73
|
* @property {AppSidebarGroup[]} groups
|
|
70
74
|
* @property {string} [currentId] the id of the current item (aria-current="page").
|
|
71
75
|
* @property {string} [homeHref] the brand links here.
|
|
72
76
|
* @property {string} [brand] the brand's accessible name and tooltip, default 'peasant'.
|
|
73
|
-
* @property {AppSidebarSearch} [search] the app's search,
|
|
77
|
+
* @property {AppSidebarSearch} [search] the app's search, the first shortcut under the brand.
|
|
78
|
+
* @property {AppSidebarItem[]} [elsewhere] the app's links that leave it (collectives online, from the local app),
|
|
79
|
+
* listed in the shortcuts after the docs and community. An `external`
|
|
80
|
+
* item in `groups` moves there too.
|
|
81
|
+
* @property {string} [settingsHref] the app's settings: a gear in the footer, current when currentId is
|
|
82
|
+
* 'settings'. A `settings` item in `groups` becomes the gear instead.
|
|
74
83
|
* @property {'light'|'dark'} [theme] the current theme; with onThemeChange, the footer leads with the theme toggle.
|
|
75
84
|
* @property {(next: 'light'|'dark') => void} [onThemeChange] called with the theme to switch to.
|
|
76
85
|
* @property {AppSidebarAccount} [account]
|
|
@@ -98,7 +107,8 @@ export function AppPage({ children, as: Tag, className, ...rest }: AppPageProps)
|
|
|
98
107
|
* @property {import('react').ElementType} [as] the element, default 'div'.
|
|
99
108
|
* @property {string} [className]
|
|
100
109
|
*/
|
|
101
|
-
/** The app switcher's default entries, in order
|
|
110
|
+
/** The app switcher's default entries, in order: the docs (community as soon follows by itself).
|
|
111
|
+
* Online and local are never in a switcher, in any app. Consumers map their hrefs in.
|
|
102
112
|
* @type {ReadonlyArray<Readonly<AppSidebarApp>>} */
|
|
103
113
|
export const APP_SIDEBAR_APPS: ReadonlyArray<Readonly<AppSidebarApp>>;
|
|
104
114
|
export type AppSidebarApp = {
|
|
@@ -115,10 +125,15 @@ export type AppSidebarApp = {
|
|
|
115
125
|
*/
|
|
116
126
|
href?: string;
|
|
117
127
|
/**
|
|
118
|
-
* a short note after the label
|
|
119
|
-
* text (a place that does not exist yet), not a link.
|
|
128
|
+
* a short note after the label. With no href the entry is shown as text, not a link.
|
|
120
129
|
*/
|
|
121
130
|
tag?: string;
|
|
131
|
+
/**
|
|
132
|
+
* a place that does not exist yet: shown as text, aria-disabled, with a 'soon' note
|
|
133
|
+
* and no hover or press. The switcher always ends with community as soon unless
|
|
134
|
+
* `apps` names a community entry of its own.
|
|
135
|
+
*/
|
|
136
|
+
soon?: boolean;
|
|
122
137
|
/**
|
|
123
138
|
* default '_blank': another app opens in a new tab.
|
|
124
139
|
*/
|
|
@@ -151,11 +166,12 @@ export type AppSidebarItem = {
|
|
|
151
166
|
*/
|
|
152
167
|
swatch?: string;
|
|
153
168
|
/**
|
|
154
|
-
* the item leaves this app: a trailing marker and a spoken suffix.
|
|
169
|
+
* the item leaves this app: a trailing marker and a spoken suffix. It is
|
|
170
|
+
* listed with the shortcuts, never among the pages.
|
|
155
171
|
*/
|
|
156
172
|
external?: boolean;
|
|
157
173
|
/**
|
|
158
|
-
* tooltip
|
|
174
|
+
* ignored: a visible label takes no tooltip, and the rail shows the label.
|
|
159
175
|
*/
|
|
160
176
|
title?: string;
|
|
161
177
|
/**
|
|
@@ -203,7 +219,7 @@ export type AppSidebarAccount = {
|
|
|
203
219
|
};
|
|
204
220
|
export type AppSidebarProps = {
|
|
205
221
|
/**
|
|
206
|
-
* which app renders the sidebar; its own switcher entry is left out.
|
|
222
|
+
* which app renders the sidebar; its own switcher entry is left out, and online and local never show.
|
|
207
223
|
*/
|
|
208
224
|
app: "online" | "local" | "docs" | string;
|
|
209
225
|
/**
|
|
@@ -224,9 +240,20 @@ export type AppSidebarProps = {
|
|
|
224
240
|
*/
|
|
225
241
|
brand?: string;
|
|
226
242
|
/**
|
|
227
|
-
* the app's search,
|
|
243
|
+
* the app's search, the first shortcut under the brand.
|
|
228
244
|
*/
|
|
229
245
|
search?: AppSidebarSearch;
|
|
246
|
+
/**
|
|
247
|
+
* the app's links that leave it (collectives online, from the local app),
|
|
248
|
+
* listed in the shortcuts after the docs and community. An `external`
|
|
249
|
+
* item in `groups` moves there too.
|
|
250
|
+
*/
|
|
251
|
+
elsewhere?: AppSidebarItem[];
|
|
252
|
+
/**
|
|
253
|
+
* the app's settings: a gear in the footer, current when currentId is
|
|
254
|
+
* 'settings'. A `settings` item in `groups` becomes the gear instead.
|
|
255
|
+
*/
|
|
256
|
+
settingsHref?: string;
|
|
230
257
|
/**
|
|
231
258
|
* the current theme; with onThemeChange, the footer leads with the theme toggle.
|
|
232
259
|
*/
|