@industry-theme/alexandria-panels 0.1.12 → 0.1.14

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.
@@ -140,7 +140,7 @@ const createLucideIcon = (iconName, iconNode) => {
140
140
  * This source code is licensed under the ISC license.
141
141
  * See the LICENSE file in the root directory of this source tree.
142
142
  */
143
- const __iconNode$q = [
143
+ const __iconNode$u = [
144
144
  ["path", { d: "M10 12h4", key: "a56b0p" }],
145
145
  ["path", { d: "M10 8h4", key: "1sr2af" }],
146
146
  ["path", { d: "M14 21v-3a2 2 0 0 0-4 0v3", key: "1rgiei" }],
@@ -153,111 +153,132 @@ const __iconNode$q = [
153
153
  ],
154
154
  ["path", { d: "M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16", key: "16ra0t" }]
155
155
  ];
156
- const Building2 = createLucideIcon("building-2", __iconNode$q);
156
+ const Building2 = createLucideIcon("building-2", __iconNode$u);
157
157
  /**
158
158
  * @license lucide-react v0.552.0 - ISC
159
159
  *
160
160
  * This source code is licensed under the ISC license.
161
161
  * See the LICENSE file in the root directory of this source tree.
162
162
  */
163
- const __iconNode$p = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
164
- const Check = createLucideIcon("check", __iconNode$p);
163
+ const __iconNode$t = [
164
+ ["path", { d: "M8 2v4", key: "1cmpym" }],
165
+ ["path", { d: "M16 2v4", key: "4m81vk" }],
166
+ ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
167
+ ["path", { d: "M3 10h18", key: "8toen8" }]
168
+ ];
169
+ const Calendar = createLucideIcon("calendar", __iconNode$t);
165
170
  /**
166
171
  * @license lucide-react v0.552.0 - ISC
167
172
  *
168
173
  * This source code is licensed under the ISC license.
169
174
  * See the LICENSE file in the root directory of this source tree.
170
175
  */
171
- const __iconNode$o = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
172
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$o);
176
+ const __iconNode$s = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
177
+ const Check = createLucideIcon("check", __iconNode$s);
173
178
  /**
174
179
  * @license lucide-react v0.552.0 - ISC
175
180
  *
176
181
  * This source code is licensed under the ISC license.
177
182
  * See the LICENSE file in the root directory of this source tree.
178
183
  */
179
- const __iconNode$n = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
180
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$n);
184
+ const __iconNode$r = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
185
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$r);
181
186
  /**
182
187
  * @license lucide-react v0.552.0 - ISC
183
188
  *
184
189
  * This source code is licensed under the ISC license.
185
190
  * See the LICENSE file in the root directory of this source tree.
186
191
  */
187
- const __iconNode$m = [
192
+ const __iconNode$q = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
193
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$q);
194
+ /**
195
+ * @license lucide-react v0.552.0 - ISC
196
+ *
197
+ * This source code is licensed under the ISC license.
198
+ * See the LICENSE file in the root directory of this source tree.
199
+ */
200
+ const __iconNode$p = [
188
201
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
189
202
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
190
203
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
191
204
  ];
192
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$m);
205
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$p);
193
206
  /**
194
207
  * @license lucide-react v0.552.0 - ISC
195
208
  *
196
209
  * This source code is licensed under the ISC license.
197
210
  * See the LICENSE file in the root directory of this source tree.
198
211
  */
199
- const __iconNode$l = [
212
+ const __iconNode$o = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
213
+ const Circle = createLucideIcon("circle", __iconNode$o);
214
+ /**
215
+ * @license lucide-react v0.552.0 - ISC
216
+ *
217
+ * This source code is licensed under the ISC license.
218
+ * See the LICENSE file in the root directory of this source tree.
219
+ */
220
+ const __iconNode$n = [
200
221
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
201
222
  ["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" }]
202
223
  ];
203
- const Copy = createLucideIcon("copy", __iconNode$l);
224
+ const Copy = createLucideIcon("copy", __iconNode$n);
204
225
  /**
205
226
  * @license lucide-react v0.552.0 - ISC
206
227
  *
207
228
  * This source code is licensed under the ISC license.
208
229
  * See the LICENSE file in the root directory of this source tree.
209
230
  */
210
- const __iconNode$k = [
231
+ const __iconNode$m = [
211
232
  ["path", { d: "M10 12h.01", key: "1kxr2c" }],
212
233
  ["path", { d: "M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14", key: "36qu9e" }],
213
234
  ["path", { d: "M2 20h20", key: "owomy5" }]
214
235
  ];
215
- const DoorClosed = createLucideIcon("door-closed", __iconNode$k);
236
+ const DoorClosed = createLucideIcon("door-closed", __iconNode$m);
216
237
  /**
217
238
  * @license lucide-react v0.552.0 - ISC
218
239
  *
219
240
  * This source code is licensed under the ISC license.
220
241
  * See the LICENSE file in the root directory of this source tree.
221
242
  */
222
- const __iconNode$j = [
243
+ const __iconNode$l = [
223
244
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
224
245
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
225
246
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
226
247
  ];
227
- const Download = createLucideIcon("download", __iconNode$j);
248
+ const Download = createLucideIcon("download", __iconNode$l);
228
249
  /**
229
250
  * @license lucide-react v0.552.0 - ISC
230
251
  *
231
252
  * This source code is licensed under the ISC license.
232
253
  * See the LICENSE file in the root directory of this source tree.
233
254
  */
234
- const __iconNode$i = [
255
+ const __iconNode$k = [
235
256
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
236
257
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
237
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" }]
238
259
  ];
239
- const ExternalLink = createLucideIcon("external-link", __iconNode$i);
260
+ const ExternalLink = createLucideIcon("external-link", __iconNode$k);
240
261
  /**
241
262
  * @license lucide-react v0.552.0 - ISC
242
263
  *
243
264
  * This source code is licensed under the ISC license.
244
265
  * See the LICENSE file in the root directory of this source tree.
245
266
  */
246
- const __iconNode$h = [
267
+ const __iconNode$j = [
247
268
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
248
269
  ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }],
249
270
  ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }],
250
271
  ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }],
251
272
  ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }]
252
273
  ];
253
- const Focus = createLucideIcon("focus", __iconNode$h);
274
+ const Focus = createLucideIcon("focus", __iconNode$j);
254
275
  /**
255
276
  * @license lucide-react v0.552.0 - ISC
256
277
  *
257
278
  * This source code is licensed under the ISC license.
258
279
  * See the LICENSE file in the root directory of this source tree.
259
280
  */
