@industry-theme/github-panels 0.1.31 → 0.1.32

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.
@@ -128,31 +128,31 @@ const createLucideIcon = (iconName, iconNode) => {
128
128
  * This source code is licensed under the ISC license.
129
129
  * See the LICENSE file in the root directory of this source tree.
130
130
  */
131
- const __iconNode$m = [
131
+ const __iconNode$u = [
132
132
  ["path", { d: "M5 12h14", key: "1ays0h" }],
133
133
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
134
134
  ];
135
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$m);
135
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$u);
136
136
  /**
137
137
  * @license lucide-react v0.552.0 - ISC
138
138
  *
139
139
  * This source code is licensed under the ISC license.
140
140
  * See the LICENSE file in the root directory of this source tree.
141
141
  */
142
- const __iconNode$l = [
142
+ const __iconNode$t = [
143
143
  ["path", { d: "m21 16-4 4-4-4", key: "f6ql7i" }],
144
144
  ["path", { d: "M17 20V4", key: "1ejh1v" }],
145
145
  ["path", { d: "m3 8 4-4 4 4", key: "11wl7u" }],
146
146
  ["path", { d: "M7 4v16", key: "1glfcx" }]
147
147
  ];
148
- const ArrowUpDown = createLucideIcon("arrow-up-down", __iconNode$l);
148
+ const ArrowUpDown = createLucideIcon("arrow-up-down", __iconNode$t);
149
149
  /**
150
150
  * @license lucide-react v0.552.0 - ISC
151
151
  *
152
152
  * This source code is licensed under the ISC license.
153
153
  * See the LICENSE file in the root directory of this source tree.
154
154
  */
155
- const __iconNode$k = [
155
+ const __iconNode$s = [
156
156
  ["path", { d: "M12 7v14", key: "1akyts" }],
157
157
  [
158
158
  "path",
@@ -162,14 +162,14 @@ const __iconNode$k = [
162
162
  }
163
163
  ]
164
164
  ];
165
- const BookOpen = createLucideIcon("book-open", __iconNode$k);
165
+ const BookOpen = createLucideIcon("book-open", __iconNode$s);
166
166
  /**
167
167
  * @license lucide-react v0.552.0 - ISC
168
168
  *
169
169
  * This source code is licensed under the ISC license.
170
170
  * See the LICENSE file in the root directory of this source tree.
171
171
  */
172
- const __iconNode$j = [
172
+ const __iconNode$r = [
173
173
  ["path", { d: "M10 12h4", key: "a56b0p" }],
174
174
  ["path", { d: "M10 8h4", key: "1sr2af" }],
175
175
  ["path", { d: "M14 21v-3a2 2 0 0 0-4 0v3", key: "1rgiei" }],
@@ -182,55 +182,105 @@ const __iconNode$j = [
182
182
  ],
183
183
  ["path", { d: "M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16", key: "16ra0t" }]
184
184
  ];
185
- const Building2 = createLucideIcon("building-2", __iconNode$j);
185
+ const Building2 = createLucideIcon("building-2", __iconNode$r);
186
186
  /**
187
187
  * @license lucide-react v0.552.0 - ISC
188
188
  *
189
189
  * This source code is licensed under the ISC license.
190
190
  * See the LICENSE file in the root directory of this source tree.
191
191
  */
192
- const __iconNode$i = [
192
+ const __iconNode$q = [
193
193
  ["path", { d: "M8 2v4", key: "1cmpym" }],
194
194
  ["path", { d: "M16 2v4", key: "4m81vk" }],
195
195
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
196
196
  ["path", { d: "M3 10h18", key: "8toen8" }]
197
197
  ];
198
- const Calendar = createLucideIcon("calendar", __iconNode$i);
198
+ const Calendar = createLucideIcon("calendar", __iconNode$q);
199
199
  /**
200
200
  * @license lucide-react v0.552.0 - ISC
201
201
  *
202
202
  * This source code is licensed under the ISC license.
203
203
  * See the LICENSE file in the root directory of this source tree.
204
204
  */
205
- const __iconNode$h = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
206
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$h);
205
+ const __iconNode$p = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
206
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$p);
207
207
  /**
208
208
  * @license lucide-react v0.552.0 - ISC
209
209
  *
210
210
  * This source code is licensed under the ISC license.
211
211
  * See the LICENSE file in the root directory of this source tree.
212
212
  */
213
- const __iconNode$g = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
214
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$g);
213
+ const __iconNode$o = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
214
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$o);
215
215
  /**
216
216
  * @license lucide-react v0.552.0 - ISC
217
217
  *
218
218
  * This source code is licensed under the ISC license.
219
219
  * See the LICENSE file in the root directory of this source tree.
220
220
  */
221
- const __iconNode$f = [
221
+ const __iconNode$n = [
222
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
223
+ ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
224
+ ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
225
+ ];
226
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$n);
227
+ /**
228
+ * @license lucide-react v0.552.0 - ISC
229
+ *
230
+ * This source code is licensed under the ISC license.
231
+ * See the LICENSE file in the root directory of this source tree.
232
+ */
233
+ const __iconNode$m = [
234
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
235
+ ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
236
+ ];
237
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$m);
238
+ /**
239
+ * @license lucide-react v0.552.0 - ISC
240
+ *
241
+ * This source code is licensed under the ISC license.
242
+ * See the LICENSE file in the root directory of this source tree.
243
+ */
244
+ const __iconNode$l = [
245
+ ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
246
+ ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
247
+ ];
248
+ const Copy = createLucideIcon("copy", __iconNode$l);
249
+ /**
250
+ * @license lucide-react v0.552.0 - ISC
251
+ *
252
+ * This source code is licensed under the ISC license.
253
+ * See the LICENSE file in the root directory of this source tree.
254
+ */
255
+ const __iconNode$k = [
222
256
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
223
257
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
224
258
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
225
259
  ];
226
- const ExternalLink = createLucideIcon("external-link", __iconNode$f);
260
+ const ExternalLink = createLucideIcon("external-link", __iconNode$k);
227
261
  /**
228
262
  * @license lucide-react v0.552.0 - ISC
229
263
  *
230
264
  * This source code is licensed under the ISC license.
231
265
  * See the LICENSE file in the root directory of this source tree.
232
266
  */
