@industry-theme/github-panels 0.1.31 → 0.1.33

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,55 @@ 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$C = [
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$C);
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$B = [
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$B);
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$A = [
156
+ ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
157
+ [
158
+ "path",
159
+ {
160
+ d: "M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z",
161
+ key: "1l2ple"
162
+ }
163
+ ],
164
+ [
165
+ "path",
166
+ {
167
+ d: "M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z",
168
+ key: "1wam0m"
169
+ }
170
+ ]
171
+ ];
172
+ const Atom = createLucideIcon("atom", __iconNode$A);
173
+ /**
174
+ * @license lucide-react v0.552.0 - ISC
175
+ *
176
+ * This source code is licensed under the ISC license.
177
+ * See the LICENSE file in the root directory of this source tree.
178
+ */
179
+ const __iconNode$z = [
156
180
  ["path", { d: "M12 7v14", key: "1akyts" }],
157
181
  [
158
182
  "path",
@@ -162,14 +186,32 @@ const __iconNode$k = [
162
186
  }
163
187
  ]
164
188
  ];
165
- const BookOpen = createLucideIcon("book-open", __iconNode$k);
189
+ const BookOpen = createLucideIcon("book-open", __iconNode$z);
166
190
  /**
167
191
  * @license lucide-react v0.552.0 - ISC
168
192
  *
169
193
  * This source code is licensed under the ISC license.
170
194
  * See the LICENSE file in the root directory of this source tree.
171
195
  */
172
- const __iconNode$j = [
196
+ const __iconNode$y = [
197
+ [
198
+ "path",
199
+ {
200
+ d: "M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",
201
+ key: "hh9hay"
202
+ }
203
+ ],
204
+ ["path", { d: "m3.3 7 8.7 5 8.7-5", key: "g66t2b" }],
205
+ ["path", { d: "M12 22V12", key: "d0xqtd" }]
206
+ ];
207
+ const Box = createLucideIcon("box", __iconNode$y);
208
+ /**
209
+ * @license lucide-react v0.552.0 - ISC
210
+ *
211
+ * This source code is licensed under the ISC license.
212
+ * See the LICENSE file in the root directory of this source tree.
213
+ */
214
+ const __iconNode$x = [
173
215
  ["path", { d: "M10 12h4", key: "a56b0p" }],
174
216
  ["path", { d: "M10 8h4", key: "1sr2af" }],
175
217
  ["path", { d: "M14 21v-3a2 2 0 0 0-4 0v3", key: "1rgiei" }],
@@ -182,55 +224,162 @@ const __iconNode$j = [
182
224
  ],
183
225
  ["path", { d: "M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16", key: "16ra0t" }]
184
226
  ];
185
- const Building2 = createLucideIcon("building-2", __iconNode$j);
227
+ const Building2 = createLucideIcon("building-2", __iconNode$x);
186
228
  /**
187
229
  * @license lucide-react v0.552.0 - ISC
188
230
  *
189
231
  * This source code is licensed under the ISC license.
190
232
  * See the LICENSE file in the root directory of this source tree.
191
233
  */
192
- const __iconNode$i = [
234
+ const __iconNode$w = [
193
235
  ["path", { d: "M8 2v4", key: "1cmpym" }],
194
236
  ["path", { d: "M16 2v4", key: "4m81vk" }],
195
237
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
196
238
  ["path", { d: "M3 10h18", key: "8toen8" }]
197
239
  ];
198
- const Calendar = createLucideIcon("calendar", __iconNode$i);
240
+ const Calendar = createLucideIcon("calendar", __iconNode$w);
241
+ /**
242
+ * @license lucide-react v0.552.0 - ISC
243
+ *
244
+ * This source code is licensed under the ISC license.
245
+ * See the LICENSE file in the root directory of this source tree.
246
+ */
247
+ const __iconNode$v = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
248
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$v);
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$u = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
256
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$u);
257
+ /**
258
+ * @license lucide-react v0.552.0 - ISC
259
+ *
260
+ * This source code is licensed under the ISC license.
261
+ * See the LICENSE file in the root directory of this source tree.
262
+ */
263
+ const __iconNode$t = [
264
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
265
+ ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
266
+ ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
267
+ ];
268
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$t);
269
+ /**
270
+ * @license lucide-react v0.552.0 - ISC
271
+ *
272
+ * This source code is licensed under the ISC license.
273
+ * See the LICENSE file in the root directory of this source tree.
274
+ */
275
+ const __iconNode$s = [
276
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
277
+ ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
278
+ ];
279
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$s);
280
+ /**
281
+ * @license lucide-react v0.552.0 - ISC
282
+ *
283
+ * This source code is licensed under the ISC license.
284
+ * See the LICENSE file in the root directory of this source tree.
285
+ */
286
+ const __iconNode$r = [
287
+ ["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
288
+ ["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
289
+ ];
290
+ const Code = createLucideIcon("code", __iconNode$r);
291
+ /**
292
+ * @license lucide-react v0.552.0 - ISC
293
+ *
294
+ * This source code is licensed under the ISC license.
295
+ * See the LICENSE file in the root directory of this source tree.
296
+ */
297
+ const __iconNode$q = [
298
+ ["path", { d: "M11 10.27 7 3.34", key: "16pf9h" }],
299
+ ["path", { d: "m11 13.73-4 6.93", key: "794ttg" }],
300
+ ["path", { d: "M12 22v-2", key: "1osdcq" }],
301
+ ["path", { d: "M12 2v2", key: "tus03m" }],
302
+ ["path", { d: "M14 12h8", key: "4f43i9" }],
303
+ ["path", { d: "m17 20.66-1-1.73", key: "eq3orb" }],
304
+ ["path", { d: "m17 3.34-1 1.73", key: "2wel8s" }],
305
+ ["path", { d: "M2 12h2", key: "1t8f8n" }],
306
+ ["path", { d: "m20.66 17-1.73-1", key: "sg0v6f" }],
307
+ ["path", { d: "m20.66 7-1.73 1", key: "1ow05n" }],
308
+ ["path", { d: "m3.34 17 1.73-1", key: "nuk764" }],
309
+ ["path", { d: "m3.34 7 1.73 1", key: "1ulond" }],
310
+ ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }],
311
+ ["circle", { cx: "12", cy: "12", r: "8", key: "46899m" }]
312
+ ];
313
+ const Cog = createLucideIcon("cog", __iconNode$q);
199
314
  /**
200
315
  * @license lucide-react v0.552.0 - ISC
201
316
  *
202
317
  * This source code is licensed under the ISC license.
203
318
  * See the LICENSE file in the root directory of this source tree.
204
319
  */
205
- const __iconNode$h = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
206
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$h);
320
+ const __iconNode$p = [
321
+ ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
322
+ ["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" }]
323
+ ];
324
+ const Copy = createLucideIcon("copy", __iconNode$p);
207
325
  /**
208
326
  * @license lucide-react v0.552.0 - ISC
209
327
  *
210
328
  * This source code is licensed under the ISC license.
211
329
  * See the LICENSE file in the root directory of this source tree.
212
330
  */
213
- const __iconNode$g = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
214
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$g);
331
+ const __iconNode$o = [
332
+ ["path", { d: "M12 20v2", key: "1lh1kg" }],
333
+ ["path", { d: "M12 2v2", key: "tus03m" }],
334
+ ["path", { d: "M17 20v2", key: "1rnc9c" }],
335
+ ["path", { d: "M17 2v2", key: "11trls" }],
336
+ ["path", { d: "M2 12h2", key: "1t8f8n" }],
337
+ ["path", { d: "M2 17h2", key: "7oei6x" }],
338
+ ["path", { d: "M2 7h2", key: "asdhe0" }],
339
+ ["path", { d: "M20 12h2", key: "1q8mjw" }],
340
+ ["path", { d: "M20 17h2", key: "1fpfkl" }],
341
+ ["path", { d: "M20 7h2", key: "1o8tra" }],
342
+ ["path", { d: "M7 20v2", key: "4gnj0m" }],
343
+ ["path", { d: "M7 2v2", key: "1i4yhu" }],
344
+ ["rect", { x: "4", y: "4", width: "16", height: "16", rx: "2", key: "1vbyd7" }],
345
+ ["rect", { x: "8", y: "8", width: "8", height: "8", rx: "1", key: "z9xiuo" }]
346
+ ];
347
+ const Cpu = createLucideIcon("cpu", __iconNode$o);
215
348
  /**
216
349
  * @license lucide-react v0.552.0 - ISC
217
350
  *
218
351
  * This source code is licensed under the ISC license.
219
352
  * See the LICENSE file in the root directory of this source tree.
220
353
  */
