@peasant-labs/fairtrade 0.0.35 → 0.0.36
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/{GraphLegend-BJuccGWD.js → GraphLegend-7PmEpBZQ.js} +0 -1
- package/dist/lib/analytics.js +1 -5
- package/dist/lib/commons.js +93 -123
- package/dist/lib/components.css +1 -1
- package/dist/lib/graph.css +1 -1
- package/dist/lib/graph.js +5 -11
- package/dist/lib/types/AppSidebar.d.ts +53 -5
- package/dist/lib/{ui-DOj8c_45.js → ui-CfdUlwCE.js} +1908 -1833
- package/dist/lib/ui.js +2 -2
- package/package.json +1 -1
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-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-kicker{font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-strong);margin:0;font-weight:600}.gmp-navigator-note{max-width:var(--measure-prose);margin:var(--sp-1) 0 0;font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-3)}.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-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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as e, A as t, B as n, C as r, D as i, Dt as a, E as o, F as s, G as c, H as l, I as u, J as d, K as f, L as p, M as m, N as h, O as g, P as _, Q as v, R as y, S as b, T as x, Tt as S, U as C, V as w, W as T, X as E, Y as D, Z as O, _ as k, _t as A, a as j, at as M, b as N, c as P, ct as F, et as I, f as ee, g as te, i as L, it as ne, j as re, k as ie, l as ae, lt as oe, m as se, mt as ce, n as le, nt as ue, o as de, ot as fe, q as pe, r as me, rt as he, s as ge, st as _e, t as ve, tt as ye, v as be, w as xe, x as Se, y as Ce, yt as we, z as Te } from "./GraphLegend-
|
|
1
|
+
import { $ as e, A as t, B as n, C as r, D as i, Dt as a, E as o, F as s, G as c, H as l, I as u, J as d, K as f, L as p, M as m, N as h, O as g, P as _, Q as v, R as y, S as b, T as x, Tt as S, U as C, V as w, W as T, X as E, Y as D, Z as O, _ as k, _t as A, a as j, at as M, b as N, c as P, ct as F, et as I, f as ee, g as te, i as L, it as ne, j as re, k as ie, l as ae, lt as oe, m as se, mt as ce, n as le, nt as ue, o as de, ot as fe, q as pe, r as me, rt as he, s as ge, st as _e, t as ve, tt as ye, v as be, w as xe, x as Se, y as Ce, yt as we, z as Te } from "./GraphLegend-7PmEpBZQ.js";
|
|
2
2
|
import { memo as Ee, useCallback as R, useEffect as z, useMemo as B, useRef as V, useState as H } from "react";
|
|
3
3
|
import { Fragment as De, jsx as U, jsxs as W } from "react/jsx-runtime";
|
|
4
4
|
import { Box as Oe, Check as ke, ChevronDown as Ae, ChevronRight as G, Coins as je, CornerDownRight as Me, FileCode as Ne, FileDiff as Pe, FileText as Fe, Folder as Ie, GitMerge as Le, Hash as Re, Map as ze, Maximize2 as Be, MessageSquare as Ve, Minus as He, Plus as Ue, RotateCcw as We, RotateCw as Ge, Search as Ke, Share2 as qe, Star as Je, Tag as Ye, TriangleAlert as Xe, X as Ze } from "lucide-react";
|
|
@@ -895,20 +895,14 @@ function tn({ payload: e, grain: t = "package", expandedIds: n, onExpandedIdsCha
|
|
|
895
895
|
className: "gmp-navigator",
|
|
896
896
|
"aria-label": f,
|
|
897
897
|
children: [
|
|
898
|
-
/* @__PURE__ */
|
|
898
|
+
/* @__PURE__ */ U("header", {
|
|
899
899
|
className: "gmp-navigator-head",
|
|
900
|
-
children:
|
|
901
|
-
className: "gmp-navigator-kicker",
|
|
902
|
-
children: "browse the codebase"
|
|
903
|
-
}), /* @__PURE__ */ U("p", {
|
|
904
|
-
className: "gmp-navigator-note",
|
|
905
|
-
children: "choose an area for its recorded work, then open the spatial map when relationships matter"
|
|
906
|
-
})] }), /* @__PURE__ */ W("label", {
|
|
900
|
+
children: /* @__PURE__ */ W("label", {
|
|
907
901
|
className: "gmp-navigator-search",
|
|
908
902
|
children: [
|
|
909
903
|
/* @__PURE__ */ U(Ke, { "aria-hidden": "true" }),
|
|
910
904
|
/* @__PURE__ */ U("span", {
|
|
911
|
-
className: "
|
|
905
|
+
className: "gmp-sr",
|
|
912
906
|
children: "filter code areas"
|
|
913
907
|
}),
|
|
914
908
|
/* @__PURE__ */ U("input", {
|
|
@@ -922,7 +916,7 @@ function tn({ payload: e, grain: t = "package", expandedIds: n, onExpandedIdsCha
|
|
|
922
916
|
placeholder: "filter paths"
|
|
923
917
|
})
|
|
924
918
|
]
|
|
925
|
-
})
|
|
919
|
+
})
|
|
926
920
|
}),
|
|
927
921
|
b.staleSelectedId ? /* @__PURE__ */ W("p", {
|
|
928
922
|
className: "gmp-navigator-missing",
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The shared app sidebar: the brand mark
|
|
3
|
-
* groups, the switcher to the other apps
|
|
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 caller's nav groups, search, the switcher to the other apps, then the footer
|
|
4
|
+
* (the theme toggle, then the account). A sticky resizable column on desktop
|
|
4
5
|
* that collapses to an icon rail; a top bar plus an opaque drawer below 768px.
|
|
5
6
|
* @param {AppSidebarProps} props
|
|
6
7
|
*/
|
|
7
|
-
export default function AppSidebar({ app, apps, groups, currentId, homeHref, brand, account, accountSlot, LinkComponent, storageKey, defaultCollapsed, defaultWidth, minWidth, maxWidth, onCollapsedChange, label, className, }: AppSidebarProps): import("react").JSX.Element;
|
|
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;
|
|
8
9
|
/**
|
|
9
10
|
* The page frame for an app screen: the sidebar column beside a main column that takes the rest
|
|
10
11
|
* (min-width 0, so wide content stays contained). One column below 768px, the top bar above the page.
|
|
@@ -22,7 +23,9 @@ export function AppPage({ children, as: Tag, className, ...rest }: AppPageProps)
|
|
|
22
23
|
* @typedef {Object} AppSidebarApp
|
|
23
24
|
* @property {string} id 'online' | 'local' | 'docs', or another app id (shown with a generic icon).
|
|
24
25
|
* @property {string} label the switcher label.
|
|
25
|
-
* @property {string} [href] where the app lives. An app without an href is omitted.
|
|
26
|
+
* @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, e.g. 'soon'. With no href the entry is shown as
|
|
28
|
+
* text (a place that does not exist yet), not a link.
|
|
26
29
|
* @property {string} [target] default '_blank': another app opens in a new tab.
|
|
27
30
|
* @property {string} [rel] default 'noopener noreferrer' when the target is '_blank'.
|
|
28
31
|
*/
|
|
@@ -47,6 +50,13 @@ export function AppPage({ children, as: Tag, className, ...rest }: AppPageProps)
|
|
|
47
50
|
* @property {string} [ariaLabel] the nav landmark name; defaults to the label, then the id.
|
|
48
51
|
* @property {AppSidebarItem[]} items
|
|
49
52
|
*/
|
|
53
|
+
/**
|
|
54
|
+
* @typedef {Object} AppSidebarSearch
|
|
55
|
+
* @property {() => void} onOpen opens the app's search (a command palette, a search page).
|
|
56
|
+
* @property {string} [label] default 'search'.
|
|
57
|
+
* @property {string} [shortcut] the key hint shown beside the label, e.g. '⌘K'.
|
|
58
|
+
* @property {string} [keyShortcuts] the same keys for aria-keyshortcuts, e.g. 'Meta+K'.
|
|
59
|
+
*/
|
|
50
60
|
/**
|
|
51
61
|
* @typedef {Object} AppSidebarAccount
|
|
52
62
|
* @property {string} handle shown as @handle; its first letter fills the square avatar.
|
|
@@ -60,6 +70,9 @@ export function AppPage({ children, as: Tag, className, ...rest }: AppPageProps)
|
|
|
60
70
|
* @property {string} [currentId] the id of the current item (aria-current="page").
|
|
61
71
|
* @property {string} [homeHref] the brand links here.
|
|
62
72
|
* @property {string} [brand] the brand's accessible name and tooltip, default 'peasant'.
|
|
73
|
+
* @property {AppSidebarSearch} [search] the app's search, placed after its nav groups.
|
|
74
|
+
* @property {'light'|'dark'} [theme] the current theme; with onThemeChange, the footer leads with the theme toggle.
|
|
75
|
+
* @property {(next: 'light'|'dark') => void} [onThemeChange] called with the theme to switch to.
|
|
63
76
|
* @property {AppSidebarAccount} [account]
|
|
64
77
|
* @property {import('react').ReactNode} [accountSlot] replaces the default account row content.
|
|
65
78
|
* @property {import('react').ComponentType<any>} [LinkComponent] a router link; receives href, className,
|
|
@@ -98,9 +111,14 @@ export type AppSidebarApp = {
|
|
|
98
111
|
*/
|
|
99
112
|
label: string;
|
|
100
113
|
/**
|
|
101
|
-
* where the app lives. An app without an href is omitted.
|
|
114
|
+
* where the app lives. An app without an href is omitted, unless it has a tag.
|
|
102
115
|
*/
|
|
103
116
|
href?: string;
|
|
117
|
+
/**
|
|
118
|
+
* a short note after the label, e.g. 'soon'. With no href the entry is shown as
|
|
119
|
+
* text (a place that does not exist yet), not a link.
|
|
120
|
+
*/
|
|
121
|
+
tag?: string;
|
|
104
122
|
/**
|
|
105
123
|
* default '_blank': another app opens in a new tab.
|
|
106
124
|
*/
|
|
@@ -159,6 +177,24 @@ export type AppSidebarGroup = {
|
|
|
159
177
|
ariaLabel?: string;
|
|
160
178
|
items: AppSidebarItem[];
|
|
161
179
|
};
|
|
180
|
+
export type AppSidebarSearch = {
|
|
181
|
+
/**
|
|
182
|
+
* opens the app's search (a command palette, a search page).
|
|
183
|
+
*/
|
|
184
|
+
onOpen: () => void;
|
|
185
|
+
/**
|
|
186
|
+
* default 'search'.
|
|
187
|
+
*/
|
|
188
|
+
label?: string;
|
|
189
|
+
/**
|
|
190
|
+
* the key hint shown beside the label, e.g. '⌘K'.
|
|
191
|
+
*/
|
|
192
|
+
shortcut?: string;
|
|
193
|
+
/**
|
|
194
|
+
* the same keys for aria-keyshortcuts, e.g. 'Meta+K'.
|
|
195
|
+
*/
|
|
196
|
+
keyShortcuts?: string;
|
|
197
|
+
};
|
|
162
198
|
export type AppSidebarAccount = {
|
|
163
199
|
/**
|
|
164
200
|
* shown as
|
|
@@ -187,6 +223,18 @@ export type AppSidebarProps = {
|
|
|
187
223
|
* the brand's accessible name and tooltip, default 'peasant'.
|
|
188
224
|
*/
|
|
189
225
|
brand?: string;
|
|
226
|
+
/**
|
|
227
|
+
* the app's search, placed after its nav groups.
|
|
228
|
+
*/
|
|
229
|
+
search?: AppSidebarSearch;
|
|
230
|
+
/**
|
|
231
|
+
* the current theme; with onThemeChange, the footer leads with the theme toggle.
|
|
232
|
+
*/
|
|
233
|
+
theme?: "light" | "dark";
|
|
234
|
+
/**
|
|
235
|
+
* called with the theme to switch to.
|
|
236
|
+
*/
|
|
237
|
+
onThemeChange?: (next: "light" | "dark") => void;
|
|
190
238
|
account?: AppSidebarAccount;
|
|
191
239
|
/**
|
|
192
240
|
* replaces the default account row content.
|