233
- const __iconNode$e = [
267
+ const __iconNode$j = [
268
+ [
269
+ "path",
270
+ {
271
+ d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",
272
+ key: "usdka0"
273
+ }
274
+ ]
275
+ ];
276
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$j);
277
+ /**
278
+ * @license lucide-react v0.552.0 - ISC
279
+ *
280
+ * This source code is licensed under the ISC license.
281
+ * See the LICENSE file in the root directory of this source tree.
282
+ */
283
+ const __iconNode$i = [
234
284
  [
235
285
  "path",
236
286
  {
@@ -239,14 +289,14 @@ const __iconNode$e = [
239
289
  }
240
290
  ]
241
291
  ];
242
- const Folder = createLucideIcon("folder", __iconNode$e);
292
+ const Folder = createLucideIcon("folder", __iconNode$i);
243
293
  /**
244
294
  * @license lucide-react v0.552.0 - ISC
245
295
  *
246
296
  * This source code is licensed under the ISC license.
247
297
  * See the LICENSE file in the root directory of this source tree.
248
298
  */
249
- const __iconNode$d = [
299
+ const __iconNode$h = [
250
300
  [
251
301
  "path",
252
302
  {
@@ -255,28 +305,28 @@ const __iconNode$d = [
255
305
  }
256
306
  ]
257
307
  ];
258
- const Funnel = createLucideIcon("funnel", __iconNode$d);
308
+ const Funnel = createLucideIcon("funnel", __iconNode$h);
259
309
  /**
260
310
  * @license lucide-react v0.552.0 - ISC
261
311
  *
262
312
  * This source code is licensed under the ISC license.
263
313
  * See the LICENSE file in the root directory of this source tree.
264
314
  */
265
- const __iconNode$c = [
315
+ const __iconNode$g = [
266
316
  ["circle", { cx: "12", cy: "18", r: "3", key: "1mpf1b" }],
267
317
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
268
318
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
269
319
  ["path", { d: "M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9", key: "1uq4wg" }],
270
320
  ["path", { d: "M12 12v3", key: "158kv8" }]
271
321
  ];
272
- const GitFork = createLucideIcon("git-fork", __iconNode$c);
322
+ const GitFork = createLucideIcon("git-fork", __iconNode$g);
273
323
  /**
274
324
  * @license lucide-react v0.552.0 - ISC
275
325
  *
276
326
  * This source code is licensed under the ISC license.
277
327
  * See the LICENSE file in the root directory of this source tree.
278
328
  */
279
- const __iconNode$b = [
329
+ const __iconNode$f = [
280
330
  [
281
331
  "path",
282
332
  {
@@ -286,88 +336,125 @@ const __iconNode$b = [
286
336
  ],
287
337
  ["path", { d: "M9 18c-4.51 2-5-2-7-2", key: "9comsn" }]
288
338
  ];
289
- const Github = createLucideIcon("github", __iconNode$b);
339
+ const Github = createLucideIcon("github", __iconNode$f);
290
340
  /**
291
341
  * @license lucide-react v0.552.0 - ISC
292
342
  *
293
343
  * This source code is licensed under the ISC license.
294
344
  * See the LICENSE file in the root directory of this source tree.
295
345
  */
296
- const __iconNode$a = [
346
+ const __iconNode$e = [
297
347
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
298
348
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
299
349
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
300
350
  ];
301
- const History = createLucideIcon("history", __iconNode$a);
351
+ const History = createLucideIcon("history", __iconNode$e);
302
352
  /**
303
353
  * @license lucide-react v0.552.0 - ISC
304
354
  *
305
355
  * This source code is licensed under the ISC license.
306
356
  * See the LICENSE file in the root directory of this source tree.
307
357
  */
308
- const __iconNode$9 = [
358
+ const __iconNode$d = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
359
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$d);
360
+ /**
361
+ * @license lucide-react v0.552.0 - ISC
362
+ *
363
+ * This source code is licensed under the ISC license.
364
+ * See the LICENSE file in the root directory of this source tree.
365
+ */
366
+ const __iconNode$c = [
309
367
  ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
310
368
  ["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
311
369
  ];
312
- const Lock = createLucideIcon("lock", __iconNode$9);
370
+ const Lock = createLucideIcon("lock", __iconNode$c);
313
371
  /**
314
372
  * @license lucide-react v0.552.0 - ISC
315
373
  *
316
374
  * This source code is licensed under the ISC license.
317
375
  * See the LICENSE file in the root directory of this source tree.
318
376
  */
319
- const __iconNode$8 = [
377
+ const __iconNode$b = [
320
378
  ["path", { d: "m10 17 5-5-5-5", key: "1bsop3" }],
321
379
  ["path", { d: "M15 12H3", key: "6jk70r" }],
322
380
  ["path", { d: "M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4", key: "u53s6r" }]
323
381
  ];
324
- const LogIn = createLucideIcon("log-in", __iconNode$8);
382
+ const LogIn = createLucideIcon("log-in", __iconNode$b);
325
383
  /**
326
384
  * @license lucide-react v0.552.0 - ISC
327
385
  *
328
386
  * This source code is licensed under the ISC license.
329
387
  * See the LICENSE file in the root directory of this source tree.
330
388
  */
331
- const __iconNode$7 = [
389
+ const __iconNode$a = [
390
+ [
391
+ "path",
392
+ {
393
+ d: "M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",
394
+ key: "18887p"
395
+ }
396
+ ]
397
+ ];
398
+ const MessageSquare = createLucideIcon("message-square", __iconNode$a);
399
+ /**
400
+ * @license lucide-react v0.552.0 - ISC
401
+ *
402
+ * This source code is licensed under the ISC license.
403
+ * See the LICENSE file in the root directory of this source tree.
404
+ */
405
+ const __iconNode$9 = [
332
406
  ["rect", { x: "16", y: "16", width: "6", height: "6", rx: "1", key: "4q2zg0" }],
333
407
  ["rect", { x: "2", y: "16", width: "6", height: "6", rx: "1", key: "8cvhb9" }],
334
408
  ["rect", { x: "9", y: "2", width: "6", height: "6", rx: "1", key: "1egb70" }],
335
409
  ["path", { d: "M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3", key: "1jsf9p" }],
336
410
  ["path", { d: "M12 12V8", key: "2874zd" }]
337
411
  ];
338
- const Network = createLucideIcon("network", __iconNode$7);
412
+ const Network = createLucideIcon("network", __iconNode$9);
339
413
  /**
340
414
  * @license lucide-react v0.552.0 - ISC
341
415
  *
342
416
  * This source code is licensed under the ISC license.
343
417
  * See the LICENSE file in the root directory of this source tree.
344
418
  */
345
- const __iconNode$6 = [
419
+ const __iconNode$8 = [
420
+ ["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
421
+ ["path", { d: "M21 3v5h-5", key: "1q7to0" }],
422
+ ["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
423
+ ["path", { d: "M8 16H3v5", key: "1cv678" }]
424
+ ];
425
+ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$8);
426
+ /**
427
+ * @license lucide-react v0.552.0 - ISC
428
+ *
429
+ * This source code is licensed under the ISC license.
430
+ * See the LICENSE file in the root directory of this source tree.
431
+ */
432
+ const __iconNode$7 = [
346
433
  ["path", { d: "m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "7g6ntu" }],
347
434
  ["path", { d: "m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "ijws7r" }],
348
435
  ["path", { d: "M7 21h10", key: "1b0cd5" }],
349
436
  ["path", { d: "M12 3v18", key: "108xh3" }],
350
437
  ["path", { d: "M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2", key: "3gwbw2" }]
351
438
  ];
352
- const Scale = createLucideIcon("scale", __iconNode$6);
439
+ const Scale = createLucideIcon("scale", __iconNode$7);
353
440
  /**
354
441
  * @license lucide-react v0.552.0 - ISC
355
442
  *
356
443
  * This source code is licensed under the ISC license.
357
444
  * See the LICENSE file in the root directory of this source tree.
358
445
  */
359
- const __iconNode$5 = [
446
+ const __iconNode$6 = [
360
447
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
361
448
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
362
449
  ];
363
- const Search = createLucideIcon("search", __iconNode$5);
450
+ const Search = createLucideIcon("search", __iconNode$6);
364
451
  /**
365
452
  * @license lucide-react v0.552.0 - ISC
366
453
  *
367
454
  * This source code is licensed under the ISC license.
368
455
  * See the LICENSE file in the root directory of this source tree.
369
456
  */
370
- const __iconNode$4 = [
457
+ const __iconNode$5 = [
371
458
  [
372
459
  "path",
373
460
  {
@@ -379,14 +466,14 @@ const __iconNode$4 = [
379
466
  ["path", { d: "M22 4h-4", key: "gwowj6" }],
380
467
  ["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
381
468
  ];
382
- const Sparkles = createLucideIcon("sparkles", __iconNode$4);
469
+ const Sparkles = createLucideIcon("sparkles", __iconNode$5);
383
470
  /**
384
471
  * @license lucide-react v0.552.0 - ISC
385
472
  *
386
473
  * This source code is licensed under the ISC license.
387
474
  * See the LICENSE file in the root directory of this source tree.
388
475
  */
389
- const __iconNode$3 = [
476
+ const __iconNode$4 = [
390
477
  [
391
478
  "path",
392
479
  {
@@ -395,7 +482,24 @@ const __iconNode$3 = [
395
482
  }
396
483
  ]
397
484
  ];
398
- const Star = createLucideIcon("star", __iconNode$3);
485
+ const Star = createLucideIcon("star", __iconNode$4);
486
+ /**
487
+ * @license lucide-react v0.552.0 - ISC
488
+ *
489
+ * This source code is licensed under the ISC license.
490
+ * See the LICENSE file in the root directory of this source tree.
491
+ */
492
+ const __iconNode$3 = [
493
+ [
494
+ "path",
495
+ {
496
+ d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",
497
+ key: "vktsd0"
498
+ }
499
+ ],
500
+ ["circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor", key: "kqv944" }]
501
+ ];
502
+ const Tag = createLucideIcon("tag", __iconNode$3);
399
503
  /**
400
504
  * @license lucide-react v0.552.0 - ISC
401
505
  *
@@ -1395,131 +1499,1189 @@ const GitHubSearchPanelContent = ({ events }) => {
1395
1499
  ((_a = repo.owner) == null ? void 0 : _a.avatar_url) && /* @__PURE__ */ jsx(
1396
1500
  "img",
1397
1501
  {
1398
- src: repo.owner.avatar_url,
1399
- alt: repo.owner.login,
1400
- style: { width: 20, height: 20, borderRadius: 4 }
1502
+ src: repo.owner.avatar_url,
1503
+ alt: repo.owner.login,
1504
+ style: { width: 20, height: 20, borderRadius: 4 }
1505
+ }
1506
+ ),
1507
+ /* @__PURE__ */ jsx(
1508
+ "span",
1509
+ {
1510
+ style: {
1511
+ fontSize: `${theme.fontSizes[2]}px`,
1512
+ fontWeight: theme.fontWeights.semibold,
1513
+ color: theme.colors.primary
1514
+ },
1515
+ children: repo.full_name
1516
+ }
1517
+ ),
1518
+ repo.private && /* @__PURE__ */ jsx(
1519
+ "span",
1520
+ {
1521
+ style: {
1522
+ fontSize: `${theme.fontSizes[0]}px`,
1523
+ padding: "2px 6px",
1524
+ borderRadius: "4px",
1525
+ backgroundColor: theme.colors.backgroundTertiary,
1526
+ color: theme.colors.textSecondary
1527
+ },
1528
+ children: "Private"
1529
+ }
1530
+ )
1531
+ ] }),
1532
+ repo.description && /* @__PURE__ */ jsx(
1533
+ "p",
1534
+ {
1535
+ style: {
1536
+ margin: 0,
1537
+ fontSize: `${theme.fontSizes[1]}px`,
1538
+ color: theme.colors.textSecondary,
1539
+ overflow: "hidden",
1540
+ textOverflow: "ellipsis",
1541
+ display: "-webkit-box",
1542
+ WebkitLineClamp: 2,
1543
+ WebkitBoxOrient: "vertical"
1544
+ },
1545
+ children: repo.description
1546
+ }
1547
+ ),
1548
+ /* @__PURE__ */ jsxs(
1549
+ "div",
1550
+ {
1551
+ style: {
1552
+ display: "flex",
1553
+ alignItems: "center",
1554
+ gap: "16px",
1555
+ fontSize: `${theme.fontSizes[1]}px`,
1556
+ color: theme.colors.textSecondary
1557
+ },
1558
+ children: [
1559
+ repo.language && /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
1560
+ /* @__PURE__ */ jsx(
1561
+ "span",
1562
+ {
1563
+ style: {
1564
+ width: 10,
1565
+ height: 10,
1566
+ borderRadius: "50%",
1567
+ backgroundColor: theme.colors.info
1568
+ }
1569
+ }
1570
+ ),
1571
+ repo.language
1572
+ ] }),
1573
+ /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
1574
+ /* @__PURE__ */ jsx(Star, { size: 14 }),
1575
+ formatNumber(repo.stargazers_count || 0)
1576
+ ] }),
1577
+ /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
1578
+ /* @__PURE__ */ jsx(GitFork, { size: 14 }),
1579
+ formatNumber(repo.forks_count || 0)
1580
+ ] }),
1581
+ /* @__PURE__ */ jsx(
1582
+ "a",
1583
+ {
1584
+ href: repo.html_url,
1585
+ target: "_blank",
1586
+ rel: "noopener noreferrer",
1587
+ onClick: (e) => e.stopPropagation(),
1588
+ style: {
1589
+ marginLeft: "auto",
1590
+ color: theme.colors.textSecondary,
1591
+ display: "flex",
1592
+ alignItems: "center"
1593
+ },
1594
+ children: /* @__PURE__ */ jsx(ExternalLink, { size: 14 })
1595
+ }
1596
+ )
1597
+ ]
1598
+ }
1599
+ )
1600
+ ]
1601
+ },
1602
+ repo.id
1603
+ );
1604
+ })
1605
+ ]
1606
+ }
1607
+ ),
1608
+ /* @__PURE__ */ jsx("style", { children: `
1609
+ @keyframes spin {
1610
+ to { transform: rotate(360deg); }
1611
+ }
1612
+ ` })
1613
+ ]
1614
+ }
1615
+ );
1616
+ };
1617
+ const GitHubSearchPanel = (props) => {
1618
+ return /* @__PURE__ */ jsx(GitHubSearchPanelContent, { ...props });
1619
+ };
1620
+ const GitHubSearchPanelMetadata = {
1621
+ id: "github-search",
1622
+ name: "GitHub Search",
1623
+ description: "Search for repositories on GitHub",
1624
+ icon: "search",
1625
+ version: "0.1.0",
1626
+ slices: [],
1627
+ surfaces: ["panel"]
1628
+ };
1629
+ const formatDate = (dateString) => {
1630
+ const date = new Date(dateString);
1631
+ const now = /* @__PURE__ */ new Date();
1632
+ const diffMs = now.getTime() - date.getTime();
1633
+ const diffDays = Math.floor(diffMs / (1e3 * 60 * 60 * 24));
1634
+ if (diffDays === 0) return "Today";
1635
+ if (diffDays === 1) return "Yesterday";
1636
+ if (diffDays < 7) return `${diffDays} days ago`;
1637
+ if (diffDays < 30) return `${Math.floor(diffDays / 7)} weeks ago`;
1638
+ if (diffDays < 365) return `${Math.floor(diffDays / 30)} months ago`;
1639
+ return `${Math.floor(diffDays / 365)} years ago`;
1640
+ };
1641
+ const GitHubIssuesPanelContent = ({
1642
+ context,
1643
+ events
1644
+ }) => {
1645
+ var _a, _b, _c, _d, _e;
1646
+ const { theme } = useTheme();
1647
+ const issuesSlice = context.getSlice("github-issues");
1648
+ const isLoading = context.isSliceLoading("github-issues");
1649
+ const hasData = context.hasSlice("github-issues");
1650
+ const issues = ((_a = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _a.issues) ?? [];
1651
+ const owner = ((_b = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _b.owner) ?? "";
1652
+ const repo = ((_c = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _c.repo) ?? "";
1653
+ const isAuthenticated = ((_d = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _d.isAuthenticated) ?? false;
1654
+ const sliceError = (_e = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _e.error;
1655
+ const [selectedIssues, setSelectedIssues] = useState(/* @__PURE__ */ new Set());
1656
+ const [copiedPrompt, setCopiedPrompt] = useState(false);
1657
+ const [issueFilter, setIssueFilter] = useState("open");
1658
+ const [selectedIssue, setSelectedIssue] = useState(null);
1659
+ const [showIssueModal, setShowIssueModal] = useState(false);
1660
+ useEffect(() => {
1661
+ events.emit({
1662
+ type: "github-issues:request",
1663
+ source: "github-issues-panel",
1664
+ timestamp: Date.now(),
1665
+ payload: {}
1666
+ });
1667
+ }, [events]);
1668
+ const filteredIssues = useMemo(() => {
1669
+ if (issueFilter === "all") return issues;
1670
+ return issues.filter((issue) => issue.state === issueFilter);
1671
+ }, [issues, issueFilter]);
1672
+ const issueCounts = useMemo(() => ({
1673
+ all: issues.length,
1674
+ open: issues.filter((i) => i.state === "open").length,
1675
+ closed: issues.filter((i) => i.state === "closed").length
1676
+ }), [issues]);
1677
+ const handleSelectAll = () => {
1678
+ if (selectedIssues.size === filteredIssues.length) {
1679
+ setSelectedIssues(/* @__PURE__ */ new Set());
1680
+ } else {
1681
+ setSelectedIssues(new Set(filteredIssues.map((i) => i.number)));
1682
+ }
1683
+ };
1684
+ const handleToggleIssue = (issueNumber, event) => {
1685
+ const newSelected = new Set(selectedIssues);
1686
+ if (newSelected.has(issueNumber)) {
1687
+ newSelected.delete(issueNumber);
1688
+ } else {
1689
+ newSelected.add(issueNumber);
1690
+ }
1691
+ setSelectedIssues(newSelected);
1692
+ };
1693
+ const handleIssueClick = (issue, event) => {
1694
+ const target = event.target;
1695
+ if (target.tagName === "INPUT" || target.closest("a")) {
1696
+ return;
1697
+ }
1698
+ setSelectedIssue(issue);
1699
+ setShowIssueModal(true);
1700
+ events.emit({
1701
+ type: "issue:selected",
1702
+ source: "github-issues-panel",
1703
+ timestamp: Date.now(),
1704
+ payload: {
1705
+ issue,
1706
+ owner,
1707
+ repo
1708
+ }
1709
+ });
1710
+ };
1711
+ const handleRefresh = () => {
1712
+ events.emit({
1713
+ type: "github-issues:refresh",
1714
+ source: "github-issues-panel",
1715
+ timestamp: Date.now(),
1716
+ payload: {}
1717
+ });
1718
+ };
1719
+ const handleLogin = () => {
1720
+ events.emit({
1721
+ type: "github:login-requested",
1722
+ source: "github-issues-panel",
1723
+ timestamp: Date.now(),
1724
+ payload: {}
1725
+ });
1726
+ };
1727
+ const generatePrompt = () => {
1728
+ const selectedIssueData = issues.filter(
1729
+ (i) => selectedIssues.has(i.number)
1730
+ );
1731
+ if (selectedIssueData.length === 0) return "";
1732
+ let prompt = `I'm working on the GitHub repository ${owner}/${repo}. Here are the issues I need help with:
1733
+
1734
+ `;
1735
+ selectedIssueData.forEach((issue) => {
1736
+ prompt += `## Issue #${issue.number}: ${issue.title}
1737
+ `;
1738
+ prompt += `- Status: ${issue.state}
1739
+ `;
1740
+ prompt += `- URL: ${issue.html_url}
1741
+ `;
1742
+ if (issue.labels.length > 0) {
1743
+ prompt += `- Labels: ${issue.labels.map((l) => l.name).join(", ")}
1744
+ `;
1745
+ }
1746
+ if (issue.body) {
1747
+ prompt += `- Description:
1748
+ ${issue.body}
1749
+ `;
1750
+ }
1751
+ prompt += "\n";
1752
+ });
1753
+ prompt += `Please help me understand and address these issues.`;
1754
+ return prompt;
1755
+ };
1756
+ const handleCopyPrompt = async () => {
1757
+ const prompt = generatePrompt();
1758
+ if (!prompt) return;
1759
+ try {
1760
+ await navigator.clipboard.writeText(prompt);
1761
+ setCopiedPrompt(true);
1762
+ setTimeout(() => setCopiedPrompt(false), 2e3);
1763
+ } catch (err) {
1764
+ console.error("Failed to copy to clipboard:", err);
1765
+ }
1766
+ };
1767
+ const renderState = (icon, title, description, action) => /* @__PURE__ */ jsx(
1768
+ "div",
1769
+ {
1770
+ style: {
1771
+ height: "100%",
1772
+ display: "flex",
1773
+ alignItems: "center",
1774
+ justifyContent: "center",
1775
+ padding: "24px",
1776
+ backgroundColor: theme.colors.background
1777
+ },
1778
+ children: /* @__PURE__ */ jsxs(
1779
+ "div",
1780
+ {
1781
+ style: {
1782
+ display: "flex",
1783
+ flexDirection: "column",
1784
+ alignItems: "center",
1785
+ gap: "16px",
1786
+ maxWidth: "360px",
1787
+ textAlign: "center"
1788
+ },
1789
+ children: [
1790
+ /* @__PURE__ */ jsx("div", { children: icon }),
1791
+ /* @__PURE__ */ jsxs("div", { children: [
1792
+ /* @__PURE__ */ jsx(
1793
+ "h3",
1794
+ {
1795
+ style: {
1796
+ margin: 0,
1797
+ marginBottom: "8px",
1798
+ color: theme.colors.text,
1799
+ fontSize: `${theme.fontSizes[3]}px`,
1800
+ fontWeight: theme.fontWeights.semibold
1801
+ },
1802
+ children: title
1803
+ }
1804
+ ),
1805
+ description && /* @__PURE__ */ jsx(
1806
+ "p",
1807
+ {
1808
+ style: {
1809
+ margin: 0,
1810
+ color: theme.colors.textSecondary,
1811
+ lineHeight: 1.5,
1812
+ fontSize: `${theme.fontSizes[2]}px`
1813
+ },
1814
+ children: description
1815
+ }
1816
+ )
1817
+ ] }),
1818
+ action
1819
+ ]
1820
+ }
1821
+ )
1822
+ }
1823
+ );
1824
+ if (isLoading && !hasData) {
1825
+ return renderState(
1826
+ /* @__PURE__ */ jsx(
1827
+ LoaderCircle,
1828
+ {
1829
+ size: 32,
1830
+ style: { color: theme.colors.textSecondary },
1831
+ className: "animate-spin"
1832
+ }
1833
+ ),
1834
+ "Loading issues...",
1835
+ "Fetching issues from GitHub"
1836
+ );
1837
+ }
1838
+ if (!isAuthenticated && !hasData) {
1839
+ return renderState(
1840
+ /* @__PURE__ */ jsx(
1841
+ CircleAlert,
1842
+ {
1843
+ size: 32,
1844
+ style: { color: theme.colors.warning || "#f59e0b" }
1845
+ }
1846
+ ),
1847
+ "Sign in to GitHub",
1848
+ "Connect your GitHub account to view repository issues.",
1849
+ /* @__PURE__ */ jsxs(
1850
+ "button",
1851
+ {
1852
+ type: "button",
1853
+ onClick: handleLogin,
1854
+ style: {
1855
+ display: "inline-flex",
1856
+ alignItems: "center",
1857
+ gap: "8px",
1858
+ padding: "10px 18px",
1859
+ borderRadius: "6px",
1860
+ border: "none",
1861
+ backgroundColor: theme.colors.primary,
1862
+ color: theme.colors.background,
1863
+ fontWeight: theme.fontWeights.semibold,
1864
+ fontSize: `${theme.fontSizes[2]}px`,
1865
+ cursor: "pointer"
1866
+ },
1867
+ children: [
1868
+ /* @__PURE__ */ jsx(LogIn, { size: 16 }),
1869
+ "Sign in with GitHub"
1870
+ ]
1871
+ }
1872
+ )
1873
+ );
1874
+ }
1875
+ if (sliceError) {
1876
+ return renderState(
1877
+ /* @__PURE__ */ jsx(CircleAlert, { size: 32, style: { color: theme.colors.error } }),
1878
+ "Failed to Load Issues",
1879
+ sliceError,
1880
+ /* @__PURE__ */ jsxs(
1881
+ "button",
1882
+ {
1883
+ type: "button",
1884
+ onClick: handleRefresh,
1885
+ style: {
1886
+ display: "inline-flex",
1887
+ alignItems: "center",
1888
+ gap: "8px",
1889
+ padding: "10px 18px",
1890
+ borderRadius: "6px",
1891
+ border: `1px solid ${theme.colors.border}`,
1892
+ backgroundColor: theme.colors.background,
1893
+ color: theme.colors.text,
1894
+ fontWeight: theme.fontWeights.medium,
1895
+ fontSize: `${theme.fontSizes[2]}px`,
1896
+ cursor: "pointer"
1897
+ },
1898
+ children: [
1899
+ /* @__PURE__ */ jsx(RefreshCw, { size: 16 }),
1900
+ "Try Again"
1901
+ ]
1902
+ }
1903
+ )
1904
+ );
1905
+ }
1906
+ if (!owner || !repo) {
1907
+ return renderState(
1908
+ /* @__PURE__ */ jsx(Github, { size: 32, style: { color: theme.colors.textSecondary } }),
1909
+ "No Repository Selected",
1910
+ "Select a repository to view its issues."
1911
+ );
1912
+ }
1913
+ return /* @__PURE__ */ jsxs(
1914
+ "div",
1915
+ {
1916
+ style: {
1917
+ height: "100%",
1918
+ display: "flex",
1919
+ flexDirection: "column",
1920
+ backgroundColor: theme.colors.background,
1921
+ color: theme.colors.text,
1922
+ fontFamily: theme.fonts.body
1923
+ },
1924
+ children: [
1925
+ /* @__PURE__ */ jsxs(
1926
+ "div",
1927
+ {
1928
+ style: {
1929
+ padding: "12px 16px",
1930
+ borderBottom: `1px solid ${theme.colors.border}`,
1931
+ display: "flex",
1932
+ alignItems: "center",
1933
+ gap: "12px"
1934
+ },
1935
+ children: [
1936
+ /* @__PURE__ */ jsx(Github, { size: 20, color: theme.colors.primary }),
1937
+ /* @__PURE__ */ jsx(
1938
+ "h2",
1939
+ {
1940
+ style: {
1941
+ margin: 0,
1942
+ fontSize: `${theme.fontSizes[3]}px`,
1943
+ fontWeight: theme.fontWeights.semibold,
1944
+ flex: 1
1945
+ },
1946
+ children: "Issues"
1947
+ }
1948
+ ),
1949
+ /* @__PURE__ */ jsxs(
1950
+ "span",
1951
+ {
1952
+ style: {
1953
+ fontSize: `${theme.fontSizes[1]}px`,
1954
+ color: theme.colors.textSecondary
1955
+ },
1956
+ children: [
1957
+ owner,
1958
+ "/",
1959
+ repo
1960
+ ]
1961
+ }
1962
+ )
1963
+ ]
1964
+ }
1965
+ ),
1966
+ /* @__PURE__ */ jsxs(
1967
+ "div",
1968
+ {
1969
+ style: {
1970
+ display: "flex",
1971
+ alignItems: "center",
1972
+ justifyContent: "space-between",
1973
+ padding: "12px 16px",
1974
+ borderBottom: `1px solid ${theme.colors.border}`,
1975
+ backgroundColor: theme.colors.backgroundSecondary,
1976
+ flexWrap: "wrap",
1977
+ gap: "8px"
1978
+ },
1979
+ children: [
1980
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
1981
+ /* @__PURE__ */ jsx("div", { style: { display: "flex", gap: "4px" }, children: ["open", "closed", "all"].map((filter) => /* @__PURE__ */ jsxs(
1982
+ "button",
1983
+ {
1984
+ type: "button",
1985
+ onClick: () => setIssueFilter(filter),
1986
+ style: {
1987
+ padding: "6px 12px",
1988
+ borderRadius: "6px",
1989
+ border: issueFilter === filter ? "none" : `1px solid ${theme.colors.border}`,
1990
+ backgroundColor: issueFilter === filter ? theme.colors.primary : theme.colors.background,
1991
+ color: issueFilter === filter ? theme.colors.background : theme.colors.text,
1992
+ fontSize: `${theme.fontSizes[1]}px`,
1993
+ fontWeight: issueFilter === filter ? theme.fontWeights.semibold : theme.fontWeights.body,
1994
+ cursor: "pointer",
1995
+ textTransform: "capitalize"
1996
+ },
1997
+ children: [
1998
+ filter === "all" ? "All" : filter === "open" ? "Open" : "Closed",
1999
+ /* @__PURE__ */ jsxs("span", { style: { marginLeft: "6px", opacity: 0.8 }, children: [
2000
+ "(",
2001
+ issueCounts[filter],
2002
+ ")"
2003
+ ] })
2004
+ ]
2005
+ },
2006
+ filter
2007
+ )) }),
2008
+ filteredIssues.length > 0 && /* @__PURE__ */ jsx(
2009
+ "button",
2010
+ {
2011
+ type: "button",
2012
+ onClick: handleSelectAll,
2013
+ style: {
2014
+ padding: "6px 12px",
2015
+ borderRadius: "6px",
2016
+ border: `1px solid ${theme.colors.border}`,
2017
+ backgroundColor: theme.colors.background,
2018
+ color: theme.colors.textSecondary,
2019
+ fontSize: `${theme.fontSizes[1]}px`,
2020
+ cursor: "pointer"
2021
+ },
2022
+ children: selectedIssues.size === filteredIssues.length ? "Deselect All" : "Select All"
2023
+ }
2024
+ )
2025
+ ] }),
2026
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: "8px" }, children: [
2027
+ /* @__PURE__ */ jsx(
2028
+ "button",
2029
+ {
2030
+ type: "button",
2031
+ onClick: handleRefresh,
2032
+ disabled: isLoading,
2033
+ style: {
2034
+ display: "flex",
2035
+ alignItems: "center",
2036
+ gap: "6px",
2037
+ padding: "6px 12px",
2038
+ borderRadius: "6px",
2039
+ border: `1px solid ${theme.colors.border}`,
2040
+ backgroundColor: theme.colors.background,
2041
+ color: theme.colors.text,
2042
+ fontSize: `${theme.fontSizes[1]}px`,
2043
+ cursor: isLoading ? "not-allowed" : "pointer",
2044
+ opacity: isLoading ? 0.5 : 1
2045
+ },
2046
+ children: /* @__PURE__ */ jsx(RefreshCw, { size: 14, className: isLoading ? "animate-spin" : "" })
2047
+ }
2048
+ ),
2049
+ /* @__PURE__ */ jsxs(
2050
+ "button",
2051
+ {
2052
+ type: "button",
2053
+ onClick: handleCopyPrompt,
2054
+ disabled: selectedIssues.size === 0,
2055
+ style: {
2056
+ display: "flex",
2057
+ alignItems: "center",
2058
+ gap: "6px",
2059
+ padding: "6px 12px",
2060
+ borderRadius: "6px",
2061
+ border: "none",
2062
+ backgroundColor: selectedIssues.size > 0 ? theme.colors.primary : theme.colors.backgroundTertiary,
2063
+ color: selectedIssues.size > 0 ? theme.colors.background : theme.colors.textSecondary,
2064
+ fontSize: `${theme.fontSizes[1]}px`,
2065
+ fontWeight: theme.fontWeights.semibold,
2066
+ cursor: selectedIssues.size > 0 ? "pointer" : "not-allowed",
2067
+ opacity: selectedIssues.size > 0 ? 1 : 0.5
2068
+ },
2069
+ children: [
2070
+ copiedPrompt ? /* @__PURE__ */ jsx(CircleCheck, { size: 14 }) : /* @__PURE__ */ jsx(Copy, { size: 14 }),
2071
+ copiedPrompt ? "Copied!" : `Copy Prompt (${selectedIssues.size})`
2072
+ ]
2073
+ }
2074
+ )
2075
+ ] })
2076
+ ]
2077
+ }
2078
+ ),
2079
+ /* @__PURE__ */ jsx("div", { style: { flex: 1, overflow: "auto", padding: "8px" }, children: filteredIssues.length === 0 ? /* @__PURE__ */ jsxs(
2080
+ "div",
2081
+ {
2082
+ style: {
2083
+ display: "flex",
2084
+ flexDirection: "column",
2085
+ alignItems: "center",
2086
+ justifyContent: "center",
2087
+ height: "100%",
2088
+ gap: "16px",
2089
+ color: theme.colors.textSecondary
2090
+ },
2091
+ children: [
2092
+ /* @__PURE__ */ jsx(Github, { size: 48, color: theme.colors.border }),
2093
+ /* @__PURE__ */ jsxs("div", { style: { textAlign: "center" }, children: [
2094
+ /* @__PURE__ */ jsx(
2095
+ "h3",
2096
+ {
2097
+ style: {
2098
+ color: theme.colors.text,
2099
+ marginBottom: "8px",
2100
+ fontSize: `${theme.fontSizes[3]}px`
2101
+ },
2102
+ children: "No Issues Found"
2103
+ }
2104
+ ),
2105
+ /* @__PURE__ */ jsxs("p", { style: { margin: 0, fontSize: `${theme.fontSizes[2]}px` }, children: [
2106
+ "There are no ",
2107
+ issueFilter !== "all" ? issueFilter : "",
2108
+ " issues in this repository."
2109
+ ] })
2110
+ ] })
2111
+ ]
2112
+ }
2113
+ ) : /* @__PURE__ */ jsx(
2114
+ "div",
2115
+ {
2116
+ style: { display: "flex", flexDirection: "column", gap: "8px" },
2117
+ children: filteredIssues.map((issue) => /* @__PURE__ */ jsx(
2118
+ "button",
2119
+ {
2120
+ type: "button",
2121
+ onClick: (e) => handleIssueClick(issue, e),
2122
+ style: {
2123
+ width: "100%",
2124
+ padding: "12px",
2125
+ borderRadius: "6px",
2126
+ border: `1px solid ${selectedIssues.has(issue.number) ? theme.colors.primary : theme.colors.border}`,
2127
+ backgroundColor: selectedIssues.has(issue.number) ? `${theme.colors.primary}10` : theme.colors.surface,
2128
+ cursor: "pointer",
2129
+ textAlign: "left"
2130
+ },
2131
+ children: /* @__PURE__ */ jsxs(
2132
+ "div",
2133
+ {
2134
+ style: {
2135
+ display: "flex",
2136
+ alignItems: "flex-start",
2137
+ gap: "12px"
2138
+ },
2139
+ children: [
2140
+ /* @__PURE__ */ jsx(
2141
+ "input",
2142
+ {
2143
+ type: "checkbox",
2144
+ checked: selectedIssues.has(issue.number),
2145
+ onChange: () => handleToggleIssue(issue.number),
2146
+ onClick: (e) => e.stopPropagation(),
2147
+ style: { marginTop: "2px", cursor: "pointer" }
2148
+ }
2149
+ ),
2150
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
2151
+ /* @__PURE__ */ jsxs(
2152
+ "div",
2153
+ {
2154
+ style: {
2155
+ display: "flex",
2156
+ alignItems: "center",
2157
+ gap: "8px",
2158
+ marginBottom: "6px",
2159
+ flexWrap: "wrap"
2160
+ },
2161
+ children: [
2162
+ /* @__PURE__ */ jsx(
2163
+ "span",
2164
+ {
2165
+ style: {
2166
+ display: "inline-flex",
2167
+ alignItems: "center",
2168
+ padding: "2px 8px",
2169
+ borderRadius: "12px",
2170
+ backgroundColor: issue.state === "open" ? "#22c55e22" : "#6b728022",
2171
+ color: issue.state === "open" ? "#22c55e" : "#6b7280",
2172
+ fontSize: `${theme.fontSizes[0]}px`,
2173
+ fontWeight: theme.fontWeights.semibold,
2174
+ textTransform: "uppercase"
2175
+ },
2176
+ children: issue.state
2177
+ }
2178
+ ),
2179
+ /* @__PURE__ */ jsxs(
2180
+ "span",
2181
+ {
2182
+ style: {
2183
+ color: theme.colors.textSecondary,
2184
+ fontSize: `${theme.fontSizes[1]}px`
2185
+ },
2186
+ children: [
2187
+ "#",
2188
+ issue.number
2189
+ ]
2190
+ }
2191
+ ),
2192
+ /* @__PURE__ */ jsx(
2193
+ "a",
2194
+ {
2195
+ href: issue.html_url,
2196
+ target: "_blank",
2197
+ rel: "noopener noreferrer",
2198
+ onClick: (e) => e.stopPropagation(),
2199
+ style: {
2200
+ color: theme.colors.primary,
2201
+ textDecoration: "none",
2202
+ display: "inline-flex",
2203
+ alignItems: "center"
2204
+ },
2205
+ children: /* @__PURE__ */ jsx(ExternalLink, { size: 12 })
2206
+ }
2207
+ )
2208
+ ]
2209
+ }
2210
+ ),
2211
+ /* @__PURE__ */ jsx(
2212
+ "h4",
2213
+ {
2214
+ style: {
2215
+ margin: 0,
2216
+ marginBottom: "6px",
2217
+ color: theme.colors.text,
2218
+ fontSize: `${theme.fontSizes[2]}px`,
2219
+ fontWeight: theme.fontWeights.semibold,
2220
+ overflow: "hidden",
2221
+ textOverflow: "ellipsis",
2222
+ whiteSpace: "nowrap"
2223
+ },
2224
+ children: issue.title
2225
+ }
2226
+ ),
2227
+ issue.labels.length > 0 && /* @__PURE__ */ jsxs(
2228
+ "div",
2229
+ {
2230
+ style: {
2231
+ display: "flex",
2232
+ flexWrap: "wrap",
2233
+ gap: "4px",
2234
+ marginBottom: "6px"
2235
+ },
2236
+ children: [
2237
+ issue.labels.slice(0, 3).map((label) => /* @__PURE__ */ jsxs(
2238
+ "span",
2239
+ {
2240
+ style: {
2241
+ display: "inline-flex",
2242
+ alignItems: "center",
2243
+ gap: "4px",
2244
+ padding: "2px 6px",
2245
+ borderRadius: "12px",
2246
+ backgroundColor: `#${label.color}22`,
2247
+ color: `#${label.color}`,
2248
+ fontSize: `${theme.fontSizes[0]}px`,
2249
+ fontWeight: theme.fontWeights.medium
2250
+ },
2251
+ children: [
2252
+ /* @__PURE__ */ jsx(Tag, { size: 10 }),
2253
+ label.name
2254
+ ]
2255
+ },
2256
+ label.id
2257
+ )),
2258
+ issue.labels.length > 3 && /* @__PURE__ */ jsxs(
2259
+ "span",
2260
+ {
2261
+ style: {
2262
+ fontSize: `${theme.fontSizes[0]}px`,
2263
+ color: theme.colors.textSecondary
2264
+ },
2265
+ children: [
2266
+ "+",
2267
+ issue.labels.length - 3
2268
+ ]
2269
+ }
2270
+ )
2271
+ ]
2272
+ }
2273
+ ),
2274
+ /* @__PURE__ */ jsxs(
2275
+ "div",
2276
+ {
2277
+ style: {
2278
+ display: "flex",
2279
+ alignItems: "center",
2280
+ gap: "12px",
2281
+ fontSize: `${theme.fontSizes[0]}px`,
2282
+ color: theme.colors.textSecondary,
2283
+ flexWrap: "wrap"
2284
+ },
2285
+ children: [
2286
+ /* @__PURE__ */ jsxs(
2287
+ "span",
2288
+ {
2289
+ style: {
2290
+ display: "flex",
2291
+ alignItems: "center",
2292
+ gap: "4px"
2293
+ },
2294
+ children: [
2295
+ /* @__PURE__ */ jsx(
2296
+ "img",
2297
+ {
2298
+ src: issue.user.avatar_url,
2299
+ alt: issue.user.login,
2300
+ style: {
2301
+ width: "14px",
2302
+ height: "14px",
2303
+ borderRadius: "50%"
2304
+ }
2305
+ }
2306
+ ),
2307
+ issue.user.login
2308
+ ]
2309
+ }
2310
+ ),
2311
+ /* @__PURE__ */ jsxs(
2312
+ "span",
2313
+ {
2314
+ style: {
2315
+ display: "flex",
2316
+ alignItems: "center",
2317
+ gap: "4px"
2318
+ },
2319
+ children: [
2320
+ /* @__PURE__ */ jsx(Calendar, { size: 12 }),
2321
+ formatDate(issue.created_at)
2322
+ ]
2323
+ }
2324
+ ),
2325
+ issue.comments > 0 && /* @__PURE__ */ jsxs(
2326
+ "span",
2327
+ {
2328
+ style: {
2329
+ display: "flex",
2330
+ alignItems: "center",
2331
+ gap: "4px"
2332
+ },
2333
+ children: [
2334
+ /* @__PURE__ */ jsx(MessageSquare, { size: 12 }),
2335
+ issue.comments
2336
+ ]
2337
+ }
2338
+ )
2339
+ ]
2340
+ }
2341
+ )
2342
+ ] })
2343
+ ]
2344
+ }
2345
+ )
2346
+ },
2347
+ issue.id
2348
+ ))
2349
+ }
2350
+ ) }),
2351
+ showIssueModal && selectedIssue && /* @__PURE__ */ jsx(
2352
+ "div",
2353
+ {
2354
+ style: {
2355
+ position: "fixed",
2356
+ inset: 0,
2357
+ backgroundColor: "rgba(0, 0, 0, 0.5)",
2358
+ display: "flex",
2359
+ alignItems: "center",
2360
+ justifyContent: "center",
2361
+ zIndex: 1e3
2362
+ },
2363
+ onClick: () => {
2364
+ setShowIssueModal(false);
2365
+ setSelectedIssue(null);
2366
+ },
2367
+ children: /* @__PURE__ */ jsxs(
2368
+ "div",
2369
+ {
2370
+ style: {
2371
+ backgroundColor: theme.colors.background,
2372
+ borderRadius: "12px",
2373
+ width: "90%",
2374
+ maxWidth: "700px",
2375
+ maxHeight: "80vh",
2376
+ display: "flex",
2377
+ flexDirection: "column",
2378
+ boxShadow: "0 20px 25px -5px rgba(0, 0, 0, 0.1)",
2379
+ border: `1px solid ${theme.colors.border}`
2380
+ },
2381
+ onClick: (e) => e.stopPropagation(),
2382
+ children: [
2383
+ /* @__PURE__ */ jsxs(
2384
+ "div",
2385
+ {
2386
+ style: {
2387
+ display: "flex",
2388
+ alignItems: "flex-start",
2389
+ justifyContent: "space-between",
2390
+ padding: "20px",
2391
+ borderBottom: `1px solid ${theme.colors.border}`
2392
+ },
2393
+ children: [
2394
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
2395
+ /* @__PURE__ */ jsxs(
2396
+ "div",
2397
+ {
2398
+ style: {
2399
+ display: "flex",
2400
+ alignItems: "center",
2401
+ gap: "12px",
2402
+ marginBottom: "8px"
2403
+ },
2404
+ children: [
2405
+ /* @__PURE__ */ jsx(
2406
+ "span",
2407
+ {
2408
+ style: {
2409
+ display: "inline-flex",
2410
+ alignItems: "center",
2411
+ padding: "4px 10px",
2412
+ borderRadius: "12px",
2413
+ backgroundColor: selectedIssue.state === "open" ? "#22c55e22" : "#6b728022",
2414
+ color: selectedIssue.state === "open" ? "#22c55e" : "#6b7280",
2415
+ fontSize: `${theme.fontSizes[1]}px`,
2416
+ fontWeight: theme.fontWeights.semibold,
2417
+ textTransform: "uppercase"
2418
+ },
2419
+ children: selectedIssue.state
2420
+ }
2421
+ ),
2422
+ /* @__PURE__ */ jsxs(
2423
+ "span",
2424
+ {
2425
+ style: {
2426
+ color: theme.colors.textSecondary,
2427
+ fontSize: `${theme.fontSizes[2]}px`
2428
+ },
2429
+ children: [
2430
+ "#",
2431
+ selectedIssue.number
2432
+ ]
2433
+ }
2434
+ )
2435
+ ]
2436
+ }
2437
+ ),
2438
+ /* @__PURE__ */ jsx(
2439
+ "h2",
2440
+ {
2441
+ style: {
2442
+ color: theme.colors.text,
2443
+ fontSize: `${theme.fontSizes[4]}px`,
2444
+ fontWeight: theme.fontWeights.semibold,
2445
+ margin: 0
2446
+ },
2447
+ children: selectedIssue.title
2448
+ }
2449
+ )
2450
+ ] }),
2451
+ /* @__PURE__ */ jsx(
2452
+ "button",
2453
+ {
2454
+ type: "button",
2455
+ onClick: () => {
2456
+ setShowIssueModal(false);
2457
+ setSelectedIssue(null);
2458
+ },
2459
+ style: {
2460
+ background: "none",
2461
+ border: "none",
2462
+ color: theme.colors.textSecondary,
2463
+ cursor: "pointer",
2464
+ padding: "8px"
2465
+ },
2466
+ children: /* @__PURE__ */ jsx(X, { size: 20 })
1401
2467
  }
1402
- ),
1403
- /* @__PURE__ */ jsx(
1404
- "span",
2468
+ )
2469
+ ]
2470
+ }
2471
+ ),
2472
+ /* @__PURE__ */ jsxs(
2473
+ "div",
2474
+ {
2475
+ style: {
2476
+ flex: 1,
2477
+ overflow: "auto",
2478
+ padding: "20px"
2479
+ },
2480
+ children: [
2481
+ /* @__PURE__ */ jsxs(
2482
+ "div",
1405
2483
  {
1406
2484
  style: {
2485
+ display: "flex",
2486
+ alignItems: "center",
2487
+ gap: "20px",
2488
+ marginBottom: "20px",
1407
2489
  fontSize: `${theme.fontSizes[2]}px`,
1408
- fontWeight: theme.fontWeights.semibold,
1409
- color: theme.colors.primary
2490
+ color: theme.colors.textSecondary,
2491
+ flexWrap: "wrap"
1410
2492
  },
1411
- children: repo.full_name
2493
+ children: [
2494
+ /* @__PURE__ */ jsxs(
2495
+ "span",
2496
+ {
2497
+ style: { display: "flex", alignItems: "center", gap: "6px" },
2498
+ children: [
2499
+ /* @__PURE__ */ jsx(
2500
+ "img",
2501
+ {
2502
+ src: selectedIssue.user.avatar_url,
2503
+ alt: selectedIssue.user.login,
2504
+ style: {
2505
+ width: "20px",
2506
+ height: "20px",
2507
+ borderRadius: "50%"
2508
+ }
2509
+ }
2510
+ ),
2511
+ /* @__PURE__ */ jsx("strong", { style: { color: theme.colors.text }, children: selectedIssue.user.login }),
2512
+ " ",
2513
+ "opened"
2514
+ ]
2515
+ }
2516
+ ),
2517
+ /* @__PURE__ */ jsxs(
2518
+ "span",
2519
+ {
2520
+ style: { display: "flex", alignItems: "center", gap: "4px" },
2521
+ children: [
2522
+ /* @__PURE__ */ jsx(Calendar, { size: 14 }),
2523
+ formatDate(selectedIssue.created_at)
2524
+ ]
2525
+ }
2526
+ ),
2527
+ selectedIssue.comments > 0 && /* @__PURE__ */ jsxs(
2528
+ "span",
2529
+ {
2530
+ style: {
2531
+ display: "flex",
2532
+ alignItems: "center",
2533
+ gap: "4px"
2534
+ },
2535
+ children: [
2536
+ /* @__PURE__ */ jsx(MessageSquare, { size: 14 }),
2537
+ selectedIssue.comments,
2538
+ " ",
2539
+ selectedIssue.comments === 1 ? "comment" : "comments"
2540
+ ]
2541
+ }
2542
+ )
2543
+ ]
1412
2544
  }
1413
2545
  ),
1414
- repo.private && /* @__PURE__ */ jsx(
1415
- "span",
2546
+ selectedIssue.labels.length > 0 && /* @__PURE__ */ jsx(
2547
+ "div",
1416
2548
  {
1417
2549
  style: {
1418
- fontSize: `${theme.fontSizes[0]}px`,
1419
- padding: "2px 6px",
1420
- borderRadius: "4px",
1421
- backgroundColor: theme.colors.backgroundTertiary,
1422
- color: theme.colors.textSecondary
2550
+ display: "flex",
2551
+ flexWrap: "wrap",
2552
+ gap: "8px",
2553
+ marginBottom: "20px"
1423
2554
  },
1424
- children: "Private"
2555
+ children: selectedIssue.labels.map((label) => /* @__PURE__ */ jsxs(
2556
+ "span",
2557
+ {
2558
+ style: {
2559
+ display: "inline-flex",
2560
+ alignItems: "center",
2561
+ gap: "6px",
2562
+ padding: "4px 12px",
2563
+ borderRadius: "16px",
2564
+ backgroundColor: `#${label.color}22`,
2565
+ color: `#${label.color}`,
2566
+ fontSize: `${theme.fontSizes[1]}px`,
2567
+ fontWeight: theme.fontWeights.medium
2568
+ },
2569
+ children: [
2570
+ /* @__PURE__ */ jsx(Tag, { size: 12 }),
2571
+ label.name
2572
+ ]
2573
+ },
2574
+ label.id
2575
+ ))
2576
+ }
2577
+ ),
2578
+ selectedIssue.body && /* @__PURE__ */ jsxs(
2579
+ "div",
2580
+ {
2581
+ style: {
2582
+ backgroundColor: theme.colors.backgroundSecondary,
2583
+ borderRadius: "8px",
2584
+ padding: "16px",
2585
+ border: `1px solid ${theme.colors.border}`
2586
+ },
2587
+ children: [
2588
+ /* @__PURE__ */ jsx(
2589
+ "h3",
2590
+ {
2591
+ style: {
2592
+ color: theme.colors.text,
2593
+ fontSize: `${theme.fontSizes[2]}px`,
2594
+ fontWeight: theme.fontWeights.semibold,
2595
+ marginTop: 0,
2596
+ marginBottom: "12px"
2597
+ },
2598
+ children: "Description"
2599
+ }
2600
+ ),
2601
+ /* @__PURE__ */ jsx(
2602
+ "div",
2603
+ {
2604
+ style: {
2605
+ color: theme.colors.text,
2606
+ fontSize: `${theme.fontSizes[2]}px`,
2607
+ lineHeight: 1.6,
2608
+ whiteSpace: "pre-wrap",
2609
+ wordBreak: "break-word"
2610
+ },
2611
+ children: selectedIssue.body
2612
+ }
2613
+ )
2614
+ ]
1425
2615
  }
1426
2616
  )
1427
- ] }),
1428
- repo.description && /* @__PURE__ */ jsx(
1429
- "p",
1430
- {
1431
- style: {
1432
- margin: 0,
1433
- fontSize: `${theme.fontSizes[1]}px`,
1434
- color: theme.colors.textSecondary,
1435
- overflow: "hidden",
1436
- textOverflow: "ellipsis",
1437
- display: "-webkit-box",
1438
- WebkitLineClamp: 2,
1439
- WebkitBoxOrient: "vertical"
1440
- },
1441
- children: repo.description
1442
- }
1443
- ),
1444
- /* @__PURE__ */ jsxs(
1445
- "div",
2617
+ ]
2618
+ }
2619
+ ),
2620
+ /* @__PURE__ */ jsx(
2621
+ "div",
2622
+ {
2623
+ style: {
2624
+ display: "flex",
2625
+ alignItems: "center",
2626
+ justifyContent: "flex-end",
2627
+ padding: "16px 20px",
2628
+ borderTop: `1px solid ${theme.colors.border}`,
2629
+ gap: "12px"
2630
+ },
2631
+ children: /* @__PURE__ */ jsxs(
2632
+ "a",
1446
2633
  {
2634
+ href: selectedIssue.html_url,
2635
+ target: "_blank",
2636
+ rel: "noopener noreferrer",
1447
2637
  style: {
1448
2638
  display: "flex",
1449
2639
  alignItems: "center",
1450
- gap: "16px",
1451
- fontSize: `${theme.fontSizes[1]}px`,
1452
- color: theme.colors.textSecondary
2640
+ gap: "6px",
2641
+ padding: "8px 16px",
2642
+ borderRadius: "6px",
2643
+ border: "none",
2644
+ backgroundColor: theme.colors.primary,
2645
+ color: theme.colors.background,
2646
+ fontSize: `${theme.fontSizes[2]}px`,
2647
+ fontWeight: theme.fontWeights.medium,
2648
+ textDecoration: "none"
1453
2649
  },
1454
2650
  children: [
1455
- repo.language && /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
1456
- /* @__PURE__ */ jsx(
1457
- "span",
1458
- {
1459
- style: {
1460
- width: 10,
1461
- height: 10,
1462
- borderRadius: "50%",
1463
- backgroundColor: theme.colors.info
1464
- }
1465
- }
1466
- ),
1467
- repo.language
1468
- ] }),
1469
- /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
1470
- /* @__PURE__ */ jsx(Star, { size: 14 }),
1471
- formatNumber(repo.stargazers_count || 0)
1472
- ] }),
1473
- /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
1474
- /* @__PURE__ */ jsx(GitFork, { size: 14 }),
1475
- formatNumber(repo.forks_count || 0)
1476
- ] }),
1477
- /* @__PURE__ */ jsx(
1478
- "a",
1479
- {
1480
- href: repo.html_url,
1481
- target: "_blank",
1482
- rel: "noopener noreferrer",
1483
- onClick: (e) => e.stopPropagation(),
1484
- style: {
1485
- marginLeft: "auto",
1486
- color: theme.colors.textSecondary,
1487
- display: "flex",
1488
- alignItems: "center"
1489
- },
1490
- children: /* @__PURE__ */ jsx(ExternalLink, { size: 14 })
1491
- }
1492
- )
2651
+ /* @__PURE__ */ jsx(ExternalLink, { size: 14 }),
2652
+ "View on GitHub"
1493
2653
  ]