260
- const __iconNode$g = [
281
+ const __iconNode$i = [
261
282
  [
262
283
  "path",
263
284
  {
@@ -269,14 +290,14 @@ const __iconNode$g = [
269
290
  ["path", { d: "M18 19c-2.8 0-5-2.2-5-5v8", key: "pkpw2h" }],
270
291
  ["circle", { cx: "20", cy: "19", r: "2", key: "1obnsp" }]
271
292
  ];
272
- const FolderGit2 = createLucideIcon("folder-git-2", __iconNode$g);
293
+ const FolderGit2 = createLucideIcon("folder-git-2", __iconNode$i);
273
294
  /**
274
295
  * @license lucide-react v0.552.0 - ISC
275
296
  *
276
297
  * This source code is licensed under the ISC license.
277
298
  * See the LICENSE file in the root directory of this source tree.
278
299
  */
279
- const __iconNode$f = [
300
+ const __iconNode$h = [
280
301
  [
281
302
  "path",
282
303
  {
@@ -285,14 +306,14 @@ const __iconNode$f = [
285
306
  }
286
307
  ]
287
308
  ];
288
- const FolderOpen = createLucideIcon("folder-open", __iconNode$f);
309
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$h);
289
310
  /**
290
311
  * @license lucide-react v0.552.0 - ISC
291
312
  *
292
313
  * This source code is licensed under the ISC license.
293
314
  * See the LICENSE file in the root directory of this source tree.
294
315
  */
295
- const __iconNode$e = [
316
+ const __iconNode$g = [
296
317
  [
297
318
  "path",
298
319
  {
@@ -301,28 +322,28 @@ const __iconNode$e = [
301
322
  }
302
323
  ]
303
324
  ];
304
- const Folder = createLucideIcon("folder", __iconNode$e);
325
+ const Folder = createLucideIcon("folder", __iconNode$g);
305
326
  /**
306
327
  * @license lucide-react v0.552.0 - ISC
307
328
  *
308
329
  * This source code is licensed under the ISC license.
309
330
  * See the LICENSE file in the root directory of this source tree.
310
331
  */
311
- const __iconNode$d = [
332
+ const __iconNode$f = [
312
333
  ["circle", { cx: "12", cy: "18", r: "3", key: "1mpf1b" }],
313
334
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
314
335
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
315
336
  ["path", { d: "M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9", key: "1uq4wg" }],
316
337
  ["path", { d: "M12 12v3", key: "158kv8" }]
317
338
  ];
318
- const GitFork = createLucideIcon("git-fork", __iconNode$d);
339
+ const GitFork = createLucideIcon("git-fork", __iconNode$f);
319
340
  /**
320
341
  * @license lucide-react v0.552.0 - ISC
321
342
  *
322
343
  * This source code is licensed under the ISC license.
323
344
  * See the LICENSE file in the root directory of this source tree.
324
345
  */
325
- const __iconNode$c = [
346
+ const __iconNode$e = [
326
347
  ["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
327
348
  [
328
349
  "path",
@@ -332,14 +353,14 @@ const __iconNode$c = [
332
353
  }
333
354
  ]
334
355
  ];
335
- const House = createLucideIcon("house", __iconNode$c);
356
+ const House = createLucideIcon("house", __iconNode$e);
336
357
  /**
337
358
  * @license lucide-react v0.552.0 - ISC
338
359
  *
339
360
  * This source code is licensed under the ISC license.
340
361
  * See the LICENSE file in the root directory of this source tree.
341
362
  */
342
- const __iconNode$b = [
363
+ const __iconNode$d = [
343
364
  [
344
365
  "path",
345
366
  {
@@ -362,26 +383,54 @@ const __iconNode$b = [
362
383
  }
363
384
  ]
364
385
  ];
365
- const Layers = createLucideIcon("layers", __iconNode$b);
386
+ const Layers = createLucideIcon("layers", __iconNode$d);
366
387
  /**
367
388
  * @license lucide-react v0.552.0 - ISC
368
389
  *
369
390
  * This source code is licensed under the ISC license.
370
391
  * See the LICENSE file in the root directory of this source tree.
371
392
  */
372
- const __iconNode$a = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
373
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$a);
393
+ const __iconNode$c = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
394
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$c);
374
395
  /**
375
396
  * @license lucide-react v0.552.0 - ISC
376
397
  *
377
398
  * This source code is licensed under the ISC license.
378
399
  * See the LICENSE file in the root directory of this source tree.
379
400
  */
380
- const __iconNode$9 = [
401
+ const __iconNode$b = [
381
402
  ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
382
403
  ["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
383
404
  ];
384
- const Lock = createLucideIcon("lock", __iconNode$9);
405
+ const Lock = createLucideIcon("lock", __iconNode$b);
406
+ /**
407
+ * @license lucide-react v0.552.0 - ISC
408
+ *
409
+ * This source code is licensed under the ISC license.
410
+ * See the LICENSE file in the root directory of this source tree.
411
+ */
412
+ const __iconNode$a = [
413
+ ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
414
+ ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
415
+ ];
416
+ const Mail = createLucideIcon("mail", __iconNode$a);
417
+ /**
418
+ * @license lucide-react v0.552.0 - ISC
419
+ *
420
+ * This source code is licensed under the ISC license.
421
+ * See the LICENSE file in the root directory of this source tree.
422
+ */
423
+ const __iconNode$9 = [
424
+ [
425
+ "path",
426
+ {
427
+ d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",
428
+ key: "1r0f0z"
429
+ }
430
+ ],
431
+ ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }]
432
+ ];
433
+ const MapPin = createLucideIcon("map-pin", __iconNode$9);
385
434
  /**
386
435
  * @license lucide-react v0.552.0 - ISC
387
436
  *
@@ -956,10 +1005,10 @@ const LocalProjectCard = ({
956
1005
  }
957
1006
  );
958
1007
  };
959
- const PANEL_ID$9 = "industry-theme.local-projects";
960
- const createPanelEvent$4 = (type, payload) => ({
1008
+ const PANEL_ID$b = "industry-theme.local-projects";
1009
+ const createPanelEvent$5 = (type, payload) => ({
961
1010
  type,
962
- source: PANEL_ID$9,
1011
+ source: PANEL_ID$b,
963
1012
  timestamp: Date.now(),
964
1013
  payload
965
1014
  });
@@ -995,7 +1044,7 @@ const LocalProjectsPanelContent = ({
995
1044
  try {
996
1045
  await panelActions.openRepository(entry);
997
1046
  setWindowStates((prev) => new Map(prev).set(entry.path, "ready"));
998
- events.emit(createPanelEvent$4(`${PANEL_ID$9}:repository-opened`, { entry }));
1047
+ events.emit(createPanelEvent$5(`${PANEL_ID$b}:repository-opened`, { entry }));
999
1048
  } catch (error) {
1000
1049
  console.error("Error opening repository:", error);
1001
1050
  setWindowStates((prev) => new Map(prev).set(entry.path, "closed"));
@@ -1006,14 +1055,14 @@ const LocalProjectsPanelContent = ({
1006
1055
  useEffect(() => {
1007
1056
  const unsubscribers = [
1008
1057
  // Filter event from tools
1009
- events.on(`${PANEL_ID$9}:filter`, (event) => {
1058
+ events.on(`${PANEL_ID$b}:filter`, (event) => {
1010
1059
  var _a2;
1011
1060
  if (((_a2 = event.payload) == null ? void 0 : _a2.filter) !== void 0) {
1012
1061
  setFilter(event.payload.filter);
1013
1062
  }
1014
1063
  }),
1015
1064
  // Select repository event from tools
1016
- events.on(`${PANEL_ID$9}:select-repository`, (event) => {
1065
+ events.on(`${PANEL_ID$b}:select-repository`, (event) => {
1017
1066
  var _a2;
1018
1067
  const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
1019
1068
  if (identifier) {
@@ -1022,12 +1071,12 @@ const LocalProjectsPanelContent = ({
1022
1071
  );
1023
1072
  if (entry) {
1024
1073
  setSelectedEntry(entry);
1025
- events.emit(createPanelEvent$4(`${PANEL_ID$9}:repository-selected`, { entry }));
1074
+ events.emit(createPanelEvent$5(`${PANEL_ID$b}:repository-selected`, { entry }));
1026
1075
  }
1027
1076
  }
1028
1077
  }),
1029
1078
  // Open repository event from tools
1030
- events.on(`${PANEL_ID$9}:open-repository`, (event) => {
1079
+ events.on(`${PANEL_ID$b}:open-repository`, (event) => {
1031
1080
  var _a2;
1032
1081
  const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
1033
1082
  if (identifier) {
@@ -1075,7 +1124,7 @@ const LocalProjectsPanelContent = ({
1075
1124
  };
1076
1125
  const handleSelectRepository = (entry) => {
1077
1126
  setSelectedEntry(entry);
1078
- events.emit(createPanelEvent$4(`${PANEL_ID$9}:repository-selected`, { entry }));
1127
+ events.emit(createPanelEvent$5(`${PANEL_ID$b}:repository-selected`, { entry }));
1079
1128
  };
1080
1129
  const normalizedFilter = filter.trim().toLowerCase();
1081
1130
  const filteredAndSortedRepositories = useMemo(() => {
@@ -1336,10 +1385,10 @@ const LocalProjectsPanelPreview = () => {
1336
1385
  }
1337
1386
  );
1338
1387
  };
1339
- const PANEL_ID$8 = "industry-theme.workspace-repositories";
1340
- const createPanelEvent$3 = (type, payload) => ({
1388
+ const PANEL_ID$a = "industry-theme.workspace-repositories";
1389
+ const createPanelEvent$4 = (type, payload) => ({
1341
1390
  type,
1342
- source: PANEL_ID$8,
1391
+ source: PANEL_ID$a,
1343
1392
  timestamp: Date.now(),
1344
1393
  payload
1345
1394
  });
@@ -1404,7 +1453,7 @@ const WorkspaceRepositoriesPanelContent = ({
1404
1453
  (repository) => {
1405
1454
  var _a;
1406
1455
  events.emit(
1407
- createPanelEvent$3("repository:selected", {
1456
+ createPanelEvent$4("repository:selected", {
1408
1457
  repositoryId: ((_a = repository.github) == null ? void 0 : _a.id) || repository.name,
1409
1458
  repository,
1410
1459
  repositoryPath: repository.path
@@ -1417,7 +1466,7 @@ const WorkspaceRepositoriesPanelContent = ({
1417
1466
  (repository) => {
1418
1467
  var _a;
1419
1468
  events.emit(
1420
- createPanelEvent$3("repository:opened", {
1469
+ createPanelEvent$4("repository:opened", {
1421
1470
  repositoryId: ((_a = repository.github) == null ? void 0 : _a.id) || repository.name,
1422
1471
  repository
1423
1472
  })
@@ -1458,7 +1507,7 @@ const WorkspaceRepositoriesPanelContent = ({
1458
1507
  );
1459
1508
  useEffect(() => {
1460
1509
  const unsubscribers = [
1461
- events.on(`${PANEL_ID$8}:select-repository`, (event) => {
1510
+ events.on(`${PANEL_ID$a}:select-repository`, (event) => {
1462
1511
  var _a;
1463
1512
  const path = (_a = event.payload) == null ? void 0 : _a.repositoryPath;
1464
1513
  if (path) {
@@ -1468,7 +1517,7 @@ const WorkspaceRepositoriesPanelContent = ({
1468
1517
  }
1469
1518
  }
1470
1519
  }),
1471
- events.on(`${PANEL_ID$8}:open-repository`, (event) => {
1520
+ events.on(`${PANEL_ID$a}:open-repository`, (event) => {
1472
1521
  var _a;
1473
1522
  const path = (_a = event.payload) == null ? void 0 : _a.repositoryPath;
1474
1523
  if (path) {
@@ -2157,10 +2206,10 @@ const WorkspaceCard = ({
2157
2206
  }
2158
2207
  );
2159
2208
  };
2160
- const PANEL_ID$7 = "industry-theme.workspaces-list";
2161
- const createPanelEvent$2 = (type, payload) => ({
2209
+ const PANEL_ID$9 = "industry-theme.workspaces-list";
2210
+ const createPanelEvent$3 = (type, payload) => ({
2162
2211
  type,
2163
- source: PANEL_ID$7,
2212
+ source: PANEL_ID$9,
2164
2213
  timestamp: Date.now(),
2165
2214
  payload
2166
2215
  });
@@ -2235,7 +2284,7 @@ const WorkspacesListPanelContent = ({
2235
2284
  (workspace) => {
2236
2285
  setSelectedWorkspaceId(workspace.id);
2237
2286
  events.emit(
2238
- createPanelEvent$2(`${PANEL_ID$7}:workspace:selected`, {
2287
+ createPanelEvent$3(`${PANEL_ID$9}:workspace:selected`, {
2239
2288
  workspaceId: workspace.id,
2240
2289
  workspace
2241
2290
  })
@@ -2252,7 +2301,7 @@ const WorkspacesListPanelContent = ({
2252
2301
  try {
2253
2302
  await panelActions.openWorkspace(workspace.id);
2254
2303
  events.emit(
2255
- createPanelEvent$2(`${PANEL_ID$7}:workspace:opened`, {
2304
+ createPanelEvent$3(`${PANEL_ID$9}:workspace:opened`, {
2256
2305
  workspaceId: workspace.id,
2257
2306
  workspace
2258
2307
  })
@@ -2276,7 +2325,7 @@ const WorkspacesListPanelContent = ({
2276
2325
  try {
2277
2326
  await panelActions.deleteWorkspace(workspace.id);
2278
2327
  events.emit(
2279
- createPanelEvent$2(`${PANEL_ID$7}:workspace:deleted`, {
2328
+ createPanelEvent$3(`${PANEL_ID$9}:workspace:deleted`, {
2280
2329
  workspaceId: workspace.id
2281
2330
  })
2282
2331
  );
@@ -2300,13 +2349,13 @@ const WorkspacesListPanelContent = ({
2300
2349
  );
2301
2350
  const handleCreateWorkspace = useCallback(() => {
2302
2351
  events.emit(
2303
- createPanelEvent$2(`${PANEL_ID$7}:create-workspace-requested`, {})
2352
+ createPanelEvent$3(`${PANEL_ID$9}:create-workspace-requested`, {})
2304
2353
  );
2305
2354
  }, [events]);
2306
2355
  useEffect(() => {
2307
2356
  const unsubscribers = [
2308
2357
  // Select workspace event from tools
2309
- events.on(`${PANEL_ID$7}:select-workspace`, (event) => {
2358
+ events.on(`${PANEL_ID$9}:select-workspace`, (event) => {
2310
2359
  var _a2;
2311
2360
  const workspaceId = (_a2 = event.payload) == null ? void 0 : _a2.workspaceId;
2312
2361
  if (workspaceId) {
@@ -2317,7 +2366,7 @@ const WorkspacesListPanelContent = ({
2317
2366
  }
2318
2367
  }),
2319
2368
  // Open workspace event from tools
2320
- events.on(`${PANEL_ID$7}:open-workspace`, (event) => {
2369
+ events.on(`${PANEL_ID$9}:open-workspace`, (event) => {
2321
2370
  var _a2;
2322
2371
  const workspaceId = (_a2 = event.payload) == null ? void 0 : _a2.workspaceId;
2323
2372
  if (workspaceId) {
@@ -2329,14 +2378,14 @@ const WorkspacesListPanelContent = ({
2329
2378
  }),
2330
2379
  // Create workspace event from tools
2331
2380
  events.on(
2332
- `${PANEL_ID$7}:create-workspace`,
2381
+ `${PANEL_ID$9}:create-workspace`,
2333
2382
  async (event) => {
2334
2383
  const { name, description } = event.payload || {};
2335
2384
  if (name && panelActions.createWorkspace) {
2336
2385
  try {
2337
2386
  const workspace = await panelActions.createWorkspace(name, { description });
2338
2387
  events.emit(
2339
- createPanelEvent$2(`${PANEL_ID$7}:workspace:created`, {
2388
+ createPanelEvent$3(`${PANEL_ID$9}:workspace:created`, {
2340
2389
  workspaceId: workspace.id,
2341
2390
  workspace
2342
2391
  })
@@ -2949,10 +2998,10 @@ function formatNumber(num) {
2949
2998
  }
2950
2999
  return num.toString();
2951
3000
  }
2952
- const PANEL_ID$6 = "industry-theme.github-starred";
2953
- const createPanelEvent$1 = (type, payload) => ({
3001
+ const PANEL_ID$8 = "industry-theme.github-starred";
3002
+ const createPanelEvent$2 = (type, payload) => ({
2954
3003
  type,
2955
- source: PANEL_ID$6,
3004
+ source: PANEL_ID$8,
2956
3005
  timestamp: Date.now(),
2957
3006
  payload
2958
3007
  });
@@ -3041,7 +3090,7 @@ const GitHubStarredPanelContent = ({
3041
3090
  if (panelActions.cloneRepository) {
3042
3091
  await panelActions.cloneRepository(repo);
3043
3092
  events.emit(
3044
- createPanelEvent$1(`${PANEL_ID$6}:repository-cloned`, {
3093
+ createPanelEvent$2(`${PANEL_ID$8}:repository-cloned`, {
3045
3094
  repository: repo
3046
3095
  })
3047
3096
  );
@@ -3061,7 +3110,7 @@ const GitHubStarredPanelContent = ({
3061
3110
  (repo) => {
3062
3111
  setSelectedRepo(repo);
3063
3112
  events.emit(
3064
- createPanelEvent$1(`${PANEL_ID$6}:repository-selected`, { repository: repo })
3113
+ createPanelEvent$2(`${PANEL_ID$8}:repository-selected`, { repository: repo })
3065
3114
  );
3066
3115
  },
3067
3116
  [events]
@@ -3073,11 +3122,11 @@ const GitHubStarredPanelContent = ({
3073
3122
  }, [panelActions]);
3074
3123
  useEffect(() => {
3075
3124
  const unsubscribers = [
3076
- events.on(`${PANEL_ID$6}:filter`, (event) => {
3125
+ events.on(`${PANEL_ID$8}:filter`, (event) => {
3077
3126
  var _a2;
3078
3127
  setFilter(((_a2 = event.payload) == null ? void 0 : _a2.filter) || "");
3079
3128
  }),
3080
- events.on(`${PANEL_ID$6}:select-repository`, (event) => {
3129
+ events.on(`${PANEL_ID$8}:select-repository`, (event) => {
3081
3130
  var _a2;
3082
3131
  const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
3083
3132
  if (identifier) {
@@ -3089,7 +3138,7 @@ const GitHubStarredPanelContent = ({
3089
3138
  }
3090
3139
  }
3091
3140
  }),
3092
- events.on(`${PANEL_ID$6}:clone-repository`, (event) => {
3141
+ events.on(`${PANEL_ID$8}:clone-repository`, (event) => {
3093
3142
  var _a2;
3094
3143
  const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
3095
3144
  if (identifier) {
@@ -3422,10 +3471,10 @@ const GitHubStarredPanelPreview = () => {
3422
3471
  }
3423
3472
  );
3424
3473
  };
3425
- const PANEL_ID$5 = "industry-theme.github-projects";
3426
- const createPanelEvent = (type, payload) => ({
3474
+ const PANEL_ID$7 = "industry-theme.github-projects";
3475
+ const createPanelEvent$1 = (type, payload) => ({
3427
3476
  type,
3428
- source: PANEL_ID$5,
3477
+ source: PANEL_ID$7,
3429
3478
  timestamp: Date.now(),
3430
3479
  payload
3431
3480
  });
@@ -3548,7 +3597,7 @@ const GitHubProjectsPanelContent = ({
3548
3597
  if (panelActions.cloneRepository) {
3549
3598
  await panelActions.cloneRepository(repo);
3550
3599
  events.emit(
3551
- createPanelEvent(`${PANEL_ID$5}:repository-cloned`, {
3600
+ createPanelEvent$1(`${PANEL_ID$7}:repository-cloned`, {
3552
3601
  repository: repo
3553
3602
  })
3554
3603
  );
@@ -3568,7 +3617,7 @@ const GitHubProjectsPanelContent = ({
3568
3617
  (repo) => {
3569
3618
  setSelectedRepo(repo);
3570
3619
  events.emit(
3571
- createPanelEvent(`${PANEL_ID$5}:repository-selected`, { repository: repo })
3620
+ createPanelEvent$1(`${PANEL_ID$7}:repository-selected`, { repository: repo })
3572
3621
  );
3573
3622
  },
3574
3623
  [events]
@@ -3591,18 +3640,18 @@ const GitHubProjectsPanelContent = ({
3591
3640
  }, []);
3592
3641
  useEffect(() => {
3593
3642
  const unsubscribers = [
3594
- events.on(`${PANEL_ID$5}:filter`, (event) => {
3643
+ events.on(`${PANEL_ID$7}:filter`, (event) => {
3595
3644
  var _a2;
3596
3645
  setFilter(((_a2 = event.payload) == null ? void 0 : _a2.filter) || "");
3597
3646
  }),
3598
- events.on(`${PANEL_ID$5}:toggle-section`, (event) => {
3647
+ events.on(`${PANEL_ID$7}:toggle-section`, (event) => {
3599
3648
  var _a2;
3600
3649
  const owner = (_a2 = event.payload) == null ? void 0 : _a2.owner;
3601
3650
  if (owner) {
3602
3651
  toggleSection(owner);
3603
3652
  }
3604
3653
  }),
3605
- events.on(`${PANEL_ID$5}:select-repository`, (event) => {
3654
+ events.on(`${PANEL_ID$7}:select-repository`, (event) => {
3606
3655
  var _a2;
3607
3656
  const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
3608
3657
  if (identifier) {
@@ -3614,7 +3663,7 @@ const GitHubProjectsPanelContent = ({
3614
3663
  }
3615
3664
  }
3616
3665
  }),
3617
- events.on(`${PANEL_ID$5}:clone-repository`, (event) => {
3666
+ events.on(`${PANEL_ID$7}:clone-repository`, (event) => {
3618
3667
  var _a2;
3619
3668
  const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
3620
3669
  if (identifier) {
@@ -4058,146 +4107,1032 @@ const GitHubProjectsPanelPreview = () => {
4058
4107
  }
4059
4108
  );
4060
4109
  };
4061
- const PANEL_ID$4 = "industry-theme.local-projects";
4062
- const filterProjectsTool$1 = {
4063
- name: "filter_projects",
4064
- description: "Filter the local projects list by name, owner, or path",
4065
- inputs: {
4066
- type: "object",
4067
- properties: {
4068
- filter: {
4069
- type: "string",
4070
- description: "Search term to filter projects (matches name, owner, or path)"
4071
- }
4072
- },
4073
- required: ["filter"]
4074
- },
4075
- outputs: {
4076
- type: "object",
4077
- properties: {
4078
- success: { type: "boolean" },
4079
- message: { type: "string" }
4080
- }
4081
- },
4082
- tags: ["filter", "search", "projects"],
4083
- tool_call_template: {
4084
- call_template_type: "panel_event",
4085
- event_type: `${PANEL_ID$4}:filter`
4086
- }
4087
- };
4088
- const selectProjectTool = {
4089
- name: "select_project",
4090
- description: "Select a project by name or path to view its details",
4091
- inputs: {
4092
- type: "object",
4093
- properties: {
4094
- identifier: {
4095
- type: "string",
4096
- description: "Project name or full path to select"
4097
- }
4098
- },
4099
- required: ["identifier"]
4100
- },
4101
- outputs: {
4102
- type: "object",
4103
- properties: {
4104
- success: { type: "boolean" },
4105
- selectedProject: { type: "string" }
4106
- }
4107
- },
4108
- tags: ["select", "project", "navigation"],
4109
- tool_call_template: {
4110
- call_template_type: "panel_event",
4111
- event_type: `${PANEL_ID$4}:select-repository`
4112
- }
4110
+ const PANEL_ID$6 = "industry-theme.user-profile";
4111
+ const createPanelEvent = (type, payload) => ({
4112
+ type,
4113
+ source: PANEL_ID$6,
4114
+ timestamp: Date.now(),
4115
+ payload
4116
+ });
4117
+ const formatDate = (dateString) => {
4118
+ const date = new Date(dateString);
4119
+ return date.toLocaleDateString("en-US", {
4120
+ month: "short",
4121
+ year: "numeric"
4122
+ });
4113
4123
  };
4114
- const openProjectTool = {
4115
- name: "open_project",
4116
- description: "Open a local project in the development workspace",
4117
- inputs: {
4118
- type: "object",
4119
- properties: {
4120
- identifier: {
4121
- type: "string",
4122
- description: "Project name or full path to open"
4123
- }
4124
- },
4125
- required: ["identifier"]
4126
- },
4127
- outputs: {
4128
- type: "object",
4129
- properties: {
4130
- success: { type: "boolean" },
4131
- message: { type: "string" }
4132
- }
4133
- },
4134
- tags: ["open", "project", "workspace"],
4135
- tool_call_template: {
4136
- call_template_type: "panel_event",
4137
- event_type: `${PANEL_ID$4}:open-repository`
4124
+ const getPresenceColor = (status) => {
4125
+ switch (status) {
4126
+ case "online":
4127
+ return "#22c55e";
4128
+ case "away":
4129
+ return "#eab308";
4130
+ case "offline":
4131
+ default:
4132
+ return "#6b7280";
4138
4133
  }
4139
4134
  };
4140
- const localProjectsPanelTools = [
4141
- filterProjectsTool$1,
4142
- selectProjectTool,
4143
- openProjectTool
4144
- ];
4145
- const localProjectsPanelToolsMetadata = {
4146
- id: PANEL_ID$4,
4147
- name: "Local Projects Panel",
4148
- description: "Tools for browsing and managing local Alexandria repositories",
4149
- tools: localProjectsPanelTools
4150
- };
4151
- const PANEL_ID$3 = "industry-theme.workspace-repositories";
4152
- const selectRepositoryTool = {
4153
- name: "select_workspace_repository",
4154
- description: "Selects a repository in the workspace panel",
4155
- inputs: {
4156
- type: "object",
4157
- properties: {
4158
- repositoryPath: {
4159
- type: "string",
4160
- description: "Path to the repository to select"
4161
- }
4162
- },
4163
- required: ["repositoryPath"]
4164
- },
4165
- outputs: {
4166
- type: "object",
4167
- properties: {
4168
- success: { type: "boolean" },
4169
- message: { type: "string" }
4135
+ const OrganizationCard = ({ organization, onClick }) => {
4136
+ const { theme } = useTheme();
4137
+ const [isHovered, setIsHovered] = useState(false);
4138
+ return /* @__PURE__ */ jsxs(
4139
+ "div",
4140
+ {
4141
+ onClick: () => onClick == null ? void 0 : onClick(organization),
4142
+ onMouseEnter: () => setIsHovered(true),
4143
+ onMouseLeave: () => setIsHovered(false),
4144
+ style: {
4145
+ display: "flex",
4146
+ alignItems: "center",
4147
+ gap: "12px",
4148
+ padding: "12px",
4149
+ borderRadius: "8px",
4150
+ backgroundColor: isHovered ? theme.colors.backgroundTertiary : theme.colors.background,
4151
+ border: `1px solid ${theme.colors.border}`,
4152
+ cursor: onClick ? "pointer" : "default",
4153
+ transition: "all 0.15s ease"
4154
+ },
4155
+ children: [
4156
+ /* @__PURE__ */ jsx(
4157
+ "img",
4158
+ {
4159
+ src: organization.avatar_url,
4160
+ alt: organization.login,
4161
+ style: {
4162
+ width: "40px",
4163
+ height: "40px",
4164
+ borderRadius: "8px",
4165
+ objectFit: "cover"
4166
+ }
4167
+ }
4168
+ ),
4169
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
4170
+ /* @__PURE__ */ jsx(
4171
+ "div",
4172
+ {
4173
+ style: {
4174
+ fontSize: `${theme.fontSizes[1]}px`,
4175
+ fontWeight: theme.fontWeights.semibold,
4176
+ color: theme.colors.text,
4177
+ fontFamily: theme.fonts.body
4178
+ },
4179
+ children: organization.login
4180
+ }
4181
+ ),
4182
+ organization.description && /* @__PURE__ */ jsx(
4183
+ "div",
4184
+ {
4185
+ style: {
4186
+ fontSize: `${theme.fontSizes[0]}px`,
4187
+ color: theme.colors.textSecondary,
4188
+ fontFamily: theme.fonts.body,
4189
+ overflow: "hidden",
4190
+ textOverflow: "ellipsis",
4191
+ whiteSpace: "nowrap"
4192
+ },
4193
+ children: organization.description
4194
+ }
4195
+ )
4196
+ ] }),
4197
+ /* @__PURE__ */ jsx(Building2, { size: 16, style: { color: theme.colors.textSecondary } })
4198
+ ]
4170
4199
  }
4171
- },
4172
- tags: ["workspace", "repository", "select"],
4173
- tool_call_template: {
4174
- call_template_type: "panel_event",
4175
- event_type: `${PANEL_ID$3}:select-repository`
4176
- }
4200
+ );
4177
4201
  };
4178
- const refreshWorkspaceTool = {
4179
- name: "refresh_workspace",
4180
- description: "Refreshes the workspace repositories list",
4181
- inputs: {
4182
- type: "object",
4183
- properties: {
4184
- force: {
4185
- type: "boolean",
4186
- description: "Force refresh even if data is fresh"
4187
- }
4188
- }
4189
- },
4190
- outputs: {
4191
- type: "object",
4192
- properties: {
4193
- success: { type: "boolean" },
4194
- repositoryCount: { type: "number" }
4195
- }
4196
- },
4202
+ const RepositoryCard = ({ repository, onClick, onClone, onOpenInBrowser }) => {
4203
+ const { theme } = useTheme();
4204
+ const [isHovered, setIsHovered] = useState(false);
4205
+ return /* @__PURE__ */ jsxs(
4206
+ "div",
4207
+ {
4208
+ onClick: () => onClick == null ? void 0 : onClick(repository),
4209
+ onMouseEnter: () => setIsHovered(true),
4210
+ onMouseLeave: () => setIsHovered(false),
4211
+ style: {
4212
+ display: "flex",
4213
+ flexDirection: "column",
4214
+ gap: "8px",
4215
+ padding: "12px",
4216
+ borderRadius: "8px",
4217
+ backgroundColor: isHovered ? theme.colors.backgroundTertiary : theme.colors.background,
4218
+ border: `1px solid ${theme.colors.border}`,
4219
+ cursor: onClick ? "pointer" : "default",
4220
+ transition: "all 0.15s ease"
4221
+ },
4222
+ children: [
4223
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "flex-start", gap: "8px" }, children: [
4224
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
4225
+ /* @__PURE__ */ jsxs(
4226
+ "div",
4227
+ {
4228
+ style: {
4229
+ display: "flex",
4230
+ alignItems: "center",
4231
+ gap: "6px",
4232
+ fontSize: `${theme.fontSizes[1]}px`,
4233
+ fontWeight: theme.fontWeights.semibold,
4234
+ color: theme.colors.primary,
4235
+ fontFamily: theme.fonts.body
4236
+ },
4237
+ children: [
4238
+ /* @__PURE__ */ jsx("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: repository.full_name }),
4239
+ repository.fork && /* @__PURE__ */ jsx(GitFork, { size: 12, style: { color: theme.colors.textSecondary, flexShrink: 0 } })
4240
+ ]
4241
+ }
4242
+ ),
4243
+ repository.description && /* @__PURE__ */ jsx(
4244
+ "div",
4245
+ {
4246
+ style: {
4247
+ fontSize: `${theme.fontSizes[0]}px`,
4248
+ color: theme.colors.textSecondary,
4249
+ fontFamily: theme.fonts.body,
4250
+ marginTop: "4px",
4251
+ display: "-webkit-box",
4252
+ WebkitLineClamp: 2,
4253
+ WebkitBoxOrient: "vertical",
4254
+ overflow: "hidden"
4255
+ },
4256
+ children: repository.description
4257
+ }
4258
+ )
4259
+ ] }),
4260
+ isHovered && (onClone || onOpenInBrowser) && /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: "4px", flexShrink: 0 }, children: [
4261
+ onClone && /* @__PURE__ */ jsx(
4262
+ "button",
4263
+ {
4264
+ onClick: (e) => {
4265
+ e.stopPropagation();
4266
+ onClone(repository);
4267
+ },
4268
+ style: {
4269
+ display: "flex",
4270
+ alignItems: "center",
4271
+ justifyContent: "center",
4272
+ width: "28px",
4273
+ height: "28px",
4274
+ borderRadius: "6px",
4275
+ border: `1px solid ${theme.colors.border}`,
4276
+ backgroundColor: theme.colors.backgroundTertiary,
4277
+ color: theme.colors.text,
4278
+ cursor: "pointer",
4279
+ transition: "all 0.15s ease"
4280
+ },
4281
+ title: "Clone repository",
4282
+ children: /* @__PURE__ */ jsx(Download, { size: 14 })
4283
+ }
4284
+ ),
4285
+ onOpenInBrowser && /* @__PURE__ */ jsx(
4286
+ "button",
4287
+ {
4288
+ onClick: (e) => {
4289
+ e.stopPropagation();
4290
+ onOpenInBrowser(repository);
4291
+ },
4292
+ style: {
4293
+ display: "flex",
4294
+ alignItems: "center",
4295
+ justifyContent: "center",
4296
+ width: "28px",
4297
+ height: "28px",
4298
+ borderRadius: "6px",
4299
+ border: `1px solid ${theme.colors.border}`,
4300
+ backgroundColor: theme.colors.backgroundTertiary,
4301
+ color: theme.colors.text,
4302
+ cursor: "pointer",
4303
+ transition: "all 0.15s ease"
4304
+ },
4305
+ title: "Open in browser",
4306
+ children: /* @__PURE__ */ jsx(ExternalLink, { size: 14 })
4307
+ }
4308
+ )
4309
+ ] })
4310
+ ] }),
4311
+ /* @__PURE__ */ jsxs(
4312
+ "div",
4313
+ {
4314
+ style: {
4315
+ display: "flex",
4316
+ alignItems: "center",
4317
+ gap: "12px",
4318
+ fontSize: `${theme.fontSizes[0]}px`,
4319
+ color: theme.colors.textSecondary,
4320
+ fontFamily: theme.fonts.body
4321
+ },
4322
+ children: [
4323
+ repository.language && /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
4324
+ /* @__PURE__ */ jsx(
4325
+ "span",
4326
+ {
4327
+ style: {
4328
+ width: "8px",
4329
+ height: "8px",
4330
+ borderRadius: "50%",
4331
+ backgroundColor: theme.colors.primary
4332
+ }
4333
+ }
4334
+ ),
4335
+ repository.language
4336
+ ] }),
4337
+ repository.stargazers_count !== void 0 && /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
4338
+ /* @__PURE__ */ jsx(Star, { size: 12 }),
4339
+ repository.stargazers_count.toLocaleString()
4340
+ ] })
4341
+ ]
4342
+ }
4343
+ )
4344
+ ]
4345
+ }
4346
+ );
4347
+ };
4348
+ const UserProfilePanelContent = ({
4349
+ context,
4350
+ actions,
4351
+ events
4352
+ }) => {
4353
+ var _a, _b, _c, _d;
4354
+ const { theme } = useTheme();
4355
+ const [activeView, setActiveView] = useState("organizations");
4356
+ const [searchQuery, setSearchQuery] = useState("");
4357
+ const [showSearchBox, setShowSearchBox] = useState(false);
4358
+ const panelActions = actions;
4359
+ const profileSlice = context.getSlice("userProfile");
4360
+ const user = ((_a = profileSlice == null ? void 0 : profileSlice.data) == null ? void 0 : _a.user) ?? null;
4361
+ const organizations = useMemo(
4362
+ () => {
4363
+ var _a2;
4364
+ return ((_a2 = profileSlice == null ? void 0 : profileSlice.data) == null ? void 0 : _a2.organizations) || [];
4365
+ },
4366
+ [(_b = profileSlice == null ? void 0 : profileSlice.data) == null ? void 0 : _b.organizations]
4367
+ );
4368
+ const starredRepositories = useMemo(
4369
+ () => {
4370
+ var _a2;
4371
+ return ((_a2 = profileSlice == null ? void 0 : profileSlice.data) == null ? void 0 : _a2.starredRepositories) || [];
4372
+ },
4373
+ [(_c = profileSlice == null ? void 0 : profileSlice.data) == null ? void 0 : _c.starredRepositories]
4374
+ );
4375
+ const presence = (_d = profileSlice == null ? void 0 : profileSlice.data) == null ? void 0 : _d.presence;
4376
+ const loading = (profileSlice == null ? void 0 : profileSlice.loading) ?? false;
4377
+ const filteredStarred = useMemo(() => {
4378
+ if (!searchQuery.trim()) return starredRepositories;
4379
+ const query = searchQuery.toLowerCase().trim();
4380
+ return starredRepositories.filter(
4381
+ (repo) => {
4382
+ var _a2, _b2;
4383
+ return repo.name.toLowerCase().includes(query) || repo.full_name.toLowerCase().includes(query) || ((_a2 = repo.description) == null ? void 0 : _a2.toLowerCase().includes(query)) || ((_b2 = repo.language) == null ? void 0 : _b2.toLowerCase().includes(query));
4384
+ }
4385
+ );
4386
+ }, [starredRepositories, searchQuery]);
4387
+ const handleOrganizationSelect = useCallback(
4388
+ (organization) => {
4389
+ var _a2;
4390
+ events.emit(
4391
+ createPanelEvent(`${PANEL_ID$6}:organization:selected`, {
4392
+ orgLogin: organization.login,
4393
+ organization
4394
+ })
4395
+ );
4396
+ (_a2 = panelActions.viewOrganization) == null ? void 0 : _a2.call(panelActions, organization.login);
4397
+ },
4398
+ [events, panelActions]
4399
+ );
4400
+ const handleRepositorySelect = useCallback(
4401
+ (repository) => {
4402
+ var _a2;
4403
+ events.emit(
4404
+ createPanelEvent(`${PANEL_ID$6}:repository:selected`, {
4405
+ owner: repository.owner.login,
4406
+ repo: repository.name,
4407
+ repository
4408
+ })
4409
+ );
4410
+ (_a2 = panelActions.viewRepository) == null ? void 0 : _a2.call(panelActions, repository.owner.login, repository.name);
4411
+ },
4412
+ [events, panelActions]
4413
+ );
4414
+ const handleCloneRepository = useCallback(
4415
+ (repository) => {
4416
+ var _a2;
4417
+ events.emit(
4418
+ createPanelEvent(`${PANEL_ID$6}:repository:clone-requested`, {
4419
+ repository
4420
+ })
4421
+ );
4422
+ (_a2 = panelActions.cloneRepository) == null ? void 0 : _a2.call(panelActions, repository);
4423
+ },
4424
+ [events, panelActions]
4425
+ );
4426
+ const handleOpenInBrowser = useCallback(
4427
+ (repository) => {
4428
+ var _a2;
4429
+ (_a2 = panelActions.openInBrowser) == null ? void 0 : _a2.call(panelActions, repository.html_url);
4430
+ },
4431
+ [panelActions]
4432
+ );
4433
+ const handleViewChange = useCallback(
4434
+ (view) => {
4435
+ setActiveView(view);
4436
+ setSearchQuery("");
4437
+ setShowSearchBox(false);
4438
+ events.emit(createPanelEvent(`${PANEL_ID$6}:view:changed`, { view }));
4439
+ },
4440
+ [events]
4441
+ );
4442
+ useEffect(() => {
4443
+ const unsubscribers = [
4444
+ events.on(`${PANEL_ID$6}:set-view`, (event) => {
4445
+ var _a2;
4446
+ if ((_a2 = event.payload) == null ? void 0 : _a2.view) {
4447
+ handleViewChange(event.payload.view);
4448
+ }
4449
+ }),
4450
+ events.on(`${PANEL_ID$6}:select-organization`, (event) => {
4451
+ var _a2;
4452
+ const orgLogin = (_a2 = event.payload) == null ? void 0 : _a2.orgLogin;
4453
+ if (orgLogin) {
4454
+ const org = organizations.find((o) => o.login === orgLogin);
4455
+ if (org) {
4456
+ handleOrganizationSelect(org);
4457
+ }
4458
+ }
4459
+ }),
4460
+ events.on(`${PANEL_ID$6}:select-repository`, (event) => {
4461
+ const { owner, repo } = event.payload || {};
4462
+ if (owner && repo) {
4463
+ const repository = starredRepositories.find(
4464
+ (r) => r.owner.login === owner && r.name === repo
4465
+ );
4466
+ if (repository) {
4467
+ handleRepositorySelect(repository);
4468
+ }
4469
+ }
4470
+ }),
4471
+ events.on(`${PANEL_ID$6}:clone-repository`, (event) => {
4472
+ const { owner, repo } = event.payload || {};
4473
+ if (owner && repo) {
4474
+ const repository = starredRepositories.find(
4475
+ (r) => r.owner.login === owner && r.name === repo
4476
+ );
4477
+ if (repository) {
4478
+ handleCloneRepository(repository);
4479
+ }
4480
+ }
4481
+ }),
4482
+ events.on(`${PANEL_ID$6}:filter-starred`, (event) => {
4483
+ var _a2;
4484
+ if (((_a2 = event.payload) == null ? void 0 : _a2.filter) !== void 0) {
4485
+ setSearchQuery(event.payload.filter);
4486
+ setShowSearchBox(true);
4487
+ setActiveView("starred");
4488
+ }
4489
+ })
4490
+ ];
4491
+ return () => unsubscribers.forEach((unsub) => unsub());
4492
+ }, [
4493
+ events,
4494
+ organizations,
4495
+ starredRepositories,
4496
+ handleViewChange,
4497
+ handleOrganizationSelect,
4498
+ handleRepositorySelect,
4499
+ handleCloneRepository
4500
+ ]);
4501
+ const baseContainerStyle = {
4502
+ display: "flex",
4503
+ flexDirection: "column",
4504
+ height: "100%",
4505
+ backgroundColor: theme.colors.backgroundSecondary
4506
+ };
4507
+ if (loading) {
4508
+ return /* @__PURE__ */ jsx("div", { style: baseContainerStyle, children: /* @__PURE__ */ jsx(
4509
+ "div",
4510
+ {
4511
+ style: {
4512
+ flex: 1,
4513
+ display: "flex",
4514
+ alignItems: "center",
4515
+ justifyContent: "center",
4516
+ padding: "32px",
4517
+ textAlign: "center"
4518
+ },
4519
+ children: /* @__PURE__ */ jsx(
4520
+ "div",
4521
+ {
4522
+ style: {
4523
+ display: "flex",
4524
+ flexDirection: "column",
4525
+ alignItems: "center",
4526
+ gap: "16px",
4527
+ maxWidth: "360px"
4528
+ },
4529
+ children: /* @__PURE__ */ jsx(
4530
+ "h3",
4531
+ {
4532
+ style: {
4533
+ margin: 0,
4534
+ color: theme.colors.text,
4535
+ fontSize: `${theme.fontSizes[3]}px`,
4536
+ fontWeight: theme.fontWeights.semibold,
4537
+ fontFamily: theme.fonts.body
4538
+ },
4539
+ children: "Loading profile..."
4540
+ }
4541
+ )
4542
+ }
4543
+ )
4544
+ }
4545
+ ) });
4546
+ }
4547
+ if (!user) {
4548
+ return /* @__PURE__ */ jsx("div", { style: baseContainerStyle, children: /* @__PURE__ */ jsx(
4549
+ "div",
4550
+ {
4551
+ style: {
4552
+ flex: 1,
4553
+ display: "flex",
4554
+ alignItems: "center",
4555
+ justifyContent: "center",
4556
+ padding: "32px",
4557
+ textAlign: "center"
4558
+ },
4559
+ children: /* @__PURE__ */ jsxs(
4560
+ "div",
4561
+ {
4562
+ style: {
4563
+ display: "flex",
4564
+ flexDirection: "column",
4565
+ alignItems: "center",
4566
+ gap: "16px",
4567
+ maxWidth: "360px"
4568
+ },
4569
+ children: [
4570
+ /* @__PURE__ */ jsx(User, { size: 48, style: { color: theme.colors.textSecondary } }),
4571
+ /* @__PURE__ */ jsx(
4572
+ "h3",
4573
+ {
4574
+ style: {
4575
+ margin: 0,
4576
+ color: theme.colors.text,
4577
+ fontSize: `${theme.fontSizes[2]}px`,
4578
+ fontWeight: theme.fontWeights.semibold,
4579
+ fontFamily: theme.fonts.body
4580
+ },
4581
+ children: "Select a user"
4582
+ }
4583
+ ),
4584
+ /* @__PURE__ */ jsx(
4585
+ "p",
4586
+ {
4587
+ style: {
4588
+ margin: 0,
4589
+ color: theme.colors.textSecondary,
4590
+ fontSize: `${theme.fontSizes[1]}px`,
4591
+ fontFamily: theme.fonts.body
4592
+ },
4593
+ children: "Click on someone in the network to view their profile"
4594
+ }
4595
+ )
4596
+ ]
4597
+ }
4598
+ )
4599
+ }
4600
+ ) });
4601
+ }
4602
+ return /* @__PURE__ */ jsxs("div", { style: baseContainerStyle, children: [
4603
+ /* @__PURE__ */ jsxs(
4604
+ "div",
4605
+ {
4606
+ style: {
4607
+ padding: "16px",
4608
+ borderBottom: `1px solid ${theme.colors.border}`,
4609
+ backgroundColor: theme.colors.background
4610
+ },
4611
+ children: [
4612
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "flex-start", gap: "12px" }, children: [
4613
+ /* @__PURE__ */ jsxs("div", { style: { position: "relative" }, children: [
4614
+ /* @__PURE__ */ jsx(
4615
+ "img",
4616
+ {
4617
+ src: user.avatar_url,
4618
+ alt: user.login,
4619
+ style: {
4620
+ width: "64px",
4621
+ height: "64px",
4622
+ borderRadius: "50%",
4623
+ objectFit: "cover"
4624
+ }
4625
+ }
4626
+ ),
4627
+ presence && /* @__PURE__ */ jsx(
4628
+ Circle,
4629
+ {
4630
+ size: 14,
4631
+ fill: getPresenceColor(presence.status),
4632
+ style: {
4633
+ position: "absolute",
4634
+ bottom: "2px",
4635
+ right: "2px",
4636
+ color: getPresenceColor(presence.status)
4637
+ }
4638
+ }
4639
+ )
4640
+ ] }),
4641
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
4642
+ /* @__PURE__ */ jsx(
4643
+ "div",
4644
+ {
4645
+ style: {
4646
+ fontSize: `${theme.fontSizes[3]}px`,
4647
+ fontWeight: theme.fontWeights.bold,
4648
+ color: theme.colors.text,
4649
+ fontFamily: theme.fonts.body
4650
+ },
4651
+ children: user.name || user.login
4652
+ }
4653
+ ),
4654
+ /* @__PURE__ */ jsxs(
4655
+ "div",
4656
+ {
4657
+ style: {
4658
+ fontSize: `${theme.fontSizes[1]}px`,
4659
+ color: theme.colors.textSecondary,
4660
+ fontFamily: theme.fonts.body
4661
+ },
4662
+ children: [
4663
+ "@",
4664
+ user.login
4665
+ ]
4666
+ }
4667
+ ),
4668
+ user.bio && /* @__PURE__ */ jsx(
4669
+ "div",
4670
+ {
4671
+ style: {
4672
+ fontSize: `${theme.fontSizes[1]}px`,
4673
+ color: theme.colors.text,
4674
+ fontFamily: theme.fonts.body,
4675
+ marginTop: "8px"
4676
+ },
4677
+ children: user.bio
4678
+ }
4679
+ )
4680
+ ] })
4681
+ ] }),
4682
+ /* @__PURE__ */ jsxs(
4683
+ "div",
4684
+ {
4685
+ style: {
4686
+ display: "flex",
4687
+ flexWrap: "wrap",
4688
+ gap: "12px",
4689
+ marginTop: "12px",
4690
+ fontSize: `${theme.fontSizes[0]}px`,
4691
+ color: theme.colors.textSecondary,
4692
+ fontFamily: theme.fonts.body
4693
+ },
4694
+ children: [
4695
+ user.location && /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
4696
+ /* @__PURE__ */ jsx(MapPin, { size: 12 }),
4697
+ user.location
4698
+ ] }),
4699
+ user.email && /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
4700
+ /* @__PURE__ */ jsx(Mail, { size: 12 }),
4701
+ user.email
4702
+ ] }),
4703
+ user.company && /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
4704
+ /* @__PURE__ */ jsx(Building2, { size: 12 }),
4705
+ user.company
4706
+ ] }),
4707
+ /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
4708
+ /* @__PURE__ */ jsx(Calendar, { size: 12 }),
4709
+ "Joined ",
4710
+ formatDate(user.created_at)
4711
+ ] })
4712
+ ]
4713
+ }
4714
+ ),
4715
+ /* @__PURE__ */ jsxs(
4716
+ "div",
4717
+ {
4718
+ style: {
4719
+ display: "flex",
4720
+ gap: "16px",
4721
+ marginTop: "12px",
4722
+ fontSize: `${theme.fontSizes[1]}px`,
4723
+ fontFamily: theme.fonts.body
4724
+ },
4725
+ children: [
4726
+ /* @__PURE__ */ jsxs("span", { children: [
4727
+ /* @__PURE__ */ jsx("strong", { style: { color: theme.colors.text }, children: user.followers }),
4728
+ " ",
4729
+ /* @__PURE__ */ jsx("span", { style: { color: theme.colors.textSecondary }, children: "followers" })
4730
+ ] }),
4731
+ /* @__PURE__ */ jsxs("span", { children: [
4732
+ /* @__PURE__ */ jsx("strong", { style: { color: theme.colors.text }, children: user.following }),
4733
+ " ",
4734
+ /* @__PURE__ */ jsx("span", { style: { color: theme.colors.textSecondary }, children: "following" })
4735
+ ] }),
4736
+ /* @__PURE__ */ jsxs("span", { children: [
4737
+ /* @__PURE__ */ jsx("strong", { style: { color: theme.colors.text }, children: user.public_repos }),
4738
+ " ",
4739
+ /* @__PURE__ */ jsx("span", { style: { color: theme.colors.textSecondary }, children: "repos" })
4740
+ ] })
4741
+ ]
4742
+ }
4743
+ )
4744
+ ]
4745
+ }
4746
+ ),
4747
+ /* @__PURE__ */ jsxs(
4748
+ "div",
4749
+ {
4750
+ style: {
4751
+ display: "flex",
4752
+ borderBottom: `1px solid ${theme.colors.border}`,
4753
+ backgroundColor: theme.colors.background
4754
+ },
4755
+ children: [
4756
+ /* @__PURE__ */ jsxs(
4757
+ "button",
4758
+ {
4759
+ onClick: () => handleViewChange("organizations"),
4760
+ style: {
4761
+ flex: 1,
4762
+ display: "flex",
4763
+ alignItems: "center",
4764
+ justifyContent: "center",
4765
+ gap: "6px",
4766
+ padding: "12px",
4767
+ border: "none",
4768
+ backgroundColor: "transparent",
4769
+ color: activeView === "organizations" ? theme.colors.primary : theme.colors.textSecondary,
4770
+ fontSize: `${theme.fontSizes[1]}px`,
4771
+ fontWeight: activeView === "organizations" ? theme.fontWeights.semibold : theme.fontWeights.medium,
4772
+ fontFamily: theme.fonts.body,
4773
+ cursor: "pointer",
4774
+ borderBottom: activeView === "organizations" ? `2px solid ${theme.colors.primary}` : "2px solid transparent",
4775
+ transition: "all 0.15s ease"
4776
+ },
4777
+ children: [
4778
+ /* @__PURE__ */ jsx(Building2, { size: 16 }),
4779
+ "Organizations (",
4780
+ organizations.length,
4781
+ ")"
4782
+ ]
4783
+ }
4784
+ ),
4785
+ /* @__PURE__ */ jsxs(
4786
+ "button",
4787
+ {
4788
+ onClick: () => handleViewChange("starred"),
4789
+ style: {
4790
+ flex: 1,
4791
+ display: "flex",
4792
+ alignItems: "center",
4793
+ justifyContent: "center",
4794
+ gap: "6px",
4795
+ padding: "12px",
4796
+ border: "none",
4797
+ backgroundColor: "transparent",
4798
+ color: activeView === "starred" ? theme.colors.primary : theme.colors.textSecondary,
4799
+ fontSize: `${theme.fontSizes[1]}px`,
4800
+ fontWeight: activeView === "starred" ? theme.fontWeights.semibold : theme.fontWeights.medium,
4801
+ fontFamily: theme.fonts.body,
4802
+ cursor: "pointer",
4803
+ borderBottom: activeView === "starred" ? `2px solid ${theme.colors.primary}` : "2px solid transparent",
4804
+ transition: "all 0.15s ease"
4805
+ },
4806
+ children: [
4807
+ /* @__PURE__ */ jsx(Star, { size: 16 }),
4808
+ "Starred (",
4809
+ starredRepositories.length,
4810
+ ")"
4811
+ ]
4812
+ }
4813
+ )
4814
+ ]
4815
+ }
4816
+ ),
4817
+ activeView === "starred" && /* @__PURE__ */ jsx(
4818
+ "div",
4819
+ {
4820
+ style: {
4821
+ padding: "12px 16px",
4822
+ borderBottom: `1px solid ${theme.colors.border}`,
4823
+ backgroundColor: theme.colors.background
4824
+ },
4825
+ children: /* @__PURE__ */ jsx("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: /* @__PURE__ */ jsxs(
4826
+ "div",
4827
+ {
4828
+ style: {
4829
+ flex: 1,
4830
+ display: "flex",
4831
+ alignItems: "center",
4832
+ gap: "8px",
4833
+ padding: "8px 12px",
4834
+ borderRadius: "6px",
4835
+ border: `1px solid ${theme.colors.border}`,
4836
+ backgroundColor: theme.colors.backgroundSecondary
4837
+ },
4838
+ children: [
4839
+ /* @__PURE__ */ jsx(Search, { size: 16, style: { color: theme.colors.textSecondary } }),
4840
+ /* @__PURE__ */ jsx(
4841
+ "input",
4842
+ {
4843
+ type: "text",
4844
+ value: searchQuery,
4845
+ onChange: (e) => setSearchQuery(e.target.value),
4846
+ placeholder: "Filter starred repositories...",
4847
+ style: {
4848
+ flex: 1,
4849
+ border: "none",
4850
+ backgroundColor: "transparent",
4851
+ color: theme.colors.text,
4852
+ fontSize: `${theme.fontSizes[1]}px`,
4853
+ fontFamily: theme.fonts.body,
4854
+ outline: "none"
4855
+ }
4856
+ }
4857
+ ),
4858
+ searchQuery && /* @__PURE__ */ jsx(
4859
+ "button",
4860
+ {
4861
+ onClick: () => setSearchQuery(""),
4862
+ style: {
4863
+ display: "flex",
4864
+ alignItems: "center",
4865
+ justifyContent: "center",
4866
+ padding: "2px",
4867
+ border: "none",
4868
+ backgroundColor: "transparent",
4869
+ color: theme.colors.textSecondary,
4870
+ cursor: "pointer"
4871
+ },
4872
+ children: /* @__PURE__ */ jsx(X, { size: 14 })
4873
+ }
4874
+ )
4875
+ ]
4876
+ }
4877
+ ) })
4878
+ }
4879
+ ),
4880
+ /* @__PURE__ */ jsxs(
4881
+ "div",
4882
+ {
4883
+ style: {
4884
+ flex: 1,
4885
+ overflowY: "auto",
4886
+ padding: "16px",
4887
+ display: "flex",
4888
+ flexDirection: "column",
4889
+ gap: "8px"
4890
+ },
4891
+ children: [
4892
+ activeView === "organizations" && /* @__PURE__ */ jsx(Fragment, { children: organizations.length === 0 ? /* @__PURE__ */ jsxs(
4893
+ "div",
4894
+ {
4895
+ style: {
4896
+ padding: "32px",
4897
+ textAlign: "center",
4898
+ color: theme.colors.textSecondary
4899
+ },
4900
+ children: [
4901
+ /* @__PURE__ */ jsx(
4902
+ Building2,
4903
+ {
4904
+ size: 32,
4905
+ style: { marginBottom: "12px", opacity: 0.5 }
4906
+ }
4907
+ ),
4908
+ /* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: "No organizations" })
4909
+ ]
4910
+ }
4911
+ ) : organizations.map((org) => /* @__PURE__ */ jsx(
4912
+ OrganizationCard,
4913
+ {
4914
+ organization: org,
4915
+ onClick: handleOrganizationSelect
4916
+ },
4917
+ org.id
4918
+ )) }),
4919
+ activeView === "starred" && /* @__PURE__ */ jsx(Fragment, { children: filteredStarred.length === 0 ? /* @__PURE__ */ jsxs(
4920
+ "div",
4921
+ {
4922
+ style: {
4923
+ padding: "32px",
4924
+ textAlign: "center",
4925
+ color: theme.colors.textSecondary
4926
+ },
4927
+ children: [
4928
+ /* @__PURE__ */ jsx(Star, { size: 32, style: { marginBottom: "12px", opacity: 0.5 } }),
4929
+ /* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: searchQuery ? `No repositories matching "${searchQuery}"` : "No starred repositories" })
4930
+ ]
4931
+ }
4932
+ ) : filteredStarred.map((repo) => /* @__PURE__ */ jsx(
4933
+ RepositoryCard,
4934
+ {
4935
+ repository: repo,
4936
+ onClick: handleRepositorySelect,
4937
+ onClone: panelActions.cloneRepository ? handleCloneRepository : void 0,
4938
+ onOpenInBrowser: panelActions.openInBrowser ? handleOpenInBrowser : void 0
4939
+ },
4940
+ repo.id
4941
+ )) })
4942
+ ]
4943
+ }
4944
+ )
4945
+ ] });
4946
+ };
4947
+ const UserProfilePanel = (props) => {
4948
+ return /* @__PURE__ */ jsx(UserProfilePanelContent, { ...props });
4949
+ };
4950
+ const UserProfilePanelPreview = () => {
4951
+ const { theme } = useTheme();
4952
+ return /* @__PURE__ */ jsxs(
4953
+ "div",
4954
+ {
4955
+ style: {
4956
+ padding: "12px",
4957
+ fontSize: `${theme.fontSizes[0]}px`,
4958
+ fontFamily: theme.fonts.body,
4959
+ color: theme.colors.text,
4960
+ display: "flex",
4961
+ flexDirection: "column",
4962
+ gap: "8px"
4963
+ },
4964
+ children: [
4965
+ /* @__PURE__ */ jsxs(
4966
+ "div",
4967
+ {
4968
+ style: {
4969
+ display: "flex",
4970
+ alignItems: "center",
4971
+ gap: "6px",
4972
+ fontWeight: theme.fontWeights.semibold
4973
+ },
4974
+ children: [
4975
+ /* @__PURE__ */ jsx(User, { size: 16, style: { color: theme.colors.primary } }),
4976
+ /* @__PURE__ */ jsx("span", { children: "User Profile" })
4977
+ ]
4978
+ }
4979
+ ),
4980
+ /* @__PURE__ */ jsx(
4981
+ "div",
4982
+ {
4983
+ style: {
4984
+ fontSize: `${theme.fontSizes[0]}px`,
4985
+ fontFamily: theme.fonts.body,
4986
+ color: theme.colors.textSecondary,
4987
+ marginTop: "4px"
4988
+ },
4989
+ children: "View user organizations and starred repos"
4990
+ }
4991
+ )
4992
+ ]
4993
+ }
4994
+ );
4995
+ };
4996
+ const PANEL_ID$5 = "industry-theme.local-projects";
4997
+ const filterProjectsTool$1 = {
4998
+ name: "filter_projects",
4999
+ description: "Filter the local projects list by name, owner, or path",
5000
+ inputs: {
5001
+ type: "object",
5002
+ properties: {
5003
+ filter: {
5004
+ type: "string",
5005
+ description: "Search term to filter projects (matches name, owner, or path)"
5006
+ }
5007
+ },
5008
+ required: ["filter"]
5009
+ },
5010
+ outputs: {
5011
+ type: "object",
5012
+ properties: {
5013
+ success: { type: "boolean" },
5014
+ message: { type: "string" }
5015
+ }
5016
+ },
5017
+ tags: ["filter", "search", "projects"],
5018
+ tool_call_template: {
5019
+ call_template_type: "panel_event",
5020
+ event_type: `${PANEL_ID$5}:filter`
5021
+ }
5022
+ };
5023
+ const selectProjectTool = {
5024
+ name: "select_project",
5025
+ description: "Select a project by name or path to view its details",
5026
+ inputs: {
5027
+ type: "object",
5028
+ properties: {
5029
+ identifier: {
5030
+ type: "string",
5031
+ description: "Project name or full path to select"
5032
+ }
5033
+ },
5034
+ required: ["identifier"]
5035
+ },
5036
+ outputs: {
5037
+ type: "object",
5038
+ properties: {
5039
+ success: { type: "boolean" },
5040
+ selectedProject: { type: "string" }
5041
+ }
5042
+ },
5043
+ tags: ["select", "project", "navigation"],
5044
+ tool_call_template: {
5045
+ call_template_type: "panel_event",
5046
+ event_type: `${PANEL_ID$5}:select-repository`
5047
+ }
5048
+ };
5049
+ const openProjectTool = {
5050
+ name: "open_project",
5051
+ description: "Open a local project in the development workspace",
5052
+ inputs: {
5053
+ type: "object",
5054
+ properties: {
5055
+ identifier: {
5056
+ type: "string",
5057
+ description: "Project name or full path to open"
5058
+ }
5059
+ },
5060
+ required: ["identifier"]
5061
+ },
5062
+ outputs: {
5063
+ type: "object",
5064
+ properties: {
5065
+ success: { type: "boolean" },
5066
+ message: { type: "string" }
5067
+ }
5068
+ },
5069
+ tags: ["open", "project", "workspace"],
5070
+ tool_call_template: {
5071
+ call_template_type: "panel_event",
5072
+ event_type: `${PANEL_ID$5}:open-repository`
5073
+ }
5074
+ };
5075
+ const localProjectsPanelTools = [
5076
+ filterProjectsTool$1,
5077
+ selectProjectTool,
5078
+ openProjectTool
5079
+ ];
5080
+ const localProjectsPanelToolsMetadata = {
5081
+ id: PANEL_ID$5,
5082
+ name: "Local Projects Panel",
5083
+ description: "Tools for browsing and managing local Alexandria repositories",
5084
+ tools: localProjectsPanelTools
5085
+ };
5086
+ const PANEL_ID$4 = "industry-theme.workspace-repositories";
5087
+ const selectRepositoryTool$1 = {
5088
+ name: "select_workspace_repository",
5089
+ description: "Selects a repository in the workspace panel",
5090
+ inputs: {
5091
+ type: "object",
5092
+ properties: {
5093
+ repositoryPath: {
5094
+ type: "string",
5095
+ description: "Path to the repository to select"
5096
+ }
5097
+ },
5098
+ required: ["repositoryPath"]
5099
+ },
5100
+ outputs: {
5101
+ type: "object",
5102
+ properties: {
5103
+ success: { type: "boolean" },
5104
+ message: { type: "string" }
5105
+ }
5106
+ },
5107
+ tags: ["workspace", "repository", "select"],
5108
+ tool_call_template: {
5109
+ call_template_type: "panel_event",
5110
+ event_type: `${PANEL_ID$4}:select-repository`
5111
+ }
5112
+ };
5113
+ const refreshWorkspaceTool = {
5114
+ name: "refresh_workspace",
5115
+ description: "Refreshes the workspace repositories list",
5116
+ inputs: {
5117
+ type: "object",
5118
+ properties: {
5119
+ force: {
5120
+ type: "boolean",
5121
+ description: "Force refresh even if data is fresh"
5122
+ }
5123
+ }
5124
+ },
5125
+ outputs: {
5126
+ type: "object",
5127
+ properties: {
5128
+ success: { type: "boolean" },
5129
+ repositoryCount: { type: "number" }
5130
+ }
5131
+ },
4197
5132
  tags: ["workspace", "refresh"],
4198
5133
  tool_call_template: {
4199
5134
  call_template_type: "panel_event",
4200
- event_type: `${PANEL_ID$3}:refresh-workspace`
5135
+ event_type: `${PANEL_ID$4}:refresh-workspace`
4201
5136
  }
4202
5137
  };
