@f0rbit/overview 0.2.1 → 0.2.2

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.
Files changed (2) hide show
  1. package/dist/overview.js +2648 -1111
  2. package/package.json +2 -2
package/dist/overview.js CHANGED
@@ -15,6 +15,7 @@ var __export = (target, all) => {
15
15
  };
16
16
 
17
17
  // packages/render/src/overview.tsx
18
+ import { createComponent as _$createComponent19 } from "@opentui/solid";
18
19
  import { render } from "@opentui/solid";
19
20
 
20
21
  // node_modules/.bun/@f0rbit+corpus@0.3.5+8e50f884e35f3403/node_modules/@f0rbit/corpus/dist/types.js
@@ -2494,10 +2495,25 @@ function mergeCliArgs(config, args) {
2494
2495
  }
2495
2496
 
2496
2497
  // packages/render/src/screens/main-screen.tsx
2498
+ import { memo as _$memo7 } from "@opentui/solid";
2499
+ import { insert as _$insert18 } from "@opentui/solid";
2500
+ import { createComponent as _$createComponent18 } from "@opentui/solid";
2501
+ import { effect as _$effect18 } from "@opentui/solid";
2502
+ import { createTextNode as _$createTextNode } from "@opentui/solid";
2503
+ import { insertNode as _$insertNode17 } from "@opentui/solid";
2504
+ import { setProp as _$setProp18 } from "@opentui/solid";
2505
+ import { createElement as _$createElement18 } from "@opentui/solid";
2497
2506
  import { createSignal as createSignal6, createEffect as createEffect5, createMemo as createMemo12, onMount, onCleanup, Show as Show16 } from "solid-js";
2498
2507
  import { useKeyboard as useKeyboard4, useTerminalDimensions, useRenderer } from "@opentui/solid";
2499
2508
 
2500
2509
  // packages/render/src/components/git-graph.tsx
2510
+ import { insertNode as _$insertNode } from "@opentui/solid";
2511
+ import { memo as _$memo } from "@opentui/solid";
2512
+ import { effect as _$effect } from "@opentui/solid";
2513
+ import { insert as _$insert } from "@opentui/solid";
2514
+ import { createComponent as _$createComponent } from "@opentui/solid";
2515
+ import { setProp as _$setProp } from "@opentui/solid";
2516
+ import { createElement as _$createElement } from "@opentui/solid";
2501
2517
  import { Show, For } from "solid-js";
2502
2518
 
2503
2519
  // packages/render/src/theme/index.ts
@@ -2543,15 +2559,27 @@ function parseGraphLine(line) {
2543
2559
  if (graphPart.includes("*")) {
2544
2560
  const starIdx = graphPart.indexOf("*");
2545
2561
  if (starIdx > 0) {
2546
- segments.push({ text: graphPart.slice(0, starIdx), color: theme.fg_dim });
2562
+ segments.push({
2563
+ text: graphPart.slice(0, starIdx),
2564
+ color: theme.fg_dim
2565
+ });
2547
2566
  }
2548
- segments.push({ text: "*", color: theme.green });
2567
+ segments.push({
2568
+ text: "*",
2569
+ color: theme.green
2570
+ });
2549
2571
  const after = graphPart.slice(starIdx + 1);
2550
2572
  if (after) {
2551
- segments.push({ text: after, color: theme.fg_dim });
2573
+ segments.push({
2574
+ text: after,
2575
+ color: theme.fg_dim
2576
+ });
2552
2577
  }
2553
2578
  } else {
2554
- segments.push({ text: graphPart, color: theme.fg_dim });
2579
+ segments.push({
2580
+ text: graphPart,
2581
+ color: theme.fg_dim
2582
+ });
2555
2583
  }
2556
2584
  rest = line.slice(graphPart.length);
2557
2585
  }
@@ -2559,104 +2587,211 @@ function parseGraphLine(line) {
2559
2587
  return segments;
2560
2588
  const hashMatch = rest.match(HASH_RE);
2561
2589
  if (hashMatch) {
2562
- segments.push({ text: hashMatch[0], color: theme.yellow });
2590
+ segments.push({
2591
+ text: hashMatch[0],
2592
+ color: theme.yellow
2593
+ });
2563
2594
  rest = rest.slice(hashMatch[0].length);
2564
2595
  }
2565
2596
  if (!rest)
2566
2597
  return segments;
2567
2598
  if (rest.startsWith(" ")) {
2568
- segments.push({ text: " ", color: theme.fg });
2599
+ segments.push({
2600
+ text: " ",
2601
+ color: theme.fg
2602
+ });
2569
2603
  rest = rest.slice(1);
2570
2604
  }
2571
2605
  const refMatch = rest.match(REF_RE);
2572
2606
  if (refMatch) {
2573
- segments.push({ text: refMatch[0], color: theme.cyan });
2607
+ segments.push({
2608
+ text: refMatch[0],
2609
+ color: theme.cyan
2610
+ });
2574
2611
  rest = rest.slice(refMatch[0].length);
2575
2612
  }
2576
2613
  if (rest) {
2577
- segments.push({ text: rest, color: theme.fg });
2614
+ segments.push({
2615
+ text: rest,
2616
+ color: theme.fg
2617
+ });
2578
2618
  }
2579
2619
  return segments;
2580
2620
  }
2581
2621
  function GraphLine(props) {
2582
2622
  const segments = () => parseGraphLine(props.line);
2583
- return /* @__PURE__ */ React.createElement("box", {
2584
- flexDirection: "row",
2585
- height: 1
2586
- }, /* @__PURE__ */ React.createElement(For, {
2587
- each: segments()
2588
- }, (seg) => /* @__PURE__ */ React.createElement("text", {
2589
- fg: seg.color,
2590
- content: seg.text
2591
- })));
2623
+ return (() => {
2624
+ var _el$ = _$createElement("box");
2625
+ _$setProp(_el$, "flexDirection", "row");
2626
+ _$setProp(_el$, "height", 1);
2627
+ _$insert(_el$, _$createComponent(For, {
2628
+ get each() {
2629
+ return segments();
2630
+ },
2631
+ children: (seg) => (() => {
2632
+ var _el$2 = _$createElement("text");
2633
+ _$effect((_p$) => {
2634
+ var { color: _v$, text: _v$2 } = seg;
2635
+ _v$ !== _p$.e && (_p$.e = _$setProp(_el$2, "fg", _v$, _p$.e));
2636
+ _v$2 !== _p$.t && (_p$.t = _$setProp(_el$2, "content", _v$2, _p$.t));
2637
+ return _p$;
2638
+ }, {
2639
+ e: undefined,
2640
+ t: undefined
2641
+ });
2642
+ return _el$2;
2643
+ })()
2644
+ }));
2645
+ return _el$;
2646
+ })();
2592
2647
  }
2593
2648
  function GitGraph(props) {
2594
- return /* @__PURE__ */ React.createElement("box", {
2595
- borderStyle: "rounded",
2596
- borderColor: props.focused ? theme.border_highlight : theme.border,
2597
- title: `git graph: ${props.repoName}`,
2598
- titleAlignment: "left",
2599
- flexDirection: "column",
2600
- flexGrow: 1,
2601
- height: props.height
2602
- }, /* @__PURE__ */ React.createElement(Show, {
2603
- when: !props.loading && props.graph && props.graph.lines.length > 0,
2604
- fallback: /* @__PURE__ */ React.createElement("text", {
2605
- fg: theme.fg_dim,
2606
- content: props.loading ? "loading..." : "(no commits)"
2607
- })
2608
- }, /* @__PURE__ */ React.createElement("scrollbox", {
2609
- focused: props.focused,
2610
- viewportCulling: true,
2611
- flexGrow: 1
2612
- }, /* @__PURE__ */ React.createElement(For, {
2613
- each: props.graph.lines
2614
- }, (line) => /* @__PURE__ */ React.createElement(GraphLine, {
2615
- line
2616
- }))), /* @__PURE__ */ React.createElement("box", {
2617
- height: 1
2618
- }, /* @__PURE__ */ React.createElement("text", {
2619
- fg: theme.fg_dim,
2620
- content: `(${props.graph.total_lines} commits)`
2621
- }))));
2649
+ return (() => {
2650
+ var _el$3 = _$createElement("box");
2651
+ _$setProp(_el$3, "borderStyle", "rounded");
2652
+ _$setProp(_el$3, "titleAlignment", "left");
2653
+ _$setProp(_el$3, "flexDirection", "column");
2654
+ _$setProp(_el$3, "flexGrow", 1);
2655
+ _$insert(_el$3, _$createComponent(Show, {
2656
+ get when() {
2657
+ return _$memo(() => !!(!props.loading && props.graph))() && props.graph.lines.length > 0;
2658
+ },
2659
+ get fallback() {
2660
+ return (() => {
2661
+ var _el$7 = _$createElement("text");
2662
+ _$effect((_p$) => {
2663
+ var _v$8 = theme.fg_dim, _v$9 = props.loading ? "loading..." : "(no commits)";
2664
+ _v$8 !== _p$.e && (_p$.e = _$setProp(_el$7, "fg", _v$8, _p$.e));
2665
+ _v$9 !== _p$.t && (_p$.t = _$setProp(_el$7, "content", _v$9, _p$.t));
2666
+ return _p$;
2667
+ }, {
2668
+ e: undefined,
2669
+ t: undefined
2670
+ });
2671
+ return _el$7;
2672
+ })();
2673
+ },
2674
+ get children() {
2675
+ return [(() => {
2676
+ var _el$4 = _$createElement("scrollbox");
2677
+ _$setProp(_el$4, "viewportCulling", true);
2678
+ _$setProp(_el$4, "flexGrow", 1);
2679
+ _$insert(_el$4, _$createComponent(For, {
2680
+ get each() {
2681
+ return props.graph.lines;
2682
+ },
2683
+ children: (line) => _$createComponent(GraphLine, {
2684
+ line
2685
+ })
2686
+ }));
2687
+ _$effect((_$p) => _$setProp(_el$4, "focused", props.focused, _$p));
2688
+ return _el$4;
2689
+ })(), (() => {
2690
+ var _el$5 = _$createElement("box"), _el$6 = _$createElement("text");
2691
+ _$insertNode(_el$5, _el$6);
2692
+ _$setProp(_el$5, "height", 1);
2693
+ _$effect((_p$) => {
2694
+ var _v$3 = theme.fg_dim, _v$4 = `(${props.graph.total_lines} commits)`;
2695
+ _v$3 !== _p$.e && (_p$.e = _$setProp(_el$6, "fg", _v$3, _p$.e));
2696
+ _v$4 !== _p$.t && (_p$.t = _$setProp(_el$6, "content", _v$4, _p$.t));
2697
+ return _p$;
2698
+ }, {
2699
+ e: undefined,
2700
+ t: undefined
2701
+ });
2702
+ return _el$5;
2703
+ })()];
2704
+ }
2705
+ }));
2706
+ _$effect((_p$) => {
2707
+ var _v$5 = props.focused ? theme.border_highlight : theme.border, _v$6 = `git graph: ${props.repoName}`, _v$7 = props.height;
2708
+ _v$5 !== _p$.e && (_p$.e = _$setProp(_el$3, "borderColor", _v$5, _p$.e));
2709
+ _v$6 !== _p$.t && (_p$.t = _$setProp(_el$3, "title", _v$6, _p$.t));
2710
+ _v$7 !== _p$.a && (_p$.a = _$setProp(_el$3, "height", _v$7, _p$.a));
2711
+ return _p$;
2712
+ }, {
2713
+ e: undefined,
2714
+ t: undefined,
2715
+ a: undefined
2716
+ });
2717
+ return _el$3;
2718
+ })();
2622
2719
  }
2623
2720
  // packages/render/src/components/repo-list.tsx
2721
+ import { effect as _$effect3 } from "@opentui/solid";
2722
+ import { insertNode as _$insertNode2 } from "@opentui/solid";
2723
+ import { insert as _$insert3 } from "@opentui/solid";
2724
+ import { createComponent as _$createComponent3 } from "@opentui/solid";
2725
+ import { setProp as _$setProp3 } from "@opentui/solid";
2726
+ import { createElement as _$createElement3 } from "@opentui/solid";
2624
2727
  import { createSignal, createMemo, createEffect, For as For3 } from "solid-js";
2625
2728
  import { useKeyboard } from "@opentui/solid";
2626
2729
 
2627
2730
  // packages/render/src/components/status-badge.tsx
2731
+ import { effect as _$effect2 } from "@opentui/solid";
2732
+ import { insert as _$insert2 } from "@opentui/solid";
2733
+ import { createComponent as _$createComponent2 } from "@opentui/solid";
2734
+ import { setProp as _$setProp2 } from "@opentui/solid";
2735
+ import { createElement as _$createElement2 } from "@opentui/solid";
2628
2736
  import { For as For2 } from "solid-js";