221
- const __iconNode$f = [
354
+ const __iconNode$n = [
222
355
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
223
356
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
224
357
  ["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
358
  ];
226
- const ExternalLink = createLucideIcon("external-link", __iconNode$f);
359
+ const ExternalLink = createLucideIcon("external-link", __iconNode$n);
227
360
  /**
228
361
  * @license lucide-react v0.552.0 - ISC
229
362
  *
230
363
  * This source code is licensed under the ISC license.
231
364
  * See the LICENSE file in the root directory of this source tree.
232
365
  */
233
- const __iconNode$e = [
366
+ const __iconNode$m = [
367
+ [
368
+ "path",
369
+ {
370
+ 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",
371
+ key: "usdka0"
372
+ }
373
+ ]
374
+ ];
375
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$m);
376
+ /**
377
+ * @license lucide-react v0.552.0 - ISC
378
+ *
379
+ * This source code is licensed under the ISC license.
380
+ * See the LICENSE file in the root directory of this source tree.
381
+ */
382
+ const __iconNode$l = [
234
383
  [
235
384
  "path",
236
385
  {
@@ -239,14 +388,14 @@ const __iconNode$e = [
239
388
  }
240
389
  ]
241
390
  ];
242
- const Folder = createLucideIcon("folder", __iconNode$e);
391
+ const Folder = createLucideIcon("folder", __iconNode$l);
243
392
  /**
244
393
  * @license lucide-react v0.552.0 - ISC
245
394
  *
246
395
  * This source code is licensed under the ISC license.
247
396
  * See the LICENSE file in the root directory of this source tree.
248
397
  */
249
- const __iconNode$d = [
398
+ const __iconNode$k = [
250
399
  [
251
400
  "path",
252
401
  {
@@ -255,28 +404,28 @@ const __iconNode$d = [
255
404
  }
256
405
  ]
257
406
  ];
258
- const Funnel = createLucideIcon("funnel", __iconNode$d);
407
+ const Funnel = createLucideIcon("funnel", __iconNode$k);
259
408
  /**
260
409
  * @license lucide-react v0.552.0 - ISC
261
410
  *
262
411
  * This source code is licensed under the ISC license.
263
412
  * See the LICENSE file in the root directory of this source tree.
264
413
  */
265
- const __iconNode$c = [
414
+ const __iconNode$j = [
266
415
  ["circle", { cx: "12", cy: "18", r: "3", key: "1mpf1b" }],
267
416
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
268
417
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
269
418
  ["path", { d: "M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9", key: "1uq4wg" }],
270
419
  ["path", { d: "M12 12v3", key: "158kv8" }]
271
420
  ];
272
- const GitFork = createLucideIcon("git-fork", __iconNode$c);
421
+ const GitFork = createLucideIcon("git-fork", __iconNode$j);
273
422
  /**
274
423
  * @license lucide-react v0.552.0 - ISC
275
424
  *
276
425
  * This source code is licensed under the ISC license.
277
426
  * See the LICENSE file in the root directory of this source tree.
278
427
  */
279
- const __iconNode$b = [
428
+ const __iconNode$i = [
280
429
  [
281
430
  "path",
282
431
  {
@@ -286,88 +435,155 @@ const __iconNode$b = [
286
435
  ],
287
436
  ["path", { d: "M9 18c-4.51 2-5-2-7-2", key: "9comsn" }]
288
437
  ];
289
- const Github = createLucideIcon("github", __iconNode$b);
438
+ const Github = createLucideIcon("github", __iconNode$i);
290
439
  /**
291
440
  * @license lucide-react v0.552.0 - ISC
292
441
  *
293
442
  * This source code is licensed under the ISC license.
294
443
  * See the LICENSE file in the root directory of this source tree.
295
444
  */
296
- const __iconNode$a = [
445
+ const __iconNode$h = [
297
446
  ["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
447
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
299
448
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
300
449
  ];
301
- const History = createLucideIcon("history", __iconNode$a);
450
+ const History = createLucideIcon("history", __iconNode$h);
302
451
  /**
303
452
  * @license lucide-react v0.552.0 - ISC
304
453
  *
305
454
  * This source code is licensed under the ISC license.
306
455
  * See the LICENSE file in the root directory of this source tree.
307
456
  */
308
- const __iconNode$9 = [
457
+ const __iconNode$g = [
458
+ [
459
+ "path",
460
+ {
461
+ d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",
462
+ key: "zw3jo"
463
+ }
464
+ ],
465
+ [
466
+ "path",
467
+ {
468
+ d: "M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",
469
+ key: "1wduqc"
470
+ }
471
+ ],
472
+ [
473
+ "path",
474
+ {
475
+ d: "M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",
476
+ key: "kqbvx6"
477
+ }
478
+ ]
479
+ ];
480
+ const Layers = createLucideIcon("layers", __iconNode$g);
481
+ /**
482
+ * @license lucide-react v0.552.0 - ISC
483
+ *
484
+ * This source code is licensed under the ISC license.
485
+ * See the LICENSE file in the root directory of this source tree.
486
+ */
487
+ const __iconNode$f = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
488
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$f);
489
+ /**
490
+ * @license lucide-react v0.552.0 - ISC
491
+ *
492
+ * This source code is licensed under the ISC license.
493
+ * See the LICENSE file in the root directory of this source tree.
494
+ */
495
+ const __iconNode$e = [
309
496
  ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
310
497
  ["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
311
498
  ];
312
- const Lock = createLucideIcon("lock", __iconNode$9);
499
+ const Lock = createLucideIcon("lock", __iconNode$e);
313
500
  /**
314
501
  * @license lucide-react v0.552.0 - ISC
315
502
  *
316
503
  * This source code is licensed under the ISC license.
317
504
  * See the LICENSE file in the root directory of this source tree.
318
505
  */
319
- const __iconNode$8 = [
506
+ const __iconNode$d = [
320
507
  ["path", { d: "m10 17 5-5-5-5", key: "1bsop3" }],
321
508
  ["path", { d: "M15 12H3", key: "6jk70r" }],
322
509
  ["path", { d: "M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4", key: "u53s6r" }]
323
510
  ];
324
- const LogIn = createLucideIcon("log-in", __iconNode$8);
511
+ const LogIn = createLucideIcon("log-in", __iconNode$d);
325
512
  /**
326
513
  * @license lucide-react v0.552.0 - ISC
327
514
  *
328
515
  * This source code is licensed under the ISC license.
329
516
  * See the LICENSE file in the root directory of this source tree.
330
517
  */
331
- const __iconNode$7 = [
518
+ const __iconNode$c = [
519
+ [
520
+ "path",
521
+ {
522
+ 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",
523
+ key: "18887p"
524
+ }
525
+ ]
526
+ ];
527
+ const MessageSquare = createLucideIcon("message-square", __iconNode$c);
528
+ /**
529
+ * @license lucide-react v0.552.0 - ISC
530
+ *
531
+ * This source code is licensed under the ISC license.
532
+ * See the LICENSE file in the root directory of this source tree.
533
+ */
534
+ const __iconNode$b = [
332
535
  ["rect", { x: "16", y: "16", width: "6", height: "6", rx: "1", key: "4q2zg0" }],
333
536
  ["rect", { x: "2", y: "16", width: "6", height: "6", rx: "1", key: "8cvhb9" }],
334
537
  ["rect", { x: "9", y: "2", width: "6", height: "6", rx: "1", key: "1egb70" }],
335
538
  ["path", { d: "M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3", key: "1jsf9p" }],
336
539
  ["path", { d: "M12 12V8", key: "2874zd" }]
337
540
  ];
338
- const Network = createLucideIcon("network", __iconNode$7);
541
+ const Network = createLucideIcon("network", __iconNode$b);
339
542
  /**
340
543
  * @license lucide-react v0.552.0 - ISC
341
544
  *
342
545
  * This source code is licensed under the ISC license.
343
546
  * See the LICENSE file in the root directory of this source tree.
344
547
  */
345
- const __iconNode$6 = [
548
+ const __iconNode$a = [
549
+ ["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
550
+ ["path", { d: "M21 3v5h-5", key: "1q7to0" }],
551
+ ["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
552
+ ["path", { d: "M8 16H3v5", key: "1cv678" }]
553
+ ];
554
+ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$a);
555
+ /**
556
+ * @license lucide-react v0.552.0 - ISC
557
+ *
558
+ * This source code is licensed under the ISC license.
559
+ * See the LICENSE file in the root directory of this source tree.
560
+ */
561
+ const __iconNode$9 = [
346
562
  ["path", { d: "m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "7g6ntu" }],
347
563
  ["path", { d: "m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "ijws7r" }],
348
564
  ["path", { d: "M7 21h10", key: "1b0cd5" }],
349
565
  ["path", { d: "M12 3v18", key: "108xh3" }],
350
566
  ["path", { d: "M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2", key: "3gwbw2" }]
351
567
  ];
352
- const Scale = createLucideIcon("scale", __iconNode$6);
568
+ const Scale = createLucideIcon("scale", __iconNode$9);
353
569
  /**
354
570
  * @license lucide-react v0.552.0 - ISC
355
571
  *
356
572
  * This source code is licensed under the ISC license.
357
573
  * See the LICENSE file in the root directory of this source tree.
358
574
  */
359
- const __iconNode$5 = [
575
+ const __iconNode$8 = [
360
576
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
361
577
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
362
578
  ];
363
- const Search = createLucideIcon("search", __iconNode$5);
579
+ const Search = createLucideIcon("search", __iconNode$8);
364
580
  /**
365
581
  * @license lucide-react v0.552.0 - ISC
366
582
  *
367
583
  * This source code is licensed under the ISC license.
368
584
  * See the LICENSE file in the root directory of this source tree.
369
585
  */
370
- const __iconNode$4 = [
586
+ const __iconNode$7 = [
371
587
  [
372
588
  "path",
373
589
  {
@@ -379,14 +595,14 @@ const __iconNode$4 = [
379
595
  ["path", { d: "M22 4h-4", key: "gwowj6" }],
380
596
  ["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
381
597
  ];
382
- const Sparkles = createLucideIcon("sparkles", __iconNode$4);
598
+ const Sparkles = createLucideIcon("sparkles", __iconNode$7);
383
599
  /**
384
600
  * @license lucide-react v0.552.0 - ISC
385
601
  *
386
602
  * This source code is licensed under the ISC license.
387
603
  * See the LICENSE file in the root directory of this source tree.
388
604
  */
389
- const __iconNode$3 = [
605
+ const __iconNode$6 = [
390
606
  [
391
607
  "path",
392
608
  {
@@ -395,43 +611,92 @@ const __iconNode$3 = [
395
611
  }
396
612
  ]
397
613
  ];
398
- const Star = createLucideIcon("star", __iconNode$3);
614
+ const Star = createLucideIcon("star", __iconNode$6);
399
615
  /**
400
616
  * @license lucide-react v0.552.0 - ISC
401
617
  *
402
618
  * This source code is licensed under the ISC license.
403
619
  * See the LICENSE file in the root directory of this source tree.
404
620
  */
405
- const __iconNode$2 = [
621
+ const __iconNode$5 = [
622
+ [
623
+ "path",
624
+ {
625
+ 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",
626
+ key: "vktsd0"
627
+ }
628
+ ],
629
+ ["circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor", key: "kqv944" }]
630
+ ];
631
+ const Tag = createLucideIcon("tag", __iconNode$5);
632
+ /**
633
+ * @license lucide-react v0.552.0 - ISC
634
+ *
635
+ * This source code is licensed under the ISC license.
636
+ * See the LICENSE file in the root directory of this source tree.
637
+ */
638
+ const __iconNode$4 = [
406
639
  ["path", { d: "M10 11v6", key: "nco0om" }],
407
640
  ["path", { d: "M14 11v6", key: "outv1u" }],
408
641
  ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
409
642
  ["path", { d: "M3 6h18", key: "d0wm0j" }],
410
643
  ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
411
644
  ];
412
- const Trash2 = createLucideIcon("trash-2", __iconNode$2);
645
+ const Trash2 = createLucideIcon("trash-2", __iconNode$4);
413
646
  /**
414
647
  * @license lucide-react v0.552.0 - ISC
415
648
  *
416
649
  * This source code is licensed under the ISC license.
417
650
  * See the LICENSE file in the root directory of this source tree.
418
651
  */
419
- const __iconNode$1 = [
652
+ const __iconNode$3 = [
420
653
  ["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
421
654
  ["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
422
655
  ];
423
- const User = createLucideIcon("user", __iconNode$1);
656
+ const User = createLucideIcon("user", __iconNode$3);
424
657
  /**
425
658
  * @license lucide-react v0.552.0 - ISC
426
659
  *
427
660
  * This source code is licensed under the ISC license.
428
661
  * See the LICENSE file in the root directory of this source tree.
429
662
  */
430
- const __iconNode = [
663
+ const __iconNode$2 = [
664
+ [
665
+ "path",
666
+ {
667
+ d: "M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",
668
+ key: "1ngwbx"
669
+ }
670
+ ]
671
+ ];
672
+ const Wrench = createLucideIcon("wrench", __iconNode$2);
673
+ /**
674
+ * @license lucide-react v0.552.0 - ISC
675
+ *
676
+ * This source code is licensed under the ISC license.
677
+ * See the LICENSE file in the root directory of this source tree.
678
+ */
679
+ const __iconNode$1 = [
431
680
  ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
432
681
  ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
433
682
  ];
434
- const X = createLucideIcon("x", __iconNode);
683
+ const X = createLucideIcon("x", __iconNode$1);
684
+ /**
685
+ * @license lucide-react v0.552.0 - ISC
686
+ *
687
+ * This source code is licensed under the ISC license.
688
+ * See the LICENSE file in the root directory of this source tree.
689
+ */
690
+ const __iconNode = [
691
+ [
692
+ "path",
693
+ {
694
+ d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",
695
+ key: "1xq2db"
696
+ }
697
+ ]
698
+ ];
699
+ const Zap = createLucideIcon("zap", __iconNode);
435
700
  function getLanguageColor(language) {
436
701
  const colors = {
437
702
  TypeScript: "#3178c6",
@@ -1395,131 +1660,1189 @@ const GitHubSearchPanelContent = ({ events }) => {
1395
1660
  ((_a = repo.owner) == null ? void 0 : _a.avatar_url) && /* @__PURE__ */ jsx(
1396
1661
  "img",
1397
1662
  {
1398
- src: repo.owner.avatar_url,
1399
- alt: repo.owner.login,
1400
- style: { width: 20, height: 20, borderRadius: 4 }
1663
+ src: repo.owner.avatar_url,
1664
+ alt: repo.owner.login,
1665
+ style: { width: 20, height: 20, borderRadius: 4 }
1666
+ }
1667
+ ),
1668
+ /* @__PURE__ */ jsx(
1669
+ "span",
1670
+ {
1671
+ style: {
1672
+ fontSize: `${theme.fontSizes[2]}px`,
1673
+ fontWeight: theme.fontWeights.semibold,
1674
+ color: theme.colors.primary
1675
+ },
1676
+ children: repo.full_name
1677
+ }
1678
+ ),
1679
+ repo.private && /* @__PURE__ */ jsx(
1680
+ "span",
1681
+ {
1682
+ style: {
1683
+ fontSize: `${theme.fontSizes[0]}px`,
1684
+ padding: "2px 6px",
1685
+ borderRadius: "4px",
1686
+ backgroundColor: theme.colors.backgroundTertiary,
1687
+ color: theme.colors.textSecondary
1688
+ },
1689
+ children: "Private"
1690
+ }
1691
+ )
1692
+ ] }),
1693
+ repo.description && /* @__PURE__ */ jsx(
1694
+ "p",
1695
+ {
1696
+ style: {
1697
+ margin: 0,
1698
+ fontSize: `${theme.fontSizes[1]}px`,
1699
+ color: theme.colors.textSecondary,
1700
+ overflow: "hidden",
1701
+ textOverflow: "ellipsis",
1702
+ display: "-webkit-box",
1703
+ WebkitLineClamp: 2,
1704
+ WebkitBoxOrient: "vertical"
1705
+ },
1706
+ children: repo.description
1707
+ }
1708
+ ),
1709
+ /* @__PURE__ */ jsxs(
1710
+ "div",
1711
+ {
1712
+ style: {
1713
+ display: "flex",
1714
+ alignItems: "center",
1715
+ gap: "16px",
1716
+ fontSize: `${theme.fontSizes[1]}px`,
1717
+ color: theme.colors.textSecondary
1718
+ },
1719
+ children: [
1720
+ repo.language && /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
1721
+ /* @__PURE__ */ jsx(
1722
+ "span",
1723
+ {
1724
+ style: {
1725
+ width: 10,
1726
+ height: 10,
1727
+ borderRadius: "50%",
1728
+ backgroundColor: theme.colors.info
1729
+ }
1730
+ }
1731
+ ),
1732
+ repo.language
1733
+ ] }),
1734
+ /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
1735
+ /* @__PURE__ */ jsx(Star, { size: 14 }),
1736
+ formatNumber(repo.stargazers_count || 0)
1737
+ ] }),
1738
+ /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
1739
+ /* @__PURE__ */ jsx(GitFork, { size: 14 }),
1740
+ formatNumber(repo.forks_count || 0)
1741
+ ] }),
1742
+ /* @__PURE__ */ jsx(
1743
+ "a",
1744
+ {
1745
+ href: repo.html_url,
1746
+ target: "_blank",
1747
+ rel: "noopener noreferrer",
1748
+ onClick: (e) => e.stopPropagation(),
1749
+ style: {
1750
+ marginLeft: "auto",
1751
+ color: theme.colors.textSecondary,
1752
+ display: "flex",
1753
+ alignItems: "center"
1754
+ },
1755
+ children: /* @__PURE__ */ jsx(ExternalLink, { size: 14 })
1756
+ }
1757
+ )
1758
+ ]
1759
+ }
1760
+ )
1761
+ ]
1762
+ },
1763
+ repo.id
1764
+ );
1765
+ })
1766
+ ]
1767
+ }
1768
+ ),
1769
+ /* @__PURE__ */ jsx("style", { children: `
1770
+ @keyframes spin {
1771
+ to { transform: rotate(360deg); }
1772
+ }
1773
+ ` })
1774
+ ]
1775
+ }
1776
+ );
1777
+ };
1778
+ const GitHubSearchPanel = (props) => {
1779
+ return /* @__PURE__ */ jsx(GitHubSearchPanelContent, { ...props });
1780
+ };
1781
+ const GitHubSearchPanelMetadata = {
1782
+ id: "github-search",
1783
+ name: "GitHub Search",
1784
+ description: "Search for repositories on GitHub",
1785
+ icon: "search",
1786
+ version: "0.1.0",
1787
+ slices: [],
1788
+ surfaces: ["panel"]
1789
+ };
1790
+ const formatDate = (dateString) => {
1791
+ const date = new Date(dateString);
1792
+ const now = /* @__PURE__ */ new Date();
1793
+ const diffMs = now.getTime() - date.getTime();
1794
+ const diffDays = Math.floor(diffMs / (1e3 * 60 * 60 * 24));
1795
+ if (diffDays === 0) return "Today";
1796
+ if (diffDays === 1) return "Yesterday";
1797
+ if (diffDays < 7) return `${diffDays} days ago`;
1798
+ if (diffDays < 30) return `${Math.floor(diffDays / 7)} weeks ago`;
1799
+ if (diffDays < 365) return `${Math.floor(diffDays / 30)} months ago`;
1800
+ return `${Math.floor(diffDays / 365)} years ago`;
1801
+ };
1802
+ const GitHubIssuesPanelContent = ({
1803
+ context,
1804
+ events
1805
+ }) => {
1806
+ var _a, _b, _c, _d, _e;
1807
+ const { theme } = useTheme();
1808
+ const issuesSlice = context.getSlice("github-issues");
1809
+ const isLoading = context.isSliceLoading("github-issues");
1810
+ const hasData = context.hasSlice("github-issues");
1811
+ const issues = ((_a = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _a.issues) ?? [];
1812
+ const owner = ((_b = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _b.owner) ?? "";
1813
+ const repo = ((_c = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _c.repo) ?? "";
1814
+ const isAuthenticated = ((_d = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _d.isAuthenticated) ?? false;
1815
+ const sliceError = (_e = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _e.error;
1816
+ const [selectedIssues, setSelectedIssues] = useState(/* @__PURE__ */ new Set());
1817
+ const [copiedPrompt, setCopiedPrompt] = useState(false);
1818
+ const [issueFilter, setIssueFilter] = useState("open");
1819
+ const [selectedIssue, setSelectedIssue] = useState(null);
1820
+ const [showIssueModal, setShowIssueModal] = useState(false);
1821
+ useEffect(() => {
1822
+ events.emit({
1823
+ type: "github-issues:request",
1824
+ source: "github-issues-panel",
1825
+ timestamp: Date.now(),
1826
+ payload: {}
1827
+ });
1828
+ }, [events]);
1829
+ const filteredIssues = useMemo(() => {
1830
+ if (issueFilter === "all") return issues;
1831
+ return issues.filter((issue) => issue.state === issueFilter);
1832
+ }, [issues, issueFilter]);
1833
+ const issueCounts = useMemo(() => ({
1834
+ all: issues.length,
1835
+ open: issues.filter((i) => i.state === "open").length,
1836
+ closed: issues.filter((i) => i.state === "closed").length
1837
+ }), [issues]);
1838
+ const handleSelectAll = () => {
1839
+ if (selectedIssues.size === filteredIssues.length) {
1840
+ setSelectedIssues(/* @__PURE__ */ new Set());
1841
+ } else {
1842
+ setSelectedIssues(new Set(filteredIssues.map((i) => i.number)));
1843
+ }
1844
+ };
1845
+ const handleToggleIssue = (issueNumber, event) => {
1846
+ const newSelected = new Set(selectedIssues);
1847
+ if (newSelected.has(issueNumber)) {
1848
+ newSelected.delete(issueNumber);
1849
+ } else {
1850
+ newSelected.add(issueNumber);
1851
+ }
1852
+ setSelectedIssues(newSelected);
1853
+ };
1854
+ const handleIssueClick = (issue, event) => {
1855
+ const target = event.target;
1856
+ if (target.tagName === "INPUT" || target.closest("a")) {
1857
+ return;
1858
+ }
1859
+ setSelectedIssue(issue);
1860
+ setShowIssueModal(true);
1861
+ events.emit({
1862
+ type: "issue:selected",
1863
+ source: "github-issues-panel",
1864
+ timestamp: Date.now(),
1865
+ payload: {
1866
+ issue,
1867
+ owner,
1868
+ repo
1869
+ }
1870
+ });
1871
+ };
1872
+ const handleRefresh = () => {
1873
+ events.emit({
1874
+ type: "github-issues:refresh",
1875
+ source: "github-issues-panel",
1876
+ timestamp: Date.now(),
1877
+ payload: {}
1878
+ });
1879
+ };
1880
+ const handleLogin = () => {
1881
+ events.emit({
1882
+ type: "github:login-requested",
1883
+ source: "github-issues-panel",
1884
+ timestamp: Date.now(),
1885
+ payload: {}
1886
+ });
1887
+ };
1888
+ const generatePrompt = () => {
1889
+ const selectedIssueData = issues.filter(
1890
+ (i) => selectedIssues.has(i.number)
1891
+ );
1892
+ if (selectedIssueData.length === 0) return "";
1893
+ let prompt = `I'm working on the GitHub repository ${owner}/${repo}. Here are the issues I need help with:
1894
+
1895
+ `;
1896
+ selectedIssueData.forEach((issue) => {
1897
+ prompt += `## Issue #${issue.number}: ${issue.title}
1898
+ `;
1899
+ prompt += `- Status: ${issue.state}
1900
+ `;
1901
+ prompt += `- URL: ${issue.html_url}
1902
+ `;
1903
+ if (issue.labels.length > 0) {
1904
+ prompt += `- Labels: ${issue.labels.map((l) => l.name).join(", ")}
1905
+ `;
1906
+ }
1907
+ if (issue.body) {
1908
+ prompt += `- Description:
1909
+ ${issue.body}
1910
+ `;
1911
+ }
1912
+ prompt += "\n";
1913
+ });
1914
+ prompt += `Please help me understand and address these issues.`;
1915
+ return prompt;
1916
+ };
1917
+ const handleCopyPrompt = async () => {
1918
+ const prompt = generatePrompt();
1919
+ if (!prompt) return;
1920
+ try {
1921
+ await navigator.clipboard.writeText(prompt);
1922
+ setCopiedPrompt(true);
1923
+ setTimeout(() => setCopiedPrompt(false), 2e3);
1924
+ } catch (err) {
1925
+ console.error("Failed to copy to clipboard:", err);
1926
+ }
1927
+ };
1928
+ const renderState = (icon, title, description, action) => /* @__PURE__ */ jsx(
1929
+ "div",
1930
+ {
1931
+ style: {
1932
+ height: "100%",
1933
+ display: "flex",
1934
+ alignItems: "center",
1935
+ justifyContent: "center",
1936
+ padding: "24px",
1937
+ backgroundColor: theme.colors.background
1938
+ },
1939
+ children: /* @__PURE__ */ jsxs(
1940
+ "div",
1941
+ {
1942
+ style: {
1943
+ display: "flex",
1944
+ flexDirection: "column",
1945
+ alignItems: "center",
1946
+ gap: "16px",
1947
+ maxWidth: "360px",
1948
+ textAlign: "center"
1949
+ },
1950
+ children: [
1951
+ /* @__PURE__ */ jsx("div", { children: icon }),
1952
+ /* @__PURE__ */ jsxs("div", { children: [
1953
+ /* @__PURE__ */ jsx(
1954
+ "h3",
1955
+ {
1956
+ style: {
1957
+ margin: 0,
1958
+ marginBottom: "8px",
1959
+ color: theme.colors.text,
1960
+ fontSize: `${theme.fontSizes[3]}px`,
1961
+ fontWeight: theme.fontWeights.semibold
1962
+ },
1963
+ children: title
1964
+ }
1965
+ ),
1966
+ description && /* @__PURE__ */ jsx(
1967
+ "p",
1968
+ {
1969
+ style: {
1970
+ margin: 0,
1971
+ color: theme.colors.textSecondary,
1972
+ lineHeight: 1.5,
1973
+ fontSize: `${theme.fontSizes[2]}px`
1974
+ },
1975
+ children: description
1976
+ }
1977
+ )
1978
+ ] }),
1979
+ action
1980
+ ]
1981
+ }
1982
+ )
1983
+ }
1984
+ );
1985
+ if (isLoading && !hasData) {
1986
+ return renderState(
1987
+ /* @__PURE__ */ jsx(
1988
+ LoaderCircle,
1989
+ {
1990
+ size: 32,
1991
+ style: { color: theme.colors.textSecondary },
1992
+ className: "animate-spin"
1993
+ }
1994
+ ),
1995
+ "Loading issues...",
1996
+ "Fetching issues from GitHub"
1997
+ );
1998
+ }
1999
+ if (!isAuthenticated && !hasData) {
2000
+ return renderState(
2001
+ /* @__PURE__ */ jsx(
2002
+ CircleAlert,
2003
+ {
2004
+ size: 32,
2005
+ style: { color: theme.colors.warning || "#f59e0b" }
2006
+ }
2007
+ ),
2008
+ "Sign in to GitHub",
2009
+ "Connect your GitHub account to view repository issues.",
2010
+ /* @__PURE__ */ jsxs(
2011
+ "button",
2012
+ {
2013
+ type: "button",
2014
+ onClick: handleLogin,
2015
+ style: {
2016
+ display: "inline-flex",
2017
+ alignItems: "center",
2018
+ gap: "8px",
2019
+ padding: "10px 18px",
2020
+ borderRadius: "6px",
2021
+ border: "none",
2022
+ backgroundColor: theme.colors.primary,
2023
+ color: theme.colors.background,
2024
+ fontWeight: theme.fontWeights.semibold,
2025
+ fontSize: `${theme.fontSizes[2]}px`,
2026
+ cursor: "pointer"
2027
+ },
2028
+ children: [
2029
+ /* @__PURE__ */ jsx(LogIn, { size: 16 }),
2030
+ "Sign in with GitHub"
2031
+ ]
2032
+ }
2033
+ )
2034
+ );
2035
+ }
2036
+ if (sliceError) {
2037
+ return renderState(
2038
+ /* @__PURE__ */ jsx(CircleAlert, { size: 32, style: { color: theme.colors.error } }),
2039
+ "Failed to Load Issues",
2040
+ sliceError,
2041
+ /* @__PURE__ */ jsxs(
2042
+ "button",
2043
+ {
2044
+ type: "button",
2045
+ onClick: handleRefresh,
2046
+ style: {
2047
+ display: "inline-flex",
2048
+ alignItems: "center",
2049
+ gap: "8px",
2050
+ padding: "10px 18px",
2051
+ borderRadius: "6px",
2052
+ border: `1px solid ${theme.colors.border}`,
2053
+ backgroundColor: theme.colors.background,
2054
+ color: theme.colors.text,
2055
+ fontWeight: theme.fontWeights.medium,
2056
+ fontSize: `${theme.fontSizes[2]}px`,
2057
+ cursor: "pointer"
2058
+ },
2059
+ children: [
2060
+ /* @__PURE__ */ jsx(RefreshCw, { size: 16 }),
2061
+ "Try Again"
2062
+ ]
2063
+ }
2064
+ )
2065
+ );
2066
+ }
2067
+ if (!owner || !repo) {
2068
+ return renderState(
2069
+ /* @__PURE__ */ jsx(Github, { size: 32, style: { color: theme.colors.textSecondary } }),
2070
+ "No Repository Selected",
2071
+ "Select a repository to view its issues."
2072
+ );
2073
+ }
2074
+ return /* @__PURE__ */ jsxs(
2075
+ "div",
2076
+ {
2077
+ style: {
2078
+ height: "100%",
2079
+ display: "flex",
2080
+ flexDirection: "column",
2081
+ backgroundColor: theme.colors.background,
2082
+ color: theme.colors.text,
2083
+ fontFamily: theme.fonts.body
2084
+ },
2085
+ children: [
2086
+ /* @__PURE__ */ jsxs(
2087
+ "div",
2088
+ {
2089
+ style: {
2090
+ padding: "12px 16px",
2091
+ borderBottom: `1px solid ${theme.colors.border}`,
2092
+ display: "flex",
2093
+ alignItems: "center",
2094
+ gap: "12px"
2095
+ },
2096
+ children: [
2097
+ /* @__PURE__ */ jsx(Github, { size: 20, color: theme.colors.primary }),
2098
+ /* @__PURE__ */ jsx(
2099
+ "h2",
2100
+ {
2101
+ style: {
2102
+ margin: 0,
2103
+ fontSize: `${theme.fontSizes[3]}px`,
2104
+ fontWeight: theme.fontWeights.semibold,
2105
+ flex: 1
2106
+ },
2107
+ children: "Issues"
2108
+ }
2109
+ ),
2110
+ /* @__PURE__ */ jsxs(
2111
+ "span",
2112
+ {
2113
+ style: {
2114
+ fontSize: `${theme.fontSizes[1]}px`,
2115
+ color: theme.colors.textSecondary
2116
+ },
2117
+ children: [
2118
+ owner,
2119
+ "/",
2120
+ repo
2121
+ ]
2122
+ }
2123
+ )
2124
+ ]
2125
+ }
2126
+ ),
2127
+ /* @__PURE__ */ jsxs(
2128
+ "div",
2129
+ {
2130
+ style: {
2131
+ display: "flex",
2132
+ alignItems: "center",
2133
+ justifyContent: "space-between",
2134
+ padding: "12px 16px",
2135
+ borderBottom: `1px solid ${theme.colors.border}`,
2136
+ backgroundColor: theme.colors.backgroundSecondary,
2137
+ flexWrap: "wrap",
2138
+ gap: "8px"
2139
+ },
2140
+ children: [
2141
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
2142
+ /* @__PURE__ */ jsx("div", { style: { display: "flex", gap: "4px" }, children: ["open", "closed", "all"].map((filter) => /* @__PURE__ */ jsxs(
2143
+ "button",
2144
+ {
2145
+ type: "button",
2146
+ onClick: () => setIssueFilter(filter),
2147
+ style: {
2148
+ padding: "6px 12px",
2149
+ borderRadius: "6px",
2150
+ border: issueFilter === filter ? "none" : `1px solid ${theme.colors.border}`,
2151
+ backgroundColor: issueFilter === filter ? theme.colors.primary : theme.colors.background,
2152
+ color: issueFilter === filter ? theme.colors.background : theme.colors.text,
2153
+ fontSize: `${theme.fontSizes[1]}px`,
2154
+ fontWeight: issueFilter === filter ? theme.fontWeights.semibold : theme.fontWeights.body,
2155
+ cursor: "pointer",
2156
+ textTransform: "capitalize"
2157
+ },
2158
+ children: [
2159
+ filter === "all" ? "All" : filter === "open" ? "Open" : "Closed",
2160
+ /* @__PURE__ */ jsxs("span", { style: { marginLeft: "6px", opacity: 0.8 }, children: [
2161
+ "(",
2162
+ issueCounts[filter],
2163
+ ")"
2164
+ ] })
2165
+ ]
2166
+ },
2167
+ filter
2168
+ )) }),
2169
+ filteredIssues.length > 0 && /* @__PURE__ */ jsx(
2170
+ "button",
2171
+ {
2172
+ type: "button",
2173
+ onClick: handleSelectAll,
2174
+ style: {
2175
+ padding: "6px 12px",
2176
+ borderRadius: "6px",
2177
+ border: `1px solid ${theme.colors.border}`,
2178
+ backgroundColor: theme.colors.background,
2179
+ color: theme.colors.textSecondary,
2180
+ fontSize: `${theme.fontSizes[1]}px`,
2181
+ cursor: "pointer"
2182
+ },
2183
+ children: selectedIssues.size === filteredIssues.length ? "Deselect All" : "Select All"
2184
+ }
2185
+ )
2186
+ ] }),
2187
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: "8px" }, children: [
2188
+ /* @__PURE__ */ jsx(
2189
+ "button",
2190
+ {
2191
+ type: "button",
2192
+ onClick: handleRefresh,
2193
+ disabled: isLoading,
2194
+ style: {
2195
+ display: "flex",
2196
+ alignItems: "center",
2197
+ gap: "6px",
2198
+ padding: "6px 12px",
2199
+ borderRadius: "6px",
2200
+ border: `1px solid ${theme.colors.border}`,
2201
+ backgroundColor: theme.colors.background,
2202
+ color: theme.colors.text,
2203
+ fontSize: `${theme.fontSizes[1]}px`,
2204
+ cursor: isLoading ? "not-allowed" : "pointer",
2205
+ opacity: isLoading ? 0.5 : 1
2206
+ },
2207
+ children: /* @__PURE__ */ jsx(RefreshCw, { size: 14, className: isLoading ? "animate-spin" : "" })
2208
+ }
2209
+ ),
2210
+ /* @__PURE__ */ jsxs(
2211
+ "button",
2212
+ {
2213
+ type: "button",
2214
+ onClick: handleCopyPrompt,
2215
+ disabled: selectedIssues.size === 0,
2216
+ style: {
2217
+ display: "flex",
2218
+ alignItems: "center",
2219
+ gap: "6px",
2220
+ padding: "6px 12px",
2221
+ borderRadius: "6px",
2222
+ border: "none",
2223
+ backgroundColor: selectedIssues.size > 0 ? theme.colors.primary : theme.colors.backgroundTertiary,
2224
+ color: selectedIssues.size > 0 ? theme.colors.background : theme.colors.textSecondary,
2225
+ fontSize: `${theme.fontSizes[1]}px`,
2226
+ fontWeight: theme.fontWeights.semibold,
2227
+ cursor: selectedIssues.size > 0 ? "pointer" : "not-allowed",
2228
+ opacity: selectedIssues.size > 0 ? 1 : 0.5
2229
+ },
2230
+ children: [
2231
+ copiedPrompt ? /* @__PURE__ */ jsx(CircleCheck, { size: 14 }) : /* @__PURE__ */ jsx(Copy, { size: 14 }),
2232
+ copiedPrompt ? "Copied!" : `Copy Prompt (${selectedIssues.size})`
2233
+ ]
2234
+ }
2235
+ )
2236
+ ] })
2237
+ ]
2238
+ }
2239
+ ),
2240
+ /* @__PURE__ */ jsx("div", { style: { flex: 1, overflow: "auto", padding: "8px" }, children: filteredIssues.length === 0 ? /* @__PURE__ */ jsxs(
2241
+ "div",
2242
+ {
2243
+ style: {
2244
+ display: "flex",
2245
+ flexDirection: "column",
2246
+ alignItems: "center",
2247
+ justifyContent: "center",
2248
+ height: "100%",
2249
+ gap: "16px",
2250
+ color: theme.colors.textSecondary
2251
+ },
2252
+ children: [
2253
+ /* @__PURE__ */ jsx(Github, { size: 48, color: theme.colors.border }),
2254
+ /* @__PURE__ */ jsxs("div", { style: { textAlign: "center" }, children: [
2255
+ /* @__PURE__ */ jsx(
2256
+ "h3",
2257
+ {
2258
+ style: {
2259
+ color: theme.colors.text,
2260
+ marginBottom: "8px",
2261
+ fontSize: `${theme.fontSizes[3]}px`
2262
+ },
2263
+ children: "No Issues Found"
2264
+ }
2265
+ ),
2266
+ /* @__PURE__ */ jsxs("p", { style: { margin: 0, fontSize: `${theme.fontSizes[2]}px` }, children: [
2267
+ "There are no ",
2268
+ issueFilter !== "all" ? issueFilter : "",
2269
+ " issues in this repository."
2270
+ ] })
2271
+ ] })
2272
+ ]
2273
+ }
2274
+ ) : /* @__PURE__ */ jsx(
2275
+ "div",
2276
+ {
2277
+ style: { display: "flex", flexDirection: "column", gap: "8px" },
2278
+ children: filteredIssues.map((issue) => /* @__PURE__ */ jsx(
2279
+ "button",
2280
+ {
2281
+ type: "button",
2282
+ onClick: (e) => handleIssueClick(issue, e),
2283
+ style: {
2284
+ width: "100%",
2285
+ padding: "12px",
2286
+ borderRadius: "6px",
2287
+ border: `1px solid ${selectedIssues.has(issue.number) ? theme.colors.primary : theme.colors.border}`,
2288
+ backgroundColor: selectedIssues.has(issue.number) ? `${theme.colors.primary}10` : theme.colors.surface,
2289
+ cursor: "pointer",
2290
+ textAlign: "left"
2291
+ },
2292
+ children: /* @__PURE__ */ jsxs(
2293
+ "div",
2294
+ {
2295
+ style: {
2296
+ display: "flex",
2297
+ alignItems: "flex-start",
2298
+ gap: "12px"
2299
+ },
2300
+ children: [
2301
+ /* @__PURE__ */ jsx(
2302
+ "input",
2303
+ {
2304
+ type: "checkbox",
2305
+ checked: selectedIssues.has(issue.number),
2306
+ onChange: () => handleToggleIssue(issue.number),
2307
+ onClick: (e) => e.stopPropagation(),
2308
+ style: { marginTop: "2px", cursor: "pointer" }
2309
+ }
2310
+ ),
2311
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
2312
+ /* @__PURE__ */ jsxs(
2313
+ "div",
2314
+ {
2315
+ style: {
2316
+ display: "flex",
2317
+ alignItems: "center",
2318
+ gap: "8px",
2319
+ marginBottom: "6px",
2320
+ flexWrap: "wrap"
2321
+ },
2322
+ children: [
2323
+ /* @__PURE__ */ jsx(
2324
+ "span",
2325
+ {
2326
+ style: {
2327
+ display: "inline-flex",
2328
+ alignItems: "center",
2329
+ padding: "2px 8px",
2330
+ borderRadius: "12px",
2331
+ backgroundColor: issue.state === "open" ? "#22c55e22" : "#6b728022",
2332
+ color: issue.state === "open" ? "#22c55e" : "#6b7280",
2333
+ fontSize: `${theme.fontSizes[0]}px`,
2334
+ fontWeight: theme.fontWeights.semibold,
2335
+ textTransform: "uppercase"
2336
+ },
2337
+ children: issue.state
2338
+ }
2339
+ ),
2340
+ /* @__PURE__ */ jsxs(
2341
+ "span",
2342
+ {
2343
+ style: {
2344
+ color: theme.colors.textSecondary,
2345
+ fontSize: `${theme.fontSizes[1]}px`
2346
+ },
2347
+ children: [
2348
+ "#",
2349
+ issue.number
2350
+ ]
2351
+ }
2352
+ ),
2353
+ /* @__PURE__ */ jsx(
2354
+ "a",
2355
+ {
2356
+ href: issue.html_url,
2357
+ target: "_blank",
2358
+ rel: "noopener noreferrer",
2359
+ onClick: (e) => e.stopPropagation(),
2360
+ style: {
2361
+ color: theme.colors.primary,
2362
+ textDecoration: "none",
2363
+ display: "inline-flex",
2364
+ alignItems: "center"
2365
+ },
2366
+ children: /* @__PURE__ */ jsx(ExternalLink, { size: 12 })
2367
+ }
2368
+ )
2369
+ ]
2370
+ }
2371
+ ),
2372
+ /* @__PURE__ */ jsx(
2373
+ "h4",
2374
+ {
2375
+ style: {
2376
+ margin: 0,
2377
+ marginBottom: "6px",
2378
+ color: theme.colors.text,
2379
+ fontSize: `${theme.fontSizes[2]}px`,
2380
+ fontWeight: theme.fontWeights.semibold,
2381
+ overflow: "hidden",
2382
+ textOverflow: "ellipsis",
2383
+ whiteSpace: "nowrap"
2384
+ },
2385
+ children: issue.title
2386
+ }
2387
+ ),
2388
+ issue.labels.length > 0 && /* @__PURE__ */ jsxs(
2389
+ "div",
2390
+ {
2391
+ style: {
2392
+ display: "flex",
2393
+ flexWrap: "wrap",
2394
+ gap: "4px",
2395
+ marginBottom: "6px"
2396
+ },
2397
+ children: [
2398
+ issue.labels.slice(0, 3).map((label) => /* @__PURE__ */ jsxs(
2399
+ "span",
2400
+ {
2401
+ style: {
2402
+ display: "inline-flex",
2403
+ alignItems: "center",
2404
+ gap: "4px",
2405
+ padding: "2px 6px",
2406
+ borderRadius: "12px",
2407
+ backgroundColor: `#${label.color}22`,
2408
+ color: `#${label.color}`,
2409
+ fontSize: `${theme.fontSizes[0]}px`,
2410
+ fontWeight: theme.fontWeights.medium
2411
+ },
2412
+ children: [
2413
+ /* @__PURE__ */ jsx(Tag, { size: 10 }),
2414
+ label.name
2415
+ ]
2416
+ },
2417
+ label.id
2418
+ )),
2419
+ issue.labels.length > 3 && /* @__PURE__ */ jsxs(
2420
+ "span",
2421
+ {
2422
+ style: {
2423
+ fontSize: `${theme.fontSizes[0]}px`,
2424
+ color: theme.colors.textSecondary
2425
+ },
2426
+ children: [
2427
+ "+",
2428
+ issue.labels.length - 3
2429
+ ]
2430
+ }
2431
+ )
2432
+ ]
2433
+ }
2434
+ ),
2435
+ /* @__PURE__ */ jsxs(
2436
+ "div",
2437
+ {
2438
+ style: {
2439
+ display: "flex",
2440
+ alignItems: "center",
2441
+ gap: "12px",
2442
+ fontSize: `${theme.fontSizes[0]}px`,
2443
+ color: theme.colors.textSecondary,
2444
+ flexWrap: "wrap"
2445
+ },
2446
+ children: [
2447
+ /* @__PURE__ */ jsxs(
2448
+ "span",
2449
+ {
2450
+ style: {
2451
+ display: "flex",
2452
+ alignItems: "center",
2453
+ gap: "4px"
2454
+ },
2455
+ children: [
2456
+ /* @__PURE__ */ jsx(
2457
+ "img",
2458
+ {
2459
+ src: issue.user.avatar_url,
2460
+ alt: issue.user.login,
2461
+ style: {
2462
+ width: "14px",
2463
+ height: "14px",
2464
+ borderRadius: "50%"
2465
+ }
2466
+ }
2467
+ ),
2468
+ issue.user.login
2469
+ ]
2470
+ }
2471
+ ),
2472
+ /* @__PURE__ */ jsxs(
2473
+ "span",
2474
+ {
2475
+ style: {
2476
+ display: "flex",
2477
+ alignItems: "center",
2478
+ gap: "4px"
2479
+ },
2480
+ children: [
2481
+ /* @__PURE__ */ jsx(Calendar, { size: 12 }),
2482
+ formatDate(issue.created_at)
2483
+ ]
2484
+ }
2485
+ ),
2486
+ issue.comments > 0 && /* @__PURE__ */ jsxs(
2487
+ "span",
2488
+ {
2489
+ style: {
2490
+ display: "flex",
2491
+ alignItems: "center",
2492
+ gap: "4px"
2493
+ },
2494
+ children: [
2495
+ /* @__PURE__ */ jsx(MessageSquare, { size: 12 }),
2496
+ issue.comments
2497
+ ]
2498
+ }
2499
+ )
2500
+ ]
2501
+ }
2502
+ )
2503
+ ] })
2504
+ ]
2505
+ }
2506
+ )
2507
+ },
2508
+ issue.id
2509
+ ))
2510
+ }
2511
+ ) }),
2512
+ showIssueModal && selectedIssue && /* @__PURE__ */ jsx(
2513
+ "div",
2514
+ {
2515
+ style: {
2516
+ position: "fixed",
2517
+ inset: 0,
2518
+ backgroundColor: "rgba(0, 0, 0, 0.5)",
2519
+ display: "flex",
2520
+ alignItems: "center",
2521
+ justifyContent: "center",
2522
+ zIndex: 1e3
2523
+ },
2524
+ onClick: () => {
2525
+ setShowIssueModal(false);
2526
+ setSelectedIssue(null);
2527
+ },
2528
+ children: /* @__PURE__ */ jsxs(
2529
+ "div",
2530
+ {
2531
+ style: {
2532
+ backgroundColor: theme.colors.background,
2533
+ borderRadius: "12px",
2534
+ width: "90%",
2535
+ maxWidth: "700px",
2536
+ maxHeight: "80vh",
2537
+ display: "flex",
2538
+ flexDirection: "column",
2539
+ boxShadow: "0 20px 25px -5px rgba(0, 0, 0, 0.1)",
2540
+ border: `1px solid ${theme.colors.border}`
2541
+ },
2542
+ onClick: (e) => e.stopPropagation(),
2543
+ children: [
2544
+ /* @__PURE__ */ jsxs(
2545
+ "div",
2546
+ {
2547
+ style: {
2548
+ display: "flex",
2549
+ alignItems: "flex-start",
2550
+ justifyContent: "space-between",
2551
+ padding: "20px",
2552
+ borderBottom: `1px solid ${theme.colors.border}`
2553
+ },
2554
+ children: [
2555
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
2556
+ /* @__PURE__ */ jsxs(
2557
+ "div",
2558
+ {
2559
+ style: {
2560
+ display: "flex",
2561
+ alignItems: "center",
2562
+ gap: "12px",
2563
+ marginBottom: "8px"
2564
+ },
2565
+ children: [
2566
+ /* @__PURE__ */ jsx(
2567
+ "span",
2568
+ {
2569
+ style: {
2570
+ display: "inline-flex",
2571
+ alignItems: "center",
2572
+ padding: "4px 10px",
2573
+ borderRadius: "12px",
2574
+ backgroundColor: selectedIssue.state === "open" ? "#22c55e22" : "#6b728022",
2575
+ color: selectedIssue.state === "open" ? "#22c55e" : "#6b7280",
2576
+ fontSize: `${theme.fontSizes[1]}px`,
2577
+ fontWeight: theme.fontWeights.semibold,
2578
+ textTransform: "uppercase"
2579
+ },
2580
+ children: selectedIssue.state
2581
+ }
2582
+ ),
2583
+ /* @__PURE__ */ jsxs(
2584
+ "span",
2585
+ {
2586
+ style: {
2587
+ color: theme.colors.textSecondary,
2588
+ fontSize: `${theme.fontSizes[2]}px`
2589
+ },
2590
+ children: [
2591
+ "#",
2592
+ selectedIssue.number
2593
+ ]
2594
+ }
2595
+ )
2596
+ ]
2597
+ }
2598
+ ),
2599
+ /* @__PURE__ */ jsx(
2600
+ "h2",
2601
+ {
2602
+ style: {
2603
+ color: theme.colors.text,
2604
+ fontSize: `${theme.fontSizes[4]}px`,
2605
+ fontWeight: theme.fontWeights.semibold,
2606
+ margin: 0
2607
+ },
2608
+ children: selectedIssue.title
2609
+ }
2610
+ )
2611
+ ] }),
2612
+ /* @__PURE__ */ jsx(
2613
+ "button",
2614
+ {
2615
+ type: "button",
2616
+ onClick: () => {
2617
+ setShowIssueModal(false);
2618
+ setSelectedIssue(null);
2619
+ },
2620
+ style: {
2621
+ background: "none",
2622
+ border: "none",
2623
+ color: theme.colors.textSecondary,
2624
+ cursor: "pointer",
2625
+ padding: "8px"
2626
+ },
2627
+ children: /* @__PURE__ */ jsx(X, { size: 20 })
1401
2628
  }
1402
- ),
1403
- /* @__PURE__ */ jsx(
1404
- "span",
2629
+ )
2630
+ ]
2631
+ }
2632
+ ),
2633
+ /* @__PURE__ */ jsxs(
2634
+ "div",
2635
+ {
2636
+ style: {
2637
+ flex: 1,
2638
+ overflow: "auto",
2639
+ padding: "20px"
2640
+ },
2641
+ children: [
2642
+ /* @__PURE__ */ jsxs(
2643
+ "div",
1405
2644
  {
1406
2645
  style: {
2646
+ display: "flex",
2647
+ alignItems: "center",
2648
+ gap: "20px",
2649
+ marginBottom: "20px",
1407
2650
  fontSize: `${theme.fontSizes[2]}px`,
1408
- fontWeight: theme.fontWeights.semibold,
1409
- color: theme.colors.primary
2651
+ color: theme.colors.textSecondary,
2652
+ flexWrap: "wrap"
1410
2653
  },
1411
- children: repo.full_name
2654
+ children: [
2655
+ /* @__PURE__ */ jsxs(
2656
+ "span",
2657
+ {
2658
+ style: { display: "flex", alignItems: "center", gap: "6px" },
2659
+ children: [
2660
+ /* @__PURE__ */ jsx(
2661
+ "img",
2662
+ {
2663
+ src: selectedIssue.user.avatar_url,
2664
+ alt: selectedIssue.user.login,
2665
+ style: {
2666
+ width: "20px",
2667
+ height: "20px",
2668
+ borderRadius: "50%"
2669
+ }
2670
+ }
2671
+ ),
2672
+ /* @__PURE__ */ jsx("strong", { style: { color: theme.colors.text }, children: selectedIssue.user.login }),
2673
+ " ",
2674
+ "opened"
2675
+ ]
2676
+ }
2677
+ ),
2678
+ /* @__PURE__ */ jsxs(
2679
+ "span",
2680
+ {
2681
+ style: { display: "flex", alignItems: "center", gap: "4px" },
2682
+ children: [
2683
+ /* @__PURE__ */ jsx(Calendar, { size: 14 }),
2684
+ formatDate(selectedIssue.created_at)
2685
+ ]
2686
+ }
2687
+ ),
2688
+ selectedIssue.comments > 0 && /* @__PURE__ */ jsxs(
2689
+ "span",
2690
+ {
2691
+ style: {
2692
+ display: "flex",
2693
+ alignItems: "center",
2694
+ gap: "4px"
2695
+ },
2696
+ children: [
2697
+ /* @__PURE__ */ jsx(MessageSquare, { size: 14 }),
2698
+ selectedIssue.comments,
2699
+ " ",
2700
+ selectedIssue.comments === 1 ? "comment" : "comments"
2701
+ ]
2702
+ }
2703
+ )
2704
+ ]
1412
2705
  }
1413
2706
  ),
1414
- repo.private && /* @__PURE__ */ jsx(
1415
- "span",
2707
+ selectedIssue.labels.length > 0 && /* @__PURE__ */ jsx(
2708
+ "div",
1416
2709
  {
1417
2710
  style: {
1418
- fontSize: `${theme.fontSizes[0]}px`,
1419
- padding: "2px 6px",
1420
- borderRadius: "4px",
1421
- backgroundColor: theme.colors.backgroundTertiary,
1422
- color: theme.colors.textSecondary
2711
+ display: "flex",
2712
+ flexWrap: "wrap",
2713
+ gap: "8px",
2714
+ marginBottom: "20px"
1423
2715
  },
1424
- children: "Private"
2716
+ children: selectedIssue.labels.map((label) => /* @__PURE__ */ jsxs(
2717
+ "span",
2718
+ {
2719
+ style: {
2720
+ display: "inline-flex",
2721
+ alignItems: "center",
2722
+ gap: "6px",
2723
+ padding: "4px 12px",
2724
+ borderRadius: "16px",
2725
+ backgroundColor: `#${label.color}22`,
2726
+ color: `#${label.color}`,
2727
+ fontSize: `${theme.fontSizes[1]}px`,
2728
+ fontWeight: theme.fontWeights.medium
2729
+ },
2730
+ children: [
2731
+ /* @__PURE__ */ jsx(Tag, { size: 12 }),
2732
+ label.name
2733
+ ]
2734
+ },
2735
+ label.id
2736
+ ))
2737
+ }
2738
+ ),
2739
+ selectedIssue.body && /* @__PURE__ */ jsxs(
2740
+ "div",
2741
+ {
2742
+ style: {
2743
+ backgroundColor: theme.colors.backgroundSecondary,
2744
+ borderRadius: "8px",
2745
+ padding: "16px",
2746
+ border: `1px solid ${theme.colors.border}`
2747
+ },
2748
+ children: [
2749
+ /* @__PURE__ */ jsx(
2750
+ "h3",
2751
+ {
2752
+ style: {
2753
+ color: theme.colors.text,
2754
+ fontSize: `${theme.fontSizes[2]}px`,
2755
+ fontWeight: theme.fontWeights.semibold,
2756
+ marginTop: 0,
2757
+ marginBottom: "12px"
2758
+ },
2759
+ children: "Description"
2760
+ }
2761
+ ),
2762
+ /* @__PURE__ */ jsx(
2763
+ "div",
2764
+ {
2765
+ style: {
2766
+ color: theme.colors.text,
2767
+ fontSize: `${theme.fontSizes[2]}px`,
2768
+ lineHeight: 1.6,
2769
+ whiteSpace: "pre-wrap",
2770
+ wordBreak: "break-word"
2771
+ },
2772
+ children: selectedIssue.body
2773
+ }
2774
+ )
2775
+ ]
1425
2776
  }
1426
2777
  )
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",
2778
+ ]
2779
+ }
2780
+ ),
2781
+ /* @__PURE__ */ jsx(
2782
+ "div",
2783
+ {
2784
+ style: {
2785
+ display: "flex",
2786
+ alignItems: "center",
2787
+ justifyContent: "flex-end",
2788
+ padding: "16px 20px",
2789
+ borderTop: `1px solid ${theme.colors.border}`,
2790
+ gap: "12px"
2791
+ },
2792
+ children: /* @__PURE__ */ jsxs(
2793
+ "a",
1446
2794
  {
2795
+ href: selectedIssue.html_url,
2796
+ target: "_blank",
2797
+ rel: "noopener noreferrer",
1447
2798
  style: {
1448
2799
  display: "flex",
1449
2800
  alignItems: "center",
1450
- gap: "16px",
1451
- fontSize: `${theme.fontSizes[1]}px`,
1452
- color: theme.colors.textSecondary
2801
+ gap: "6px",
2802
+ padding: "8px 16px",
2803
+ borderRadius: "6px",
2804
+ border: "none",
2805
+ backgroundColor: theme.colors.primary,
2806
+ color: theme.colors.background,
2807
+ fontSize: `${theme.fontSizes[2]}px`,
2808
+ fontWeight: theme.fontWeights.medium,
2809
+ textDecoration: "none"
1453
2810
  },
1454
2811
  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
- )
2812
+ /* @__PURE__ */ jsx(ExternalLink, { size: 14 }),
2813
+ "View on GitHub"
1493
2814
  ]
1494
2815
  }
1495
2816
  )
1496
- ]
1497
- },
1498
- repo.id
1499
- );
1500
- })
1501
- ]
2817
+ }
2818
+ )
2819
+ ]
2820
+ }
2821
+ )
1502
2822
  }
1503
2823
  ),
1504
2824
  /* @__PURE__ */ jsx("style", { children: `
1505
2825
  @keyframes spin {
1506
2826
  to { transform: rotate(360deg); }
1507
2827
  }
2828
+ .animate-spin {
2829
+ animation: spin 1s linear infinite;
2830
+ }
1508
2831
  ` })
1509
2832
  ]