4203
5138
  const openRepositoryTool = {
@@ -4223,21 +5158,21 @@ const openRepositoryTool = {
4223
5158
  tags: ["workspace", "repository", "open"],
4224
5159
  tool_call_template: {
4225
5160
  call_template_type: "panel_event",
4226
- event_type: `${PANEL_ID$3}:open-repository`
5161
+ event_type: `${PANEL_ID$4}:open-repository`
4227
5162
  }
4228
5163
  };
4229
5164
  const workspaceRepositoriesPanelTools = [
4230
- selectRepositoryTool,
5165
+ selectRepositoryTool$1,
4231
5166
  refreshWorkspaceTool,
4232
5167
  openRepositoryTool
4233
5168
  ];
4234
5169
  const workspaceRepositoriesPanelToolsMetadata = {
4235
- id: PANEL_ID$3,
5170
+ id: PANEL_ID$4,
4236
5171
  name: "Workspace Repositories Panel",
4237
5172
  description: "Tools provided by the workspace repositories panel",
4238
5173
  tools: workspaceRepositoriesPanelTools
4239
5174
  };
4240
- const PANEL_ID$2 = "industry-theme.workspaces-list";
5175
+ const PANEL_ID$3 = "industry-theme.workspaces-list";
4241
5176
  const filterWorkspacesTool = {
4242
5177
  name: "filter_workspaces",
4243
5178
  description: "Filter the workspaces list by workspace name, description, or repository names within workspaces",
@@ -4261,7 +5196,7 @@ const filterWorkspacesTool = {
4261
5196
  tags: ["filter", "search", "workspaces"],
4262
5197
  tool_call_template: {
4263
5198
  call_template_type: "panel_event",
4264
- event_type: `${PANEL_ID$2}:filter`
5199
+ event_type: `${PANEL_ID$3}:filter`
4265
5200
  }
4266
5201
  };
4267
5202
  const selectWorkspaceTool = {
@@ -4287,7 +5222,7 @@ const selectWorkspaceTool = {
4287
5222
  tags: ["select", "workspace", "navigation"],
4288
5223
  tool_call_template: {
4289
5224
  call_template_type: "panel_event",
4290
- event_type: `${PANEL_ID$2}:select-workspace`
5225
+ event_type: `${PANEL_ID$3}:select-workspace`
4291
5226
  }
4292
5227
  };
4293
5228
  const openWorkspaceTool = {
@@ -4313,7 +5248,7 @@ const openWorkspaceTool = {
4313
5248
  tags: ["open", "workspace", "window"],
4314
5249
  tool_call_template: {
4315
5250
  call_template_type: "panel_event",
4316
- event_type: `${PANEL_ID$2}:open-workspace`
5251
+ event_type: `${PANEL_ID$3}:open-workspace`
4317
5252
  }
4318
5253
  };
4319
5254
  const createWorkspaceTool = {
@@ -4344,7 +5279,7 @@ const createWorkspaceTool = {
4344
5279
  tags: ["create", "workspace", "new"],
4345
5280
  tool_call_template: {
4346
5281
  call_template_type: "panel_event",
4347
- event_type: `${PANEL_ID$2}:create-workspace`
5282
+ event_type: `${PANEL_ID$3}:create-workspace`
4348
5283
  }
4349
5284
  };
4350
5285
  const workspacesListPanelTools = [
@@ -4354,13 +5289,13 @@ const workspacesListPanelTools = [
4354
5289
  createWorkspaceTool
4355
5290
  ];
4356
5291
  const workspacesListPanelToolsMetadata = {
4357
- id: PANEL_ID$2,
5292
+ id: PANEL_ID$3,
4358
5293
  name: "Workspaces List Panel",
4359
5294
  description: "Tools for browsing and managing workspaces",
4360
5295
  tools: workspacesListPanelTools
4361
5296
  };
4362
- const PANEL_ID$1 = "industry-theme.github-starred";
4363
- const filterStarredTool = {
5297
+ const PANEL_ID$2 = "industry-theme.github-starred";
5298
+ const filterStarredTool$1 = {
4364
5299
  name: "filter_starred_repositories",
4365
5300
  description: "Filter the starred repositories list by repository name, owner, language, or description",
4366
5301
  inputs: {
@@ -4383,7 +5318,7 @@ const filterStarredTool = {
4383
5318
  tags: ["filter", "search", "starred", "github"],
4384
5319
  tool_call_template: {
4385
5320
  call_template_type: "panel_event",
4386
- event_type: `${PANEL_ID$1}:filter`
5321
+ event_type: `${PANEL_ID$2}:filter`
4387
5322
  }
4388
5323
  };
4389
5324
  const selectStarredRepositoryTool = {
@@ -4413,7 +5348,7 @@ const selectStarredRepositoryTool = {
4413
5348
  tags: ["select", "starred", "github", "repository"],
4414
5349
  tool_call_template: {
4415
5350
  call_template_type: "panel_event",
4416
- event_type: `${PANEL_ID$1}:select-repository`
5351
+ event_type: `${PANEL_ID$2}:select-repository`
4417
5352
  }
4418
5353
  };
4419
5354
  const cloneStarredRepositoryTool = {
@@ -4443,21 +5378,21 @@ const cloneStarredRepositoryTool = {
4443
5378
  tags: ["clone", "starred", "github", "repository"],
4444
5379
  tool_call_template: {
4445
5380
  call_template_type: "panel_event",
4446
- event_type: `${PANEL_ID$1}:clone-repository`
5381
+ event_type: `${PANEL_ID$2}:clone-repository`
4447
5382
  }
4448
5383
  };
4449
5384
  const githubStarredPanelTools = [
4450
- filterStarredTool,
5385
+ filterStarredTool$1,
4451
5386
  selectStarredRepositoryTool,
4452
5387
  cloneStarredRepositoryTool
4453
5388
  ];
4454
5389
  const githubStarredPanelToolsMetadata = {
4455
- id: PANEL_ID$1,
5390
+ id: PANEL_ID$2,
4456
5391
  name: "GitHub Starred Panel",
4457
5392
  description: "Tools for browsing and managing starred GitHub repositories",
4458
5393
  tools: githubStarredPanelTools
4459
5394
  };
4460
- const PANEL_ID = "industry-theme.github-projects";
5395
+ const PANEL_ID$1 = "industry-theme.github-projects";
4461
5396
  const filterProjectsTool = {
4462
5397
  name: "filter_github_projects",
4463
5398
  description: "Filter the GitHub projects list by repository name, owner, language, or description",
@@ -4481,7 +5416,7 @@ const filterProjectsTool = {
4481
5416
  tags: ["filter", "search", "projects", "github"],
4482
5417
  tool_call_template: {
4483
5418
  call_template_type: "panel_event",
4484
- event_type: `${PANEL_ID}:filter`
5419
+ event_type: `${PANEL_ID$1}:filter`
4485
5420
  }
4486
5421
  };
4487
5422
  const toggleOwnerSectionTool = {
@@ -4508,7 +5443,7 @@ const toggleOwnerSectionTool = {
4508
5443
  tags: ["toggle", "section", "projects", "github"],
4509
5444
  tool_call_template: {
4510
5445
  call_template_type: "panel_event",
4511
- event_type: `${PANEL_ID}:toggle-section`
5446
+ event_type: `${PANEL_ID$1}:toggle-section`
4512
5447
  }
4513
5448
  };
4514
5449
  const selectProjectRepositoryTool = {
@@ -4538,7 +5473,7 @@ const selectProjectRepositoryTool = {
4538
5473
  tags: ["select", "projects", "github", "repository"],
4539
5474
  tool_call_template: {
4540
5475
  call_template_type: "panel_event",
4541
- event_type: `${PANEL_ID}:select-repository`
5476
+ event_type: `${PANEL_ID$1}:select-repository`
4542
5477
  }
4543
5478
  };
4544
5479
  const cloneProjectRepositoryTool = {
@@ -4568,7 +5503,7 @@ const cloneProjectRepositoryTool = {
4568
5503
  tags: ["clone", "projects", "github", "repository"],
4569
5504
  tool_call_template: {
4570
5505
  call_template_type: "panel_event",
4571
- event_type: `${PANEL_ID}:clone-repository`
5506
+ event_type: `${PANEL_ID$1}:clone-repository`
4572
5507
  }
4573
5508
  };
4574
5509
  const githubProjectsPanelTools = [
@@ -4578,11 +5513,180 @@ const githubProjectsPanelTools = [
4578
5513
  cloneProjectRepositoryTool
4579
5514
  ];
4580
5515
  const githubProjectsPanelToolsMetadata = {
4581
- id: PANEL_ID,
5516
+ id: PANEL_ID$1,
4582
5517
  name: "GitHub Projects Panel",
4583
5518
  description: "Tools for browsing and managing your GitHub repositories and organization repositories",
4584
5519
  tools: githubProjectsPanelTools
4585
5520
  };
5521
+ const PANEL_ID = "industry-theme.user-profile";
5522
+ const viewOrganizationsTool = {
5523
+ name: "view_user_organizations",
5524
+ description: "Switch to the organizations tab to view the user's GitHub organizations",
5525
+ inputs: {
5526
+ type: "object",
5527
+ properties: {},
5528
+ required: []
5529
+ },
5530
+ outputs: {
5531
+ type: "object",
5532
+ properties: {
5533
+ success: { type: "boolean" },
5534
+ message: { type: "string" }
5535
+ }
5536
+ },
5537
+ tags: ["view", "organizations", "user"],
5538
+ tool_call_template: {
5539
+ call_template_type: "panel_event",
5540
+ event_type: `${PANEL_ID}:set-view`
5541
+ }
5542
+ };
5543
+ const viewStarredTool = {
5544
+ name: "view_user_starred",
5545
+ description: "Switch to the starred tab to view the user's starred GitHub repositories",
5546
+ inputs: {
5547
+ type: "object",
5548
+ properties: {},
5549
+ required: []
5550
+ },
5551
+ outputs: {
5552
+ type: "object",
5553
+ properties: {
5554
+ success: { type: "boolean" },
5555
+ message: { type: "string" }
5556
+ }
5557
+ },
5558
+ tags: ["view", "starred", "repositories", "user"],
5559
+ tool_call_template: {
5560
+ call_template_type: "panel_event",
5561
+ event_type: `${PANEL_ID}:set-view`
5562
+ }
5563
+ };
5564
+ const selectOrganizationTool = {
5565
+ name: "select_organization",
5566
+ description: "Select a GitHub organization to view its details and repositories",
5567
+ inputs: {
5568
+ type: "object",
5569
+ properties: {
5570
+ orgLogin: {
5571
+ type: "string",
5572
+ description: "The organization login/username to select"
5573
+ }
5574
+ },
5575
+ required: ["orgLogin"]
5576
+ },
5577
+ outputs: {
5578
+ type: "object",
5579
+ properties: {
5580
+ success: { type: "boolean" },
5581
+ selectedOrganization: { type: "string" }
5582
+ }
5583
+ },
5584
+ tags: ["select", "organization", "navigation"],
5585
+ tool_call_template: {
5586
+ call_template_type: "panel_event",
5587
+ event_type: `${PANEL_ID}:select-organization`
5588
+ }
5589
+ };
5590
+ const selectRepositoryTool = {
5591
+ name: "select_starred_repository",
5592
+ description: "Select a starred repository to view its details",
5593
+ inputs: {
5594
+ type: "object",
5595
+ properties: {
5596
+ owner: {
5597
+ type: "string",
5598
+ description: "The repository owner (user or organization)"
5599
+ },
5600
+ repo: {
5601
+ type: "string",
5602
+ description: "The repository name"
5603
+ }
5604
+ },
5605
+ required: ["owner", "repo"]
5606
+ },
5607
+ outputs: {
5608
+ type: "object",
5609
+ properties: {
5610
+ success: { type: "boolean" },
5611
+ selectedRepository: { type: "string" }
5612
+ }
5613
+ },
5614
+ tags: ["select", "repository", "starred", "navigation"],
5615
+ tool_call_template: {
5616
+ call_template_type: "panel_event",
5617
+ event_type: `${PANEL_ID}:select-repository`
5618
+ }
5619
+ };
5620
+ const cloneRepositoryTool = {
5621
+ name: "clone_starred_repository",
5622
+ description: "Clone one of the user's starred repositories to your local machine",
5623
+ inputs: {
5624
+ type: "object",
5625
+ properties: {
5626
+ owner: {
5627
+ type: "string",
5628
+ description: "The repository owner"
5629
+ },
5630
+ repo: {
5631
+ type: "string",
5632
+ description: "The repository name"
5633
+ }
5634
+ },
5635
+ required: ["owner", "repo"]
5636
+ },
5637
+ outputs: {
5638
+ type: "object",
5639
+ properties: {
5640
+ success: { type: "boolean" },
5641
+ message: { type: "string" }
5642
+ }
5643
+ },
5644
+ tags: ["clone", "repository", "starred"],
5645
+ tool_call_template: {
5646
+ call_template_type: "panel_event",
5647
+ event_type: `${PANEL_ID}:clone-repository`
5648
+ }
5649
+ };
5650
+ const filterStarredTool = {
5651
+ name: "filter_starred_repositories",
5652
+ description: "Filter the starred repositories list by name, description, or language",
5653
+ inputs: {
5654
+ type: "object",
5655
+ properties: {
5656
+ filter: {
5657
+ type: "string",
5658
+ description: "Search term to filter repositories"
5659
+ }
5660
+ },
5661
+ required: ["filter"]
5662
+ },
5663
+ outputs: {
5664
+ type: "object",
5665
+ properties: {
5666
+ success: { type: "boolean" },
5667
+ message: { type: "string" }
5668
+ }
5669
+ },
5670
+ tags: ["filter", "search", "starred", "repositories"],
5671
+ tool_call_template: {
5672
+ call_template_type: "panel_event",
5673
+ event_type: `${PANEL_ID}:filter-starred`
5674
+ }
5675
+ };
5676
+ const userProfilePanelTools = [
5677
+ viewOrganizationsTool,
5678
+ viewStarredTool,
5679
+ selectOrganizationTool,
5680
+ selectRepositoryTool,
5681
+ cloneRepositoryTool,
5682
+ filterStarredTool
5683
+ ];
5684
+ const userProfilePanelToolsMetadata = {
5685
+ id: PANEL_ID,
5686
+ name: "User Profile Panel",
5687
+ description: "Tools for viewing user profiles, their organizations, and starred repositories",
5688
+ tools: userProfilePanelTools
5689
+ };
4586
5690
  const panels = [
4587
5691
  {
4588
5692
  metadata: {
@@ -4691,6 +5795,28 @@ const panels = [
4691
5795
  onUnmount: async (_context) => {
4692
5796
  console.log("GitHub Projects Panel unmounting");
4693
5797
  }
5798
+ },
5799
+ {
5800
+ metadata: {
5801
+ id: "industry-theme.user-profile",
5802
+ name: "User Profile",
5803
+ icon: "User",
5804
+ version: "0.1.0",
5805
+ author: "Industry Theme",
5806
+ description: "View user profiles, organizations, and starred repositories",
5807
+ slices: ["userProfile"],
5808
+ tools: userProfilePanelTools
5809
+ },
5810
+ component: UserProfilePanel,
5811
+ onMount: async (context) => {
5812
+ console.log("User Profile Panel mounted");
5813
+ if (context.hasSlice("userProfile") && !context.isSliceLoading("userProfile")) {
5814
+ await context.refresh(void 0, "userProfile");
5815
+ }
5816
+ },
5817
+ onUnmount: async (_context) => {
5818
+ console.log("User Profile Panel unmounting");
5819
+ }
4694
5820
  }
4695
5821
  ];
4696
5822
  const onPackageLoad = async () => {
@@ -4709,16 +5835,20 @@ export {
4709
5835
  LocalProjectsPanel,
4710
5836
  LocalProjectsPanelPreview,
4711
5837
  RepositoryAvatar,
5838
+ UserProfilePanel,
5839
+ UserProfilePanelPreview,
4712
5840
  WorkspaceCard,
4713
5841
  WorkspaceRepositoriesPanel,
4714
5842
  WorkspacesListPanel,
4715
5843
  WorkspacesListPanelPreview,
4716
5844
  cloneProjectRepositoryTool,
4717
5845
  cloneStarredRepositoryTool,
5846
+ cloneRepositoryTool as cloneUserRepositoryTool,
4718
5847
  createWorkspaceTool,
4719
5848
  filterProjectsTool as filterGitHubProjectsTool,
4720
5849
  filterProjectsTool$1 as filterProjectsTool,
4721
- filterStarredTool,
5850
+ filterStarredTool$1 as filterStarredTool,
5851
+ filterStarredTool as filterUserStarredTool,
4722
5852
  filterWorkspacesTool,
4723
5853
  githubProjectsPanelTools,
4724
5854
  githubProjectsPanelToolsMetadata,
@@ -4733,12 +5863,18 @@ export {
4733
5863
  openWorkspaceTool,
4734
5864
  panels,
4735
5865
  refreshWorkspaceTool,
5866
+ selectOrganizationTool,
4736
5867
  selectProjectRepositoryTool,
4737
5868
  selectProjectTool,
4738
- selectRepositoryTool,
5869
+ selectRepositoryTool$1 as selectRepositoryTool,
4739
5870
  selectStarredRepositoryTool,
5871
+ selectRepositoryTool as selectUserRepositoryTool,
4740
5872
  selectWorkspaceTool,
4741
5873
  toggleOwnerSectionTool,
5874
+ userProfilePanelTools,
5875
+ userProfilePanelToolsMetadata,
5876
+ viewOrganizationsTool,
5877
+ viewStarredTool,
4742
5878
  workspaceRepositoriesPanelTools,
4743
5879
  workspaceRepositoriesPanelToolsMetadata,
4744
5880
  workspacesListPanelTools,