1494
2654
  }
1495
2655
  )
1496
- ]
1497
- },
1498
- repo.id
1499
- );
1500
- })
1501
- ]
2656
+ }
2657
+ )
2658
+ ]
2659
+ }
2660
+ )
1502
2661
  }
1503
2662
  ),
1504
2663
  /* @__PURE__ */ jsx("style", { children: `
1505
2664
  @keyframes spin {
1506
2665
  to { transform: rotate(360deg); }
1507
2666
  }
2667
+ .animate-spin {
2668
+ animation: spin 1s linear infinite;
2669
+ }
1508
2670
  ` })
1509
2671
  ]
1510
2672
  }
1511
2673
  );
1512
2674
  };
1513
- const GitHubSearchPanel = (props) => {
1514
- return /* @__PURE__ */ jsx(GitHubSearchPanelContent, { ...props });
2675
+ const GitHubIssuesPanel = (props) => {
2676
+ return /* @__PURE__ */ jsx(GitHubIssuesPanelContent, { ...props });
1515
2677
  };
1516
- const GitHubSearchPanelMetadata = {
1517
- id: "github-search",
1518
- name: "GitHub Search",
1519
- description: "Search for repositories on GitHub",
1520
- icon: "search",
2678
+ const GitHubIssuesPanelMetadata = {
2679
+ id: "github-issues",
2680
+ name: "GitHub Issues",
2681
+ description: "View and manage GitHub repository issues",
2682
+ icon: "circle-dot",
1521
2683
  version: "0.1.0",
1522
- slices: [],
2684
+ slices: ["github-issues"],
1523
2685
  surfaces: ["panel"]
1524
2686
  };
1525
2687
  const OwnerRepositoriesPanelContent = ({
@@ -2881,23 +4043,23 @@ const defaultHighlightedProjects = [
2881
4043
  { owner: "facebook", repo: "react" },
2882
4044
  { owner: "vercel", repo: "next.js" }
2883
4045
  ];
2884
- const defaultFeaturedOrganizations = [];
2885
- const OrganizationCard = ({ org, theme, onClick }) => {
4046
+ const CollectionCard = ({ collection, theme, onClick }) => {
2886
4047
  return /* @__PURE__ */ jsxs(
2887
4048
  "button",
2888
4049
  {
2889
4050
  onClick,
2890
4051
  style: {
2891
- padding: "16px 20px",
4052
+ padding: "20px 24px",
2892
4053
  borderRadius: "12px",
2893
4054
  backgroundColor: theme.colors.surface,
2894
4055
  border: `1px solid ${theme.colors.border}`,
2895
4056
  display: "flex",
2896
4057
  alignItems: "center",
2897
- gap: "12px",
4058
+ gap: "16px",
2898
4059
  cursor: "pointer",
2899
4060
  transition: "all 0.2s ease",
2900
- minWidth: "240px",
4061
+ minWidth: "280px",
4062
+ maxWidth: "320px",
2901
4063
  textAlign: "left"
2902
4064
  },
2903
4065
  onMouseEnter: (e) => {
@@ -2910,16 +4072,20 @@ const OrganizationCard = ({ org, theme, onClick }) => {
2910
4072
  },
2911
4073
  children: [
2912
4074
  /* @__PURE__ */ jsx(
2913
- "img",
4075
+ "div",
2914
4076
  {
2915
- src: `https://github.com/${org.login}.png?size=64`,
2916
- alt: org.login,
2917
4077
  style: {
2918
- width: 40,
2919
- height: 40,
2920
- borderRadius: "8px",
4078
+ width: 48,
4079
+ height: 48,
4080
+ borderRadius: "10px",
4081
+ backgroundColor: `${theme.colors.primary}15`,
4082
+ display: "flex",
4083
+ alignItems: "center",
4084
+ justifyContent: "center",
4085
+ color: theme.colors.primary,
2921
4086
  flexShrink: 0
2922
- }
4087
+ },
4088
+ children: /* @__PURE__ */ jsx(FolderOpen, { size: 24 })
2923
4089
  }
2924
4090
  ),
2925
4091
  /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
@@ -2930,12 +4096,12 @@ const OrganizationCard = ({ org, theme, onClick }) => {
2930
4096
  fontSize: `${theme.fontSizes[2]}px`,
2931
4097
  fontWeight: theme.fontWeights.semibold,
2932
4098
  color: theme.colors.text,
2933
- marginBottom: org.description ? "2px" : 0
4099
+ marginBottom: "4px"
2934
4100
  },
2935
- children: org.login
4101
+ children: collection.name
2936
4102
  }
2937
4103
  ),
2938
- org.description && /* @__PURE__ */ jsx(
4104
+ /* @__PURE__ */ jsx(
2939
4105
  "div",
2940
4106
  {
2941
4107
  style: {
@@ -2945,10 +4111,25 @@ const OrganizationCard = ({ org, theme, onClick }) => {
2945
4111
  textOverflow: "ellipsis",
2946
4112
  whiteSpace: "nowrap"
2947
4113
  },
2948
- children: org.description
4114
+ children: collection.description
4115
+ }
4116
+ ),
4117
+ collection.repositoryCount !== void 0 && /* @__PURE__ */ jsxs(
4118
+ "div",
4119
+ {
4120
+ style: {
4121
+ fontSize: `${theme.fontSizes[0]}px`,
4122
+ color: theme.colors.textSecondary,
4123
+ marginTop: "4px"
4124
+ },
4125
+ children: [
4126
+ collection.repositoryCount,
4127
+ " repositories"
4128
+ ]
2949
4129
  }
2950
4130
  )
2951
- ] })
4131
+ ] }),
4132
+ /* @__PURE__ */ jsx(ChevronRight, { size: 20, style: { color: theme.colors.textSecondary, flexShrink: 0 } })
2952
4133
  ]
2953
4134
  }
2954
4135
  );