1510
2833
  }
1511
2834
  );
1512
2835
  };
1513
- const GitHubSearchPanel = (props) => {
1514
- return /* @__PURE__ */ jsx(GitHubSearchPanelContent, { ...props });
2836
+ const GitHubIssuesPanel = (props) => {
2837
+ return /* @__PURE__ */ jsx(GitHubIssuesPanelContent, { ...props });
1515
2838
  };
1516
- const GitHubSearchPanelMetadata = {
1517
- id: "github-search",
1518
- name: "GitHub Search",
1519
- description: "Search for repositories on GitHub",
1520
- icon: "search",
2839
+ const GitHubIssuesPanelMetadata = {
2840
+ id: "github-issues",
2841
+ name: "GitHub Issues",
2842
+ description: "View and manage GitHub repository issues",
2843
+ icon: "circle-dot",
1521
2844
  version: "0.1.0",
1522
- slices: [],
2845
+ slices: ["github-issues"],
1523
2846
  surfaces: ["panel"]
1524
2847
  };
1525
2848
  const OwnerRepositoriesPanelContent = ({
@@ -2773,6 +4096,20 @@ const RecentRepositoriesPanelMetadata = {
2773
4096
  slices: [],
2774
4097
  surfaces: ["panel"]
2775
4098
  };
4099
+ const iconMap = {
4100
+ Sparkles,
4101
+ Wrench,
4102
+ Atom,
4103
+ Cog,
4104
+ Cpu,
4105
+ Zap,
4106
+ Code,
4107
+ Layers,
4108
+ Box,
4109
+ FolderOpen,
4110
+ BookOpen,
4111
+ Network
4112
+ };
2776
4113
  function parseGitHubInput(input) {
2777
4114
  const trimmed = input.trim();
2778
4115
  const urlMatch = trimmed.match(/github\.com\/([^/]+)\/([^/]+)/);
@@ -2881,23 +4218,24 @@ const defaultHighlightedProjects = [
2881
4218
  { owner: "facebook", repo: "react" },
2882
4219
  { owner: "vercel", repo: "next.js" }
2883
4220
  ];
2884
- const defaultFeaturedOrganizations = [];
2885
- const OrganizationCard = ({ org, theme, onClick }) => {
4221
+ const CollectionCard = ({ collection, theme, onClick }) => {
4222
+ const IconComponent = collection.icon && iconMap[collection.icon] || FolderOpen;
2886
4223
  return /* @__PURE__ */ jsxs(
2887
4224
  "button",
2888
4225
  {
2889
4226
  onClick,
2890
4227
  style: {
2891
- padding: "16px 20px",
4228
+ padding: "20px 24px",
2892
4229
  borderRadius: "12px",
2893
4230
  backgroundColor: theme.colors.surface,
2894
4231
  border: `1px solid ${theme.colors.border}`,
2895
4232
  display: "flex",
2896
4233
  alignItems: "center",
2897
- gap: "12px",
4234
+ gap: "16px",
2898
4235
  cursor: "pointer",
2899
4236
  transition: "all 0.2s ease",
2900
- minWidth: "240px",
4237
+ minWidth: "280px",
4238
+ maxWidth: "320px",
2901
4239
  textAlign: "left"
2902
4240
  },
2903
4241
  onMouseEnter: (e) => {
@@ -2910,16 +4248,20 @@ const OrganizationCard = ({ org, theme, onClick }) => {
2910
4248
  },
2911
4249
  children: [
2912
4250
  /* @__PURE__ */ jsx(
2913
- "img",
4251
+ "div",
2914
4252
  {
2915
- src: `https://github.com/${org.login}.png?size=64`,
2916
- alt: org.login,
2917
4253
  style: {
2918
- width: 40,
2919
- height: 40,
2920
- borderRadius: "8px",
4254
+ width: 48,
4255
+ height: 48,
4256
+ borderRadius: "10px",
4257
+ backgroundColor: `${theme.colors.primary}15`,
4258
+ display: "flex",
4259
+ alignItems: "center",
4260
+ justifyContent: "center",
4261
+ color: theme.colors.primary,
2921
4262
  flexShrink: 0
2922
- }
4263
+ },
4264
+ children: /* @__PURE__ */ jsx(IconComponent, { size: 24 })
2923
4265
  }
2924
4266
  ),
2925
4267
  /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
@@ -2930,12 +4272,12 @@ const OrganizationCard = ({ org, theme, onClick }) => {
2930
4272
  fontSize: `${theme.fontSizes[2]}px`,
2931
4273
  fontWeight: theme.fontWeights.semibold,
2932
4274
  color: theme.colors.text,
2933
- marginBottom: org.description ? "2px" : 0
4275
+ marginBottom: "4px"
2934
4276
  },
2935
- children: org.login
4277
+ children: collection.name
2936
4278
  }
2937
4279
  ),
2938
- org.description && /* @__PURE__ */ jsx(
4280
+ /* @__PURE__ */ jsx(
2939
4281
  "div",
2940
4282
  {
2941
4283
  style: {
@@ -2945,10 +4287,25 @@ const OrganizationCard = ({ org, theme, onClick }) => {
2945
4287
  textOverflow: "ellipsis",
2946
4288
  whiteSpace: "nowrap"
2947
4289
  },
2948
- children: org.description
4290
+ children: collection.description
4291
+ }
4292
+ ),
4293
+ collection.repositoryCount !== void 0 && /* @__PURE__ */ jsxs(
4294
+ "div",
4295
+ {
4296
+ style: {
4297
+ fontSize: `${theme.fontSizes[0]}px`,
4298
+ color: theme.colors.textSecondary,
4299
+ marginTop: "4px"
4300
+ },
4301
+ children: [
4302
+ collection.repositoryCount,
4303
+ " repositories"
4304
+ ]
2949
4305
  }
2950
4306
  )
2951
- ] })
4307
+ ] }),
4308
+ /* @__PURE__ */ jsx(ChevronRight, { size: 20, style: { color: theme.colors.textSecondary, flexShrink: 0 } })
2952
4309
  ]
2953
4310
  }
2954
4311
  );
@@ -2956,8 +4313,8 @@ const OrganizationCard = ({ org, theme, onClick }) => {
2956
4313
  const WelcomePanel = ({
2957
4314
  onNavigate,
2958
4315
  highlightedProjects = defaultHighlightedProjects,
2959
- featuredOrganizations = defaultFeaturedOrganizations,
2960
- onOrganizationClick
4316
+ curatedCollections = [],
4317
+ onCollectionClick
2961
4318
  }) => {
2962
4319
  const { theme } = useTheme();
2963
4320
  const [repoInput, setRepoInput] = useState("");
@@ -2983,13 +4340,11 @@ const WelcomePanel = ({
2983
4340
  window.location.href = `/${project.owner}/${project.repo}`;
2984
4341
  }
2985
4342
  }, [onNavigate]);
2986
- const handleOrganizationClick = useCallback((org) => {
2987
- if (onOrganizationClick) {
2988
- onOrganizationClick(org.login);
2989
- } else {
2990
- window.open(`https://github.com/${org.login}`, "_blank");
4343
+ const handleCollectionClick = useCallback((collection) => {
4344
+ if (onCollectionClick) {
4345
+ onCollectionClick(collection.id);
2991
4346
  }
2992
- }, [onOrganizationClick]);
4347
+ }, [onCollectionClick]);
2993
4348
  return /* @__PURE__ */ jsxs(
2994
4349
  "div",
2995
4350
  {
@@ -3003,7 +4358,7 @@ const WelcomePanel = ({
3003
4358
  overflowY: "auto"
3004
4359
  },
3005
4360
  children: [
3006
- featuredOrganizations.length > 0 && /* @__PURE__ */ jsxs(
4361
+ curatedCollections.length > 0 && /* @__PURE__ */ jsxs(
3007
4362
  "div",
3008
4363
  {
3009
4364
  style: {
@@ -3011,7 +4366,7 @@ const WelcomePanel = ({
3011
4366
  display: "flex",
3012
4367
  flexDirection: "column",
3013
4368
  alignItems: "center",
3014
- gap: "16px",
4369
+ gap: "24px",
3015
4370
  borderBottom: `1px solid ${theme.colors.border}`
3016
4371
  },
3017
4372
  children: [
@@ -3025,7 +4380,7 @@ const WelcomePanel = ({
3025
4380
  color: theme.colors.textSecondary,
3026
4381
  textAlign: "center"
3027
4382
  },
3028
- children: "Explore software like never before"
4383
+ children: "Explore Curated Collections"
3029
4384
  }
3030
4385
  ),
3031
4386
  /* @__PURE__ */ jsx(
@@ -3035,16 +4390,17 @@ const WelcomePanel = ({
3035
4390
  display: "flex",
3036
4391
  gap: "16px",
3037
4392
  flexWrap: "wrap",
3038
- justifyContent: "center"
4393
+ justifyContent: "center",
4394
+ maxWidth: "1200px"
3039
4395
  },
3040
- children: featuredOrganizations.map((org) => /* @__PURE__ */ jsx(
3041
- OrganizationCard,
4396
+ children: curatedCollections.map((collection) => /* @__PURE__ */ jsx(
4397
+ CollectionCard,
3042
4398
  {
3043
- org,
4399
+ collection,
3044
4400
  theme,
3045
- onClick: () => handleOrganizationClick(org)
4401
+ onClick: () => handleCollectionClick(collection)
3046
4402
  },
3047
- org.login
4403
+ collection.id
3048
4404
  ))
3049
4405
  }
3050
4406
  )
@@ -3377,13 +4733,55 @@ const requestGitHubLoginTool = {
3377
4733
  event_type: "github:login-requested"
3378
4734
  }
3379
4735
  };
4736
+ const listIssuesTool = {
4737
+ name: "list_issues",
4738
+ description: "Get a list of GitHub issues for the current repository.",
4739
+ inputs: {
4740
+ type: "object",
4741
+ properties: {},
4742
+ required: []
4743
+ },
4744
+ outputs: {
4745
+ type: "object",
4746
+ properties: {
4747
+ success: { type: "boolean" }
4748
+ }
4749
+ },
4750
+ tags: ["github", "issues", "list", "browse"],
4751
+ tool_call_template: {
4752
+ call_template_type: "panel_event",
4753
+ event_type: "github-issues:request"
4754
+ }
4755
+ };
4756
+ const refreshIssuesTool = {
4757
+ name: "refresh_issues",
4758
+ description: "Refresh the list of GitHub issues for the current repository.",
4759
+ inputs: {
4760
+ type: "object",
4761
+ properties: {},
4762
+ required: []
4763
+ },
4764
+ outputs: {
4765
+ type: "object",
4766
+ properties: {
4767
+ success: { type: "boolean" }
4768
+ }
4769
+ },
4770
+ tags: ["github", "issues", "refresh", "update"],
4771
+ tool_call_template: {
4772
+ call_template_type: "panel_event",
4773
+ event_type: "github-issues:refresh"
4774
+ }
4775
+ };
3380
4776
  const githubTools = [
3381
4777
  listRepositoriesTool,
3382
4778
  selectRepositoryTool,
3383
4779
  previewRepositoryTool,
3384
4780
  searchRepositoriesTool,
3385
4781
  openRepositorySwitcherTool,
3386
- requestGitHubLoginTool
4782
+ requestGitHubLoginTool,
4783
+ listIssuesTool,
4784
+ refreshIssuesTool
3387
4785
  ];
3388
4786
  const githubToolsMetadata = {
3389
4787
  id: "github-panels",
@@ -3420,6 +4818,20 @@ const panels = [
3420
4818
  console.log("GitHub Search Panel unmounting");
3421
4819
  }
3422
4820
  },
4821
+ {
4822
+ metadata: GitHubIssuesPanelMetadata,
4823
+ component: GitHubIssuesPanel,
4824
+ onMount: async (context) => {
4825
+ console.log("GitHub Issues Panel mounted");
4826
+ const slice = context.getSlice("github-issues");
4827
+ if (slice && !slice.loading) {
4828
+ await slice.refresh();
4829
+ }
4830
+ },
4831
+ onUnmount: async (_context) => {
4832
+ console.log("GitHub Issues Panel unmounting");
4833
+ }
4834
+ },
3423
4835
  {
3424
4836
  metadata: OwnerRepositoriesPanelMetadata,
3425
4837
  component: OwnerRepositoriesPanel,
@@ -3458,6 +4870,7 @@ const onPackageUnload = async () => {
3458
4870
  console.log("Panel package unloading - GitHub Panels Extension");
3459
4871
  };
3460
4872
  export {
4873
+ GitHubIssuesPanel,
3461
4874
  GitHubProjectCard,
3462
4875
  GitHubProjectsPanel,
3463
4876
  GitHubSearchPanel,
@@ -3468,12 +4881,14 @@ export {
3468
4881
  addRecentRepository,
3469
4882
  githubTools,
3470
4883
  githubToolsMetadata,
4884
+ listIssuesTool,
3471
4885
  listRepositoriesTool,
3472
4886
  onPackageLoad,
3473
4887
  onPackageUnload,
3474
4888
  openRepositorySwitcherTool,
3475
4889
  panels,
3476
4890
  previewRepositoryTool,
4891
+ refreshIssuesTool,
3477
4892
  requestGitHubLoginTool,
3478
4893
  searchRepositoriesTool,
3479
4894
  selectRepositoryTool