2629
2737
  function buildBadgeParts(status) {
2630
2738
  const parts = [];
2631
2739
  if (status.ocn_status) {
2632
2740
  switch (status.ocn_status.status) {
2633
2741
  case "busy":
2634
- parts.push({ text: "*", color: theme.yellow });
2742
+ parts.push({
2743
+ text: "*",
2744
+ color: theme.yellow
2745
+ });
2635
2746
  break;
2636
2747
  case "prompting":
2637
- parts.push({ text: ">", color: theme.magenta });
2748
+ parts.push({
2749
+ text: ">",
2750
+ color: theme.magenta
2751
+ });
2638
2752
  break;
2639
2753
  case "error":
2640
- parts.push({ text: "!", color: theme.red });
2754
+ parts.push({
2755
+ text: "!",
2756
+ color: theme.red
2757
+ });
2641
2758
  break;
2642
2759
  }
2643
2760
  }
2644
2761
  if (status.health === "conflict") {
2645
- parts.push({ text: "!", color: theme.status.conflict });
2762
+ parts.push({
2763
+ text: "!",
2764
+ color: theme.status.conflict
2765
+ });
2646
2766
  } else if (status.health === "clean" && status.modified_count === 0 && status.untracked_count === 0) {
2647
- parts.push({ text: "\u2713", color: theme.status.clean });
2767
+ parts.push({
2768
+ text: "\u2713",
2769
+ color: theme.status.clean
2770
+ });
2648
2771
  } else {
2649
2772
  if (status.modified_count > 0) {
2650
- parts.push({ text: `~${status.modified_count}`, color: theme.status.modified });
2773
+ parts.push({
2774
+ text: `~${status.modified_count}`,
2775
+ color: theme.status.modified
2776
+ });
2651
2777
  }
2652
2778
  if (status.untracked_count > 0 && status.modified_count === 0 && status.ahead === 0 && status.behind === 0) {
2653
- parts.push({ text: "?", color: theme.status.untracked });
2779
+ parts.push({
2780
+ text: "?",
2781
+ color: theme.status.untracked
2782
+ });
2654
2783
  }
2655
2784
  if (status.ahead > 0) {
2656
- parts.push({ text: `\u2191${status.ahead}`, color: theme.status.ahead });
2785
+ parts.push({
2786
+ text: `\u2191${status.ahead}`,
2787
+ color: theme.status.ahead
2788
+ });
2657
2789
  }
2658
2790
  if (status.behind > 0) {
2659
- parts.push({ text: `\u2193${status.behind}`, color: theme.status.behind });
2791
+ parts.push({
2792
+ text: `\u2193${status.behind}`,
2793
+ color: theme.status.behind
2794
+ });
2660
2795
  }
2661
2796
  }
2662
2797
  return parts;
@@ -2665,23 +2800,45 @@ function StatusBadge(props) {
2665
2800
  const parts = () => {
2666
2801
  const s = props.status;
2667
2802
  if (!s)
2668
- return [{ text: "\u2026", color: theme.fg_dim }];
2803
+ return [{
2804
+ text: "\u2026",
2805
+ color: theme.fg_dim
2806
+ }];
2669
2807
  return buildBadgeParts(s);
2670
2808
  };
2671
- return /* @__PURE__ */ React.createElement("box", {
2672
- flexDirection: "row"
2673
- }, /* @__PURE__ */ React.createElement(For2, {
2674
- each: parts()
2675
- }, (p) => /* @__PURE__ */ React.createElement("text", {
2676
- fg: p.color,
2677
- content: p.text
2678
- })));
2809
+ return (() => {
2810
+ var _el$ = _$createElement2("box");
2811
+ _$setProp2(_el$, "flexDirection", "row");
2812
+ _$insert2(_el$, _$createComponent2(For2, {
2813
+ get each() {
2814
+ return parts();
2815
+ },
2816
+ children: (p) => (() => {
2817
+ var _el$2 = _$createElement2("text");
2818
+ _$effect2((_p$) => {
2819
+ var { color: _v$, text: _v$2 } = p;
2820
+ _v$ !== _p$.e && (_p$.e = _$setProp2(_el$2, "fg", _v$, _p$.e));
2821
+ _v$2 !== _p$.t && (_p$.t = _$setProp2(_el$2, "content", _v$2, _p$.t));
2822
+ return _p$;
2823
+ }, {
2824
+ e: undefined,
2825
+ t: undefined
2826
+ });
2827
+ return _el$2;
2828
+ })()
2829
+ }));
2830
+ return _el$;
2831
+ })();
2679
2832
  }
2680
2833
 
2681
2834
  // packages/render/src/components/repo-list.tsx
2682
2835
  function flattenTree(nodes, depth = 0) {
2683
2836
  return nodes.flatMap((node, i) => {
2684
- const entry = { node, depth, is_last: i === nodes.length - 1 };
2837
+ const entry = {
2838
+ node,
2839
+ depth,
2840
+ is_last: i === nodes.length - 1
2841
+ };
2685
2842
  if (node.type === "directory" && node.expanded && node.children.length > 0) {
2686
2843
  return [entry, ...flattenTree(node.children, depth + 1)];
2687
2844
  }
@@ -2763,34 +2920,59 @@ function RepoList(props) {
2763
2920
  }
2764
2921
  }
2765
2922
  });
2766
- return /* @__PURE__ */ React.createElement("box", {
2767
- flexDirection: "column",
2768
- width: "100%",
2769
- height: "100%"
2770
- }, /* @__PURE__ */ React.createElement(For3, {
2771
- each: visible()
2772
- }, (entry, i) => {
2773
- const selected = () => i() === selectedIndex();
2774
- const indent = " ".repeat(entry.depth);
2775
- const conn = connector(entry.is_last);
2776
- const prefix = icon(entry.node);
2777
- const label = `${indent}${conn} ${prefix}${entry.node.name}`;
2778
- return /* @__PURE__ */ React.createElement("box", {
2779
- flexDirection: "row",
2780
- width: "100%",
2781
- height: 1,
2782
- backgroundColor: selected() ? theme.selection : undefined
2783
- }, /* @__PURE__ */ React.createElement("text", {
2784
- fg: selected() ? theme.fg : theme.fg_dark,
2785
- content: label
2786
- }), /* @__PURE__ */ React.createElement("box", {
2787
- flexGrow: 1
2788
- }), /* @__PURE__ */ React.createElement(StatusBadge, {
2789
- status: entry.node.status
2923
+ return (() => {
2924
+ var _el$ = _$createElement3("box");
2925
+ _$setProp3(_el$, "flexDirection", "column");
2926
+ _$setProp3(_el$, "width", "100%");
2927
+ _$setProp3(_el$, "height", "100%");
2928
+ _$insert3(_el$, _$createComponent3(For3, {
2929
+ get each() {
2930
+ return visible();
2931
+ },
2932
+ children: (entry, i) => {
2933
+ const selected = () => i() === selectedIndex();
2934
+ const indent = " ".repeat(entry.depth);
2935
+ const conn = connector(entry.is_last);
2936
+ const prefix = icon(entry.node);
2937
+ const label = `${indent}${conn} ${prefix}${entry.node.name}`;
2938
+ return (() => {
2939
+ var _el$2 = _$createElement3("box"), _el$3 = _$createElement3("text"), _el$4 = _$createElement3("box");
2940
+ _$insertNode2(_el$2, _el$3);
2941
+ _$insertNode2(_el$2, _el$4);
2942
+ _$setProp3(_el$2, "flexDirection", "row");
2943
+ _$setProp3(_el$2, "width", "100%");
2944
+ _$setProp3(_el$2, "height", 1);
2945
+ _$setProp3(_el$3, "content", label);
2946
+ _$setProp3(_el$4, "flexGrow", 1);
2947
+ _$insert3(_el$2, _$createComponent3(StatusBadge, {
2948
+ get status() {
2949
+ return entry.node.status;
2950
+ }
2951
+ }), null);
2952
+ _$effect3((_p$) => {
2953
+ var _v$ = selected() ? theme.selection : undefined, _v$2 = selected() ? theme.fg : theme.fg_dark;
2954
+ _v$ !== _p$.e && (_p$.e = _$setProp3(_el$2, "backgroundColor", _v$, _p$.e));
2955
+ _v$2 !== _p$.t && (_p$.t = _$setProp3(_el$3, "fg", _v$2, _p$.t));
2956
+ return _p$;
2957
+ }, {
2958
+ e: undefined,
2959
+ t: undefined
2960
+ });
2961
+ return _el$2;
2962
+ })();
2963
+ }
2790
2964
  }));
2791
- }));
2965
+ return _el$;
2966
+ })();
2792
2967
  }
2793
2968
  // packages/render/src/components/widget-container.tsx
2969
+ import { effect as _$effect15 } from "@opentui/solid";
2970
+ import { insertNode as _$insertNode14 } from "@opentui/solid";
2971
+ import { insert as _$insert15 } from "@opentui/solid";
2972
+ import { createComponent as _$createComponent15 } from "@opentui/solid";
2973
+ import { use as _$use } from "@opentui/solid";
2974
+ import { setProp as _$setProp15 } from "@opentui/solid";
2975
+ import { createElement as _$createElement15 } from "@opentui/solid";
2794
2976
  import { For as For11, Show as Show13, createMemo as createMemo10, createSignal as createSignal5, createEffect as createEffect4, on } from "solid-js";
2795
2977
  import { useKeyboard as useKeyboard2 } from "@opentui/solid";
2796
2978
 
@@ -2804,6 +2986,12 @@ function getWidget(id) {
2804
2986
  }
2805
2987
 
2806
2988
  // packages/render/src/components/widgets/git-status.tsx
2989
+ import { insertNode as _$insertNode3 } from "@opentui/solid";
2990
+ import { effect as _$effect4 } from "@opentui/solid";
2991
+ import { insert as _$insert4 } from "@opentui/solid";
2992
+ import { createComponent as _$createComponent4 } from "@opentui/solid";
2993
+ import { setProp as _$setProp4 } from "@opentui/solid";
2994
+ import { createElement as _$createElement4 } from "@opentui/solid";
2807
2995
  import { Show as Show2 } from "solid-js";
2808
2996
 
2809
2997
  // packages/render/src/lib/format.ts
@@ -2845,7 +3033,10 @@ function formatRelativeTime(timestamp) {
2845
3033
  }
2846
3034
 
2847
3035
  // packages/render/src/components/widgets/git-status.tsx
2848
- var size_hint = { span: "third", min_height: 2 };
3036
+ var size_hint = {
3037
+ span: "third",
3038
+ min_height: 2
3039
+ };
2849
3040
  var health_color = {
2850
3041
  clean: theme.green,
2851
3042
  dirty: theme.yellow,
@@ -2867,99 +3058,239 @@ function healthIndicator(health) {
2867
3058
  }
2868
3059
  function GitStatusWidget(props) {
2869
3060
  const s = () => props.status;
2870
- return /* @__PURE__ */ React.createElement("box", {
2871
- flexDirection: "column"
2872
- }, /* @__PURE__ */ React.createElement(Show2, {
2873
- when: s(),
2874
- fallback: /* @__PURE__ */ React.createElement("text", {
2875
- fg: theme.fg_dim,
2876
- content: "no repo selected"
2877
- })
2878
- }, (status) => {
2879
- const color = () => health_color[status().health];
2880
- const has_sync = () => status().ahead > 0 || status().behind > 0;
2881
- const has_wt = () => status().modified_count > 0 || status().staged_count > 0;
2882
- const has_extra = () => status().untracked_count > 0 || status().conflict_count > 0;
2883
- const has_stash = () => status().stash_count > 0;
2884
- return /* @__PURE__ */ React.createElement(Fragment, null, /* @__PURE__ */ React.createElement("box", {
2885
- flexDirection: "row",
2886
- height: 1,
2887
- gap: 1
2888
- }, /* @__PURE__ */ React.createElement("text", {
2889
- fg: color(),
2890
- content: healthIndicator(status().health)
2891
- }), /* @__PURE__ */ React.createElement("text", {
2892
- fg: theme.cyan,
2893
- content: status().current_branch
2894
- })), /* @__PURE__ */ React.createElement(Show2, {
2895
- when: has_sync(),
2896
- fallback: /* @__PURE__ */ React.createElement("box", {
2897
- flexDirection: "row",
2898
- height: 1
2899
- }, /* @__PURE__ */ React.createElement("text", {
2900
- fg: theme.fg_dim,
2901
- content: "up to date"
2902
- }))
2903
- }, /* @__PURE__ */ React.createElement("box", {
2904
- flexDirection: "row",
2905
- height: 1,
2906
- gap: 2
2907
- }, /* @__PURE__ */ React.createElement(Show2, {
2908
- when: status().ahead > 0
2909
- }, /* @__PURE__ */ React.createElement("text", {
2910
- fg: theme.status.ahead,
2911
- content: `\u2191${status().ahead} ahead`
2912
- })), /* @__PURE__ */ React.createElement(Show2, {
2913
- when: status().behind > 0
2914
- }, /* @__PURE__ */ React.createElement("text", {
2915
- fg: theme.status.behind,
2916
- content: `\u2193${status().behind} behind`
2917
- })))), /* @__PURE__ */ React.createElement(Show2, {
2918
- when: has_wt()
2919
- }, /* @__PURE__ */ React.createElement("box", {
2920
- flexDirection: "row",
2921
- height: 1,
2922
- gap: 2
2923
- }, /* @__PURE__ */ React.createElement(Show2, {
2924
- when: status().modified_count > 0
2925
- }, /* @__PURE__ */ React.createElement("text", {
2926
- fg: theme.status.modified,
2927
- content: `~${status().modified_count} mod`
2928
- })), /* @__PURE__ */ React.createElement(Show2, {
2929
- when: status().staged_count > 0
2930
- }, /* @__PURE__ */ React.createElement("text", {
2931
- fg: theme.green,
2932
- content: `+${status().staged_count} staged`
2933
- })))), /* @__PURE__ */ React.createElement(Show2, {
2934
- when: has_extra()
2935
- }, /* @__PURE__ */ React.createElement("box", {
2936
- flexDirection: "row",
2937
- height: 1,
2938
- gap: 2
2939
- }, /* @__PURE__ */ React.createElement(Show2, {
2940
- when: status().untracked_count > 0
2941
- }, /* @__PURE__ */ React.createElement("text", {
2942
- fg: theme.status.untracked,
2943
- content: `?${status().untracked_count} untracked`
2944
- })), /* @__PURE__ */ React.createElement(Show2, {
2945
- when: status().conflict_count > 0
2946
- }, /* @__PURE__ */ React.createElement("text", {
2947
- fg: theme.status.conflict,
2948
- content: `!${status().conflict_count} conflicts`
2949
- })))), /* @__PURE__ */ React.createElement("box", {
2950
- flexDirection: "row",
2951
- height: 1,
2952
- gap: 2
2953
- }, /* @__PURE__ */ React.createElement(Show2, {
2954
- when: has_stash()
2955
- }, /* @__PURE__ */ React.createElement("text", {
2956
- fg: theme.status.stash,
2957
- content: `\u2702 ${status().stash_count} stash`
2958
- })), /* @__PURE__ */ React.createElement("text", {
2959
- fg: theme.fg_dim,
2960
- content: formatRelativeTime(status().head_time)
2961
- })));
2962
- }));
3061
+ return (() => {
3062
+ var _el$ = _$createElement4("box");
3063
+ _$setProp4(_el$, "flexDirection", "column");
3064
+ _$insert4(_el$, _$createComponent4(Show2, {
3065
+ get when() {
3066
+ return s();
3067
+ },
3068
+ get fallback() {
3069
+ return (() => {
3070
+ var _el$2 = _$createElement4("text");
3071
+ _$setProp4(_el$2, "content", "no repo selected");
3072
+ _$effect4((_$p) => _$setProp4(_el$2, "fg", theme.fg_dim, _$p));
3073
+ return _el$2;
3074
+ })();
3075
+ },
3076
+ children: (status) => {
3077
+ const color = () => health_color[status().health];
3078
+ const has_sync = () => status().ahead > 0 || status().behind > 0;
3079
+ const has_wt = () => status().modified_count > 0 || status().staged_count > 0;
3080
+ const has_extra = () => status().untracked_count > 0 || status().conflict_count > 0;
3081
+ const has_stash = () => status().stash_count > 0;
3082
+ return [(() => {
3083
+ var _el$3 = _$createElement4("box"), _el$4 = _$createElement4("text"), _el$5 = _$createElement4("text");
3084
+ _$insertNode3(_el$3, _el$4);
3085
+ _$insertNode3(_el$3, _el$5);
3086
+ _$setProp4(_el$3, "flexDirection", "row");
3087
+ _$setProp4(_el$3, "height", 1);
3088
+ _$setProp4(_el$3, "gap", 1);
3089
+ _$effect4((_p$) => {
3090
+ var _v$ = color(), _v$2 = healthIndicator(status().health), _v$3 = theme.cyan, _v$4 = status().current_branch;
3091
+ _v$ !== _p$.e && (_p$.e = _$setProp4(_el$4, "fg", _v$, _p$.e));
3092
+ _v$2 !== _p$.t && (_p$.t = _$setProp4(_el$4, "content", _v$2, _p$.t));
3093
+ _v$3 !== _p$.a && (_p$.a = _$setProp4(_el$5, "fg", _v$3, _p$.a));
3094
+ _v$4 !== _p$.o && (_p$.o = _$setProp4(_el$5, "content", _v$4, _p$.o));
3095
+ return _p$;
3096
+ }, {
3097
+ e: undefined,
3098
+ t: undefined,
3099
+ a: undefined,
3100
+ o: undefined
3101
+ });
3102
+ return _el$3;
3103
+ })(), _$createComponent4(Show2, {
3104
+ get when() {
3105
+ return has_sync();
3106
+ },
3107
+ get fallback() {
3108
+ return (() => {
3109
+ var _el$16 = _$createElement4("box"), _el$17 = _$createElement4("text");
3110
+ _$insertNode3(_el$16, _el$17);
3111
+ _$setProp4(_el$16, "flexDirection", "row");
3112
+ _$setProp4(_el$16, "height", 1);
3113
+ _$setProp4(_el$17, "content", "up to date");
3114
+ _$effect4((_$p) => _$setProp4(_el$17, "fg", theme.fg_dim, _$p));
3115
+ return _el$16;
3116
+ })();
3117
+ },
3118
+ get children() {
3119
+ var _el$6 = _$createElement4("box");
3120
+ _$setProp4(_el$6, "flexDirection", "row");
3121
+ _$setProp4(_el$6, "height", 1);
3122
+ _$setProp4(_el$6, "gap", 2);
3123
+ _$insert4(_el$6, _$createComponent4(Show2, {
3124
+ get when() {
3125
+ return status().ahead > 0;
3126
+ },
3127
+ get children() {
3128
+ var _el$7 = _$createElement4("text");
3129
+ _$effect4((_p$) => {
3130
+ var _v$5 = theme.status.ahead, _v$6 = `\u2191${status().ahead} ahead`;
3131
+ _v$5 !== _p$.e && (_p$.e = _$setProp4(_el$7, "fg", _v$5, _p$.e));
3132
+ _v$6 !== _p$.t && (_p$.t = _$setProp4(_el$7, "content", _v$6, _p$.t));
3133
+ return _p$;
3134
+ }, {
3135
+ e: undefined,
3136
+ t: undefined
3137
+ });
3138
+ return _el$7;
3139
+ }
3140
+ }), null);
3141
+ _$insert4(_el$6, _$createComponent4(Show2, {
3142
+ get when() {
3143
+ return status().behind > 0;
3144
+ },
3145
+ get children() {
3146
+ var _el$8 = _$createElement4("text");
3147
+ _$effect4((_p$) => {
3148
+ var _v$7 = theme.status.behind, _v$8 = `\u2193${status().behind} behind`;
3149
+ _v$7 !== _p$.e && (_p$.e = _$setProp4(_el$8, "fg", _v$7, _p$.e));
3150
+ _v$8 !== _p$.t && (_p$.t = _$setProp4(_el$8, "content", _v$8, _p$.t));
3151
+ return _p$;
3152
+ }, {
3153
+ e: undefined,
3154
+ t: undefined
3155
+ });
3156
+ return _el$8;
3157
+ }
3158
+ }), null);
3159
+ return _el$6;
3160
+ }
3161
+ }), _$createComponent4(Show2, {
3162
+ get when() {
3163
+ return has_wt();
3164
+ },
3165
+ get children() {
3166
+ var _el$9 = _$createElement4("box");
3167
+ _$setProp4(_el$9, "flexDirection", "row");
3168
+ _$setProp4(_el$9, "height", 1);
3169
+ _$setProp4(_el$9, "gap", 2);
3170
+ _$insert4(_el$9, _$createComponent4(Show2, {
3171
+ get when() {
3172
+ return status().modified_count > 0;
3173
+ },
3174
+ get children() {
3175
+ var _el$0 = _$createElement4("text");
3176
+ _$effect4((_p$) => {
3177
+ var _v$9 = theme.status.modified, _v$0 = `~${status().modified_count} mod`;
3178
+ _v$9 !== _p$.e && (_p$.e = _$setProp4(_el$0, "fg", _v$9, _p$.e));
3179
+ _v$0 !== _p$.t && (_p$.t = _$setProp4(_el$0, "content", _v$0, _p$.t));
3180
+ return _p$;
3181
+ }, {
3182
+ e: undefined,
3183
+ t: undefined
3184
+ });
3185
+ return _el$0;
3186
+ }
3187
+ }), null);
3188
+ _$insert4(_el$9, _$createComponent4(Show2, {
3189
+ get when() {
3190
+ return status().staged_count > 0;
3191
+ },
3192
+ get children() {
3193
+ var _el$1 = _$createElement4("text");
3194
+ _$effect4((_p$) => {
3195
+ var _v$1 = theme.green, _v$10 = `+${status().staged_count} staged`;
3196
+ _v$1 !== _p$.e && (_p$.e = _$setProp4(_el$1, "fg", _v$1, _p$.e));
3197
+ _v$10 !== _p$.t && (_p$.t = _$setProp4(_el$1, "content", _v$10, _p$.t));
3198
+ return _p$;
3199
+ }, {
3200
+ e: undefined,
3201
+ t: undefined
3202
+ });
3203
+ return _el$1;
3204
+ }
3205
+ }), null);
3206
+ return _el$9;
3207
+ }
3208
+ }), _$createComponent4(Show2, {
3209
+ get when() {
3210
+ return has_extra();
3211
+ },
3212
+ get children() {
3213
+ var _el$10 = _$createElement4("box");
3214
+ _$setProp4(_el$10, "flexDirection", "row");
3215
+ _$setProp4(_el$10, "height", 1);
3216
+ _$setProp4(_el$10, "gap", 2);
3217
+ _$insert4(_el$10, _$createComponent4(Show2, {
3218
+ get when() {
3219
+ return status().untracked_count > 0;
3220
+ },
3221
+ get children() {
3222
+ var _el$11 = _$createElement4("text");
3223
+ _$effect4((_p$) => {
3224
+ var _v$11 = theme.status.untracked, _v$12 = `?${status().untracked_count} untracked`;
3225
+ _v$11 !== _p$.e && (_p$.e = _$setProp4(_el$11, "fg", _v$11, _p$.e));
3226
+ _v$12 !== _p$.t && (_p$.t = _$setProp4(_el$11, "content", _v$12, _p$.t));
3227
+ return _p$;
3228
+ }, {
3229
+ e: undefined,
3230
+ t: undefined
3231
+ });
3232
+ return _el$11;
3233
+ }
3234
+ }), null);
3235
+ _$insert4(_el$10, _$createComponent4(Show2, {
3236
+ get when() {
3237
+ return status().conflict_count > 0;
3238
+ },
3239
+ get children() {
3240
+ var _el$12 = _$createElement4("text");
3241
+ _$effect4((_p$) => {
3242
+ var _v$13 = theme.status.conflict, _v$14 = `!${status().conflict_count} conflicts`;
3243
+ _v$13 !== _p$.e && (_p$.e = _$setProp4(_el$12, "fg", _v$13, _p$.e));
3244
+ _v$14 !== _p$.t && (_p$.t = _$setProp4(_el$12, "content", _v$14, _p$.t));
3245
+ return _p$;
3246
+ }, {
3247
+ e: undefined,
3248
+ t: undefined
3249
+ });
3250
+ return _el$12;
3251
+ }
3252
+ }), null);
3253
+ return _el$10;
3254
+ }
3255
+ }), (() => {
3256
+ var _el$13 = _$createElement4("box"), _el$15 = _$createElement4("text");
3257
+ _$insertNode3(_el$13, _el$15);
3258
+ _$setProp4(_el$13, "flexDirection", "row");
3259
+ _$setProp4(_el$13, "height", 1);
3260
+ _$setProp4(_el$13, "gap", 2);
3261
+ _$insert4(_el$13, _$createComponent4(Show2, {
3262
+ get when() {
3263
+ return has_stash();
3264
+ },
3265
+ get children() {
3266
+ var _el$14 = _$createElement4("text");
3267
+ _$effect4((_p$) => {
3268
+ var _v$15 = theme.status.stash, _v$16 = `\u2702 ${status().stash_count} stash`;
3269
+ _v$15 !== _p$.e && (_p$.e = _$setProp4(_el$14, "fg", _v$15, _p$.e));
3270
+ _v$16 !== _p$.t && (_p$.t = _$setProp4(_el$14, "content", _v$16, _p$.t));
3271
+ return _p$;
3272
+ }, {
3273
+ e: undefined,
3274
+ t: undefined
3275
+ });
3276
+ return _el$14;
3277
+ }
3278
+ }), _el$15);
3279
+ _$effect4((_p$) => {
3280
+ var _v$17 = theme.fg_dim, _v$18 = formatRelativeTime(status().head_time);
3281
+ _v$17 !== _p$.e && (_p$.e = _$setProp4(_el$15, "fg", _v$17, _p$.e));
3282
+ _v$18 !== _p$.t && (_p$.t = _$setProp4(_el$15, "content", _v$18, _p$.t));
3283
+ return _p$;
3284
+ }, {
3285
+ e: undefined,
3286
+ t: undefined
3287
+ });
3288
+ return _el$13;
3289
+ })()];
3290
+ }
3291
+ }));
3292
+ return _el$;
3293
+ })();
2963
3294
  }
2964
3295
  registerWidget({
2965
3296
  id: "git-status",
@@ -2969,20 +3300,56 @@ registerWidget({
2969
3300
  });
2970
3301
 
2971
3302
  // packages/render/src/components/widgets/file-changes.tsx
3303
+ import { insert as _$insert5 } from "@opentui/solid";
3304
+ import { createComponent as _$createComponent5 } from "@opentui/solid";
3305
+ import { effect as _$effect5 } from "@opentui/solid";
3306
+ import { insertNode as _$insertNode4 } from "@opentui/solid";
3307
+ import { setProp as _$setProp5 } from "@opentui/solid";
3308
+ import { createElement as _$createElement5 } from "@opentui/solid";
2972
3309
  import { For as For4, Show as Show3 } from "solid-js";
2973
- var size_hint2 = { span: "half", min_height: 2 };
3310
+ var size_hint2 = {
3311
+ span: "half",
3312
+ min_height: 2
3313
+ };
2974
3314
  function statusIcon(change) {
2975
3315
  const icons = {
2976
- modified: { icon: "M", color: theme.status.modified },
2977
- added: { icon: "A", color: theme.green },
2978
- deleted: { icon: "D", color: theme.red },
2979
- renamed: { icon: "R", color: theme.cyan },
2980
- copied: { icon: "C", color: theme.magenta },
2981
- untracked: { icon: "?", color: theme.status.untracked },
2982
- ignored: { icon: "!", color: theme.fg_dim },
2983
- conflicted: { icon: "!", color: theme.status.conflict }
3316
+ modified: {
3317
+ icon: "M",
3318
+ color: theme.status.modified
3319
+ },
3320
+ added: {
3321
+ icon: "A",
3322
+ color: theme.green
3323
+ },
3324
+ deleted: {
3325
+ icon: "D",
3326
+ color: theme.red
3327
+ },
3328
+ renamed: {
3329
+ icon: "R",
3330
+ color: theme.cyan
3331
+ },
3332
+ copied: {
3333
+ icon: "C",
3334
+ color: theme.magenta
3335
+ },
3336
+ untracked: {
3337
+ icon: "?",
3338
+ color: theme.status.untracked
3339
+ },
3340
+ ignored: {
3341
+ icon: "!",
3342
+ color: theme.fg_dim
3343
+ },
3344
+ conflicted: {
3345
+ icon: "!",
3346
+ color: theme.status.conflict
3347
+ }
3348
+ };
3349
+ return icons[change.status] ?? {
3350
+ icon: " ",
3351
+ color: theme.fg
2984
3352
  };
2985
- return icons[change.status] ?? { icon: " ", color: theme.fg };
2986
3353
  }
2987
3354
  function basename3(path) {
2988
3355
  const parts = path.split("/");
@@ -2991,46 +3358,92 @@ function basename3(path) {
2991
3358
  function FileChangesWidget(props) {
2992
3359
  const changes = () => props.status?.changes ?? [];
2993
3360
  const header = () => `File Changes (${changes().length})`;
2994
- return /* @__PURE__ */ React.createElement("box", {
2995
- flexDirection: "column"
2996
- }, /* @__PURE__ */ React.createElement(Show3, {
2997
- when: props.status,
2998
- fallback: /* @__PURE__ */ React.createElement("text", {
2999
- fg: theme.fg_dim,
3000
- content: "no repo selected"
3001
- })
3002
- }, /* @__PURE__ */ React.createElement("box", {
3003
- flexDirection: "row",
3004
- height: 1
3005
- }, /* @__PURE__ */ React.createElement("text", {
3006
- fg: theme.fg,
3007
- content: header()
3008
- })), /* @__PURE__ */ React.createElement(Show3, {
3009
- when: changes().length > 0,
3010
- fallback: /* @__PURE__ */ React.createElement("text", {
3011
- fg: theme.fg_dim,
3012
- content: "(no changes)"
3013
- })
3014
- }, /* @__PURE__ */ React.createElement(For4, {
3015
- each: changes()
3016
- }, (change) => {
3017
- const si = () => statusIcon(change);
3018
- const staged_prefix = () => change.staged ? "+" : " ";
3019
- const label = () => truncate(basename3(change.path), props.width - 5);
3020
- return /* @__PURE__ */ React.createElement("box", {
3021
- flexDirection: "row",
3022
- height: 1
3023
- }, /* @__PURE__ */ React.createElement("text", {
3024
- fg: change.staged ? theme.green : si().color,
3025
- content: staged_prefix()
3026
- }), /* @__PURE__ */ React.createElement("text", {
3027
- fg: si().color,
3028
- content: si().icon + " "
3029
- }), /* @__PURE__ */ React.createElement("text", {
3030
- fg: theme.fg,
3031
- content: label()
3361
+ return (() => {
3362
+ var _el$ = _$createElement5("box");
3363
+ _$setProp5(_el$, "flexDirection", "column");
3364
+ _$insert5(_el$, _$createComponent5(Show3, {
3365
+ get when() {
3366
+ return props.status;
3367
+ },
3368
+ get fallback() {
3369
+ return (() => {
3370
+ var _el$4 = _$createElement5("text");
3371
+ _$setProp5(_el$4, "content", "no repo selected");
3372
+ _$effect5((_$p) => _$setProp5(_el$4, "fg", theme.fg_dim, _$p));
3373
+ return _el$4;
3374
+ })();
3375
+ },
3376
+ get children() {
3377
+ return [(() => {
3378
+ var _el$2 = _$createElement5("box"), _el$3 = _$createElement5("text");
3379
+ _$insertNode4(_el$2, _el$3);
3380
+ _$setProp5(_el$2, "flexDirection", "row");
3381
+ _$setProp5(_el$2, "height", 1);
3382
+ _$effect5((_p$) => {
3383
+ var _v$ = theme.fg, _v$2 = header();
3384
+ _v$ !== _p$.e && (_p$.e = _$setProp5(_el$3, "fg", _v$, _p$.e));
3385
+ _v$2 !== _p$.t && (_p$.t = _$setProp5(_el$3, "content", _v$2, _p$.t));
3386
+ return _p$;
3387
+ }, {
3388
+ e: undefined,
3389
+ t: undefined
3390
+ });
3391
+ return _el$2;
3392
+ })(), _$createComponent5(Show3, {
3393
+ get when() {
3394
+ return changes().length > 0;
3395
+ },
3396
+ get fallback() {
3397
+ return (() => {
3398
+ var _el$5 = _$createElement5("text");
3399
+ _$setProp5(_el$5, "content", "(no changes)");
3400
+ _$effect5((_$p) => _$setProp5(_el$5, "fg", theme.fg_dim, _$p));
3401
+ return _el$5;
3402
+ })();
3403
+ },
3404
+ get children() {
3405
+ return _$createComponent5(For4, {
3406
+ get each() {
3407
+ return changes();
3408
+ },
3409
+ children: (change) => {
3410
+ const si = () => statusIcon(change);
3411
+ const staged_prefix = () => change.staged ? "+" : " ";
3412
+ const label = () => truncate(basename3(change.path), props.width - 5);
3413
+ return (() => {
3414
+ var _el$6 = _$createElement5("box"), _el$7 = _$createElement5("text"), _el$8 = _$createElement5("text"), _el$9 = _$createElement5("text");
3415
+ _$insertNode4(_el$6, _el$7);
3416
+ _$insertNode4(_el$6, _el$8);
3417
+ _$insertNode4(_el$6, _el$9);
3418
+ _$setProp5(_el$6, "flexDirection", "row");
3419
+ _$setProp5(_el$6, "height", 1);
3420
+ _$effect5((_p$) => {
3421
+ var _v$3 = change.staged ? theme.green : si().color, _v$4 = staged_prefix(), _v$5 = si().color, _v$6 = si().icon + " ", _v$7 = theme.fg, _v$8 = label();
3422
+ _v$3 !== _p$.e && (_p$.e = _$setProp5(_el$7, "fg", _v$3, _p$.e));
3423
+ _v$4 !== _p$.t && (_p$.t = _$setProp5(_el$7, "content", _v$4, _p$.t));
3424
+ _v$5 !== _p$.a && (_p$.a = _$setProp5(_el$8, "fg", _v$5, _p$.a));
3425
+ _v$6 !== _p$.o && (_p$.o = _$setProp5(_el$8, "content", _v$6, _p$.o));
3426
+ _v$7 !== _p$.i && (_p$.i = _$setProp5(_el$9, "fg", _v$7, _p$.i));
3427
+ _v$8 !== _p$.n && (_p$.n = _$setProp5(_el$9, "content", _v$8, _p$.n));
3428
+ return _p$;
3429
+ }, {
3430
+ e: undefined,
3431
+ t: undefined,
3432
+ a: undefined,
3433
+ o: undefined,
3434
+ i: undefined,
3435
+ n: undefined
3436
+ });
3437
+ return _el$6;
3438
+ })();
3439
+ }
3440
+ });
3441
+ }
3442
+ })];
3443
+ }
3032
3444
  }));
3033
- }))));
3445
+ return _el$;
3446
+ })();
3034
3447
  }
3035
3448
  registerWidget({
3036
3449
  id: "file-changes",
@@ -3040,83 +3453,141 @@ registerWidget({
3040
3453
  });
3041
3454
 
3042
3455
  // packages/render/src/components/widgets/repo-meta.tsx
3456
+ import { insertNode as _$insertNode5 } from "@opentui/solid";
3457
+ import { effect as _$effect6 } from "@opentui/solid";
3458
+ import { insert as _$insert6 } from "@opentui/solid";
3459
+ import { createComponent as _$createComponent6 } from "@opentui/solid";
3460
+ import { setProp as _$setProp6 } from "@opentui/solid";
3461
+ import { createElement as _$createElement6 } from "@opentui/solid";
3043
3462
  import { Show as Show4 } from "solid-js";
3044
- var size_hint3 = { span: "third", min_height: 2 };
3463
+ var size_hint3 = {
3464
+ span: "third",
3465
+ min_height: 2
3466
+ };
3045
3467
  var SEMVER_RE = /^v?\d+\.\d+/;
3046
3468
  function RepoMetaWidget(props) {
3047
3469
  const s = () => props.status;
3048
- return /* @__PURE__ */ React.createElement("box", {
3049
- flexDirection: "column"
3050
- }, /* @__PURE__ */ React.createElement(Show4, {
3051
- when: s(),
3052
- fallback: /* @__PURE__ */ React.createElement("text", {
3053
- fg: theme.fg_dim,
3054
- content: "(no data)"
3055
- })
3056
- }, (status) => {
3057
- const latest_tag = () => status().tags[0] ?? null;
3058
- const tag_is_semver = () => {
3059
- const tag = latest_tag();
3060
- return tag !== null && SEMVER_RE.test(tag);
3061
- };
3062
- return /* @__PURE__ */ React.createElement(Fragment, null, /* @__PURE__ */ React.createElement("box", {
3063
- flexDirection: "row",
3064
- height: 1,
3065
- gap: 2
3066
- }, /* @__PURE__ */ React.createElement("box", {
3067
- flexDirection: "row",
3068
- gap: 1
3069
- }, /* @__PURE__ */ React.createElement("text", {
3070
- fg: theme.yellow,
3071
- content: `${status().total_commits}`
3072
- }), /* @__PURE__ */ React.createElement("text", {
3073
- fg: theme.fg_dim,
3074
- content: "commits"
3075
- })), /* @__PURE__ */ React.createElement("box", {
3076
- flexDirection: "row",
3077
- gap: 1
3078
- }, /* @__PURE__ */ React.createElement("text", {
3079
- fg: theme.yellow,
3080
- content: `${status().contributor_count}`
3081
- }), /* @__PURE__ */ React.createElement("text", {
3082
- fg: theme.fg_dim,
3083
- content: "contributors"
3084
- }))), /* @__PURE__ */ React.createElement("box", {
3085
- flexDirection: "row",
3086
- height: 1,
3087
- gap: 2
3088
- }, /* @__PURE__ */ React.createElement("box", {
3089
- flexDirection: "row",
3090
- gap: 1
3091
- }, /* @__PURE__ */ React.createElement("text", {
3092
- fg: theme.yellow,
3093
- content: formatBytes(status().repo_size_bytes)
3094
- }), /* @__PURE__ */ React.createElement("text", {
3095
- fg: theme.fg_dim,
3096
- content: "on disk"
3097
- })), /* @__PURE__ */ React.createElement("box", {
3098
- flexDirection: "row",
3099
- gap: 1
3100
- }, /* @__PURE__ */ React.createElement("text", {
3101
- fg: theme.yellow,
3102
- content: `${status().tags.length}`
3103
- }), /* @__PURE__ */ React.createElement("text", {
3104
- fg: theme.fg_dim,
3105
- content: "tags"
3106
- }))), /* @__PURE__ */ React.createElement(Show4, {
3107
- when: latest_tag()
3108
- }, /* @__PURE__ */ React.createElement("box", {
3109
- flexDirection: "row",
3110
- height: 1,
3111
- gap: 1
3112
- }, /* @__PURE__ */ React.createElement("text", {
3113
- fg: theme.fg_dim,
3114
- content: "latest:"
3115
- }), /* @__PURE__ */ React.createElement("text", {
3116
- fg: tag_is_semver() ? theme.green : theme.fg,
3117
- content: latest_tag()
3118
- }))));
3119
- }));
3470
+ return (() => {
3471
+ var _el$ = _$createElement6("box");
3472
+ _$setProp6(_el$, "flexDirection", "column");
3473
+ _$insert6(_el$, _$createComponent6(Show4, {
3474
+ get when() {
3475
+ return s();
3476
+ },
3477
+ get fallback() {
3478
+ return (() => {
3479
+ var _el$2 = _$createElement6("text");
3480
+ _$setProp6(_el$2, "content", "(no data)");
3481
+ _$effect6((_$p) => _$setProp6(_el$2, "fg", theme.fg_dim, _$p));
3482
+ return _el$2;
3483
+ })();
3484
+ },
3485
+ children: (status) => {
3486
+ const latest_tag = () => status().tags[0] ?? null;
3487
+ const tag_is_semver = () => {
3488
+ const tag = latest_tag();
3489
+ return tag !== null && SEMVER_RE.test(tag);
3490
+ };
3491
+ return [(() => {
3492
+ var _el$3 = _$createElement6("box"), _el$4 = _$createElement6("box"), _el$5 = _$createElement6("text"), _el$6 = _$createElement6("text"), _el$7 = _$createElement6("box"), _el$8 = _$createElement6("text"), _el$9 = _$createElement6("text");
3493
+ _$insertNode5(_el$3, _el$4);
3494
+ _$insertNode5(_el$3, _el$7);
3495
+ _$setProp6(_el$3, "flexDirection", "row");
3496
+ _$setProp6(_el$3, "height", 1);
3497
+ _$setProp6(_el$3, "gap", 2);
3498
+ _$insertNode5(_el$4, _el$5);
3499
+ _$insertNode5(_el$4, _el$6);
3500
+ _$setProp6(_el$4, "flexDirection", "row");
3501
+ _$setProp6(_el$4, "gap", 1);
3502
+ _$setProp6(_el$6, "content", "commits");
3503
+ _$insertNode5(_el$7, _el$8);
3504
+ _$insertNode5(_el$7, _el$9);
3505
+ _$setProp6(_el$7, "flexDirection", "row");
3506
+ _$setProp6(_el$7, "gap", 1);
3507
+ _$setProp6(_el$9, "content", "contributors");
3508
+ _$effect6((_p$) => {
3509
+ var _v$ = theme.yellow, _v$2 = `${status().total_commits}`, _v$3 = theme.fg_dim, _v$4 = theme.yellow, _v$5 = `${status().contributor_count}`, _v$6 = theme.fg_dim;
3510
+ _v$ !== _p$.e && (_p$.e = _$setProp6(_el$5, "fg", _v$, _p$.e));
3511
+ _v$2 !== _p$.t && (_p$.t = _$setProp6(_el$5, "content", _v$2, _p$.t));
3512
+ _v$3 !== _p$.a && (_p$.a = _$setProp6(_el$6, "fg", _v$3, _p$.a));
3513
+ _v$4 !== _p$.o && (_p$.o = _$setProp6(_el$8, "fg", _v$4, _p$.o));
3514
+ _v$5 !== _p$.i && (_p$.i = _$setProp6(_el$8, "content", _v$5, _p$.i));
3515
+ _v$6 !== _p$.n && (_p$.n = _$setProp6(_el$9, "fg", _v$6, _p$.n));
3516
+ return _p$;
3517
+ }, {
3518
+ e: undefined,
3519
+ t: undefined,
3520
+ a: undefined,
3521
+ o: undefined,
3522
+ i: undefined,
3523
+ n: undefined
3524
+ });
3525
+ return _el$3;
3526
+ })(), (() => {
3527
+ var _el$0 = _$createElement6("box"), _el$1 = _$createElement6("box"), _el$10 = _$createElement6("text"), _el$11 = _$createElement6("text"), _el$12 = _$createElement6("box"), _el$13 = _$createElement6("text"), _el$14 = _$createElement6("text");
3528
+ _$insertNode5(_el$0, _el$1);
3529
+ _$insertNode5(_el$0, _el$12);
3530
+ _$setProp6(_el$0, "flexDirection", "row");
3531
+ _$setProp6(_el$0, "height", 1);
3532
+ _$setProp6(_el$0, "gap", 2);
3533
+ _$insertNode5(_el$1, _el$10);
3534
+ _$insertNode5(_el$1, _el$11);
3535
+ _$setProp6(_el$1, "flexDirection", "row");
3536
+ _$setProp6(_el$1, "gap", 1);
3537
+ _$setProp6(_el$11, "content", "on disk");
3538
+ _$insertNode5(_el$12, _el$13);
3539
+ _$insertNode5(_el$12, _el$14);
3540
+ _$setProp6(_el$12, "flexDirection", "row");
3541
+ _$setProp6(_el$12, "gap", 1);
3542
+ _$setProp6(_el$14, "content", "tags");
3543
+ _$effect6((_p$) => {
3544
+ var _v$7 = theme.yellow, _v$8 = formatBytes(status().repo_size_bytes), _v$9 = theme.fg_dim, _v$0 = theme.yellow, _v$1 = `${status().tags.length}`, _v$10 = theme.fg_dim;
3545
+ _v$7 !== _p$.e && (_p$.e = _$setProp6(_el$10, "fg", _v$7, _p$.e));
3546
+ _v$8 !== _p$.t && (_p$.t = _$setProp6(_el$10, "content", _v$8, _p$.t));
3547
+ _v$9 !== _p$.a && (_p$.a = _$setProp6(_el$11, "fg", _v$9, _p$.a));
3548
+ _v$0 !== _p$.o && (_p$.o = _$setProp6(_el$13, "fg", _v$0, _p$.o));
3549
+ _v$1 !== _p$.i && (_p$.i = _$setProp6(_el$13, "content", _v$1, _p$.i));
3550
+ _v$10 !== _p$.n && (_p$.n = _$setProp6(_el$14, "fg", _v$10, _p$.n));
3551
+ return _p$;
3552
+ }, {
3553
+ e: undefined,
3554
+ t: undefined,
3555
+ a: undefined,
3556
+ o: undefined,
3557
+ i: undefined,
3558
+ n: undefined
3559
+ });
3560
+ return _el$0;
3561
+ })(), _$createComponent6(Show4, {
3562
+ get when() {
3563
+ return latest_tag();
3564
+ },
3565
+ get children() {
3566
+ var _el$15 = _$createElement6("box"), _el$16 = _$createElement6("text"), _el$17 = _$createElement6("text");
3567
+ _$insertNode5(_el$15, _el$16);
3568
+ _$insertNode5(_el$15, _el$17);
3569
+ _$setProp6(_el$15, "flexDirection", "row");
3570
+ _$setProp6(_el$15, "height", 1);
3571
+ _$setProp6(_el$15, "gap", 1);
3572
+ _$setProp6(_el$16, "content", "latest:");
3573
+ _$effect6((_p$) => {
3574
+ var _v$11 = theme.fg_dim, _v$12 = tag_is_semver() ? theme.green : theme.fg, _v$13 = latest_tag();
3575
+ _v$11 !== _p$.e && (_p$.e = _$setProp6(_el$16, "fg", _v$11, _p$.e));
3576
+ _v$12 !== _p$.t && (_p$.t = _$setProp6(_el$17, "fg", _v$12, _p$.t));
3577
+ _v$13 !== _p$.a && (_p$.a = _$setProp6(_el$17, "content", _v$13, _p$.a));
3578
+ return _p$;
3579
+ }, {
3580
+ e: undefined,
3581
+ t: undefined,
3582
+ a: undefined
3583
+ });
3584
+ return _el$15;
3585
+ }
3586
+ })];
3587
+ }
3588
+ }));
3589
+ return _el$;
3590
+ })();
3120
3591
  }
3121
3592
  registerWidget({
3122
3593
  id: "repo-meta",
@@ -3126,8 +3597,17 @@ registerWidget({
3126
3597
  });
3127
3598
 
3128
3599
  // packages/render/src/components/widgets/branch-list.tsx
3600
+ import { insertNode as _$insertNode6 } from "@opentui/solid";
3601
+ import { effect as _$effect7 } from "@opentui/solid";
3602
+ import { insert as _$insert7 } from "@opentui/solid";
3603
+ import { createComponent as _$createComponent7 } from "@opentui/solid";
3604
+ import { setProp as _$setProp7 } from "@opentui/solid";
3605
+ import { createElement as _$createElement7 } from "@opentui/solid";
3129
3606
  import { For as For5, Show as Show5, createMemo as createMemo2 } from "solid-js";
3130
- var size_hint4 = { span: "half", min_height: 2 };
3607
+ var size_hint4 = {
3608
+ span: "half",
3609
+ min_height: 2
3610
+ };
3131
3611
  var MAX_VISIBLE = 10;
3132
3612
  var STALE_THRESHOLD = 30 * 24 * 60 * 60;
3133
3613
  function sortBranches(branches) {
@@ -3146,57 +3626,147 @@ function BranchListWidget(props) {
3146
3626
  const visible = () => branches().slice(0, MAX_VISIBLE);
3147
3627
  const overflow = () => Math.max(0, branches().length - MAX_VISIBLE);
3148
3628
  const has_sync = (b) => b.ahead > 0 || b.behind > 0;
3149
- return /* @__PURE__ */ React.createElement("box", {
3150
- flexDirection: "column"
3151
- }, /* @__PURE__ */ React.createElement(Show5, {
3152
- when: props.status,
3153
- fallback: /* @__PURE__ */ React.createElement("text", {
3154
- fg: theme.fg_dim,
3155
- content: "no repo selected"
3156
- })
3157
- }, (status) => /* @__PURE__ */ React.createElement(Fragment, null, /* @__PURE__ */ React.createElement("text", {
3158
- fg: theme.fg_dark,
3159
- content: `Branches (${status().branches.length})`
3160
- }), /* @__PURE__ */ React.createElement(Show5, {
3161
- when: branches().length > 0,
3162
- fallback: /* @__PURE__ */ React.createElement("text", {
3163
- fg: theme.fg_dim,
3164
- content: "(no branches)"
3165
- })
3166
- }, /* @__PURE__ */ React.createElement(For5, {
3167
- each: visible()
3168
- }, (branch) => /* @__PURE__ */ React.createElement("box", {
3169
- flexDirection: "row",
3170
- height: 1
3171
- }, /* @__PURE__ */ React.createElement("text", {
3172
- fg: branch.is_current ? theme.green : theme.fg,
3173
- content: branch.is_current ? "* " : " "
3174
- }), /* @__PURE__ */ React.createElement("text", {
3175
- fg: branch.is_current ? theme.green : theme.fg,
3176
- content: truncate(branch.name, props.width - 20)
3177
- }), /* @__PURE__ */ React.createElement(Show5, {
3178
- when: has_sync(branch)
3179
- }, /* @__PURE__ */ React.createElement(Show5, {
3180
- when: branch.ahead > 0
3181
- }, /* @__PURE__ */ React.createElement("text", {
3182
- fg: theme.yellow,
3183
- content: ` \u2191${branch.ahead}`
3184
- })), /* @__PURE__ */ React.createElement(Show5, {
3185
- when: branch.behind > 0
3186
- }, /* @__PURE__ */ React.createElement("text", {
3187
- fg: theme.cyan,
3188
- content: ` \u2193${branch.behind}`
3189
- }))), /* @__PURE__ */ React.createElement(Show5, {
3190
- when: isStale(branch)
3191
- }, /* @__PURE__ */ React.createElement("text", {
3192
- fg: theme.orange,
3193
- content: " (stale)"
3194
- })))), /* @__PURE__ */ React.createElement(Show5, {
3195
- when: overflow() > 0
3196
- }, /* @__PURE__ */ React.createElement("text", {
3197
- fg: theme.fg_dim,
3198
- content: `+${overflow()} more`
3199
- }))))));
3629
+ return (() => {
3630
+ var _el$ = _$createElement7("box");
3631
+ _$setProp7(_el$, "flexDirection", "column");
3632
+ _$insert7(_el$, _$createComponent7(Show5, {
3633
+ get when() {
3634
+ return props.status;
3635
+ },
3636
+ get fallback() {
3637
+ return (() => {
3638
+ var _el$2 = _$createElement7("text");
3639
+ _$setProp7(_el$2, "content", "no repo selected");
3640
+ _$effect7((_$p) => _$setProp7(_el$2, "fg", theme.fg_dim, _$p));
3641
+ return _el$2;
3642
+ })();
3643
+ },
3644
+ children: (status) => [(() => {
3645
+ var _el$3 = _$createElement7("text");
3646
+ _$effect7((_p$) => {
3647
+ var _v$ = theme.fg_dark, _v$2 = `Branches (${status().branches.length})`;
3648
+ _v$ !== _p$.e && (_p$.e = _$setProp7(_el$3, "fg", _v$, _p$.e));
3649
+ _v$2 !== _p$.t && (_p$.t = _$setProp7(_el$3, "content", _v$2, _p$.t));
3650
+ return _p$;
3651
+ }, {
3652
+ e: undefined,
3653
+ t: undefined
3654
+ });
3655
+ return _el$3;
3656
+ })(), _$createComponent7(Show5, {
3657
+ get when() {
3658
+ return branches().length > 0;
3659
+ },
3660
+ get fallback() {
3661
+ return (() => {
3662
+ var _el$5 = _$createElement7("text");
3663
+ _$setProp7(_el$5, "content", "(no branches)");
3664
+ _$effect7((_$p) => _$setProp7(_el$5, "fg", theme.fg_dim, _$p));
3665
+ return _el$5;
3666
+ })();
3667
+ },
3668
+ get children() {
3669
+ return [_$createComponent7(For5, {
3670
+ get each() {
3671
+ return visible();
3672
+ },
3673
+ children: (branch) => (() => {
3674
+ var _el$6 = _$createElement7("box"), _el$7 = _$createElement7("text"), _el$8 = _$createElement7("text");
3675
+ _$insertNode6(_el$6, _el$7);
3676
+ _$insertNode6(_el$6, _el$8);
3677
+ _$setProp7(_el$6, "flexDirection", "row");
3678
+ _$setProp7(_el$6, "height", 1);
3679
+ _$insert7(_el$6, _$createComponent7(Show5, {
3680
+ get when() {
3681
+ return has_sync(branch);
3682
+ },
3683
+ get children() {
3684
+ return [_$createComponent7(Show5, {
3685
+ get when() {
3686
+ return branch.ahead > 0;
3687
+ },
3688
+ get children() {
3689
+ var _el$9 = _$createElement7("text");
3690
+ _$effect7((_p$) => {
3691
+ var _v$5 = theme.yellow, _v$6 = ` \u2191${branch.ahead}`;
3692
+ _v$5 !== _p$.e && (_p$.e = _$setProp7(_el$9, "fg", _v$5, _p$.e));
3693
+ _v$6 !== _p$.t && (_p$.t = _$setProp7(_el$9, "content", _v$6, _p$.t));
3694
+ return _p$;
3695
+ }, {
3696
+ e: undefined,
3697
+ t: undefined
3698
+ });
3699
+ return _el$9;
3700
+ }
3701
+ }), _$createComponent7(Show5, {
3702
+ get when() {
3703
+ return branch.behind > 0;
3704
+ },
3705
+ get children() {
3706
+ var _el$0 = _$createElement7("text");
3707
+ _$effect7((_p$) => {
3708
+ var _v$7 = theme.cyan, _v$8 = ` \u2193${branch.behind}`;
3709
+ _v$7 !== _p$.e && (_p$.e = _$setProp7(_el$0, "fg", _v$7, _p$.e));
3710
+ _v$8 !== _p$.t && (_p$.t = _$setProp7(_el$0, "content", _v$8, _p$.t));
3711
+ return _p$;
3712
+ }, {
3713
+ e: undefined,
3714
+ t: undefined
3715
+ });
3716
+ return _el$0;
3717
+ }
3718
+ })];
3719
+ }
3720
+ }), null);
3721
+ _$insert7(_el$6, _$createComponent7(Show5, {
3722
+ get when() {
3723
+ return isStale(branch);
3724
+ },
3725
+ get children() {
3726
+ var _el$1 = _$createElement7("text");
3727
+ _$setProp7(_el$1, "content", " (stale)");
3728
+ _$effect7((_$p) => _$setProp7(_el$1, "fg", theme.orange, _$p));
3729
+ return _el$1;
3730
+ }
3731
+ }), null);
3732
+ _$effect7((_p$) => {
3733
+ var _v$9 = branch.is_current ? theme.green : theme.fg, _v$0 = branch.is_current ? "* " : " ", _v$1 = branch.is_current ? theme.green : theme.fg, _v$10 = truncate(branch.name, props.width - 20);
3734
+ _v$9 !== _p$.e && (_p$.e = _$setProp7(_el$7, "fg", _v$9, _p$.e));
3735
+ _v$0 !== _p$.t && (_p$.t = _$setProp7(_el$7, "content", _v$0, _p$.t));
3736
+ _v$1 !== _p$.a && (_p$.a = _$setProp7(_el$8, "fg", _v$1, _p$.a));
3737
+ _v$10 !== _p$.o && (_p$.o = _$setProp7(_el$8, "content", _v$10, _p$.o));
3738
+ return _p$;
3739
+ }, {
3740
+ e: undefined,
3741
+ t: undefined,
3742
+ a: undefined,
3743
+ o: undefined
3744
+ });
3745
+ return _el$6;
3746
+ })()
3747
+ }), _$createComponent7(Show5, {
3748
+ get when() {
3749
+ return overflow() > 0;
3750
+ },
3751
+ get children() {
3752
+ var _el$4 = _$createElement7("text");
3753
+ _$effect7((_p$) => {
3754
+ var _v$3 = theme.fg_dim, _v$4 = `+${overflow()} more`;
3755
+ _v$3 !== _p$.e && (_p$.e = _$setProp7(_el$4, "fg", _v$3, _p$.e));
3756
+ _v$4 !== _p$.t && (_p$.t = _$setProp7(_el$4, "content", _v$4, _p$.t));
3757
+ return _p$;
3758
+ }, {
3759
+ e: undefined,
3760
+ t: undefined
3761
+ });
3762
+ return _el$4;
3763
+ }
3764
+ })];
3765
+ }
3766
+ })]
3767
+ }));
3768
+ return _el$;
3769
+ })();
3200
3770
  }
3201
3771
  registerWidget({
3202
3772
  id: "branch-list",
@@ -3206,6 +3776,13 @@ registerWidget({
3206
3776
  });
3207
3777
 
3208
3778
  // packages/render/src/components/widgets/github-prs.tsx
3779
+ import { insertNode as _$insertNode7 } from "@opentui/solid";
3780
+ import { insert as _$insert8 } from "@opentui/solid";
3781
+ import { memo as _$memo2 } from "@opentui/solid";
3782
+ import { createComponent as _$createComponent8 } from "@opentui/solid";
3783
+ import { effect as _$effect8 } from "@opentui/solid";
3784
+ import { setProp as _$setProp8 } from "@opentui/solid";
3785
+ import { createElement as _$createElement8 } from "@opentui/solid";
3209
3786
  import { For as For6, Show as Show6, Switch, Match, createMemo as createMemo3 } from "solid-js";
3210
3787
 
3211
3788
  // packages/render/src/lib/use-github.ts
@@ -3284,32 +3861,62 @@ function useGithub(repo_path, remote_url) {
3284
3861
  }
3285
3862
 
3286
3863
  // packages/render/src/components/widgets/github-prs.tsx
3287
- var size_hint5 = { span: "half", min_height: 2 };
3864
+ var size_hint5 = {
3865
+ span: "half",
3866
+ min_height: 2
3867
+ };
3288
3868
  var MAX_VISIBLE2 = 10;
3289
3869
  function statusIcon2(pr) {
3290
3870
  if (pr.is_draft)
3291
- return { char: "\u25CF", color: theme.orange };
3871
+ return {
3872
+ char: "\u25CF",
3873
+ color: theme.orange
3874
+ };
3292
3875
  if (pr.state === "closed" || pr.state === "CLOSED")
3293
- return { char: "\u25CF", color: theme.fg_dim };
3294
- return { char: "\u25CF", color: theme.green };
3876
+ return {
3877
+ char: "\u25CF",
3878
+ color: theme.fg_dim
3879
+ };
3880
+ return {
3881
+ char: "\u25CF",
3882
+ color: theme.green
3883
+ };
3295
3884
  }
3296
3885
  function ciIndicator(pr) {
3297
3886
  if (pr.ci_status === "success")
3298
- return { char: "\u2713", color: theme.green };
3887
+ return {
3888
+ char: "\u2713",
3889
+ color: theme.green
3890
+ };
3299
3891
  if (pr.ci_status === "failure")
3300
- return { char: "\u2717", color: theme.red };
3892
+ return {
3893
+ char: "\u2717",
3894
+ color: theme.red
3895
+ };
3301
3896
  if (pr.ci_status === "pending")
3302
- return { char: "\u25CC", color: theme.yellow };
3897
+ return {
3898
+ char: "\u25CC",
3899
+ color: theme.yellow
3900
+ };
3303
3901
  return null;
3304
3902
  }
3305
3903
  function reviewIndicator(pr) {
3306
3904
  const d = pr.review_decision;
3307
3905
  if (d === "APPROVED")
3308
- return { char: "R", color: theme.green };
3906
+ return {
3907
+ char: "R",
3908
+ color: theme.green
3909
+ };
3309
3910
  if (d === "CHANGES_REQUESTED")
3310
- return { char: "R", color: theme.orange };
3911
+ return {
3912
+ char: "R",
3913
+ color: theme.orange
3914
+ };
3311
3915
  if (d === "REVIEW_REQUIRED")
3312
- return { char: "R", color: theme.fg_dim };
3916
+ return {
3917
+ char: "R",
3918
+ color: theme.fg_dim
3919
+ };
3313
3920
  return null;
3314
3921
  }
3315
3922
  function GithubPRsWidget(props) {
@@ -3327,81 +3934,197 @@ function GithubPRsWidget(props) {
3327
3934
  const suffix_len = (ci ? 2 : 0) + (rv ? 2 : 0);
3328
3935
  const available = props.width - 2 - number_str.length - 1 - suffix_len;
3329
3936
  const title = truncate(pr.title, Math.max(1, available));
3330
- return { si, ci, rv, number_str, title };
3937
+ return {
3938
+ si,
3939
+ ci,
3940
+ rv,
3941
+ number_str,
3942
+ title
3943
+ };
3331
3944
  };
3332
- return /* @__PURE__ */ React.createElement("box", {
3333
- flexDirection: "column"
3334
- }, /* @__PURE__ */ React.createElement(Switch, null, /* @__PURE__ */ React.createElement(Match, {
3335
- when: github2.error()?.kind === "gh_cli_not_found"
3336
- }, /* @__PURE__ */ React.createElement("text", {
3337
- fg: theme.fg_dim,
3338
- content: "gh not available"
3339
- }), /* @__PURE__ */ React.createElement("text", {
3340
- fg: theme.fg_dim,
3341
- content: "install: https://cli.github.com"
3342
- })), /* @__PURE__ */ React.createElement(Match, {
3343
- when: github2.error()?.kind === "not_github_repo"
3344
- }, /* @__PURE__ */ React.createElement("text", {
3345
- fg: theme.fg_dim,
3346
- content: "not a GitHub repo"
3347
- })), /* @__PURE__ */ React.createElement(Match, {
3348
- when: github2.error()?.kind === "gh_auth_required"
3349
- }, /* @__PURE__ */ React.createElement("text", {
3350
- fg: theme.fg_dim,
3351
- content: "gh auth required"
3352
- })), /* @__PURE__ */ React.createElement(Match, {
3353
- when: github2.error()
3354
- }, /* @__PURE__ */ React.createElement("text", {
3355
- fg: theme.fg_dim,
3356
- content: "GitHub error"
3357
- })), /* @__PURE__ */ React.createElement(Match, {
3358
- when: github2.loading() && !github2.data()
3359
- }, /* @__PURE__ */ React.createElement("text", {
3360
- fg: theme.fg_dim,
3361
- content: "loading\u2026"
3362
- })), /* @__PURE__ */ React.createElement(Match, {
3363
- when: true
3364
- }, /* @__PURE__ */ React.createElement("text", {
3365
- fg: theme.fg_dark,
3366
- content: `GitHub PRs (${prs().length})`
3367
- }), /* @__PURE__ */ React.createElement(Show6, {
3368
- when: prs().length > 0,
3369
- fallback: /* @__PURE__ */ React.createElement("text", {
3370
- fg: theme.fg_dim,
3371
- content: "(no open PRs)"
3372
- })
3373
- }, /* @__PURE__ */ React.createElement(For6, {
3374
- each: visible()
3375
- }, (pr) => {
3376
- const line = () => formatPrLine(pr);
3377
- return /* @__PURE__ */ React.createElement("box", {
3378
- flexDirection: "row",
3379
- height: 1
3380
- }, /* @__PURE__ */ React.createElement("text", {
3381
- fg: line().si.color,
3382
- content: `${line().si.char} `
3383
- }), /* @__PURE__ */ React.createElement("text", {
3384
- fg: theme.fg_dim,
3385
- content: line().number_str
3386
- }), /* @__PURE__ */ React.createElement("text", {
3387
- content: ` ${line().title}`
3388
- }), /* @__PURE__ */ React.createElement(Show6, {
3389
- when: line().ci
3390
- }, (ci) => /* @__PURE__ */ React.createElement("text", {
3391
- fg: ci().color,
3392
- content: ` ${ci().char}`
3393
- })), /* @__PURE__ */ React.createElement(Show6, {
3394
- when: line().rv
3395
- }, (rv) => /* @__PURE__ */ React.createElement("text", {
3396
- fg: rv().color,
3397
- content: ` ${rv().char}`
3398
- })));
3399
- }), /* @__PURE__ */ React.createElement(Show6, {
3400
- when: overflow() > 0
3401
- }, /* @__PURE__ */ React.createElement("text", {
3402
- fg: theme.fg_dim,
3403
- content: `+${overflow()} more`
3404
- }))))));
3945
+ return (() => {
3946
+ var _el$ = _$createElement8("box");
3947
+ _$setProp8(_el$, "flexDirection", "column");
3948
+ _$insert8(_el$, _$createComponent8(Switch, {
3949
+ get children() {
3950
+ return [_$createComponent8(Match, {
3951
+ get when() {
3952
+ return github2.error()?.kind === "gh_cli_not_found";
3953
+ },
3954
+ get children() {
3955
+ return [(() => {
3956
+ var _el$2 = _$createElement8("text");
3957
+ _$setProp8(_el$2, "content", "gh not available");
3958
+ _$effect8((_$p) => _$setProp8(_el$2, "fg", theme.fg_dim, _$p));
3959
+ return _el$2;
3960
+ })(), (() => {
3961
+ var _el$3 = _$createElement8("text");
3962
+ _$setProp8(_el$3, "content", "install: https://cli.github.com");
3963
+ _$effect8((_$p) => _$setProp8(_el$3, "fg", theme.fg_dim, _$p));
3964
+ return _el$3;
3965
+ })()];
3966
+ }
3967
+ }), _$createComponent8(Match, {
3968
+ get when() {
3969
+ return github2.error()?.kind === "not_github_repo";
3970
+ },
3971
+ get children() {
3972
+ var _el$4 = _$createElement8("text");
3973
+ _$setProp8(_el$4, "content", "not a GitHub repo");
3974
+ _$effect8((_$p) => _$setProp8(_el$4, "fg", theme.fg_dim, _$p));
3975
+ return _el$4;
3976
+ }
3977
+ }), _$createComponent8(Match, {
3978
+ get when() {
3979
+ return github2.error()?.kind === "gh_auth_required";
3980
+ },
3981
+ get children() {
3982
+ var _el$5 = _$createElement8("text");
3983
+ _$setProp8(_el$5, "content", "gh auth required");
3984
+ _$effect8((_$p) => _$setProp8(_el$5, "fg", theme.fg_dim, _$p));
3985
+ return _el$5;
3986
+ }
3987
+ }), _$createComponent8(Match, {
3988
+ get when() {
3989
+ return github2.error();
3990
+ },
3991
+ get children() {
3992
+ var _el$6 = _$createElement8("text");
3993
+ _$setProp8(_el$6, "content", "GitHub error");
3994
+ _$effect8((_$p) => _$setProp8(_el$6, "fg", theme.fg_dim, _$p));
3995
+ return _el$6;
3996
+ }
3997
+ }), _$createComponent8(Match, {
3998
+ get when() {
3999
+ return _$memo2(() => !!github2.loading())() && !github2.data();
4000
+ },
4001
+ get children() {
4002
+ var _el$7 = _$createElement8("text");
4003
+ _$setProp8(_el$7, "content", "loading\u2026");
4004
+ _$effect8((_$p) => _$setProp8(_el$7, "fg", theme.fg_dim, _$p));
4005
+ return _el$7;
4006
+ }
4007
+ }), _$createComponent8(Match, {
4008
+ when: true,
4009
+ get children() {
4010
+ return [(() => {
4011
+ var _el$8 = _$createElement8("text");
4012
+ _$effect8((_p$) => {
4013
+ var _v$ = theme.fg_dark, _v$2 = `GitHub PRs (${prs().length})`;
4014
+ _v$ !== _p$.e && (_p$.e = _$setProp8(_el$8, "fg", _v$, _p$.e));
4015
+ _v$2 !== _p$.t && (_p$.t = _$setProp8(_el$8, "content", _v$2, _p$.t));
4016
+ return _p$;
4017
+ }, {
4018
+ e: undefined,
4019
+ t: undefined
4020
+ });
4021
+ return _el$8;
4022
+ })(), _$createComponent8(Show6, {
4023
+ get when() {
4024
+ return prs().length > 0;
4025
+ },
4026
+ get fallback() {
4027
+ return (() => {
4028
+ var _el$0 = _$createElement8("text");
4029
+ _$setProp8(_el$0, "content", "(no open PRs)");
4030
+ _$effect8((_$p) => _$setProp8(_el$0, "fg", theme.fg_dim, _$p));
4031
+ return _el$0;
4032
+ })();
4033
+ },
4034
+ get children() {
4035
+ return [_$createComponent8(For6, {
4036
+ get each() {
4037
+ return visible();
4038
+ },
4039
+ children: (pr) => {
4040
+ const line = () => formatPrLine(pr);
4041
+ return (() => {
4042
+ var _el$1 = _$createElement8("box"), _el$10 = _$createElement8("text"), _el$11 = _$createElement8("text"), _el$12 = _$createElement8("text");
4043
+ _$insertNode7(_el$1, _el$10);
4044
+ _$insertNode7(_el$1, _el$11);
4045
+ _$insertNode7(_el$1, _el$12);
4046
+ _$setProp8(_el$1, "flexDirection", "row");
4047
+ _$setProp8(_el$1, "height", 1);
4048
+ _$insert8(_el$1, _$createComponent8(Show6, {
4049
+ get when() {
4050
+ return line().ci;
4051
+ },
4052
+ children: (ci) => (() => {
4053
+ var _el$13 = _$createElement8("text");
4054
+ _$effect8((_p$) => {
4055
+ var _v$0 = ci().color, _v$1 = ` ${ci().char}`;
4056
+ _v$0 !== _p$.e && (_p$.e = _$setProp8(_el$13, "fg", _v$0, _p$.e));
4057
+ _v$1 !== _p$.t && (_p$.t = _$setProp8(_el$13, "content", _v$1, _p$.t));
4058
+ return _p$;
4059
+ }, {
4060
+ e: undefined,
4061
+ t: undefined
4062
+ });
4063
+ return _el$13;
4064
+ })()
4065
+ }), null);
4066
+ _$insert8(_el$1, _$createComponent8(Show6, {
4067
+ get when() {
4068
+ return line().rv;
4069
+ },
4070
+ children: (rv) => (() => {
4071
+ var _el$14 = _$createElement8("text");
4072
+ _$effect8((_p$) => {
4073
+ var _v$10 = rv().color, _v$11 = ` ${rv().char}`;
4074
+ _v$10 !== _p$.e && (_p$.e = _$setProp8(_el$14, "fg", _v$10, _p$.e));
4075
+ _v$11 !== _p$.t && (_p$.t = _$setProp8(_el$14, "content", _v$11, _p$.t));
4076
+ return _p$;
4077
+ }, {
4078
+ e: undefined,
4079
+ t: undefined
4080
+ });
4081
+ return _el$14;
4082
+ })()
4083
+ }), null);
4084
+ _$effect8((_p$) => {
4085
+ var _v$5 = line().si.color, _v$6 = `${line().si.char} `, _v$7 = theme.fg_dim, _v$8 = line().number_str, _v$9 = ` ${line().title}`;
4086
+ _v$5 !== _p$.e && (_p$.e = _$setProp8(_el$10, "fg", _v$5, _p$.e));
4087
+ _v$6 !== _p$.t && (_p$.t = _$setProp8(_el$10, "content", _v$6, _p$.t));
4088
+ _v$7 !== _p$.a && (_p$.a = _$setProp8(_el$11, "fg", _v$7, _p$.a));
4089
+ _v$8 !== _p$.o && (_p$.o = _$setProp8(_el$11, "content", _v$8, _p$.o));
4090
+ _v$9 !== _p$.i && (_p$.i = _$setProp8(_el$12, "content", _v$9, _p$.i));
4091
+ return _p$;
4092
+ }, {
4093
+ e: undefined,
4094
+ t: undefined,
4095
+ a: undefined,
4096
+ o: undefined,
4097
+ i: undefined
4098
+ });
4099
+ return _el$1;
4100
+ })();
4101
+ }
4102
+ }), _$createComponent8(Show6, {
4103
+ get when() {
4104
+ return overflow() > 0;
4105
+ },
4106
+ get children() {
4107
+ var _el$9 = _$createElement8("text");
4108
+ _$effect8((_p$) => {
4109
+ var _v$3 = theme.fg_dim, _v$4 = `+${overflow()} more`;
4110
+ _v$3 !== _p$.e && (_p$.e = _$setProp8(_el$9, "fg", _v$3, _p$.e));
4111
+ _v$4 !== _p$.t && (_p$.t = _$setProp8(_el$9, "content", _v$4, _p$.t));
4112
+ return _p$;
4113
+ }, {
4114
+ e: undefined,
4115
+ t: undefined
4116
+ });
4117
+ return _el$9;
4118
+ }
4119
+ })];
4120
+ }
4121
+ })];
4122
+ }
4123
+ })];
4124
+ }
4125
+ }));
4126
+ return _el$;
4127
+ })();
3405
4128
  }
3406
4129
  registerWidget({
3407
4130
  id: "github-prs",
@@ -3411,18 +4134,43 @@ registerWidget({
3411
4134
  });
3412
4135
 
3413
4136
  // packages/render/src/components/widgets/github-ci.tsx
4137
+ import { insert as _$insert9 } from "@opentui/solid";
4138
+ import { memo as _$memo3 } from "@opentui/solid";
4139
+ import { createComponent as _$createComponent9 } from "@opentui/solid";
4140
+ import { effect as _$effect9 } from "@opentui/solid";
4141
+ import { insertNode as _$insertNode8 } from "@opentui/solid";
4142
+ import { setProp as _$setProp9 } from "@opentui/solid";
4143
+ import { createElement as _$createElement9 } from "@opentui/solid";
3414
4144
  import { For as For7, Show as Show7, createMemo as createMemo4 } from "solid-js";
3415
- var size_hint6 = { span: "third", min_height: 1 };
4145
+ var size_hint6 = {
4146
+ span: "third",
4147
+ min_height: 1
4148
+ };
3416
4149
  function statusIcon3(run) {
3417
4150
  if (run.conclusion === "success")
3418
- return { icon: "\u2713", color: theme.green };
4151
+ return {
4152
+ icon: "\u2713",
4153
+ color: theme.green
4154
+ };
3419
4155
  if (run.conclusion === "failure")
3420
- return { icon: "\u2717", color: theme.red };
4156
+ return {
4157
+ icon: "\u2717",
4158
+ color: theme.red
4159
+ };
3421
4160
  if (run.conclusion === "cancelled")
3422
- return { icon: "\u2298", color: theme.fg_dim };
4161
+ return {
4162
+ icon: "\u2298",
4163
+ color: theme.fg_dim
4164
+ };
3423
4165
  if (run.status === "in_progress" || run.status === "queued")
3424
- return { icon: "\u25CC", color: theme.yellow };
3425
- return { icon: "\u25CC", color: theme.fg_dim };
4166
+ return {
4167
+ icon: "\u25CC",
4168
+ color: theme.yellow
4169
+ };
4170
+ return {
4171
+ icon: "\u25CC",
4172
+ color: theme.fg_dim
4173
+ };
3426
4174
  }
3427
4175
  function GithubCIWidget(props) {
3428
4176
  const repo_path = createMemo4(() => props.status?.path ?? null);
@@ -3436,67 +4184,130 @@ function GithubCIWidget(props) {
3436
4184
  const visible_runs = createMemo4(() => {
3437
4185
  return runs().slice(0, 6);
3438
4186
  });
3439
- return /* @__PURE__ */ React.createElement("box", {
3440
- flexDirection: "column"
3441
- }, /* @__PURE__ */ React.createElement(Show7, {
3442
- when: github2.error()?.kind === "gh_cli_not_found"
3443
- }, /* @__PURE__ */ React.createElement("box", {
3444
- flexDirection: "row",
3445
- height: 1,
3446
- gap: 1
3447
- }, /* @__PURE__ */ React.createElement("text", {
3448
- fg: theme.fg_dim,
3449
- content: "gh not available"
3450
- }), /* @__PURE__ */ React.createElement("text", {
3451
- fg: theme.blue,
3452
- content: "https://cli.github.com"
3453
- }))), /* @__PURE__ */ React.createElement(Show7, {
3454
- when: github2.error()?.kind === "not_github_repo"
3455
- }, /* @__PURE__ */ React.createElement("text", {
3456
- fg: theme.fg_dim,
3457
- content: "not a GitHub repo"
3458
- })), /* @__PURE__ */ React.createElement(Show7, {
3459
- when: !github2.error() && github2.loading()
3460
- }, /* @__PURE__ */ React.createElement("text", {
3461
- fg: theme.fg_dim,
3462
- content: "loading\u2026"
3463
- })), /* @__PURE__ */ React.createElement(Show7, {
3464
- when: !github2.error() && !github2.loading()
3465
- }, /* @__PURE__ */ React.createElement(Show7, {
3466
- when: runs().length === 0
3467
- }, /* @__PURE__ */ React.createElement("text", {
3468
- fg: theme.fg_dim,
3469
- content: "no CI runs"
3470
- })), /* @__PURE__ */ React.createElement(Show7, {
3471
- when: all_green()
3472
- }, /* @__PURE__ */ React.createElement("text", {
3473
- fg: theme.green,
3474
- content: "CI: all green \u2713"
3475
- })), /* @__PURE__ */ React.createElement(Show7, {
3476
- when: !all_green() && runs().length > 0
3477
- }, /* @__PURE__ */ React.createElement(For7, {
3478
- each: visible_runs()
3479
- }, (run) => {
3480
- const si = () => statusIcon3(run);
3481
- const name_budget = () => {
3482
- const branch_str = ` ${run.head_branch}`;
3483
- return Math.max(1, props.width - 2 - branch_str.length);
3484
- };
3485
- return /* @__PURE__ */ React.createElement("box", {
3486
- flexDirection: "row",
3487
- height: 1
3488
- }, /* @__PURE__ */ React.createElement("text", {
3489
- fg: si().color,
3490
- content: si().icon
3491
- }), /* @__PURE__ */ React.createElement("text", {
3492
- content: " "
3493
- }), /* @__PURE__ */ React.createElement("text", {
3494
- content: truncate(run.name, name_budget())
3495
- }), /* @__PURE__ */ React.createElement("text", {
3496
- fg: theme.fg_dim,
3497
- content: ` ${run.head_branch}`
3498
- }));
3499
- }))));
4187
+ return (() => {
4188
+ var _el$ = _$createElement9("box");
4189
+ _$setProp9(_el$, "flexDirection", "column");
4190
+ _$insert9(_el$, _$createComponent9(Show7, {
4191
+ get when() {
4192
+ return github2.error()?.kind === "gh_cli_not_found";
4193
+ },
4194
+ get children() {
4195
+ var _el$2 = _$createElement9("box"), _el$3 = _$createElement9("text"), _el$4 = _$createElement9("text");
4196
+ _$insertNode8(_el$2, _el$3);
4197
+ _$insertNode8(_el$2, _el$4);
4198
+ _$setProp9(_el$2, "flexDirection", "row");
4199
+ _$setProp9(_el$2, "height", 1);
4200
+ _$setProp9(_el$2, "gap", 1);
4201
+ _$setProp9(_el$3, "content", "gh not available");
4202
+ _$setProp9(_el$4, "content", "https://cli.github.com");
4203
+ _$effect9((_p$) => {
4204
+ var _v$ = theme.fg_dim, _v$2 = theme.blue;
4205
+ _v$ !== _p$.e && (_p$.e = _$setProp9(_el$3, "fg", _v$, _p$.e));
4206
+ _v$2 !== _p$.t && (_p$.t = _$setProp9(_el$4, "fg", _v$2, _p$.t));
4207
+ return _p$;
4208
+ }, {
4209
+ e: undefined,
4210
+ t: undefined
4211
+ });
4212
+ return _el$2;
4213
+ }
4214
+ }), null);
4215
+ _$insert9(_el$, _$createComponent9(Show7, {
4216
+ get when() {
4217
+ return github2.error()?.kind === "not_github_repo";
4218
+ },
4219
+ get children() {
4220
+ var _el$5 = _$createElement9("text");
4221
+ _$setProp9(_el$5, "content", "not a GitHub repo");
4222
+ _$effect9((_$p) => _$setProp9(_el$5, "fg", theme.fg_dim, _$p));
4223
+ return _el$5;
4224
+ }
4225
+ }), null);
4226
+ _$insert9(_el$, _$createComponent9(Show7, {
4227
+ get when() {
4228
+ return _$memo3(() => !!!github2.error())() && github2.loading();
4229
+ },
4230
+ get children() {
4231
+ var _el$6 = _$createElement9("text");
4232
+ _$setProp9(_el$6, "content", "loading\u2026");
4233
+ _$effect9((_$p) => _$setProp9(_el$6, "fg", theme.fg_dim, _$p));
4234
+ return _el$6;
4235
+ }
4236
+ }), null);
4237
+ _$insert9(_el$, _$createComponent9(Show7, {
4238
+ get when() {
4239
+ return _$memo3(() => !!!github2.error())() && !github2.loading();
4240
+ },
4241
+ get children() {
4242
+ return [_$createComponent9(Show7, {
4243
+ get when() {
4244
+ return runs().length === 0;
4245
+ },
4246
+ get children() {
4247
+ var _el$7 = _$createElement9("text");
4248
+ _$setProp9(_el$7, "content", "no CI runs");
4249
+ _$effect9((_$p) => _$setProp9(_el$7, "fg", theme.fg_dim, _$p));
4250
+ return _el$7;
4251
+ }
4252
+ }), _$createComponent9(Show7, {
4253
+ get when() {
4254
+ return all_green();
4255
+ },
4256
+ get children() {
4257
+ var _el$8 = _$createElement9("text");
4258
+ _$setProp9(_el$8, "content", "CI: all green \u2713");
4259
+ _$effect9((_$p) => _$setProp9(_el$8, "fg", theme.green, _$p));
4260
+ return _el$8;
4261
+ }
4262
+ }), _$createComponent9(Show7, {
4263
+ get when() {
4264
+ return _$memo3(() => !!!all_green())() && runs().length > 0;
4265
+ },
4266
+ get children() {
4267
+ return _$createComponent9(For7, {
4268
+ get each() {
4269
+ return visible_runs();
4270
+ },
4271
+ children: (run) => {
4272
+ const si = () => statusIcon3(run);
4273
+ const name_budget = () => {
4274
+ const branch_str = ` ${run.head_branch}`;
4275
+ return Math.max(1, props.width - 2 - branch_str.length);
4276
+ };
4277
+ return (() => {
4278
+ var _el$9 = _$createElement9("box"), _el$0 = _$createElement9("text"), _el$1 = _$createElement9("text"), _el$10 = _$createElement9("text"), _el$11 = _$createElement9("text");
4279
+ _$insertNode8(_el$9, _el$0);
4280
+ _$insertNode8(_el$9, _el$1);
4281
+ _$insertNode8(_el$9, _el$10);
4282
+ _$insertNode8(_el$9, _el$11);
4283
+ _$setProp9(_el$9, "flexDirection", "row");
4284
+ _$setProp9(_el$9, "height", 1);
4285
+ _$setProp9(_el$1, "content", " ");
4286
+ _$effect9((_p$) => {
4287
+ var _v$3 = si().color, _v$4 = si().icon, _v$5 = truncate(run.name, name_budget()), _v$6 = theme.fg_dim, _v$7 = ` ${run.head_branch}`;
4288
+ _v$3 !== _p$.e && (_p$.e = _$setProp9(_el$0, "fg", _v$3, _p$.e));
4289
+ _v$4 !== _p$.t && (_p$.t = _$setProp9(_el$0, "content", _v$4, _p$.t));
4290
+ _v$5 !== _p$.a && (_p$.a = _$setProp9(_el$10, "content", _v$5, _p$.a));
4291
+ _v$6 !== _p$.o && (_p$.o = _$setProp9(_el$11, "fg", _v$6, _p$.o));
4292
+ _v$7 !== _p$.i && (_p$.i = _$setProp9(_el$11, "content", _v$7, _p$.i));
4293
+ return _p$;
4294
+ }, {
4295
+ e: undefined,
4296
+ t: undefined,
4297
+ a: undefined,
4298
+ o: undefined,
4299
+ i: undefined
4300
+ });
4301
+ return _el$9;
4302
+ })();
4303
+ }
4304
+ });
4305
+ }
4306
+ })];
4307
+ }
4308
+ }), null);
4309
+ return _el$;
4310
+ })();
3500
4311
  }
3501
4312
  registerWidget({
3502
4313
  id: "github-ci",
@@ -3506,8 +4317,17 @@ registerWidget({
3506
4317
  });
3507
4318
 
3508
4319
  // packages/render/src/components/widgets/github-release.tsx
4320
+ import { insert as _$insert10 } from "@opentui/solid";
4321
+ import { effect as _$effect10 } from "@opentui/solid";
4322
+ import { insertNode as _$insertNode9 } from "@opentui/solid";
4323
+ import { createComponent as _$createComponent10 } from "@opentui/solid";
4324
+ import { setProp as _$setProp10 } from "@opentui/solid";
4325
+ import { createElement as _$createElement10 } from "@opentui/solid";
3509
4326
  import { Show as Show8, createMemo as createMemo5 } from "solid-js";
3510
- var size_hint7 = { span: "third", min_height: 1 };
4327
+ var size_hint7 = {
4328
+ span: "third",
4329
+ min_height: 1
4330
+ };
3511
4331
  function GithubReleaseWidget(props) {
3512
4332
  const repo_path = createMemo5(() => props.status?.path ?? null);
3513
4333
  const remote_url = createMemo5(() => props.status?.remote_url ?? null);
@@ -3519,54 +4339,109 @@ function GithubReleaseWidget(props) {
3519
4339
  const ts = Math.floor(new Date(release.published_at).getTime() / 1000);
3520
4340
  return formatRelativeTime(ts);
3521
4341
  };
3522
- return /* @__PURE__ */ React.createElement("box", {
3523
- flexDirection: "column"
3524
- }, /* @__PURE__ */ React.createElement(Show8, {
3525
- when: !github2.error()
3526
- }, /* @__PURE__ */ React.createElement(Show8, {
3527
- when: github2.data()?.latest_release,
3528
- fallback: /* @__PURE__ */ React.createElement("text", {
3529
- fg: theme.fg_dim,
3530
- content: "no releases"
3531
- })
3532
- }, (release) => /* @__PURE__ */ React.createElement(Fragment, null, /* @__PURE__ */ React.createElement("box", {
3533
- flexDirection: "row",
3534
- height: 1,
3535
- gap: 1
3536
- }, /* @__PURE__ */ React.createElement("text", {
3537
- fg: theme.green,
3538
- content: release().tag_name
3539
- }), /* @__PURE__ */ React.createElement("text", {
3540
- fg: theme.fg_dim,
3541
- content: published_relative()
3542
- })), /* @__PURE__ */ React.createElement("box", {
3543
- flexDirection: "row",
3544
- height: 1,
3545
- gap: 1
3546
- }, /* @__PURE__ */ React.createElement("text", {
3547
- fg: release().commits_since > 0 ? theme.yellow : theme.green,
3548
- content: `${release().commits_since}`
3549
- }), /* @__PURE__ */ React.createElement("text", {
3550
- fg: theme.fg_dim,
3551
- content: "commits since release"
3552
- }))))), /* @__PURE__ */ React.createElement(Show8, {
3553
- when: github2.error()?.kind === "gh_cli_not_found"
3554
- }, /* @__PURE__ */ React.createElement("box", {
3555
- flexDirection: "row",
3556
- height: 1,
3557
- gap: 1
3558
- }, /* @__PURE__ */ React.createElement("text", {
3559
- fg: theme.fg_dim,
3560
- content: "gh not available"
3561
- }), /* @__PURE__ */ React.createElement("text", {
3562
- fg: theme.cyan,
3563
- content: "https://cli.github.com"
3564
- }))), /* @__PURE__ */ React.createElement(Show8, {
3565
- when: github2.error()?.kind === "not_github_repo"
3566
- }, /* @__PURE__ */ React.createElement("text", {
3567
- fg: theme.fg_dim,
3568
- content: "not a GitHub repo"
3569
- })));
4342
+ return (() => {
4343
+ var _el$ = _$createElement10("box");
4344
+ _$setProp10(_el$, "flexDirection", "column");
4345
+ _$insert10(_el$, _$createComponent10(Show8, {
4346
+ get when() {
4347
+ return !github2.error();
4348
+ },
4349
+ get children() {
4350
+ return _$createComponent10(Show8, {
4351
+ get when() {
4352
+ return github2.data()?.latest_release;
4353
+ },
4354
+ get fallback() {
4355
+ return (() => {
4356
+ var _el$6 = _$createElement10("text");
4357
+ _$setProp10(_el$6, "content", "no releases");
4358
+ _$effect10((_$p) => _$setProp10(_el$6, "fg", theme.fg_dim, _$p));
4359
+ return _el$6;
4360
+ })();
4361
+ },
4362
+ children: (release) => [(() => {
4363
+ var _el$7 = _$createElement10("box"), _el$8 = _$createElement10("text"), _el$9 = _$createElement10("text");
4364
+ _$insertNode9(_el$7, _el$8);
4365
+ _$insertNode9(_el$7, _el$9);
4366
+ _$setProp10(_el$7, "flexDirection", "row");
4367
+ _$setProp10(_el$7, "height", 1);
4368
+ _$setProp10(_el$7, "gap", 1);
4369
+ _$effect10((_p$) => {
4370
+ var _v$3 = theme.green, _v$4 = release().tag_name, _v$5 = theme.fg_dim, _v$6 = published_relative();
4371
+ _v$3 !== _p$.e && (_p$.e = _$setProp10(_el$8, "fg", _v$3, _p$.e));
4372
+ _v$4 !== _p$.t && (_p$.t = _$setProp10(_el$8, "content", _v$4, _p$.t));
4373
+ _v$5 !== _p$.a && (_p$.a = _$setProp10(_el$9, "fg", _v$5, _p$.a));
4374
+ _v$6 !== _p$.o && (_p$.o = _$setProp10(_el$9, "content", _v$6, _p$.o));
4375
+ return _p$;
4376
+ }, {
4377
+ e: undefined,
4378
+ t: undefined,
4379
+ a: undefined,
4380
+ o: undefined
4381
+ });
4382
+ return _el$7;
4383
+ })(), (() => {
4384
+ var _el$0 = _$createElement10("box"), _el$1 = _$createElement10("text"), _el$10 = _$createElement10("text");
4385
+ _$insertNode9(_el$0, _el$1);
4386
+ _$insertNode9(_el$0, _el$10);
4387
+ _$setProp10(_el$0, "flexDirection", "row");
4388
+ _$setProp10(_el$0, "height", 1);
4389
+ _$setProp10(_el$0, "gap", 1);
4390
+ _$setProp10(_el$10, "content", "commits since release");
4391
+ _$effect10((_p$) => {
4392
+ var _v$7 = release().commits_since > 0 ? theme.yellow : theme.green, _v$8 = `${release().commits_since}`, _v$9 = theme.fg_dim;
4393
+ _v$7 !== _p$.e && (_p$.e = _$setProp10(_el$1, "fg", _v$7, _p$.e));
4394
+ _v$8 !== _p$.t && (_p$.t = _$setProp10(_el$1, "content", _v$8, _p$.t));
4395
+ _v$9 !== _p$.a && (_p$.a = _$setProp10(_el$10, "fg", _v$9, _p$.a));
4396
+ return _p$;
4397
+ }, {
4398
+ e: undefined,
4399
+ t: undefined,
4400
+ a: undefined
4401
+ });
4402
+ return _el$0;
4403
+ })()]
4404
+ });
4405
+ }
4406
+ }), null);
4407
+ _$insert10(_el$, _$createComponent10(Show8, {
4408
+ get when() {
4409
+ return github2.error()?.kind === "gh_cli_not_found";
4410
+ },
4411
+ get children() {
4412
+ var _el$2 = _$createElement10("box"), _el$3 = _$createElement10("text"), _el$4 = _$createElement10("text");
4413
+ _$insertNode9(_el$2, _el$3);
4414
+ _$insertNode9(_el$2, _el$4);
4415
+ _$setProp10(_el$2, "flexDirection", "row");
4416
+ _$setProp10(_el$2, "height", 1);
4417
+ _$setProp10(_el$2, "gap", 1);
4418
+ _$setProp10(_el$3, "content", "gh not available");
4419
+ _$setProp10(_el$4, "content", "https://cli.github.com");
4420
+ _$effect10((_p$) => {
4421
+ var _v$ = theme.fg_dim, _v$2 = theme.cyan;
4422
+ _v$ !== _p$.e && (_p$.e = _$setProp10(_el$3, "fg", _v$, _p$.e));
4423
+ _v$2 !== _p$.t && (_p$.t = _$setProp10(_el$4, "fg", _v$2, _p$.t));
4424
+ return _p$;
4425
+ }, {
4426
+ e: undefined,
4427
+ t: undefined
4428
+ });
4429
+ return _el$2;
4430
+ }
4431
+ }), null);
4432
+ _$insert10(_el$, _$createComponent10(Show8, {
4433
+ get when() {
4434
+ return github2.error()?.kind === "not_github_repo";
4435
+ },
4436
+ get children() {
4437
+ var _el$5 = _$createElement10("text");
4438
+ _$setProp10(_el$5, "content", "not a GitHub repo");
4439
+ _$effect10((_$p) => _$setProp10(_el$5, "fg", theme.fg_dim, _$p));
4440
+ return _el$5;
4441
+ }
4442
+ }), null);
4443
+ return _el$;
4444
+ })();
3570
4445
  }
3571
4446
  registerWidget({
3572
4447
  id: "github-release",
@@ -3576,6 +4451,13 @@ registerWidget({
3576
4451
  });
3577
4452
 
3578
4453
  // packages/render/src/components/widgets/devpad-tasks.tsx
4454
+ import { insertNode as _$insertNode10 } from "@opentui/solid";
4455
+ import { insert as _$insert11 } from "@opentui/solid";
4456
+ import { effect as _$effect11 } from "@opentui/solid";
4457
+ import { memo as _$memo4 } from "@opentui/solid";
4458
+ import { createComponent as _$createComponent11 } from "@opentui/solid";
4459
+ import { setProp as _$setProp11 } from "@opentui/solid";
4460
+ import { createElement as _$createElement11 } from "@opentui/solid";
3579
4461
  import { For as For8, Show as Show9, Switch as Switch2, Match as Match2, createMemo as createMemo6 } from "solid-js";
3580
4462
 
3581
4463
  // packages/render/src/lib/use-devpad.ts
@@ -8981,17 +9863,38 @@ function useDevpad(remote_url, repo_name) {
8981
9863
  }
8982
9864
 
8983
9865
  // packages/render/src/components/widgets/devpad-tasks.tsx
8984
- var size_hint8 = { span: "full", min_height: 2 };
9866
+ var size_hint8 = {
9867
+ span: "full",
9868
+ min_height: 2
9869
+ };
8985
9870
  var MAX_VISIBLE3 = 10;
8986
9871
  var priority_indicator = {
8987
- HIGH: { char: "!", color: theme.red },
8988
- MEDIUM: { char: "\xB7", color: theme.yellow },
8989
- LOW: { char: "\xB7", color: theme.fg_dim }
9872
+ HIGH: {
9873
+ char: "!",
9874
+ color: theme.red
9875
+ },
9876
+ MEDIUM: {
9877
+ char: "\xB7",
9878
+ color: theme.yellow
9879
+ },
9880
+ LOW: {
9881
+ char: "\xB7",
9882
+ color: theme.fg_dim
9883
+ }
8990
9884
  };
8991
9885
  var progress_indicator = {
8992
- UNSTARTED: { char: "\u25CB", color: theme.fg_dim },
8993
- IN_PROGRESS: { char: "\u25D1", color: theme.blue },
8994
- COMPLETED: { char: "\u25CF", color: theme.green }
9886
+ UNSTARTED: {
9887
+ char: "\u25CB",
9888
+ color: theme.fg_dim
9889
+ },
9890
+ IN_PROGRESS: {
9891
+ char: "\u25D1",
9892
+ color: theme.blue
9893
+ },
9894
+ COMPLETED: {
9895
+ char: "\u25CF",
9896
+ color: theme.green
9897
+ }
8995
9898
  };
8996
9899
  function DevpadTasksWidget(props) {
8997
9900
  const remote_url = createMemo6(() => props.status?.remote_url ?? null);
@@ -9000,58 +9903,135 @@ function DevpadTasksWidget(props) {
9000
9903
  const tasks = createMemo6(() => devpad2.data()?.tasks ?? []);
9001
9904
  const visible = () => tasks().slice(0, MAX_VISIBLE3);
9002
9905
  const overflow = () => Math.max(0, tasks().length - MAX_VISIBLE3);
9003
- return /* @__PURE__ */ React.createElement("box", {
9004
- flexDirection: "column"
9005
- }, /* @__PURE__ */ React.createElement(Switch2, null, /* @__PURE__ */ React.createElement(Match2, {
9006
- when: devpad2.error()
9007
- }, (err3) => /* @__PURE__ */ React.createElement("text", {
9008
- fg: theme.fg_dim,
9009
- content: err3()
9010
- })), /* @__PURE__ */ React.createElement(Match2, {
9011
- when: devpad2.loading() && !devpad2.data()
9012
- }, /* @__PURE__ */ React.createElement("text", {
9013
- fg: theme.fg_dim,
9014
- content: "loading\u2026"
9015
- })), /* @__PURE__ */ React.createElement(Match2, {
9016
- when: !devpad2.data()?.project && devpad2.data() !== null
9017
- }, /* @__PURE__ */ React.createElement("text", {
9018
- fg: theme.fg_dim,
9019
- content: "no devpad project"
9020
- })), /* @__PURE__ */ React.createElement(Match2, {
9021
- when: true
9022
- }, /* @__PURE__ */ React.createElement("text", {
9023
- fg: theme.fg_dark,
9024
- content: `Tasks (${tasks().length})`
9025
- }), /* @__PURE__ */ React.createElement(Show9, {
9026
- when: tasks().length > 0,
9027
- fallback: /* @__PURE__ */ React.createElement("text", {
9028
- fg: theme.fg_dim,
9029
- content: "(no open tasks)"
9030
- })
9031
- }, /* @__PURE__ */ React.createElement(For8, {
9032
- each: visible()
9033
- }, (task) => {
9034
- const pi = () => priority_indicator[task.priority];
9035
- const si = () => progress_indicator[task.progress];
9036
- const available = () => Math.max(1, props.width - 4);
9037
- return /* @__PURE__ */ React.createElement("box", {
9038
- flexDirection: "row",
9039
- height: 1
9040
- }, /* @__PURE__ */ React.createElement("text", {
9041
- fg: si().color,
9042
- content: `${si().char} `
9043
- }), /* @__PURE__ */ React.createElement("text", {
9044
- fg: pi().color,
9045
- content: `${pi().char} `
9046
- }), /* @__PURE__ */ React.createElement("text", {
9047
- content: truncate(task.title, available())
9906
+ return (() => {
9907
+ var _el$ = _$createElement11("box");
9908
+ _$setProp11(_el$, "flexDirection", "column");
9909
+ _$insert11(_el$, _$createComponent11(Switch2, {
9910
+ get children() {
9911
+ return [_$createComponent11(Match2, {
9912
+ get when() {
9913
+ return devpad2.error();
9914
+ },
9915
+ children: (err3) => (() => {
9916
+ var _el$6 = _$createElement11("text");
9917
+ _$effect11((_p$) => {
9918
+ var _v$5 = theme.fg_dim, _v$6 = err3();
9919
+ _v$5 !== _p$.e && (_p$.e = _$setProp11(_el$6, "fg", _v$5, _p$.e));
9920
+ _v$6 !== _p$.t && (_p$.t = _$setProp11(_el$6, "content", _v$6, _p$.t));
9921
+ return _p$;
9922
+ }, {
9923
+ e: undefined,
9924
+ t: undefined
9925
+ });
9926
+ return _el$6;
9927
+ })()
9928
+ }), _$createComponent11(Match2, {
9929
+ get when() {
9930
+ return _$memo4(() => !!devpad2.loading())() && !devpad2.data();
9931
+ },
9932
+ get children() {
9933
+ var _el$2 = _$createElement11("text");
9934
+ _$setProp11(_el$2, "content", "loading\u2026");
9935
+ _$effect11((_$p) => _$setProp11(_el$2, "fg", theme.fg_dim, _$p));
9936
+ return _el$2;
9937
+ }
9938
+ }), _$createComponent11(Match2, {
9939
+ get when() {
9940
+ return _$memo4(() => !!!devpad2.data()?.project)() && devpad2.data() !== null;
9941
+ },
9942
+ get children() {
9943
+ var _el$3 = _$createElement11("text");
9944
+ _$setProp11(_el$3, "content", "no devpad project");
9945
+ _$effect11((_$p) => _$setProp11(_el$3, "fg", theme.fg_dim, _$p));
9946
+ return _el$3;
9947
+ }
9948
+ }), _$createComponent11(Match2, {
9949
+ when: true,
9950
+ get children() {
9951
+ return [(() => {
9952
+ var _el$4 = _$createElement11("text");
9953
+ _$effect11((_p$) => {
9954
+ var _v$ = theme.fg_dark, _v$2 = `Tasks (${tasks().length})`;
9955
+ _v$ !== _p$.e && (_p$.e = _$setProp11(_el$4, "fg", _v$, _p$.e));
9956
+ _v$2 !== _p$.t && (_p$.t = _$setProp11(_el$4, "content", _v$2, _p$.t));
9957
+ return _p$;
9958
+ }, {
9959
+ e: undefined,
9960
+ t: undefined
9961
+ });
9962
+ return _el$4;
9963
+ })(), _$createComponent11(Show9, {
9964
+ get when() {
9965
+ return tasks().length > 0;
9966
+ },
9967
+ get fallback() {
9968
+ return (() => {
9969
+ var _el$7 = _$createElement11("text");
9970
+ _$setProp11(_el$7, "content", "(no open tasks)");
9971
+ _$effect11((_$p) => _$setProp11(_el$7, "fg", theme.fg_dim, _$p));
9972
+ return _el$7;
9973
+ })();
9974
+ },
9975
+ get children() {
9976
+ return [_$createComponent11(For8, {
9977
+ get each() {
9978
+ return visible();
9979
+ },
9980
+ children: (task) => {
9981
+ const pi = () => priority_indicator[task.priority];
9982
+ const si = () => progress_indicator[task.progress];
9983
+ const available = () => Math.max(1, props.width - 4);
9984
+ return (() => {
9985
+ var _el$8 = _$createElement11("box"), _el$9 = _$createElement11("text"), _el$0 = _$createElement11("text"), _el$1 = _$createElement11("text");
9986
+ _$insertNode10(_el$8, _el$9);
9987
+ _$insertNode10(_el$8, _el$0);
9988
+ _$insertNode10(_el$8, _el$1);
9989
+ _$setProp11(_el$8, "flexDirection", "row");
9990
+ _$setProp11(_el$8, "height", 1);
9991
+ _$effect11((_p$) => {
9992
+ var _v$7 = si().color, _v$8 = `${si().char} `, _v$9 = pi().color, _v$0 = `${pi().char} `, _v$1 = truncate(task.title, available());
9993
+ _v$7 !== _p$.e && (_p$.e = _$setProp11(_el$9, "fg", _v$7, _p$.e));
9994
+ _v$8 !== _p$.t && (_p$.t = _$setProp11(_el$9, "content", _v$8, _p$.t));
9995
+ _v$9 !== _p$.a && (_p$.a = _$setProp11(_el$0, "fg", _v$9, _p$.a));
9996
+ _v$0 !== _p$.o && (_p$.o = _$setProp11(_el$0, "content", _v$0, _p$.o));
9997
+ _v$1 !== _p$.i && (_p$.i = _$setProp11(_el$1, "content", _v$1, _p$.i));
9998
+ return _p$;
9999
+ }, {
10000
+ e: undefined,
10001
+ t: undefined,
10002
+ a: undefined,
10003
+ o: undefined,
10004
+ i: undefined
10005
+ });
10006
+ return _el$8;
10007
+ })();
10008
+ }
10009
+ }), _$createComponent11(Show9, {
10010
+ get when() {
10011
+ return overflow() > 0;
10012
+ },
10013
+ get children() {
10014
+ var _el$5 = _$createElement11("text");
10015
+ _$effect11((_p$) => {
10016
+ var _v$3 = theme.fg_dim, _v$4 = `+${overflow()} more`;
10017
+ _v$3 !== _p$.e && (_p$.e = _$setProp11(_el$5, "fg", _v$3, _p$.e));
10018
+ _v$4 !== _p$.t && (_p$.t = _$setProp11(_el$5, "content", _v$4, _p$.t));
10019
+ return _p$;
10020
+ }, {
10021
+ e: undefined,
10022
+ t: undefined
10023
+ });
10024
+ return _el$5;
10025
+ }
10026
+ })];
10027
+ }
10028
+ })];
10029
+ }
10030
+ })];
10031
+ }
9048
10032
  }));
9049
- }), /* @__PURE__ */ React.createElement(Show9, {
9050
- when: overflow() > 0
9051
- }, /* @__PURE__ */ React.createElement("text", {
9052
- fg: theme.fg_dim,
9053
- content: `+${overflow()} more`
9054
- }))))));
10033
+ return _el$;
10034
+ })();
9055
10035
  }
9056
10036
  registerWidget({
9057
10037
  id: "devpad-tasks",
@@ -9061,8 +10041,18 @@ registerWidget({
9061
10041
  });
9062
10042
 
9063
10043
  // packages/render/src/components/widgets/devpad-milestones.tsx
10044
+ import { insertNode as _$insertNode11 } from "@opentui/solid";
10045
+ import { insert as _$insert12 } from "@opentui/solid";
10046
+ import { effect as _$effect12 } from "@opentui/solid";
10047
+ import { memo as _$memo5 } from "@opentui/solid";
10048
+ import { createComponent as _$createComponent12 } from "@opentui/solid";
10049
+ import { setProp as _$setProp12 } from "@opentui/solid";
10050
+ import { createElement as _$createElement12 } from "@opentui/solid";
9064
10051
  import { For as For9, Show as Show10, Switch as Switch3, Match as Match3, createMemo as createMemo7 } from "solid-js";
9065
- var size_hint9 = { span: "half", min_height: 2 };
10052
+ var size_hint9 = {
10053
+ span: "half",
10054
+ min_height: 2
10055
+ };
9066
10056
  function progressBar(total, completed, width) {
9067
10057
  if (total === 0)
9068
10058
  return "\u2591".repeat(width);
@@ -9077,69 +10067,139 @@ function DevpadMilestonesWidget(props) {
9077
10067
  const max_visible = 4;
9078
10068
  const visible = () => milestones().slice(0, max_visible);
9079
10069
  const overflow = () => Math.max(0, milestones().length - max_visible);
9080
- return /* @__PURE__ */ React.createElement("box", {
9081
- flexDirection: "column"
9082
- }, /* @__PURE__ */ React.createElement(Switch3, null, /* @__PURE__ */ React.createElement(Match3, {
9083
- when: devpad2.error()
9084
- }, (err3) => /* @__PURE__ */ React.createElement("text", {
9085
- fg: theme.fg_dim,
9086
- content: err3()
9087
- })), /* @__PURE__ */ React.createElement(Match3, {
9088
- when: devpad2.loading() && !devpad2.data()
9089
- }, /* @__PURE__ */ React.createElement("text", {
9090
- fg: theme.fg_dim,
9091
- content: "loading\u2026"
9092
- })), /* @__PURE__ */ React.createElement(Match3, {
9093
- when: !devpad2.data()?.project && devpad2.data() !== null
9094
- }, /* @__PURE__ */ React.createElement("text", {
9095
- fg: theme.fg_dim,
9096
- content: "no devpad project"
9097
- })), /* @__PURE__ */ React.createElement(Match3, {
9098
- when: true
9099
- }, /* @__PURE__ */ React.createElement(Show10, {
9100
- when: milestones().length > 0,
9101
- fallback: /* @__PURE__ */ React.createElement("text", {
9102
- fg: theme.fg_dim,
9103
- content: "no milestones"
9104
- })
9105
- }, /* @__PURE__ */ React.createElement(For9, {
9106
- each: visible()
9107
- }, (ms) => {
9108
- const pct = () => ms.goals_total > 0 ? Math.round(ms.goals_completed / ms.goals_total * 100) : 0;
9109
- const bar_width = 12;
9110
- const label = () => {
9111
- const version_str = ms.target_version ? ` (${ms.target_version})` : "";
9112
- return truncate(`${ms.name}${version_str}`, Math.max(1, props.width - bar_width - 8));
9113
- };
9114
- const bar = () => progressBar(ms.goals_total, ms.goals_completed, bar_width);
9115
- const bar_color = () => pct() === 100 ? theme.green : theme.blue;
9116
- return /* @__PURE__ */ React.createElement("box", {
9117
- flexDirection: "column",
9118
- height: 2
9119
- }, /* @__PURE__ */ React.createElement("box", {
9120
- flexDirection: "row",
9121
- height: 1
9122
- }, /* @__PURE__ */ React.createElement("text", {
9123
- content: label()
9124
- }), /* @__PURE__ */ React.createElement("text", {
9125
- fg: theme.fg_dim,
9126
- content: ` ${ms.goals_completed}/${ms.goals_total}`
9127
- })), /* @__PURE__ */ React.createElement("box", {
9128
- flexDirection: "row",
9129
- height: 1
9130
- }, /* @__PURE__ */ React.createElement("text", {
9131
- fg: bar_color(),
9132
- content: bar()
9133
- }), /* @__PURE__ */ React.createElement("text", {
9134
- fg: theme.fg_dim,
9135
- content: ` ${pct()}%`
9136
- })));
9137
- }), /* @__PURE__ */ React.createElement(Show10, {
9138
- when: overflow() > 0
9139
- }, /* @__PURE__ */ React.createElement("text", {
9140
- fg: theme.fg_dim,
9141
- content: `+${overflow()} more`
9142
- }))))));
10070
+ return (() => {
10071
+ var _el$ = _$createElement12("box");
10072
+ _$setProp12(_el$, "flexDirection", "column");
10073
+ _$insert12(_el$, _$createComponent12(Switch3, {
10074
+ get children() {
10075
+ return [_$createComponent12(Match3, {
10076
+ get when() {
10077
+ return devpad2.error();
10078
+ },
10079
+ children: (err3) => (() => {
10080
+ var _el$5 = _$createElement12("text");
10081
+ _$effect12((_p$) => {
10082
+ var _v$3 = theme.fg_dim, _v$4 = err3();
10083
+ _v$3 !== _p$.e && (_p$.e = _$setProp12(_el$5, "fg", _v$3, _p$.e));
10084
+ _v$4 !== _p$.t && (_p$.t = _$setProp12(_el$5, "content", _v$4, _p$.t));
10085
+ return _p$;
10086
+ }, {
10087
+ e: undefined,
10088
+ t: undefined
10089
+ });
10090
+ return _el$5;
10091
+ })()
10092
+ }), _$createComponent12(Match3, {
10093
+ get when() {
10094
+ return _$memo5(() => !!devpad2.loading())() && !devpad2.data();
10095
+ },
10096
+ get children() {
10097
+ var _el$2 = _$createElement12("text");
10098
+ _$setProp12(_el$2, "content", "loading\u2026");
10099
+ _$effect12((_$p) => _$setProp12(_el$2, "fg", theme.fg_dim, _$p));
10100
+ return _el$2;
10101
+ }
10102
+ }), _$createComponent12(Match3, {
10103
+ get when() {
10104
+ return _$memo5(() => !!!devpad2.data()?.project)() && devpad2.data() !== null;
10105
+ },
10106
+ get children() {
10107
+ var _el$3 = _$createElement12("text");
10108
+ _$setProp12(_el$3, "content", "no devpad project");
10109
+ _$effect12((_$p) => _$setProp12(_el$3, "fg", theme.fg_dim, _$p));
10110
+ return _el$3;
10111
+ }
10112
+ }), _$createComponent12(Match3, {
10113
+ when: true,
10114
+ get children() {
10115
+ return _$createComponent12(Show10, {
10116
+ get when() {
10117
+ return milestones().length > 0;
10118
+ },
10119
+ get fallback() {
10120
+ return (() => {
10121
+ var _el$6 = _$createElement12("text");
10122
+ _$setProp12(_el$6, "content", "no milestones");
10123
+ _$effect12((_$p) => _$setProp12(_el$6, "fg", theme.fg_dim, _$p));
10124
+ return _el$6;
10125
+ })();
10126
+ },
10127
+ get children() {
10128
+ return [_$createComponent12(For9, {
10129
+ get each() {
10130
+ return visible();
10131
+ },
10132
+ children: (ms) => {
10133
+ const pct = () => ms.goals_total > 0 ? Math.round(ms.goals_completed / ms.goals_total * 100) : 0;
10134
+ const bar_width = 12;
10135
+ const label = () => {
10136
+ const version_str = ms.target_version ? ` (${ms.target_version})` : "";
10137
+ return truncate(`${ms.name}${version_str}`, Math.max(1, props.width - bar_width - 8));
10138
+ };
10139
+ const bar = () => progressBar(ms.goals_total, ms.goals_completed, bar_width);
10140
+ const bar_color = () => pct() === 100 ? theme.green : theme.blue;
10141
+ return (() => {
10142
+ var _el$7 = _$createElement12("box"), _el$8 = _$createElement12("box"), _el$9 = _$createElement12("text"), _el$0 = _$createElement12("text"), _el$1 = _$createElement12("box"), _el$10 = _$createElement12("text"), _el$11 = _$createElement12("text");
10143
+ _$insertNode11(_el$7, _el$8);
10144
+ _$insertNode11(_el$7, _el$1);
10145
+ _$setProp12(_el$7, "flexDirection", "column");
10146
+ _$setProp12(_el$7, "height", 2);
10147
+ _$insertNode11(_el$8, _el$9);
10148
+ _$insertNode11(_el$8, _el$0);
10149
+ _$setProp12(_el$8, "flexDirection", "row");
10150
+ _$setProp12(_el$8, "height", 1);
10151
+ _$insertNode11(_el$1, _el$10);
10152
+ _$insertNode11(_el$1, _el$11);
10153
+ _$setProp12(_el$1, "flexDirection", "row");
10154
+ _$setProp12(_el$1, "height", 1);
10155
+ _$effect12((_p$) => {
10156
+ var _v$5 = label(), _v$6 = theme.fg_dim, _v$7 = ` ${ms.goals_completed}/${ms.goals_total}`, _v$8 = bar_color(), _v$9 = bar(), _v$0 = theme.fg_dim, _v$1 = ` ${pct()}%`;
10157
+ _v$5 !== _p$.e && (_p$.e = _$setProp12(_el$9, "content", _v$5, _p$.e));
10158
+ _v$6 !== _p$.t && (_p$.t = _$setProp12(_el$0, "fg", _v$6, _p$.t));
10159
+ _v$7 !== _p$.a && (_p$.a = _$setProp12(_el$0, "content", _v$7, _p$.a));
10160
+ _v$8 !== _p$.o && (_p$.o = _$setProp12(_el$10, "fg", _v$8, _p$.o));
10161
+ _v$9 !== _p$.i && (_p$.i = _$setProp12(_el$10, "content", _v$9, _p$.i));
10162
+ _v$0 !== _p$.n && (_p$.n = _$setProp12(_el$11, "fg", _v$0, _p$.n));
10163
+ _v$1 !== _p$.s && (_p$.s = _$setProp12(_el$11, "content", _v$1, _p$.s));
10164
+ return _p$;
10165
+ }, {
10166
+ e: undefined,
10167
+ t: undefined,
10168
+ a: undefined,
10169
+ o: undefined,
10170
+ i: undefined,
10171
+ n: undefined,
10172
+ s: undefined
10173
+ });
10174
+ return _el$7;
10175
+ })();
10176
+ }
10177
+ }), _$createComponent12(Show10, {
10178
+ get when() {
10179
+ return overflow() > 0;
10180
+ },
10181
+ get children() {
10182
+ var _el$4 = _$createElement12("text");
10183
+ _$effect12((_p$) => {
10184
+ var _v$ = theme.fg_dim, _v$2 = `+${overflow()} more`;
10185
+ _v$ !== _p$.e && (_p$.e = _$setProp12(_el$4, "fg", _v$, _p$.e));
10186
+ _v$2 !== _p$.t && (_p$.t = _$setProp12(_el$4, "content", _v$2, _p$.t));
10187
+ return _p$;
10188
+ }, {
10189
+ e: undefined,
10190
+ t: undefined
10191
+ });
10192
+ return _el$4;
10193
+ }
10194
+ })];
10195
+ }
10196
+ });
10197
+ }
10198
+ })];
10199
+ }
10200
+ }));
10201
+ return _el$;
10202
+ })();
9143
10203
  }
9144
10204
  registerWidget({
9145
10205
  id: "devpad-milestones",
@@ -9149,17 +10209,20 @@ registerWidget({
9149
10209
  });
9150
10210
 
9151
10211
  // packages/render/src/components/widgets/github-issues.tsx
10212
+ import { insertNode as _$insertNode12 } from "@opentui/solid";
10213
+ import { insert as _$insert13 } from "@opentui/solid";
10214
+ import { memo as _$memo6 } from "@opentui/solid";
10215
+ import { createComponent as _$createComponent13 } from "@opentui/solid";
10216
+ import { effect as _$effect13 } from "@opentui/solid";
10217
+ import { setProp as _$setProp13 } from "@opentui/solid";
10218
+ import { createElement as _$createElement13 } from "@opentui/solid";
9152
10219
  import { For as For10, Show as Show11, Switch as Switch4, Match as Match4, createMemo as createMemo8 } from "solid-js";
9153
- var size_hint10 = { span: "half", min_height: 2 };
10220
+ var size_hint10 = {
10221
+ span: "half",
10222
+ min_height: 2
10223
+ };
9154
10224
  var MAX_VISIBLE4 = 10;
9155
- var label_colors = [
9156
- theme.cyan,
9157
- theme.magenta,
9158
- theme.yellow,
9159
- theme.green,
9160
- theme.red,
9161
- theme.orange
9162
- ];
10225
+ var label_colors = [theme.cyan, theme.magenta, theme.yellow, theme.green, theme.red, theme.orange];
9163
10226
  function labelColor(index2) {
9164
10227
  return label_colors[index2 % label_colors.length];
9165
10228
  }
@@ -9175,74 +10238,166 @@ function GithubIssuesWidget(props) {
9175
10238
  const dots_len = issue.labels.length > 0 ? issue.labels.length * 2 : 0;
9176
10239
  const available = props.width - 2 - number_str.length - 1 - dots_len;
9177
10240
  const title = truncate(issue.title, Math.max(1, available));
9178
- return { number_str, title };
10241
+ return {
10242
+ number_str,
10243
+ title
10244
+ };
9179
10245
  };
9180
- return /* @__PURE__ */ React.createElement("box", {
9181
- flexDirection: "column"
9182
- }, /* @__PURE__ */ React.createElement(Switch4, null, /* @__PURE__ */ React.createElement(Match4, {
9183
- when: github2.error()?.kind === "gh_cli_not_found"
9184
- }, /* @__PURE__ */ React.createElement("text", {
9185
- fg: theme.fg_dim,
9186
- content: "gh not available"
9187
- }), /* @__PURE__ */ React.createElement("text", {
9188
- fg: theme.fg_dim,
9189
- content: "install: https://cli.github.com"
9190
- })), /* @__PURE__ */ React.createElement(Match4, {
9191
- when: github2.error()?.kind === "not_github_repo"
9192
- }, /* @__PURE__ */ React.createElement("text", {
9193
- fg: theme.fg_dim,
9194
- content: "not a GitHub repo"
9195
- })), /* @__PURE__ */ React.createElement(Match4, {
9196
- when: github2.error()?.kind === "gh_auth_required"
9197
- }, /* @__PURE__ */ React.createElement("text", {
9198
- fg: theme.fg_dim,
9199
- content: "gh auth required"
9200
- })), /* @__PURE__ */ React.createElement(Match4, {
9201
- when: github2.error()
9202
- }, /* @__PURE__ */ React.createElement("text", {
9203
- fg: theme.fg_dim,
9204
- content: "GitHub error"
9205
- })), /* @__PURE__ */ React.createElement(Match4, {
9206
- when: github2.loading() && !github2.data()
9207
- }, /* @__PURE__ */ React.createElement("text", {
9208
- fg: theme.fg_dim,
9209
- content: "loading\u2026"
9210
- })), /* @__PURE__ */ React.createElement(Match4, {
9211
- when: true
9212
- }, /* @__PURE__ */ React.createElement("text", {
9213
- fg: theme.fg_dark,
9214
- content: `Issues (${issues().length})`
9215
- }), /* @__PURE__ */ React.createElement(Show11, {
9216
- when: issues().length > 0,
9217
- fallback: /* @__PURE__ */ React.createElement("text", {
9218
- fg: theme.fg_dim,
9219
- content: "(no issues)"
9220
- })
9221
- }, /* @__PURE__ */ React.createElement(For10, {
9222
- each: visible()
9223
- }, (issue) => {
9224
- const line = () => formatIssueLine(issue);
9225
- return /* @__PURE__ */ React.createElement("box", {
9226
- flexDirection: "row",
9227
- height: 1
9228
- }, /* @__PURE__ */ React.createElement("text", {
9229
- fg: theme.fg_dim,
9230
- content: `${line().number_str} `
9231
- }), /* @__PURE__ */ React.createElement("text", {
9232
- fg: theme.fg,
9233
- content: line().title
9234
- }), /* @__PURE__ */ React.createElement(For10, {
9235
- each: issue.labels
9236
- }, (_, i) => /* @__PURE__ */ React.createElement("text", {
9237
- fg: labelColor(i()),
9238
- content: " \u25CF"
9239
- })));
9240
- }), /* @__PURE__ */ React.createElement(Show11, {
9241
- when: overflow() > 0
9242
- }, /* @__PURE__ */ React.createElement("text", {
9243
- fg: theme.fg_dim,
9244
- content: `+${overflow()} more`
9245
- }))))));
10246
+ return (() => {
10247
+ var _el$ = _$createElement13("box");
10248
+ _$setProp13(_el$, "flexDirection", "column");
10249
+ _$insert13(_el$, _$createComponent13(Switch4, {
10250
+ get children() {
10251
+ return [_$createComponent13(Match4, {
10252
+ get when() {
10253
+ return github2.error()?.kind === "gh_cli_not_found";
10254
+ },
10255
+ get children() {
10256
+ return [(() => {
10257
+ var _el$2 = _$createElement13("text");
10258
+ _$setProp13(_el$2, "content", "gh not available");
10259
+ _$effect13((_$p) => _$setProp13(_el$2, "fg", theme.fg_dim, _$p));
10260
+ return _el$2;
10261
+ })(), (() => {
10262
+ var _el$3 = _$createElement13("text");
10263
+ _$setProp13(_el$3, "content", "install: https://cli.github.com");
10264
+ _$effect13((_$p) => _$setProp13(_el$3, "fg", theme.fg_dim, _$p));
10265
+ return _el$3;
10266
+ })()];
10267
+ }
10268
+ }), _$createComponent13(Match4, {
10269
+ get when() {
10270
+ return github2.error()?.kind === "not_github_repo";
10271
+ },
10272
+ get children() {
10273
+ var _el$4 = _$createElement13("text");
10274
+ _$setProp13(_el$4, "content", "not a GitHub repo");
10275
+ _$effect13((_$p) => _$setProp13(_el$4, "fg", theme.fg_dim, _$p));
10276
+ return _el$4;
10277
+ }
10278
+ }), _$createComponent13(Match4, {
10279
+ get when() {
10280
+ return github2.error()?.kind === "gh_auth_required";
10281
+ },
10282
+ get children() {
10283
+ var _el$5 = _$createElement13("text");
10284
+ _$setProp13(_el$5, "content", "gh auth required");
10285
+ _$effect13((_$p) => _$setProp13(_el$5, "fg", theme.fg_dim, _$p));
10286
+ return _el$5;
10287
+ }
10288
+ }), _$createComponent13(Match4, {
10289
+ get when() {
10290
+ return github2.error();
10291
+ },
10292
+ get children() {
10293
+ var _el$6 = _$createElement13("text");
10294
+ _$setProp13(_el$6, "content", "GitHub error");
10295
+ _$effect13((_$p) => _$setProp13(_el$6, "fg", theme.fg_dim, _$p));
10296
+ return _el$6;
10297
+ }
10298
+ }), _$createComponent13(Match4, {
10299
+ get when() {
10300
+ return _$memo6(() => !!github2.loading())() && !github2.data();
10301
+ },
10302
+ get children() {
10303
+ var _el$7 = _$createElement13("text");
10304
+ _$setProp13(_el$7, "content", "loading\u2026");
10305
+ _$effect13((_$p) => _$setProp13(_el$7, "fg", theme.fg_dim, _$p));
10306
+ return _el$7;
10307
+ }
10308
+ }), _$createComponent13(Match4, {
10309
+ when: true,
10310
+ get children() {
10311
+ return [(() => {
10312
+ var _el$8 = _$createElement13("text");
10313
+ _$effect13((_p$) => {
10314
+ var _v$ = theme.fg_dark, _v$2 = `Issues (${issues().length})`;
10315
+ _v$ !== _p$.e && (_p$.e = _$setProp13(_el$8, "fg", _v$, _p$.e));
10316
+ _v$2 !== _p$.t && (_p$.t = _$setProp13(_el$8, "content", _v$2, _p$.t));
10317
+ return _p$;
10318
+ }, {
10319
+ e: undefined,
10320
+ t: undefined
10321
+ });
10322
+ return _el$8;
10323
+ })(), _$createComponent13(Show11, {
10324
+ get when() {
10325
+ return issues().length > 0;
10326
+ },
10327
+ get fallback() {
10328
+ return (() => {
10329
+ var _el$0 = _$createElement13("text");
10330
+ _$setProp13(_el$0, "content", "(no issues)");
10331
+ _$effect13((_$p) => _$setProp13(_el$0, "fg", theme.fg_dim, _$p));
10332
+ return _el$0;
10333
+ })();
10334
+ },
10335
+ get children() {
10336
+ return [_$createComponent13(For10, {
10337
+ get each() {
10338
+ return visible();
10339
+ },
10340
+ children: (issue) => {
10341
+ const line = () => formatIssueLine(issue);
10342
+ return (() => {
10343
+ var _el$1 = _$createElement13("box"), _el$10 = _$createElement13("text"), _el$11 = _$createElement13("text");
10344
+ _$insertNode12(_el$1, _el$10);
10345
+ _$insertNode12(_el$1, _el$11);
10346
+ _$setProp13(_el$1, "flexDirection", "row");
10347
+ _$setProp13(_el$1, "height", 1);
10348
+ _$insert13(_el$1, _$createComponent13(For10, {
10349
+ get each() {
10350
+ return issue.labels;
10351
+ },
10352
+ children: (_, i) => (() => {
10353
+ var _el$12 = _$createElement13("text");
10354
+ _$setProp13(_el$12, "content", " \u25CF");
10355
+ _$effect13((_$p) => _$setProp13(_el$12, "fg", labelColor(i()), _$p));
10356
+ return _el$12;
10357
+ })()
10358
+ }), null);
10359
+ _$effect13((_p$) => {
10360
+ var _v$5 = theme.fg_dim, _v$6 = `${line().number_str} `, _v$7 = theme.fg, _v$8 = line().title;
10361
+ _v$5 !== _p$.e && (_p$.e = _$setProp13(_el$10, "fg", _v$5, _p$.e));
10362
+ _v$6 !== _p$.t && (_p$.t = _$setProp13(_el$10, "content", _v$6, _p$.t));
10363
+ _v$7 !== _p$.a && (_p$.a = _$setProp13(_el$11, "fg", _v$7, _p$.a));
10364
+ _v$8 !== _p$.o && (_p$.o = _$setProp13(_el$11, "content", _v$8, _p$.o));
10365
+ return _p$;
10366
+ }, {
10367
+ e: undefined,
10368
+ t: undefined,
10369
+ a: undefined,
10370
+ o: undefined
10371
+ });
10372
+ return _el$1;
10373
+ })();
10374
+ }
10375
+ }), _$createComponent13(Show11, {
10376
+ get when() {
10377
+ return overflow() > 0;
10378
+ },
10379
+ get children() {
10380
+ var _el$9 = _$createElement13("text");
10381
+ _$effect13((_p$) => {
10382
+ var _v$3 = theme.fg_dim, _v$4 = `+${overflow()} more`;
10383
+ _v$3 !== _p$.e && (_p$.e = _$setProp13(_el$9, "fg", _v$3, _p$.e));
10384
+ _v$4 !== _p$.t && (_p$.t = _$setProp13(_el$9, "content", _v$4, _p$.t));
10385
+ return _p$;
10386
+ }, {
10387
+ e: undefined,
10388
+ t: undefined
10389
+ });
10390
+ return _el$9;
10391
+ }
10392
+ })];
10393
+ }
10394
+ })];
10395
+ }
10396
+ })];
10397
+ }
10398
+ }));
10399
+ return _el$;
10400
+ })();
9246
10401
  }
9247
10402
  registerWidget({
9248
10403
  id: "github-issues",
@@ -9252,8 +10407,17 @@ registerWidget({
9252
10407
  });
9253
10408
 
9254
10409
  // packages/render/src/components/widgets/commit-activity.tsx
10410
+ import { createComponent as _$createComponent14 } from "@opentui/solid";
10411
+ import { effect as _$effect14 } from "@opentui/solid";
10412
+ import { insertNode as _$insertNode13 } from "@opentui/solid";
10413
+ import { insert as _$insert14 } from "@opentui/solid";
10414
+ import { setProp as _$setProp14 } from "@opentui/solid";
10415
+ import { createElement as _$createElement14 } from "@opentui/solid";
9255
10416
  import { Show as Show12, createMemo as createMemo9 } from "solid-js";
9256
- var size_hint11 = { span: "third", min_height: 2 };
10417
+ var size_hint11 = {
10418
+ span: "third",
10419
+ min_height: 2
10420
+ };
9257
10421
  var BLOCKS = " \u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588";
9258
10422
  function renderSparkline(counts) {
9259
10423
  const max = Math.max(...counts, 1);
@@ -9307,62 +10471,112 @@ function CommitActivityWidget(props) {
9307
10471
  color: c > 0 ? theme.green : theme.fg_dim
9308
10472
  }));
9309
10473
  });
9310
- return /* @__PURE__ */ React.createElement("box", {
9311
- flexDirection: "column"
9312
- }, /* @__PURE__ */ React.createElement(Show12, {
9313
- when: activity(),
9314
- fallback: /* @__PURE__ */ React.createElement("text", {
9315
- fg: theme.fg_dim,
9316
- content: "(no activity data)"
9317
- })
9318
- }, /* @__PURE__ */ React.createElement("box", {
9319
- flexDirection: "row",
9320
- height: 1
9321
- }, sparkline_colored().map((s) => /* @__PURE__ */ React.createElement("text", {
9322
- fg: s.color,
9323
- content: s.char
9324
- }))), /* @__PURE__ */ React.createElement("box", {
9325
- flexDirection: "row",
9326
- height: 1,
9327
- gap: 2
9328
- }, /* @__PURE__ */ React.createElement("box", {
9329
- flexDirection: "row",
9330
- gap: 1
9331
- }, /* @__PURE__ */ React.createElement("text", {
9332
- fg: theme.fg_dim,
9333
- content: "this week:"
9334
- }), /* @__PURE__ */ React.createElement("text", {
9335
- fg: theme.yellow,
9336
- content: `${activity().total_this_week}`
9337
- })), /* @__PURE__ */ React.createElement("box", {
9338
- flexDirection: "row",
9339
- gap: 1
9340
- }, /* @__PURE__ */ React.createElement("text", {
9341
- fg: theme.fg_dim,
9342
- content: "last week:"
9343
- }), /* @__PURE__ */ React.createElement("text", {
9344
- fg: theme.yellow,
9345
- content: `${activity().total_last_week}`
9346
- })), /* @__PURE__ */ React.createElement("box", {
9347
- flexDirection: "row",
9348
- gap: 1
9349
- }, /* @__PURE__ */ React.createElement("text", {
9350
- fg: theme.fg_dim,
9351
- content: "delta:"
9352
- }), /* @__PURE__ */ React.createElement("text", {
9353
- fg: delta_color(),
9354
- content: delta_str()
9355
- }))), /* @__PURE__ */ React.createElement("box", {
9356
- flexDirection: "row",
9357
- height: 1,
9358
- gap: 1
9359
- }, /* @__PURE__ */ React.createElement("text", {
9360
- fg: theme.yellow,
9361
- content: `${total_14d()}`
9362
- }), /* @__PURE__ */ React.createElement("text", {
9363
- fg: theme.fg_dim,
9364
- content: "commits in 14 days"
9365
- }))));
10474
+ return (() => {
10475
+ var _el$ = _$createElement14("box");
10476
+ _$setProp14(_el$, "flexDirection", "column");
10477
+ _$insert14(_el$, _$createComponent14(Show12, {
10478
+ get when() {
10479
+ return activity();
10480
+ },
10481
+ get fallback() {
10482
+ return (() => {
10483
+ var _el$14 = _$createElement14("text");
10484
+ _$setProp14(_el$14, "content", "(no activity data)");
10485
+ _$effect14((_$p) => _$setProp14(_el$14, "fg", theme.fg_dim, _$p));
10486
+ return _el$14;
10487
+ })();
10488
+ },
10489
+ get children() {
10490
+ return [(() => {
10491
+ var _el$2 = _$createElement14("box");
10492
+ _$setProp14(_el$2, "flexDirection", "row");
10493
+ _$setProp14(_el$2, "height", 1);
10494
+ _$insert14(_el$2, () => sparkline_colored().map((s) => (() => {
10495
+ var _el$15 = _$createElement14("text");
10496
+ _$effect14((_p$) => {
10497
+ var { color: _v$11, char: _v$12 } = s;
10498
+ _v$11 !== _p$.e && (_p$.e = _$setProp14(_el$15, "fg", _v$11, _p$.e));
10499
+ _v$12 !== _p$.t && (_p$.t = _$setProp14(_el$15, "content", _v$12, _p$.t));
10500
+ return _p$;
10501
+ }, {
10502
+ e: undefined,
10503
+ t: undefined
10504
+ });
10505
+ return _el$15;
10506
+ })()));
10507
+ return _el$2;
10508
+ })(), (() => {
10509
+ var _el$3 = _$createElement14("box"), _el$4 = _$createElement14("box"), _el$5 = _$createElement14("text"), _el$6 = _$createElement14("text"), _el$7 = _$createElement14("box"), _el$8 = _$createElement14("text"), _el$9 = _$createElement14("text"), _el$0 = _$createElement14("box"), _el$1 = _$createElement14("text"), _el$10 = _$createElement14("text");
10510
+ _$insertNode13(_el$3, _el$4);
10511
+ _$insertNode13(_el$3, _el$7);
10512
+ _$insertNode13(_el$3, _el$0);
10513
+ _$setProp14(_el$3, "flexDirection", "row");
10514
+ _$setProp14(_el$3, "height", 1);
10515
+ _$setProp14(_el$3, "gap", 2);
10516
+ _$insertNode13(_el$4, _el$5);
10517
+ _$insertNode13(_el$4, _el$6);
10518
+ _$setProp14(_el$4, "flexDirection", "row");
10519
+ _$setProp14(_el$4, "gap", 1);
10520
+ _$setProp14(_el$5, "content", "this week:");
10521
+ _$insertNode13(_el$7, _el$8);
10522
+ _$insertNode13(_el$7, _el$9);
10523
+ _$setProp14(_el$7, "flexDirection", "row");
10524
+ _$setProp14(_el$7, "gap", 1);
10525
+ _$setProp14(_el$8, "content", "last week:");
10526
+ _$insertNode13(_el$0, _el$1);
10527
+ _$insertNode13(_el$0, _el$10);
10528
+ _$setProp14(_el$0, "flexDirection", "row");
10529
+ _$setProp14(_el$0, "gap", 1);
10530
+ _$setProp14(_el$1, "content", "delta:");
10531
+ _$effect14((_p$) => {
10532
+ var _v$ = theme.fg_dim, _v$2 = theme.yellow, _v$3 = `${activity().total_this_week}`, _v$4 = theme.fg_dim, _v$5 = theme.yellow, _v$6 = `${activity().total_last_week}`, _v$7 = theme.fg_dim, _v$8 = delta_color(), _v$9 = delta_str();
10533
+ _v$ !== _p$.e && (_p$.e = _$setProp14(_el$5, "fg", _v$, _p$.e));
10534
+ _v$2 !== _p$.t && (_p$.t = _$setProp14(_el$6, "fg", _v$2, _p$.t));
10535
+ _v$3 !== _p$.a && (_p$.a = _$setProp14(_el$6, "content", _v$3, _p$.a));
10536
+ _v$4 !== _p$.o && (_p$.o = _$setProp14(_el$8, "fg", _v$4, _p$.o));
10537
+ _v$5 !== _p$.i && (_p$.i = _$setProp14(_el$9, "fg", _v$5, _p$.i));
10538
+ _v$6 !== _p$.n && (_p$.n = _$setProp14(_el$9, "content", _v$6, _p$.n));
10539
+ _v$7 !== _p$.s && (_p$.s = _$setProp14(_el$1, "fg", _v$7, _p$.s));
10540
+ _v$8 !== _p$.h && (_p$.h = _$setProp14(_el$10, "fg", _v$8, _p$.h));
10541
+ _v$9 !== _p$.r && (_p$.r = _$setProp14(_el$10, "content", _v$9, _p$.r));
10542
+ return _p$;
10543
+ }, {
10544
+ e: undefined,
10545
+ t: undefined,
10546
+ a: undefined,
10547
+ o: undefined,
10548
+ i: undefined,
10549
+ n: undefined,
10550
+ s: undefined,
10551
+ h: undefined,
10552
+ r: undefined
10553
+ });
10554
+ return _el$3;
10555
+ })(), (() => {
10556
+ var _el$11 = _$createElement14("box"), _el$12 = _$createElement14("text"), _el$13 = _$createElement14("text");
10557
+ _$insertNode13(_el$11, _el$12);
10558
+ _$insertNode13(_el$11, _el$13);
10559
+ _$setProp14(_el$11, "flexDirection", "row");
10560
+ _$setProp14(_el$11, "height", 1);
10561
+ _$setProp14(_el$11, "gap", 1);
10562
+ _$setProp14(_el$13, "content", "commits in 14 days");
10563
+ _$effect14((_p$) => {
10564
+ var _v$0 = theme.yellow, _v$1 = `${total_14d()}`, _v$10 = theme.fg_dim;
10565
+ _v$0 !== _p$.e && (_p$.e = _$setProp14(_el$12, "fg", _v$0, _p$.e));
10566
+ _v$1 !== _p$.t && (_p$.t = _$setProp14(_el$12, "content", _v$1, _p$.t));
10567
+ _v$10 !== _p$.a && (_p$.a = _$setProp14(_el$13, "fg", _v$10, _p$.a));
10568
+ return _p$;
10569
+ }, {
10570
+ e: undefined,
10571
+ t: undefined,
10572
+ a: undefined
10573
+ });
10574
+ return _el$11;
10575
+ })()];
10576
+ }
10577
+ }));
10578
+ return _el$;
10579
+ })();
9366
10580
  }
9367
10581
  registerWidget({
9368
10582
  id: "commit-activity",
@@ -9517,7 +10731,11 @@ function WidgetContainer(props) {
9517
10731
  const def = getWidget(c.id);
9518
10732
  if (!def)
9519
10733
  return null;
9520
- return { id: c.id, size_hint: def.size_hint, config: c };
10734
+ return {
10735
+ id: c.id,
10736
+ size_hint: def.size_hint,
10737
+ config: c
10738
+ };
9521
10739
  }).filter((gw) => gw !== null);
9522
10740
  });
9523
10741
  const content_width = createMemo10(() => props.availableWidth - 1);
@@ -9569,14 +10787,23 @@ function WidgetContainer(props) {
9569
10787
  if (region_height <= vp_height) {
9570
10788
  if (!top_visible) {
9571
10789
  const target = Math.max(0, region_top);
9572
- scrollbox_ref.scrollTo({ x: 0, y: target });
10790
+ scrollbox_ref.scrollTo({
10791
+ x: 0,
10792
+ y: target
10793
+ });
9573
10794
  } else {
9574
10795
  const target = region_bottom - vp_height;
9575
- scrollbox_ref.scrollTo({ x: 0, y: target });
10796
+ scrollbox_ref.scrollTo({
10797
+ x: 0,
10798
+ y: target
10799
+ });
9576
10800
  }
9577
10801
  } else {
9578
10802
  const target = Math.max(0, region_top);
9579
- scrollbox_ref.scrollTo({ x: 0, y: target });
10803
+ scrollbox_ref.scrollTo({
10804
+ x: 0,
10805
+ y: target
10806
+ });
9580
10807
  }
9581
10808
  }
9582
10809
  createEffect4(on(focused_idx, () => scrollToFocused()));
@@ -9597,14 +10824,20 @@ function WidgetContainer(props) {
9597
10824
  if (key.raw === "c") {
9598
10825
  const widget_id = ids[focused_idx()];
9599
10826
  if (widget_id) {
9600
- const updated = props.widgetConfigs.map((c) => c.id === widget_id ? { ...c, collapsed: !c.collapsed } : c);
10827
+ const updated = props.widgetConfigs.map((c) => c.id === widget_id ? {
10828
+ ...c,
10829
+ collapsed: !c.collapsed
10830
+ } : c);
9601
10831
  props.onWidgetConfigChange?.(updated);
9602
10832
  }
9603
10833
  return;
9604
10834
  }
9605
10835
  if (key.raw === "C") {
9606
10836
  const all_collapsed = props.widgetConfigs.every((c) => !c.enabled || c.collapsed);
9607
- const updated = props.widgetConfigs.map((c) => ({ ...c, collapsed: !all_collapsed }));
10837
+ const updated = props.widgetConfigs.map((c) => ({
10838
+ ...c,
10839
+ collapsed: !all_collapsed
10840
+ }));
9608
10841
  props.onWidgetConfigChange?.(updated);
9609
10842
  return;
9610
10843
  }
@@ -9618,114 +10851,224 @@ function WidgetContainer(props) {
9618
10851
  function borderLine(type, prev, next) {
9619
10852
  return buildBorderLine(type, content_width(), prev, next);
9620
10853
  }
9621
- return /* @__PURE__ */ React.createElement("box", {
9622
- flexDirection: "column",
9623
- width: props.availableWidth,
9624
- height: props.height
9625
- }, /* @__PURE__ */ React.createElement(Show13, {
9626
- when: !props.loading,
9627
- fallback: /* @__PURE__ */ React.createElement("text", {
9628
- fg: theme.fg_dim,
9629
- content: "loading..."
9630
- })
9631
- }, /* @__PURE__ */ React.createElement(Show13, {
9632
- when: props.status,
9633
- fallback: /* @__PURE__ */ React.createElement("text", {
9634
- fg: theme.fg_dim,
9635
- content: "(select a repo)"
9636
- })
9637
- }, /* @__PURE__ */ React.createElement("scrollbox", {
9638
- ref: scrollbox_ref,
9639
- flexGrow: 1
9640
- }, /* @__PURE__ */ React.createElement("box", {
9641
- flexDirection: "column",
9642
- width: content_width(),
9643
- flexShrink: 0
9644
- }, /* @__PURE__ */ React.createElement(For11, {
9645
- each: grid_layout().rows
9646
- }, (row, row_index) => {
9647
- const rows = grid_layout().rows;
9648
- const prev_row = () => row_index() > 0 ? rows[row_index() - 1] : null;
9649
- const is_first = () => row_index() === 0;
9650
- const is_last = () => row_index() === rows.length - 1;
9651
- const top_line = () => {
9652
- const type = is_first() ? "top" : "mid";
9653
- const line = borderLine(type, prev_row(), row);
9654
- if (is_first()) {
9655
- return buildBorderLineWithTitle(line, `widgets: ${props.repoName}`);
9656
- }
9657
- return line;
9658
- };
9659
- return /* @__PURE__ */ React.createElement(Fragment, null, /* @__PURE__ */ React.createElement("text", {
9660
- fg: props.focused && is_first() ? theme.border_highlight : theme.border,
9661
- content: top_line()
9662
- }), /* @__PURE__ */ React.createElement("box", {
9663
- ref: (el) => {
9664
- row_refs.set(row_index(), el);
10854
+ return (() => {
10855
+ var _el$ = _$createElement15("box");
10856
+ _$setProp15(_el$, "flexDirection", "column");
10857
+ _$insert15(_el$, _$createComponent15(Show13, {
10858
+ get when() {
10859
+ return !props.loading;
9665
10860
  },
9666
- flexDirection: "row",
9667
- alignItems: "stretch",
9668
- width: content_width()
9669
- }, /* @__PURE__ */ React.createElement(For11, {
9670
- each: row.widgets
9671
- }, (gw, widget_idx) => {
9672
- const def = getWidget(gw.id);
9673
- if (!def)
9674
- return null;
9675
- const focused = () => isFocused(gw.id);
9676
- const box_width = () => {
9677
- if (row.columns === 1)
9678
- return content_width();
9679
- if (row.columns === 2) {
9680
- const junction = Math.floor(content_width() / 2);
9681
- if (widget_idx() === 0)
9682
- return junction;
9683
- return content_width() - junction;
9684
- }
9685
- const j1 = Math.floor(content_width() / 3);
9686
- const j2 = Math.floor(2 * content_width() / 3);
9687
- if (widget_idx() === 0)
9688
- return j1;
9689
- if (widget_idx() === 1)
9690
- return j2 - j1;
9691
- return content_width() - j2;
9692
- };
9693
- const widget_content_width = () => {
9694
- const sides = getWidgetBorderSides(row, widget_idx());
9695
- return Math.max(1, box_width() - sides.length);
9696
- };
9697
- return /* @__PURE__ */ React.createElement("box", {
9698
- width: box_width(),
9699
- border: getWidgetBorderSides(row, widget_idx()),
9700
- borderStyle: "rounded",
9701
- borderColor: focused() || props.focused && (widget_idx() === 0 || widget_idx() === row.columns - 1) ? theme.border_highlight : theme.border,
9702
- backgroundColor: focused() ? theme.bg_highlight : undefined,
9703
- flexDirection: "column",
9704
- minHeight: gw.size_hint.min_height,
9705
- overflow: "hidden"
9706
- }, /* @__PURE__ */ React.createElement(Show13, {
9707
- when: !gw.config.collapsed,
9708
- fallback: /* @__PURE__ */ React.createElement("text", {
9709
- fg: focused() ? theme.yellow : theme.fg_dim,
9710
- content: focused() ? `\u25B8 [>] ${def.label} (collapsed)` : `[>] ${def.label} (collapsed)`
9711
- })
9712
- }, /* @__PURE__ */ React.createElement("text", {
9713
- fg: focused() ? theme.yellow : theme.fg_dim,
9714
- content: focused() ? `\u25B8 ${def.label}` : ` ${def.label}`
9715
- }), /* @__PURE__ */ React.createElement(def.component, {
9716
- width: widget_content_width(),
9717
- focused: focused(),
9718
- status: props.status
9719
- })));
9720
- })), /* @__PURE__ */ React.createElement(Show13, {
9721
- when: is_last()
9722
- }, /* @__PURE__ */ React.createElement("text", {
9723
- fg: props.focused ? theme.border_highlight : theme.border,
9724
- content: borderLine("bottom", row, null)
9725
- })));
9726
- }))))));
10861
+ get fallback() {
10862
+ return (() => {
10863
+ var _el$4 = _$createElement15("text");
10864
+ _$setProp15(_el$4, "content", "loading...");
10865
+ _$effect15((_$p) => _$setProp15(_el$4, "fg", theme.fg_dim, _$p));
10866
+ return _el$4;
10867
+ })();
10868
+ },
10869
+ get children() {
10870
+ return _$createComponent15(Show13, {
10871
+ get when() {
10872
+ return props.status;
10873
+ },
10874
+ get fallback() {
10875
+ return (() => {
10876
+ var _el$5 = _$createElement15("text");
10877
+ _$setProp15(_el$5, "content", "(select a repo)");
10878
+ _$effect15((_$p) => _$setProp15(_el$5, "fg", theme.fg_dim, _$p));
10879
+ return _el$5;
10880
+ })();
10881
+ },
10882
+ get children() {
10883
+ var _el$2 = _$createElement15("scrollbox"), _el$3 = _$createElement15("box");
10884
+ _$insertNode14(_el$2, _el$3);
10885
+ var _ref$ = scrollbox_ref;
10886
+ typeof _ref$ === "function" ? _$use(_ref$, _el$2) : scrollbox_ref = _el$2;
10887
+ _$setProp15(_el$2, "flexGrow", 1);
10888
+ _$setProp15(_el$3, "flexDirection", "column");
10889
+ _$setProp15(_el$3, "flexShrink", 0);
10890
+ _$insert15(_el$3, _$createComponent15(For11, {
10891
+ get each() {
10892
+ return grid_layout().rows;
10893
+ },
10894
+ children: (row, row_index) => {
10895
+ const rows = grid_layout().rows;
10896
+ const prev_row = () => row_index() > 0 ? rows[row_index() - 1] : null;
10897
+ const is_first = () => row_index() === 0;
10898
+ const is_last = () => row_index() === rows.length - 1;
10899
+ const top_line = () => {
10900
+ const type = is_first() ? "top" : "mid";
10901
+ const line = borderLine(type, prev_row(), row);
10902
+ if (is_first()) {
10903
+ return buildBorderLineWithTitle(line, `widgets: ${props.repoName}`);
10904
+ }
10905
+ return line;
10906
+ };
10907
+ return [(() => {
10908
+ var _el$6 = _$createElement15("text");
10909
+ _$effect15((_p$) => {
10910
+ var _v$3 = props.focused && is_first() ? theme.border_highlight : theme.border, _v$4 = top_line();
10911
+ _v$3 !== _p$.e && (_p$.e = _$setProp15(_el$6, "fg", _v$3, _p$.e));
10912
+ _v$4 !== _p$.t && (_p$.t = _$setProp15(_el$6, "content", _v$4, _p$.t));
10913
+ return _p$;
10914
+ }, {
10915
+ e: undefined,
10916
+ t: undefined
10917
+ });
10918
+ return _el$6;
10919
+ })(), (() => {
10920
+ var _el$7 = _$createElement15("box");
10921
+ _$use((el) => {
10922
+ row_refs.set(row_index(), el);
10923
+ }, _el$7);
10924
+ _$setProp15(_el$7, "flexDirection", "row");
10925
+ _$setProp15(_el$7, "alignItems", "stretch");
10926
+ _$insert15(_el$7, _$createComponent15(For11, {
10927
+ get each() {
10928
+ return row.widgets;
10929
+ },
10930
+ children: (gw, widget_idx) => {
10931
+ const def = getWidget(gw.id);
10932
+ if (!def)
10933
+ return null;
10934
+ const focused = () => isFocused(gw.id);
10935
+ const box_width = () => {
10936
+ if (row.columns === 1)
10937
+ return content_width();
10938
+ if (row.columns === 2) {
10939
+ const junction = Math.floor(content_width() / 2);
10940
+ if (widget_idx() === 0)
10941
+ return junction;
10942
+ return content_width() - junction;
10943
+ }
10944
+ const j1 = Math.floor(content_width() / 3);
10945
+ const j2 = Math.floor(2 * content_width() / 3);
10946
+ if (widget_idx() === 0)
10947
+ return j1;
10948
+ if (widget_idx() === 1)
10949
+ return j2 - j1;
10950
+ return content_width() - j2;
10951
+ };
10952
+ const widget_content_width = () => {
10953
+ const sides = getWidgetBorderSides(row, widget_idx());
10954
+ return Math.max(1, box_width() - sides.length);
10955
+ };
10956
+ return (() => {
10957
+ var _el$9 = _$createElement15("box");
10958
+ _$setProp15(_el$9, "borderStyle", "rounded");
10959
+ _$setProp15(_el$9, "flexDirection", "column");
10960
+ _$setProp15(_el$9, "overflow", "hidden");
10961
+ _$insert15(_el$9, _$createComponent15(Show13, {
10962
+ get when() {
10963
+ return !gw.config.collapsed;
10964
+ },
10965
+ get fallback() {
10966
+ return (() => {
10967
+ var _el$1 = _$createElement15("text");
10968
+ _$effect15((_p$) => {
10969
+ var _v$12 = focused() ? theme.yellow : theme.fg_dim, _v$13 = focused() ? `\u25B8 [>] ${def.label} (collapsed)` : `[>] ${def.label} (collapsed)`;
10970
+ _v$12 !== _p$.e && (_p$.e = _$setProp15(_el$1, "fg", _v$12, _p$.e));
10971
+ _v$13 !== _p$.t && (_p$.t = _$setProp15(_el$1, "content", _v$13, _p$.t));
10972
+ return _p$;
10973
+ }, {
10974
+ e: undefined,
10975
+ t: undefined
10976
+ });
10977
+ return _el$1;
10978
+ })();
10979
+ },
10980
+ get children() {
10981
+ return [(() => {
10982
+ var _el$0 = _$createElement15("text");
10983
+ _$effect15((_p$) => {
10984
+ var _v$7 = focused() ? theme.yellow : theme.fg_dim, _v$8 = focused() ? `\u25B8 ${def.label}` : ` ${def.label}`;
10985
+ _v$7 !== _p$.e && (_p$.e = _$setProp15(_el$0, "fg", _v$7, _p$.e));
10986
+ _v$8 !== _p$.t && (_p$.t = _$setProp15(_el$0, "content", _v$8, _p$.t));
10987
+ return _p$;
10988
+ }, {
10989
+ e: undefined,
10990
+ t: undefined
10991
+ });
10992
+ return _el$0;
10993
+ })(), _$createComponent15(def.component, {
10994
+ get width() {
10995
+ return widget_content_width();
10996
+ },
10997
+ get focused() {
10998
+ return focused();
10999
+ },
11000
+ get status() {
11001
+ return props.status;
11002
+ }
11003
+ })];
11004
+ }
11005
+ }));
11006
+ _$effect15((_p$) => {
11007
+ var _v$9 = box_width(), _v$0 = getWidgetBorderSides(row, widget_idx()), _v$1 = focused() || props.focused && (widget_idx() === 0 || widget_idx() === row.columns - 1) ? theme.border_highlight : theme.border, _v$10 = focused() ? theme.bg_highlight : undefined, _v$11 = gw.size_hint.min_height;
11008
+ _v$9 !== _p$.e && (_p$.e = _$setProp15(_el$9, "width", _v$9, _p$.e));
11009
+ _v$0 !== _p$.t && (_p$.t = _$setProp15(_el$9, "border", _v$0, _p$.t));
11010
+ _v$1 !== _p$.a && (_p$.a = _$setProp15(_el$9, "borderColor", _v$1, _p$.a));
11011
+ _v$10 !== _p$.o && (_p$.o = _$setProp15(_el$9, "backgroundColor", _v$10, _p$.o));
11012
+ _v$11 !== _p$.i && (_p$.i = _$setProp15(_el$9, "minHeight", _v$11, _p$.i));
11013
+ return _p$;
11014
+ }, {
11015
+ e: undefined,
11016
+ t: undefined,
11017
+ a: undefined,
11018
+ o: undefined,
11019
+ i: undefined
11020
+ });
11021
+ return _el$9;
11022
+ })();
11023
+ }
11024
+ }));
11025
+ _$effect15((_$p) => _$setProp15(_el$7, "width", content_width(), _$p));
11026
+ return _el$7;
11027
+ })(), _$createComponent15(Show13, {
11028
+ get when() {
11029
+ return is_last();
11030
+ },
11031
+ get children() {
11032
+ var _el$8 = _$createElement15("text");
11033
+ _$effect15((_p$) => {
11034
+ var _v$5 = props.focused ? theme.border_highlight : theme.border, _v$6 = borderLine("bottom", row, null);
11035
+ _v$5 !== _p$.e && (_p$.e = _$setProp15(_el$8, "fg", _v$5, _p$.e));
11036
+ _v$6 !== _p$.t && (_p$.t = _$setProp15(_el$8, "content", _v$6, _p$.t));
11037
+ return _p$;
11038
+ }, {
11039
+ e: undefined,
11040
+ t: undefined
11041
+ });
11042
+ return _el$8;
11043
+ }
11044
+ })];
11045
+ }
11046
+ }));
11047
+ _$effect15((_$p) => _$setProp15(_el$3, "width", content_width(), _$p));
11048
+ return _el$2;
11049
+ }
11050
+ });
11051
+ }
11052
+ }));
11053
+ _$effect15((_p$) => {
11054
+ var { availableWidth: _v$, height: _v$2 } = props;
11055
+ _v$ !== _p$.e && (_p$.e = _$setProp15(_el$, "width", _v$, _p$.e));
11056
+ _v$2 !== _p$.t && (_p$.t = _$setProp15(_el$, "height", _v$2, _p$.t));
11057
+ return _p$;
11058
+ }, {
11059
+ e: undefined,
11060
+ t: undefined
11061
+ });
11062
+ return _el$;
11063
+ })();
9727
11064
  }
9728
11065
  // packages/render/src/components/status-bar.tsx
11066
+ import { insert as _$insert16 } from "@opentui/solid";
11067
+ import { insertNode as _$insertNode15 } from "@opentui/solid";
11068
+ import { createComponent as _$createComponent16 } from "@opentui/solid";
11069
+ import { effect as _$effect16 } from "@opentui/solid";
11070
+ import { setProp as _$setProp16 } from "@opentui/solid";
11071
+ import { createElement as _$createElement16 } from "@opentui/solid";
9729
11072
  import { createMemo as createMemo11, Show as Show14 } from "solid-js";
9730
11073
  var KEY_HINTS = {
9731
11074
  NORMAL: "j/k:nav Enter:expand g:ggi r:refresh q:quit ?:help",
@@ -9755,106 +11098,216 @@ function StatusBar(props) {
9755
11098
  parts.push(`${props.aheadCount} ahead`);
9756
11099
  return parts.join(", ");
9757
11100
  });
9758
- return /* @__PURE__ */ React.createElement("box", {
9759
- height: 1,
9760
- width: "100%",
9761
- backgroundColor: theme.bg_dark,
9762
- flexDirection: "row",
9763
- paddingLeft: 1,
9764
- paddingRight: 1
9765
- }, /* @__PURE__ */ React.createElement("text", {
9766
- fg: theme.blue,
9767
- content: `[${props.mode}]`
9768
- }), /* @__PURE__ */ React.createElement(Show14, {
9769
- when: props.message,
9770
- fallback: /* @__PURE__ */ React.createElement("text", {
9771
- fg: theme.fg_dim,
9772
- content: ` ${keyHints()}`
9773
- })
9774
- }, /* @__PURE__ */ React.createElement("text", {
9775
- fg: theme.yellow,
9776
- content: ` ${props.message}`
9777
- })), /* @__PURE__ */ React.createElement("box", {
9778
- flexGrow: 1
9779
- }), /* @__PURE__ */ React.createElement(Show14, {
9780
- when: props.widgetSummary
9781
- }, /* @__PURE__ */ React.createElement("text", {
9782
- fg: theme.fg_dim,
9783
- content: `${props.widgetSummary} `
9784
- })), /* @__PURE__ */ React.createElement("text", {
9785
- fg: summaryColor(),
9786
- content: summaryText()
9787
- }));
11101
+ return (() => {
11102
+ var _el$ = _$createElement16("box"), _el$2 = _$createElement16("text"), _el$4 = _$createElement16("box"), _el$6 = _$createElement16("text");
11103
+ _$insertNode15(_el$, _el$2);
11104
+ _$insertNode15(_el$, _el$4);
11105
+ _$insertNode15(_el$, _el$6);
11106
+ _$setProp16(_el$, "height", 1);
11107
+ _$setProp16(_el$, "width", "100%");
11108
+ _$setProp16(_el$, "flexDirection", "row");
11109
+ _$setProp16(_el$, "paddingLeft", 1);
11110
+ _$setProp16(_el$, "paddingRight", 1);
11111
+ _$insert16(_el$, _$createComponent16(Show14, {
11112
+ get when() {
11113
+ return props.message;
11114
+ },
11115
+ get fallback() {
11116
+ return (() => {
11117
+ var _el$7 = _$createElement16("text");
11118
+ _$effect16((_p$) => {
11119
+ var _v$0 = theme.fg_dim, _v$1 = ` ${keyHints()}`;
11120
+ _v$0 !== _p$.e && (_p$.e = _$setProp16(_el$7, "fg", _v$0, _p$.e));
11121
+ _v$1 !== _p$.t && (_p$.t = _$setProp16(_el$7, "content", _v$1, _p$.t));
11122
+ return _p$;
11123
+ }, {
11124
+ e: undefined,
11125
+ t: undefined
11126
+ });
11127
+ return _el$7;
11128
+ })();
11129
+ },
11130
+ get children() {
11131
+ var _el$3 = _$createElement16("text");
11132
+ _$effect16((_p$) => {
11133
+ var _v$ = theme.yellow, _v$2 = ` ${props.message}`;
11134
+ _v$ !== _p$.e && (_p$.e = _$setProp16(_el$3, "fg", _v$, _p$.e));
11135
+ _v$2 !== _p$.t && (_p$.t = _$setProp16(_el$3, "content", _v$2, _p$.t));
11136
+ return _p$;
11137
+ }, {
11138
+ e: undefined,
11139
+ t: undefined
11140
+ });
11141
+ return _el$3;
11142
+ }
11143
+ }), _el$4);
11144
+ _$setProp16(_el$4, "flexGrow", 1);
11145
+ _$insert16(_el$, _$createComponent16(Show14, {
11146
+ get when() {
11147
+ return props.widgetSummary;
11148
+ },
11149
+ get children() {
11150
+ var _el$5 = _$createElement16("text");
11151
+ _$effect16((_p$) => {
11152
+ var _v$3 = theme.fg_dim, _v$4 = `${props.widgetSummary} `;
11153
+ _v$3 !== _p$.e && (_p$.e = _$setProp16(_el$5, "fg", _v$3, _p$.e));
11154
+ _v$4 !== _p$.t && (_p$.t = _$setProp16(_el$5, "content", _v$4, _p$.t));
11155
+ return _p$;
11156
+ }, {
11157
+ e: undefined,
11158
+ t: undefined
11159
+ });
11160
+ return _el$5;
11161
+ }
11162
+ }), _el$6);
11163
+ _$effect16((_p$) => {
11164
+ var _v$5 = theme.bg_dark, _v$6 = theme.blue, _v$7 = `[${props.mode}]`, _v$8 = summaryColor(), _v$9 = summaryText();
11165
+ _v$5 !== _p$.e && (_p$.e = _$setProp16(_el$, "backgroundColor", _v$5, _p$.e));
11166
+ _v$6 !== _p$.t && (_p$.t = _$setProp16(_el$2, "fg", _v$6, _p$.t));
11167
+ _v$7 !== _p$.a && (_p$.a = _$setProp16(_el$2, "content", _v$7, _p$.a));
11168
+ _v$8 !== _p$.o && (_p$.o = _$setProp16(_el$6, "fg", _v$8, _p$.o));
11169
+ _v$9 !== _p$.i && (_p$.i = _$setProp16(_el$6, "content", _v$9, _p$.i));
11170
+ return _p$;
11171
+ }, {
11172
+ e: undefined,
11173
+ t: undefined,
11174
+ a: undefined,
11175
+ o: undefined,
11176
+ i: undefined
11177
+ });
11178
+ return _el$;
11179
+ })();
9788
11180
  }
9789
11181
  // packages/render/src/components/help-overlay.tsx
11182
+ import { effect as _$effect17 } from "@opentui/solid";
11183
+ import { insert as _$insert17 } from "@opentui/solid";
11184
+ import { insertNode as _$insertNode16 } from "@opentui/solid";
11185
+ import { createComponent as _$createComponent17 } from "@opentui/solid";
11186
+ import { setProp as _$setProp17 } from "@opentui/solid";
11187
+ import { createElement as _$createElement17 } from "@opentui/solid";
9790
11188
  import { Show as Show15, For as For12 } from "solid-js";
9791
11189
  import { useKeyboard as useKeyboard3 } from "@opentui/solid";
9792
- var SECTIONS = [
9793
- {
9794
- title: "Navigation",
9795
- items: [
9796
- { key: "j / \u2193", desc: "Move down" },
9797
- { key: "k / \u2191", desc: "Move up" },
9798
- { key: "g", desc: "First repo" },
9799
- { key: "G", desc: "Last repo" },
9800
- { key: "Enter", desc: "Expand/collapse or enter detail mode" }
9801
- ]
9802
- },
9803
- {
9804
- title: "Actions",
9805
- items: [
9806
- { key: "g (in detail)", desc: "Launch ggi" },
9807
- { key: "o", desc: "Open in $EDITOR" },
9808
- { key: "t", desc: "Open tmux session" },
9809
- { key: "r", desc: "Refresh selected repo" },
9810
- { key: "R", desc: "Full rescan" }
9811
- ]
9812
- },
9813
- {
9814
- title: "View",
9815
- items: [
9816
- { key: "h / l", desc: "Switch panel focus" },
9817
- { key: "Tab", desc: "Cycle panel focus" },
9818
- { key: "f", desc: "Cycle filter (all/dirty/clean/ahead/behind)" },
9819
- { key: "s", desc: "Cycle sort (name/status/last-commit)" },
9820
- { key: "/", desc: "Search repos" }
9821
- ]
9822
- },
9823
- {
9824
- title: "Widgets (stats panel focused)",
9825
- items: [
9826
- { key: "j / k", desc: "Navigate between widgets" },
9827
- { key: "c", desc: "Collapse/expand focused widget" },
9828
- { key: "C", desc: "Collapse/expand all widgets" }
9829
- ]
9830
- },
9831
- {
9832
- title: "General",
9833
- items: [
9834
- { key: "q", desc: "Quit / back" },
9835
- { key: "?", desc: "Toggle help" },
9836
- { key: "Esc", desc: "Cancel / close" }
9837
- ]
9838
- }
9839
- ];
11190
+ var SECTIONS = [{
11191
+ title: "Navigation",
11192
+ items: [{
11193
+ key: "j / \u2193",
11194
+ desc: "Move down"
11195
+ }, {
11196
+ key: "k / \u2191",
11197
+ desc: "Move up"
11198
+ }, {
11199
+ key: "g",
11200
+ desc: "First repo"
11201
+ }, {
11202
+ key: "G",
11203
+ desc: "Last repo"
11204
+ }, {
11205
+ key: "Enter",
11206
+ desc: "Expand/collapse or enter detail mode"
11207
+ }]
11208
+ }, {
11209
+ title: "Actions",
11210
+ items: [{
11211
+ key: "g (in detail)",
11212
+ desc: "Launch ggi"
11213
+ }, {
11214
+ key: "o",
11215
+ desc: "Open in $EDITOR"
11216
+ }, {
11217
+ key: "t",
11218
+ desc: "Open tmux session"
11219
+ }, {
11220
+ key: "r",
11221
+ desc: "Refresh selected repo"
11222
+ }, {
11223
+ key: "R",
11224
+ desc: "Full rescan"
11225
+ }]
11226
+ }, {
11227
+ title: "View",
11228
+ items: [{
11229
+ key: "h / l",
11230
+ desc: "Switch panel focus"
11231
+ }, {
11232
+ key: "Tab",
11233
+ desc: "Cycle panel focus"
11234
+ }, {
11235
+ key: "f",
11236
+ desc: "Cycle filter (all/dirty/clean/ahead/behind)"
11237
+ }, {
11238
+ key: "s",
11239
+ desc: "Cycle sort (name/status/last-commit)"
11240
+ }, {
11241
+ key: "/",
11242
+ desc: "Search repos"
11243
+ }]
11244
+ }, {
11245
+ title: "Widgets (stats panel focused)",
11246
+ items: [{
11247
+ key: "j / k",
11248
+ desc: "Navigate between widgets"
11249
+ }, {
11250
+ key: "c",
11251
+ desc: "Collapse/expand focused widget"
11252
+ }, {
11253
+ key: "C",
11254
+ desc: "Collapse/expand all widgets"
11255
+ }]
11256
+ }, {
11257
+ title: "General",
11258
+ items: [{
11259
+ key: "q",
11260
+ desc: "Quit / back"
11261
+ }, {
11262
+ key: "?",
11263
+ desc: "Toggle help"
11264
+ }, {
11265
+ key: "Esc",
11266
+ desc: "Cancel / close"
11267
+ }]
11268
+ }];
9840
11269
  function Section(props) {
9841
- return /* @__PURE__ */ React.createElement("box", {
9842
- flexDirection: "column"
9843
- }, /* @__PURE__ */ React.createElement("text", {
9844
- fg: theme.yellow,
9845
- content: props.title
9846
- }), /* @__PURE__ */ React.createElement(For12, {
9847
- each: props.items
9848
- }, (item) => /* @__PURE__ */ React.createElement("box", {
9849
- flexDirection: "row",
9850
- height: 1
9851
- }, /* @__PURE__ */ React.createElement("text", {
9852
- fg: theme.blue,
9853
- content: item.key.padEnd(16)
9854
- }), /* @__PURE__ */ React.createElement("text", {
9855
- fg: theme.fg,
9856
- content: item.desc
9857
- }))));
11270
+ return (() => {
11271
+ var _el$ = _$createElement17("box"), _el$2 = _$createElement17("text");
11272
+ _$insertNode16(_el$, _el$2);
11273
+ _$setProp17(_el$, "flexDirection", "column");
11274
+ _$insert17(_el$, _$createComponent17(For12, {
11275
+ get each() {
11276
+ return props.items;
11277
+ },
11278
+ children: (item) => (() => {
11279
+ var _el$3 = _$createElement17("box"), _el$4 = _$createElement17("text"), _el$5 = _$createElement17("text");
11280
+ _$insertNode16(_el$3, _el$4);
11281
+ _$insertNode16(_el$3, _el$5);
11282
+ _$setProp17(_el$3, "flexDirection", "row");
11283
+ _$setProp17(_el$3, "height", 1);
11284
+ _$effect17((_p$) => {
11285
+ var _v$3 = theme.blue, _v$4 = item.key.padEnd(16), _v$5 = theme.fg, _v$6 = item.desc;
11286
+ _v$3 !== _p$.e && (_p$.e = _$setProp17(_el$4, "fg", _v$3, _p$.e));
11287
+ _v$4 !== _p$.t && (_p$.t = _$setProp17(_el$4, "content", _v$4, _p$.t));
11288
+ _v$5 !== _p$.a && (_p$.a = _$setProp17(_el$5, "fg", _v$5, _p$.a));
11289
+ _v$6 !== _p$.o && (_p$.o = _$setProp17(_el$5, "content", _v$6, _p$.o));
11290
+ return _p$;
11291
+ }, {
11292
+ e: undefined,
11293
+ t: undefined,
11294
+ a: undefined,
11295
+ o: undefined
11296
+ });
11297
+ return _el$3;
11298
+ })()
11299
+ }), null);
11300
+ _$effect17((_p$) => {
11301
+ var _v$ = theme.yellow, _v$2 = props.title;
11302
+ _v$ !== _p$.e && (_p$.e = _$setProp17(_el$2, "fg", _v$, _p$.e));
11303
+ _v$2 !== _p$.t && (_p$.t = _$setProp17(_el$2, "content", _v$2, _p$.t));
11304
+ return _p$;
11305
+ }, {
11306
+ e: undefined,
11307
+ t: undefined
11308
+ });
11309
+ return _el$;
11310
+ })();
9858
11311
  }
9859
11312
  function HelpOverlay(props) {
9860
11313
  useKeyboard3((key) => {
@@ -9864,29 +11317,47 @@ function HelpOverlay(props) {
9864
11317
  props.onClose();
9865
11318
  }
9866
11319
  });
9867
- return /* @__PURE__ */ React.createElement(Show15, {
9868
- when: props.visible
9869
- }, /* @__PURE__ */ React.createElement("box", {
9870
- position: "absolute",
9871
- width: "60%",
9872
- height: "80%",
9873
- left: "20%",
9874
- top: "10%",
9875
- backgroundColor: theme.bg_dark,
9876
- borderStyle: "rounded",
9877
- borderColor: theme.blue,
9878
- title: "Help",
9879
- titleAlignment: "center",
9880
- padding: 2,
9881
- flexDirection: "column",
9882
- gap: 1,
9883
- zIndex: 100
9884
- }, /* @__PURE__ */ React.createElement(For12, {
9885
- each: SECTIONS
9886
- }, (section) => /* @__PURE__ */ React.createElement(Section, {
9887
- title: section.title,
9888
- items: section.items
9889
- }))));
11320
+ return _$createComponent17(Show15, {
11321
+ get when() {
11322
+ return props.visible;
11323
+ },
11324
+ get children() {
11325
+ var _el$6 = _$createElement17("box");
11326
+ _$setProp17(_el$6, "position", "absolute");
11327
+ _$setProp17(_el$6, "width", "60%");
11328
+ _$setProp17(_el$6, "height", "80%");
11329
+ _$setProp17(_el$6, "left", "20%");
11330
+ _$setProp17(_el$6, "top", "10%");
11331
+ _$setProp17(_el$6, "borderStyle", "rounded");
11332
+ _$setProp17(_el$6, "title", "Help");
11333
+ _$setProp17(_el$6, "titleAlignment", "center");
11334
+ _$setProp17(_el$6, "padding", 2);
11335
+ _$setProp17(_el$6, "flexDirection", "column");
11336
+ _$setProp17(_el$6, "gap", 1);
11337
+ _$setProp17(_el$6, "zIndex", 100);
11338
+ _$insert17(_el$6, _$createComponent17(For12, {
11339
+ each: SECTIONS,
11340
+ children: (section) => _$createComponent17(Section, {
11341
+ get title() {
11342
+ return section.title;
11343
+ },
11344
+ get items() {
11345
+ return section.items;
11346
+ }
11347
+ })
11348
+ }));
11349
+ _$effect17((_p$) => {
11350
+ var _v$7 = theme.bg_dark, _v$8 = theme.blue;
11351
+ _v$7 !== _p$.e && (_p$.e = _$setProp17(_el$6, "backgroundColor", _v$7, _p$.e));
11352
+ _v$8 !== _p$.t && (_p$.t = _$setProp17(_el$6, "borderColor", _v$8, _p$.t));
11353
+ return _p$;
11354
+ }, {
11355
+ e: undefined,
11356
+ t: undefined
11357
+ });
11358
+ return _el$6;
11359
+ }
11360
+ });
9890
11361
  }
9891
11362
  // packages/render/src/lib/filter.ts
9892
11363
  var FILTER_MODES = ["all", "dirty", "clean", "ahead", "behind"];
@@ -10055,7 +11526,10 @@ function MainScreen(props) {
10055
11526
  });
10056
11527
  async function handleWidgetConfigChange(configs) {
10057
11528
  setWidgetConfigs(configs);
10058
- const state = { ...getWidgetState(), widgets: configs };
11529
+ const state = {
11530
+ ...getWidgetState(),
11531
+ widgets: configs
11532
+ };
10059
11533
  updateWidgetState(state);
10060
11534
  await saveWidgetState(state);
10061
11535
  }
@@ -10071,11 +11545,7 @@ function MainScreen(props) {
10071
11545
  const my_request_id = _details_request_id;
10072
11546
  setGraphLoading(true);
10073
11547
  setStatsLoading(true);
10074
- const [graphResult, statsResult, activityResult] = await Promise.all([
10075
- captureGraph(node.path),
10076
- collectStats(node.path),
10077
- collectCommitActivity(node.path)
10078
- ]);
11548
+ const [graphResult, statsResult, activityResult] = await Promise.all([captureGraph(node.path), collectStats(node.path), collectCommitActivity(node.path)]);
10079
11549
  if (my_request_id !== _details_request_id)
10080
11550
  return;
10081
11551
  if (graphResult.ok)
@@ -10283,69 +11753,136 @@ function MainScreen(props) {
10283
11753
  }
10284
11754
  }
10285
11755
  });
10286
- return /* @__PURE__ */ React.createElement("box", {
10287
- flexDirection: "column",
10288
- width: "100%",
10289
- height: "100%",
10290
- backgroundColor: theme.bg
10291
- }, /* @__PURE__ */ React.createElement("box", {
10292
- height: 1,
10293
- width: "100%",
10294
- backgroundColor: theme.bg_dark,
10295
- paddingLeft: 1
10296
- }, /* @__PURE__ */ React.createElement("text", {
10297
- fg: theme.blue
10298
- }, "overview"), /* @__PURE__ */ React.createElement("box", {
10299
- flexGrow: 1
10300
- }), /* @__PURE__ */ React.createElement("text", {
10301
- fg: theme.fg_dim,
10302
- content: `${props.config.scan_dirs[0]} \u2014 ${repoCount()} repos`
10303
- }), /* @__PURE__ */ React.createElement(Show16, {
10304
- when: scanning()
10305
- }, /* @__PURE__ */ React.createElement("text", {
10306
- fg: theme.yellow
10307
- }, " scanning..."))), /* @__PURE__ */ React.createElement("box", {
10308
- flexDirection: "row",
10309
- flexGrow: 1
10310
- }, /* @__PURE__ */ React.createElement("box", {
10311
- width: leftWidth(),
10312
- flexDirection: "column",
10313
- borderStyle: "rounded",
10314
- borderColor: focusPanel() === "list" ? theme.border_highlight : theme.border
10315
- }, /* @__PURE__ */ React.createElement(RepoList, {
10316
- repos: processedRepos(),
10317
- focused: focusPanel() === "list",
10318
- onSelect: handleSelect
10319
- })), /* @__PURE__ */ React.createElement("box", {
10320
- flexDirection: "column",
10321
- flexGrow: 1
10322
- }, /* @__PURE__ */ React.createElement(GitGraph, {
10323
- graph: graph(),
10324
- repoName: selectedNode()?.name ?? "",
10325
- loading: graphLoading(),
10326
- focused: focusPanel() === "graph",
10327
- height: "50%"
10328
- }), /* @__PURE__ */ React.createElement(WidgetContainer, {
10329
- status: selectedNode()?.status ?? null,
10330
- repoName: selectedNode()?.name ?? "",
10331
- loading: statsLoading(),
10332
- focused: focusPanel() === "stats",
10333
- height: "50%",
10334
- availableWidth: rightPanelWidth(),
10335
- widgetConfigs: widgetConfigs(),
10336
- onWidgetConfigChange: handleWidgetConfigChange
10337
- }))), /* @__PURE__ */ React.createElement(StatusBar, {
10338
- mode: mode(),
10339
- repoCount: repoCount(),
10340
- dirtyCount: dirtyCount(),
10341
- aheadCount: aheadCount(),
10342
- scanning: scanning(),
10343
- message: statusMessage(),
10344
- widgetSummary: widgetSummary()
10345
- }), /* @__PURE__ */ React.createElement(HelpOverlay, {
10346
- visible: showHelp(),
10347
- onClose: () => setShowHelp(false)
10348
- }));
11756
+ return (() => {
11757
+ var _el$ = _$createElement18("box"), _el$2 = _$createElement18("box"), _el$3 = _$createElement18("text"), _el$5 = _$createElement18("box"), _el$6 = _$createElement18("text"), _el$9 = _$createElement18("box"), _el$0 = _$createElement18("box"), _el$1 = _$createElement18("box");
11758
+ _$insertNode17(_el$, _el$2);
11759
+ _$insertNode17(_el$, _el$9);
11760
+ _$setProp18(_el$, "flexDirection", "column");
11761
+ _$setProp18(_el$, "width", "100%");
11762
+ _$setProp18(_el$, "height", "100%");
11763
+ _$insertNode17(_el$2, _el$3);
11764
+ _$insertNode17(_el$2, _el$5);
11765
+ _$insertNode17(_el$2, _el$6);
11766
+ _$setProp18(_el$2, "height", 1);
11767
+ _$setProp18(_el$2, "width", "100%");
11768
+ _$setProp18(_el$2, "paddingLeft", 1);
11769
+ _$insertNode17(_el$3, _$createTextNode(`overview`));
11770
+ _$setProp18(_el$5, "flexGrow", 1);
11771
+ _$insert18(_el$2, _$createComponent18(Show16, {
11772
+ get when() {
11773
+ return scanning();
11774
+ },
11775
+ get children() {
11776
+ var _el$7 = _$createElement18("text");
11777
+ _$insertNode17(_el$7, _$createTextNode(` scanning...`));
11778
+ _$effect18((_$p) => _$setProp18(_el$7, "fg", theme.yellow, _$p));
11779
+ return _el$7;
11780
+ }
11781
+ }), null);
11782
+ _$insertNode17(_el$9, _el$0);
11783
+ _$insertNode17(_el$9, _el$1);
11784
+ _$setProp18(_el$9, "flexDirection", "row");
11785
+ _$setProp18(_el$9, "flexGrow", 1);
11786
+ _$setProp18(_el$0, "flexDirection", "column");
11787
+ _$setProp18(_el$0, "borderStyle", "rounded");
11788
+ _$insert18(_el$0, _$createComponent18(RepoList, {
11789
+ get repos() {
11790
+ return processedRepos();
11791
+ },
11792
+ get focused() {
11793
+ return focusPanel() === "list";
11794
+ },
11795
+ onSelect: handleSelect
11796
+ }));
11797
+ _$setProp18(_el$1, "flexDirection", "column");
11798
+ _$setProp18(_el$1, "flexGrow", 1);
11799
+ _$insert18(_el$1, _$createComponent18(GitGraph, {
11800
+ get graph() {
11801
+ return graph();
11802
+ },
11803
+ get repoName() {
11804
+ return selectedNode()?.name ?? "";
11805
+ },
11806
+ get loading() {
11807
+ return graphLoading();
11808
+ },
11809
+ get focused() {
11810
+ return focusPanel() === "graph";
11811
+ },
11812
+ height: "50%"
11813
+ }), null);
11814
+ _$insert18(_el$1, _$createComponent18(WidgetContainer, {
11815
+ get status() {
11816
+ return selectedNode()?.status ?? null;
11817
+ },
11818
+ get repoName() {
11819
+ return selectedNode()?.name ?? "";
11820
+ },
11821
+ get loading() {
11822
+ return statsLoading();
11823
+ },
11824
+ get focused() {
11825
+ return focusPanel() === "stats";
11826
+ },
11827
+ height: "50%",
11828
+ get availableWidth() {
11829
+ return rightPanelWidth();
11830
+ },
11831
+ get widgetConfigs() {
11832
+ return widgetConfigs();
11833
+ },
11834
+ onWidgetConfigChange: handleWidgetConfigChange
11835
+ }), null);
11836
+ _$insert18(_el$, _$createComponent18(StatusBar, {
11837
+ get mode() {
11838
+ return mode();
11839
+ },
11840
+ get repoCount() {
11841
+ return repoCount();
11842
+ },
11843
+ get dirtyCount() {
11844
+ return dirtyCount();
11845
+ },
11846
+ get aheadCount() {
11847
+ return aheadCount();
11848
+ },
11849
+ get scanning() {
11850
+ return scanning();
11851
+ },
11852
+ get message() {
11853
+ return statusMessage();
11854
+ },
11855
+ get widgetSummary() {
11856
+ return widgetSummary();
11857
+ }
11858
+ }), null);
11859
+ _$insert18(_el$, _$createComponent18(HelpOverlay, {
11860
+ get visible() {
11861
+ return showHelp();
11862
+ },
11863
+ onClose: () => setShowHelp(false)
11864
+ }), null);
11865
+ _$effect18((_p$) => {
11866
+ var _v$ = theme.bg, _v$2 = theme.bg_dark, _v$3 = theme.blue, _v$4 = theme.fg_dim, _v$5 = `${props.config.scan_dirs[0]} \u2014 ${repoCount()} repos`, _v$6 = leftWidth(), _v$7 = focusPanel() === "list" ? theme.border_highlight : theme.border;
11867
+ _v$ !== _p$.e && (_p$.e = _$setProp18(_el$, "backgroundColor", _v$, _p$.e));
11868
+ _v$2 !== _p$.t && (_p$.t = _$setProp18(_el$2, "backgroundColor", _v$2, _p$.t));
11869
+ _v$3 !== _p$.a && (_p$.a = _$setProp18(_el$3, "fg", _v$3, _p$.a));
11870
+ _v$4 !== _p$.o && (_p$.o = _$setProp18(_el$6, "fg", _v$4, _p$.o));
11871
+ _v$5 !== _p$.i && (_p$.i = _$setProp18(_el$6, "content", _v$5, _p$.i));
11872
+ _v$6 !== _p$.n && (_p$.n = _$setProp18(_el$0, "width", _v$6, _p$.n));
11873
+ _v$7 !== _p$.s && (_p$.s = _$setProp18(_el$0, "borderColor", _v$7, _p$.s));
11874
+ return _p$;
11875
+ }, {
11876
+ e: undefined,
11877
+ t: undefined,
11878
+ a: undefined,
11879
+ o: undefined,
11880
+ i: undefined,
11881
+ n: undefined,
11882
+ s: undefined
11883
+ });
11884
+ return _el$;
11885
+ })();
10349
11886
  }
10350
11887
  // packages/render/src/overview.tsx
10351
11888
  var configResult = await loadConfig();
@@ -10355,7 +11892,7 @@ if (!configResult.ok) {
10355
11892
  }
10356
11893
  var cliArgs = parseCliArgs(Bun.argv);
10357
11894
  var config = mergeCliArgs(configResult.value, cliArgs);
10358
- var App = () => /* @__PURE__ */ React.createElement(MainScreen, {
11895
+ var App = () => _$createComponent19(MainScreen, {
10359
11896
  config
10360
11897
  });
10361
11898
  render(App);