@@ -2956,8 +4137,8 @@ const OrganizationCard = ({ org, theme, onClick }) => {
2956
4137
  const WelcomePanel = ({
2957
4138
  onNavigate,
2958
4139
  highlightedProjects = defaultHighlightedProjects,
2959
- featuredOrganizations = defaultFeaturedOrganizations,
2960
- onOrganizationClick
4140
+ curatedCollections = [],
4141
+ onCollectionClick
2961
4142
  }) => {
2962
4143
  const { theme } = useTheme();
2963
4144
  const [repoInput, setRepoInput] = useState("");
@@ -2983,13 +4164,11 @@ const WelcomePanel = ({
2983
4164
  window.location.href = `/${project.owner}/${project.repo}`;
2984
4165
  }
2985
4166
  }, [onNavigate]);
2986
- const handleOrganizationClick = useCallback((org) => {
2987
- if (onOrganizationClick) {
2988
- onOrganizationClick(org.login);
2989
- } else {
2990
- window.open(`https://github.com/${org.login}`, "_blank");
4167
+ const handleCollectionClick = useCallback((collection) => {
4168
+ if (onCollectionClick) {
4169
+ onCollectionClick(collection.id);
2991
4170
  }
2992
- }, [onOrganizationClick]);
4171
+ }, [onCollectionClick]);
2993
4172
  return /* @__PURE__ */ jsxs(
2994
4173
  "div",
2995
4174
  {
@@ -3003,7 +4182,7 @@ const WelcomePanel = ({
3003
4182
  overflowY: "auto"
3004
4183
  },
3005
4184
  children: [
3006
- featuredOrganizations.length > 0 && /* @__PURE__ */ jsxs(
4185
+ curatedCollections.length > 0 && /* @__PURE__ */ jsxs(
3007
4186
  "div",
3008
4187
  {
3009
4188
  style: {
@@ -3011,7 +4190,7 @@ const WelcomePanel = ({
3011
4190
  display: "flex",
3012
4191
  flexDirection: "column",
3013
4192
  alignItems: "center",
3014
- gap: "16px",
4193
+ gap: "24px",
3015
4194
  borderBottom: `1px solid ${theme.colors.border}`
3016
4195
  },
3017
4196
  children: [
@@ -3025,7 +4204,7 @@ const WelcomePanel = ({
3025
4204
  color: theme.colors.textSecondary,
3026
4205
  textAlign: "center"
3027
4206
  },
3028
- children: "Explore software like never before"
4207
+ children: "Explore Curated Collections"
3029
4208
  }
3030
4209
  ),
3031
4210
  /* @__PURE__ */ jsx(
@@ -3035,16 +4214,17 @@ const WelcomePanel = ({
3035
4214
  display: "flex",
3036
4215
  gap: "16px",
3037
4216
  flexWrap: "wrap",
3038
- justifyContent: "center"
4217
+ justifyContent: "center",
4218
+ maxWidth: "1200px"
3039
4219
  },
3040
- children: featuredOrganizations.map((org) => /* @__PURE__ */ jsx(
3041
- OrganizationCard,
4220
+ children: curatedCollections.map((collection) => /* @__PURE__ */ jsx(
4221
+ CollectionCard,
3042
4222
  {
3043
- org,
4223
+ collection,
3044
4224
  theme,
3045
- onClick: () => handleOrganizationClick(org)
4225
+ onClick: () => handleCollectionClick(collection)
3046
4226
  },
3047
- org.login
4227
+ collection.id
3048
4228
  ))
3049
4229
  }
3050
4230
  )
@@ -3377,13 +4557,55 @@ const requestGitHubLoginTool = {
3377
4557
  event_type: "github:login-requested"
3378
4558
  }
3379
4559
  };
4560
+ const listIssuesTool = {
4561
+ name: "list_issues",
4562
+ description: "Get a list of GitHub issues for the current repository.",
4563
+ inputs: {
4564
+ type: "object",
4565
+ properties: {},
4566
+ required: []
4567
+ },
4568
+ outputs: {
4569
+ type: "object",
4570
+ properties: {
4571
+ success: { type: "boolean" }
4572
+ }
4573
+ },
4574
+ tags: ["github", "issues", "list", "browse"],
4575
+ tool_call_template: {
4576
+ call_template_type: "panel_event",
4577
+ event_type: "github-issues:request"
4578
+ }
4579
+ };
4580
+ const refreshIssuesTool = {
4581
+ name: "refresh_issues",
4582
+ description: "Refresh the list of GitHub issues for the current repository.",
4583
+ inputs: {
4584
+ type: "object",
4585
+ properties: {},
4586
+ required: []
4587
+ },
4588
+ outputs: {
4589
+ type: "object",
4590
+ properties: {
4591
+ success: { type: "boolean" }
4592
+ }
4593
+ },
4594
+ tags: ["github", "issues", "refresh", "update"],
4595
+ tool_call_template: {
4596
+ call_template_type: "panel_event",
4597
+ event_type: "github-issues:refresh"
4598
+ }
4599
+ };
3380
4600
  const githubTools = [
3381
4601
  listRepositoriesTool,
3382
4602
  selectRepositoryTool,
3383
4603
  previewRepositoryTool,
3384
4604
  searchRepositoriesTool,
3385
4605
  openRepositorySwitcherTool,
3386
- requestGitHubLoginTool
4606
+ requestGitHubLoginTool,
4607
+ listIssuesTool,
4608
+ refreshIssuesTool
3387
4609
  ];
3388
4610
  const githubToolsMetadata = {
3389
4611
  id: "github-panels",
@@ -3420,6 +4642,20 @@ const panels = [
3420
4642
  console.log("GitHub Search Panel unmounting");
3421
4643
  }
3422
4644
  },
4645
+ {
4646
+ metadata: GitHubIssuesPanelMetadata,
4647
+ component: GitHubIssuesPanel,
4648
+ onMount: async (context) => {
4649
+ console.log("GitHub Issues Panel mounted");
4650
+ const slice = context.getSlice("github-issues");
4651
+ if (slice && !slice.loading) {
4652
+ await slice.refresh();
4653
+ }
4654
+ },
4655
+ onUnmount: async (_context) => {
4656
+ console.log("GitHub Issues Panel unmounting");
4657
+ }
4658
+ },
3423
4659
  {
3424
4660
  metadata: OwnerRepositoriesPanelMetadata,
3425
4661
  component: OwnerRepositoriesPanel,
@@ -3458,6 +4694,7 @@ const onPackageUnload = async () => {
3458
4694
  console.log("Panel package unloading - GitHub Panels Extension");
3459
4695
  };
3460
4696
  export {
4697
+ GitHubIssuesPanel,
3461
4698
  GitHubProjectCard,
3462
4699
  GitHubProjectsPanel,
3463
4700
  GitHubSearchPanel,
@@ -3468,12 +4705,14 @@ export {
3468
4705
  addRecentRepository,
3469
4706
  githubTools,
3470
4707
  githubToolsMetadata,
4708
+ listIssuesTool,
3471
4709
  listRepositoriesTool,
3472
4710
  onPackageLoad,
3473
4711
  onPackageUnload,
3474
4712
  openRepositorySwitcherTool,
3475
4713
  panels,
3476
4714
  previewRepositoryTool,
4715
+ refreshIssuesTool,
3477
4716
  requestGitHubLoginTool,
3478
4717
  searchRepositoriesTool,
3479
4718
  selectRepositoryTool