@peasant-labs/fairtrade 0.0.4 → 0.0.6

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.
@@ -43,8 +43,12 @@ var f = {
43
43
  bottom: 4,
44
44
  left: 4
45
45
  }
46
- }), v = { isAnimationActive: !1 };
47
- function y({ icon: n, title: r, aside: i, sub: a, legend: o, className: s = "", children: c }) {
46
+ }), v = { isAnimationActive: !1 }, y = (e) => {
47
+ if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) < 1e3) return e;
48
+ let t = e / 1e3;
49
+ return `${Math.abs(t) >= 10 ? Math.round(t) : Math.round(t * 10) / 10}k`;
50
+ };
51
+ function b({ icon: n, title: r, aside: i, sub: a, legend: o, className: s = "", children: c }) {
48
52
  return /* @__PURE__ */ t("figure", {
49
53
  className: ["chart", s].filter(Boolean).join(" "),
50
54
  children: [
@@ -83,7 +87,7 @@ function y({ icon: n, title: r, aside: i, sub: a, legend: o, className: s = "",
83
87
  ]
84
88
  });
85
89
  }
86
- function b({ active: n, payload: r, label: i, labelFormatter: a, valueFormatter: o }) {
90
+ function x({ active: n, payload: r, label: i, labelFormatter: a, valueFormatter: o }) {
87
91
  if (!n || !r || !r.length) return null;
88
92
  let s = o || ((e) => e);
89
93
  return /* @__PURE__ */ t("div", {
@@ -110,7 +114,7 @@ function b({ active: n, payload: r, label: i, labelFormatter: a, valueFormatter:
110
114
  }, r))]
111
115
  });
112
116
  }
113
- function x(e) {
117
+ function S(e) {
114
118
  return e.map((e, t) => ({
115
119
  ...e,
116
120
  color: e.color || m[t % m.length]
@@ -118,18 +122,18 @@ function x(e) {
118
122
  }
119
123
  //#endregion
120
124
  //#region src/ui/ChartBar.jsx
121
- function S({ data: n, xKey: o, series: s, stacked: f = !1, icon: p, title: m, aside: g, sub: S, height: C = 200, yTicks: w, xFormatter: T, valueFormatter: E, className: D = "" }) {
122
- let O = x(s);
123
- return /* @__PURE__ */ e(y, {
125
+ function C({ data: n, xKey: o, series: s, stacked: f = !1, icon: p, title: m, aside: g, sub: C, height: w = 200, yTicks: T, xFormatter: E, yFormatter: D = y, valueFormatter: O, className: k = "" }) {
126
+ let A = S(s);
127
+ return /* @__PURE__ */ e(b, {
124
128
  icon: p,
125
129
  title: m,
126
130
  aside: g,
127
- sub: S,
128
- legend: O,
129
- className: D,
131
+ sub: C,
132
+ legend: A,
133
+ className: k,
130
134
  children: /* @__PURE__ */ e(c, {
131
135
  width: "100%",
132
- height: C,
136
+ height: w,
133
137
  children: /* @__PURE__ */ t(i, {
134
138
  data: n,
135
139
  barCategoryGap: "22%",
@@ -139,27 +143,28 @@ function S({ data: n, xKey: o, series: s, stacked: f = !1, icon: p, title: m, as
139
143
  /* @__PURE__ */ e(u, {
140
144
  dataKey: o,
141
145
  tickLine: !1,
142
- interval: 0,
143
- tickFormatter: T,
146
+ interval: "preserveStartEnd",
147
+ tickFormatter: E,
144
148
  tickMargin: 8,
145
- minTickGap: 0
149
+ minTickGap: 28
146
150
  }),
147
151
  /* @__PURE__ */ e(d, {
148
- width: 28,
152
+ width: 40,
149
153
  tickLine: !1,
150
154
  axisLine: !1,
151
- ticks: w,
155
+ ticks: T,
152
156
  allowDecimals: !1,
153
- tickMargin: 4
157
+ tickMargin: 4,
158
+ tickFormatter: D
154
159
  }),
155
160
  /* @__PURE__ */ e(l, {
156
161
  cursor: { className: "chart-cursor" },
157
- content: /* @__PURE__ */ e(b, {
158
- valueFormatter: E,
159
- labelFormatter: T
162
+ content: /* @__PURE__ */ e(x, {
163
+ valueFormatter: O,
164
+ labelFormatter: E
160
165
  })
161
166
  }),
162
- O.map((t) => /* @__PURE__ */ e(r, {
167
+ A.map((t) => /* @__PURE__ */ e(r, {
163
168
  dataKey: t.key,
164
169
  name: t.name || t.key,
165
170
  className: h(t.color),
@@ -176,18 +181,18 @@ function S({ data: n, xKey: o, series: s, stacked: f = !1, icon: p, title: m, as
176
181
  }
177
182
  //#endregion
178
183
  //#region src/ui/ChartLine.jsx
179
- function C({ data: r, xKey: i, series: f, icon: p, title: m, aside: g, sub: S, height: C = 200, yTicks: w, xFormatter: T, valueFormatter: E, className: D = "" }) {
180
- let O = x(f);
181
- return /* @__PURE__ */ e(y, {
184
+ function w({ data: r, xKey: i, series: f, icon: p, title: m, aside: g, sub: C, height: w = 200, yTicks: T, xFormatter: E, yFormatter: D = y, valueFormatter: O, className: k = "" }) {
185
+ let A = S(f);
186
+ return /* @__PURE__ */ e(b, {
182
187
  icon: p,
183
188
  title: m,
184
189
  aside: g,
185
- sub: S,
186
- legend: O,
187
- className: D,
190
+ sub: C,
191
+ legend: A,
192
+ className: k,
188
193
  children: /* @__PURE__ */ e(c, {
189
194
  width: "100%",
190
- height: C,
195
+ height: w,
191
196
  children: /* @__PURE__ */ t(o, {
192
197
  data: r,
193
198
  ..._(),
@@ -196,30 +201,31 @@ function C({ data: r, xKey: i, series: f, icon: p, title: m, aside: g, sub: S, h
196
201
  /* @__PURE__ */ e(u, {
197
202
  dataKey: i,
198
203
  tickLine: !1,
199
- interval: 0,
200
- tickFormatter: T,
204
+ interval: "preserveStartEnd",
205
+ tickFormatter: E,
201
206
  tickMargin: 8,
202
- minTickGap: 0
207
+ minTickGap: 28
203
208
  }),
204
209
  /* @__PURE__ */ e(d, {
205
- width: 28,
210
+ width: 40,
206
211
  tickLine: !1,
207
212
  axisLine: !1,
208
- ticks: w,
213
+ ticks: T,
209
214
  allowDecimals: !1,
210
- tickMargin: 4
215
+ tickMargin: 4,
216
+ tickFormatter: D
211
217
  }),
212
218
  /* @__PURE__ */ e(l, {
213
219
  cursor: {
214
220
  className: "chart-cursor",
215
221
  strokeWidth: 0
216
222
  },
217
- content: /* @__PURE__ */ e(b, {
218
- valueFormatter: E,
219
- labelFormatter: T
223
+ content: /* @__PURE__ */ e(x, {
224
+ valueFormatter: O,
225
+ labelFormatter: E
220
226
  })
221
227
  }),
222
- O.map((t) => t.area ? /* @__PURE__ */ e(n, {
228
+ A.map((t) => t.area ? /* @__PURE__ */ e(n, {
223
229
  dataKey: t.key,
224
230
  name: t.name || t.key,
225
231
  className: `${h(t.color)} chart-area`,
@@ -261,4 +267,4 @@ function C({ data: r, xKey: i, series: f, icon: p, title: m, aside: g, sub: S, h
261
267
  });
262
268
  }
263
269
  //#endregion
264
- export { S as n, h as r, C as t };
270
+ export { C as n, h as r, w as t };
@@ -749,7 +749,7 @@ function I({ data: u = {
749
749
  Xe,
750
750
  Q
751
751
  ]), Qe = e((e) => {
752
- if (e.button !== 0) return;
752
+ if (e.button !== 0 || e.target instanceof Element && e.target.closest("button, a, input, select, textarea")) return;
753
753
  let t = L.current;
754
754
  t && t.setPointerCapture?.(e.pointerId), R.current = {
755
755
  startX: e.clientX,
@@ -1 +1 @@
1
- @layer analytics{.gan-root{min-width:0;height:100%;min-height:0;font-family:var(--font-mono);--gan-pad-x:max(var(--sp-4), calc((100% - 1360px) / 2));flex-direction:column;max-width:none;margin-inline:0;display:flex}.gan-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-4) var(--gan-pad-x);border-bottom:var(--bd);flex-wrap:wrap;display:flex}.gan-head-titles{min-width:0}.gan-h2{font-family:var(--font-display);font-weight:700;font-size:var(--fs-md);color:var(--ink-strong);text-transform:lowercase;margin:0;line-height:1.15}.gan-sub{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-3);text-transform:lowercase;margin-top:var(--sp-1)}.gan-scroll{min-height:0;padding:var(--sp-4) var(--gan-pad-x);gap:var(--sp-4);flex-direction:column;flex:auto;display:flex;overflow:auto}.gan-toggle{align-items:center;gap:var(--sp-3);flex-wrap:wrap;min-width:0;display:flex}.gan-toggle-lab{align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-3);display:inline-flex}.gan-toggle-lab .lucide{width:var(--ic-sm);height:var(--ic-sm)}.gan-toggle-lab b{color:var(--ink-2);font-variant-numeric:tabular-nums;font-weight:600}.gan-toggle-chips{gap:var(--sp-1);flex-wrap:wrap;display:flex}.gan-seg{box-sizing:border-box;height:var(--control-h-sm);padding:0 var(--sp-2);font-family:var(--font-mono);text-transform:lowercase;color:var(--ink-4);background:var(--canvas);border:var(--bd-strong);cursor:pointer;transition:color var(--dur-1), border-color var(--dur-1), background var(--dur-1);font-size:11px;line-height:1}.gan-seg:hover{color:var(--ink);border-color:var(--amber-dim)}.gan-seg:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.gan-seg.is-on{color:var(--ink);border-color:var(--rule-strong);background:var(--surface-2)}.gan-seg.is-on:before{content:">";color:var(--amber-dim);margin-right:var(--sp-1)}.gan-kpis{gap:var(--sp-3);grid-template-columns:repeat(6,1fr);display:grid}.gan-tile{gap:var(--sp-1);background:var(--surface);border:var(--bd-strong);padding:var(--sp-3);flex-direction:column;min-width:0;display:flex}.gan-tile-lab{align-items:center;gap:var(--sp-1);font-family:var(--font-mono);text-transform:lowercase;color:var(--ink-3);font-size:11px;display:inline-flex}.gan-tile-lab .lucide{width:13px;height:13px;color:var(--ink-4);flex:none}.gan-tile-val{font-family:var(--font-display);font-weight:700;font-size:var(--fs-lg);color:var(--ink-strong);font-variant-numeric:tabular-nums;line-height:1}.gan-tile-hint{font-family:var(--font-mono);color:var(--ink-4);text-transform:lowercase;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.gan-grid{gap:var(--sp-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.gan-card{gap:var(--sp-3);background:var(--surface);border:var(--bd-strong);padding:var(--sp-3) var(--sp-4) var(--sp-4);flex-direction:column;min-width:0;display:flex}.gan-card-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-3);display:flex}.gan-card-titles{min-width:0}.gan-card-title{align-items:center;gap:var(--sp-2);font-family:var(--font-display);font-weight:700;font-size:var(--fs-body);color:var(--ink-strong);text-transform:lowercase;margin:0;line-height:1.2;display:inline-flex}.gan-card-title .lucide{width:var(--ic-sm);height:var(--ic-sm);color:var(--ink-3);flex:none}.gan-card-sub{font-family:var(--font-mono);color:var(--ink-3);text-transform:lowercase;margin-top:2px;font-size:11px;display:block}.gan-card-figure{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}.gan-card-body{min-width:0}.gan-card-toolbar{border:var(--bd-strong);gap:0;width:max-content;display:inline-flex}.gan-mini{box-sizing:border-box;height:var(--control-h-sm);padding:0 var(--sp-3);font-family:var(--font-mono);text-transform:lowercase;color:var(--ink-4);border:0;border-right:var(--bd);cursor:pointer;transition:color var(--dur-1), background var(--dur-1);background:0 0;font-size:11px;line-height:1}.gan-mini:last-child{border-right:0}.gan-mini:hover{color:var(--ink)}.gan-mini:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-2px}.gan-mini.is-on{color:var(--ink);background:var(--surface-2)}.gan-donut{gap:var(--sp-4);grid-template-columns:180px minmax(0,1fr);align-items:center;display:grid}.gan-donut-svg{width:100%;max-width:180px;height:auto;display:block}.gan-slice{cursor:pointer;transition:opacity var(--dur-1)}.gan-slice:focus-visible{outline:3px solid var(--focus-ring)}.gan-donut-num{font-family:var(--font-display);fill:var(--ink-strong);font-variant-numeric:tabular-nums;font-size:30px;font-weight:700}.gan-donut-lab{font-family:var(--font-mono);fill:var(--ink-3);text-transform:lowercase;font-size:11px}.gan-donut-empty{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-3);text-transform:lowercase;padding:var(--sp-5) var(--sp-2);text-align:center}.gan-legend{flex-direction:column;gap:2px;min-width:0;margin:0;padding:0;list-style:none;display:flex}.gan-legend-row{align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);cursor:default;transition:background var(--dur-1);grid-template-columns:12px minmax(0,1fr) auto auto;display:grid}.gan-legend-row.is-hot{background:var(--surface-hover)}.gan-legend-sw{border:1px solid color-mix(in srgb, var(--canvas) 30%, transparent);flex:none;width:10px;height:10px}.gan-legend-nm{font-family:var(--font-mono);color:var(--ink-2);text-transform:lowercase;text-overflow:ellipsis;font-size:12px;overflow:hidden}.gan-legend-v{font-family:var(--font-mono);color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;font-size:12px}.gan-legend-pct{font-family:var(--font-mono);color:var(--ink-4);font-variant-numeric:tabular-nums;text-align:right;min-width:34px;font-size:11px}.gan-typical{flex-direction:column;display:flex}.gan-typrow{justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:var(--bd);display:flex}.gan-typrow:last-child{border-bottom:0}.gan-typlab{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-2);text-transform:lowercase}.gan-typvals{align-items:baseline;gap:var(--sp-2);display:inline-flex}.gan-typmed{font-family:var(--font-mono);font-size:var(--fs-md);color:var(--ink-strong);font-variant-numeric:tabular-nums}.gan-typsep{color:var(--ink-5)}.gan-typp90{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-4);font-variant-numeric:tabular-nums}.gan-tablecard{gap:var(--sp-2);background:var(--surface);border:var(--bd-strong);padding:var(--sp-3) var(--sp-4) var(--sp-4);flex-direction:column;min-width:0;display:flex;overflow:hidden}.gan-tablecard .tbl-wrap{margin-top:var(--sp-2)}.gan-contrib{align-items:center;gap:var(--sp-2);color:var(--ink);display:inline-flex}.gan-table-foot{gap:var(--sp-4);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:var(--bd);flex-wrap:wrap;display:flex}.gan-foot{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-3);border-left:2px solid var(--rule-strong);max-width:64ch;padding-left:var(--sp-3);line-height:1.6}@media (width<=920px){.gan-kpis{grid-template-columns:repeat(3,1fr)}.gan-grid{grid-template-columns:1fr}}@media (width<=560px){.gan-kpis{grid-template-columns:repeat(2,1fr)}.gan-donut{grid-template-columns:1fr;justify-items:center}.gan-legend{width:100%}.gan-head,.gan-scroll{padding:var(--sp-3)}.gan-tablecard{padding:var(--sp-2) var(--sp-3) var(--sp-3)}.gan-tablecard .tbl-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}}}
1
+ @layer analytics{.gan-root{min-width:0;height:100%;min-height:0;font-family:var(--font-mono);--gan-pad-x:max(var(--sp-4), calc((100% - 1360px) / 2));flex-direction:column;max-width:none;margin-inline:0;display:flex}.gan-head{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4) var(--gan-pad-x);border-bottom:var(--bd);flex-direction:column;display:flex}.gan-head-titles{min-width:0}.gan-h2{font-family:var(--font-display);font-weight:700;font-size:var(--fs-md);color:var(--ink-strong);text-transform:lowercase;margin:0;line-height:1.15}.gan-sub{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-3);text-transform:lowercase;margin-top:var(--sp-1)}.gan-scroll{min-height:0;padding:var(--sp-4) var(--gan-pad-x);gap:var(--sp-4);flex-direction:column;flex:auto;display:flex;overflow:auto}.gan-toggle{align-items:center;gap:var(--sp-3);flex-wrap:wrap;min-width:0;display:flex}.gan-toggle-lab{align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:lowercase;color:var(--ink-3);display:inline-flex}.gan-toggle-lab .lucide{width:var(--ic-sm);height:var(--ic-sm)}.gan-toggle-lab b{color:var(--ink-2);font-variant-numeric:tabular-nums;font-weight:600}.gan-toggle-chips{gap:var(--sp-1);flex-wrap:wrap;display:flex}.gan-seg{box-sizing:border-box;height:var(--control-h-sm);padding:0 var(--sp-2);font-family:var(--font-mono);text-transform:lowercase;color:var(--ink-4);background:var(--canvas);border:var(--bd-strong);cursor:pointer;transition:color var(--dur-1), border-color var(--dur-1), background var(--dur-1);font-size:11px;line-height:1}.gan-seg:hover{color:var(--ink);border-color:var(--amber-dim)}.gan-seg:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.gan-seg.is-on{color:var(--ink);border-color:var(--rule-strong);background:var(--surface-2)}.gan-seg.is-on:before{content:">";color:var(--amber-dim);margin-right:var(--sp-1)}.gan-kpis{gap:var(--sp-3);grid-template-columns:repeat(6,1fr);display:grid}.gan-tile{gap:var(--sp-1);background:var(--surface);border:var(--bd-strong);padding:var(--sp-3);flex-direction:column;min-width:0;display:flex}.gan-tile-lab{align-items:center;gap:var(--sp-1);font-family:var(--font-mono);text-transform:lowercase;color:var(--ink-3);font-size:11px;display:inline-flex}.gan-tile-lab .lucide{width:13px;height:13px;color:var(--ink-4);flex:none}.gan-tile-val{font-family:var(--font-display);font-weight:700;font-size:var(--fs-lg);color:var(--ink-strong);font-variant-numeric:tabular-nums;line-height:1}.gan-tile-hint{font-family:var(--font-mono);color:var(--ink-4);text-transform:lowercase;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.gan-grid{gap:var(--sp-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.gan-card{gap:var(--sp-3);background:var(--surface);border:var(--bd-strong);padding:var(--sp-3) var(--sp-4) var(--sp-4);flex-direction:column;min-width:0;display:flex}.gan-card-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-3);display:flex}.gan-card-titles{min-width:0}.gan-card-title{align-items:center;gap:var(--sp-2);font-family:var(--font-display);font-weight:700;font-size:var(--fs-body);color:var(--ink-strong);text-transform:lowercase;margin:0;line-height:1.2;display:inline-flex}.gan-card-title .lucide{width:var(--ic-sm);height:var(--ic-sm);color:var(--ink-3);flex:none}.gan-card-sub{font-family:var(--font-mono);color:var(--ink-3);text-transform:lowercase;margin-top:2px;font-size:11px;display:block}.gan-card-figure{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}.gan-card-body{min-width:0}.gan-donut{gap:var(--sp-4);grid-template-columns:180px minmax(0,1fr);align-items:center;display:grid}.gan-donut-svg{width:100%;max-width:180px;height:auto;display:block}.gan-slice{cursor:pointer;transition:opacity var(--dur-1)}.gan-slice:focus-visible{outline:3px solid var(--focus-ring)}.gan-donut-num{font-family:var(--font-display);fill:var(--ink-strong);font-variant-numeric:tabular-nums;font-size:30px;font-weight:700}.gan-donut-lab{font-family:var(--font-mono);fill:var(--ink-3);text-transform:lowercase;font-size:11px}.gan-donut-empty{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-3);text-transform:lowercase;padding:var(--sp-5) var(--sp-2);text-align:center}.gan-legend{flex-direction:column;gap:2px;min-width:0;margin:0;padding:0;list-style:none;display:flex}.gan-legend-row{align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);cursor:default;transition:background var(--dur-1);grid-template-columns:12px minmax(0,1fr) auto auto;display:grid}.gan-legend-row.is-hot{background:var(--surface-hover)}.gan-legend-sw{border:1px solid color-mix(in srgb, var(--canvas) 30%, transparent);flex:none;width:10px;height:10px}.gan-legend-nm{font-family:var(--font-mono);color:var(--ink-2);text-transform:lowercase;text-overflow:ellipsis;font-size:12px;overflow:hidden}.gan-legend-v{font-family:var(--font-mono);color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;font-size:12px}.gan-legend-pct{font-family:var(--font-mono);color:var(--ink-4);font-variant-numeric:tabular-nums;text-align:right;min-width:34px;font-size:11px}.gan-typical{flex-direction:column;display:flex}.gan-typrow{justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:var(--bd);display:flex}.gan-typrow:last-child{border-bottom:0}.gan-typlab{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-2);text-transform:lowercase}.gan-typvals{align-items:baseline;gap:var(--sp-2);display:inline-flex}.gan-typmed{font-family:var(--font-mono);font-size:var(--fs-md);color:var(--ink-strong);font-variant-numeric:tabular-nums}.gan-typsep{color:var(--ink-5)}.gan-typp90{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-4);font-variant-numeric:tabular-nums}.gan-tablecard{gap:var(--sp-2);background:var(--surface);border:var(--bd-strong);padding:var(--sp-3) var(--sp-4) var(--sp-4);flex-direction:column;min-width:0;display:flex;overflow:hidden}.gan-tablecard .tbl-wrap{margin-top:var(--sp-2)}.gan-contrib{align-items:center;gap:var(--sp-2);color:var(--ink);display:inline-flex}.gan-table-foot{gap:var(--sp-4);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:var(--bd);flex-wrap:wrap;display:flex}.gan-foot{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-3);border-left:2px solid var(--rule-strong);max-width:64ch;padding-left:var(--sp-3);line-height:1.6}@media (width<=920px){.gan-kpis{grid-template-columns:repeat(3,1fr)}.gan-grid{grid-template-columns:1fr}}@media (width<=560px){.gan-kpis{grid-template-columns:repeat(2,1fr)}.gan-donut{grid-template-columns:1fr;justify-items:center}.gan-legend{width:100%}.gan-head,.gan-scroll{padding:var(--sp-3)}.gan-tablecard{padding:var(--sp-2) var(--sp-3) var(--sp-3)}.gan-tablecard .tbl-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}}}.gan-root section{max-width:none;margin:0;padding:0}.gan-root .gan-card,.gan-root .gan-tablecard{padding:var(--sp-3) var(--sp-4) var(--sp-4)}@media (width<=560px){.gan-root .gan-tablecard{padding:var(--sp-2) var(--sp-3) var(--sp-3)}}
@@ -1,4 +1,4 @@
1
- import { n as e, t } from "./ChartLine-Dlp6-CLL.js";
1
+ import { n as e, t } from "./ChartLine-Cycmpjep.js";
2
2
  import { useMemo as n, useState as r } from "react";
3
3
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
4
  import { Activity as o, BarChart3 as s, ChevronDown as c, ChevronUp as l, ChevronsUpDown as u, CircleCheck as d, GitCommitHorizontal as f, Hash as p, PieChart as m, SlidersHorizontal as h, Timer as g, TrendingUp as ee, UserPlus as te, Users as _ } from "lucide-react";
@@ -639,16 +639,16 @@ function pe({ payload: c, title: l, subtitle: u, sections: h, showSectionToggle:
639
639
  valueFormatter: b
640
640
  })
641
641
  }) : null,
642
- P.weeklyActiveContributors ? /* @__PURE__ */ a(v, {
642
+ P.weeklyActiveContributors ? /* @__PURE__ */ i(v, {
643
643
  icon: _,
644
644
  title: "weekly active contributors",
645
- subtitle: B === "new" ? "first-ever appearance per week" : "distinct contributors active each week",
646
- aside: B === "new" ? `${b($(Q(F.newContributorVelocity, "newContributors")))} new` : `${b($(Q(F.weeklyActiveContributors, "contributors")))} active`,
647
- children: [/* @__PURE__ */ i(he, {
645
+ subtitle: B === "new" ? `new contributors per week · ${b($(Q(F.newContributorVelocity, "newContributors")))} new` : `distinct contributors active each week · ${b($(Q(F.weeklyActiveContributors, "contributors")))} active`,
646
+ aside: /* @__PURE__ */ i(he, {
648
647
  view: B,
649
648
  canShowNew: !!P.newContributorVelocity,
650
649
  onChange: M
651
- }), B === "new" ? /* @__PURE__ */ i(t, {
650
+ }),
651
+ children: B === "new" ? /* @__PURE__ */ i(t, {
652
652
  data: J(Q(F.newContributorVelocity, "newContributors")),
653
653
  xKey: "label",
654
654
  series: [{
@@ -670,7 +670,7 @@ function pe({ payload: c, title: l, subtitle: u, sections: h, showSectionToggle:
670
670
  }],
671
671
  height: w,
672
672
  valueFormatter: b
673
- })]
673
+ })
674
674
  }) : null,
675
675
  P.newContributorVelocity ? /* @__PURE__ */ i(v, {
676
676
  icon: te,
@@ -815,18 +815,18 @@ function me({ baseSections: e, sections: t, userSections: n, onToggle: r }) {
815
815
  }
816
816
  function he({ view: e, canShowNew: t, onChange: n }) {
817
817
  return /* @__PURE__ */ a("div", {
818
- className: "gan-card-toolbar",
818
+ className: "gan-toggle-chips",
819
819
  role: "group",
820
820
  "aria-label": "series",
821
821
  children: [/* @__PURE__ */ i("button", {
822
822
  type: "button",
823
- className: ["gan-mini", e === "active" && "is-on"].filter(Boolean).join(" "),
823
+ className: ["gan-seg", e === "active" && "is-on"].filter(Boolean).join(" "),
824
824
  "aria-pressed": e === "active",
825
825
  onClick: () => n("active"),
826
826
  children: "active"
827
827
  }), /* @__PURE__ */ i("button", {
828
828
  type: "button",
829
- className: ["gan-mini", e === "new" && "is-on"].filter(Boolean).join(" "),
829
+ className: ["gan-seg", e === "new" && "is-on"].filter(Boolean).join(" "),
830
830
  "aria-pressed": e === "new",
831
831
  disabled: !t,
832
832
  onClick: () => n("new"),
@@ -1,4 +1,4 @@
1
- import { Cn as e, Ct as t, Dt as n, G as r, Gn as i, J as a, Ot as o, Rn as s, St as c, Tt as l, Un as u, Vn as d, Wn as f, Y as p, Z as m, kt as h, q as g, wt as _, yn as v } from "./ui-oBFnHPFe.js";
1
+ import { Cn as e, Ct as t, Dt as n, G as r, Gn as i, J as a, Ot as o, Rn as s, St as c, Tt as l, Un as u, Vn as d, Wn as f, Y as p, Z as m, kt as h, q as g, wt as _, yn as v } from "./ui-TG4XLhWL.js";
2
2
  import { useEffect as y, useId as b, useMemo as x, useRef as S, useState as C } from "react";
3
3
  import { Fragment as w, jsx as T, jsxs as E } from "react/jsx-runtime";
4
4
  import { AlertTriangle as D, ArrowRight as O, Check as k, ChevronDown as A, ChevronRight as j, CircleDot as M, Compass as N, Copy as P, ExternalLink as F, Eye as I, EyeOff as L, FileText as R, FolderGit2 as z, GitBranch as B, Hash as V, LayoutGrid as ee, List as te, Lock as H, LogOut as U, Plus as W, SearchX as ne, Settings as G, ShieldAlert as K, ShieldCheck as q, Terminal as J, Upload as re, User as ie, UserPlus as Y, Users as X, X as Z } from "lucide-react";