@industry-theme/alexandria-panels 0.1.11 → 0.1.13

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
  });
@@ -2177,7 +2226,6 @@ const WorkspacesListPanelContent = ({
2177
2226
  const [workspaceRepositories, setWorkspaceRepositories] = useState(
2178
2227
  /* @__PURE__ */ new Map()
2179
2228
  );
2180
- const [isCreating, setIsCreating] = useState(false);
2181
2229
  const panelActions = actions;
2182
2230
  const workspacesSlice = context.getSlice("workspaces");
2183
2231
  const workspaces = useMemo(
@@ -2236,7 +2284,7 @@ const WorkspacesListPanelContent = ({
2236
2284
  (workspace) => {
2237
2285
  setSelectedWorkspaceId(workspace.id);
2238
2286
  events.emit(
2239
- createPanelEvent$2(`${PANEL_ID$7}:workspace:selected`, {
2287
+ createPanelEvent$3(`${PANEL_ID$9}:workspace:selected`, {
2240
2288
  workspaceId: workspace.id,
2241
2289
  workspace
2242
2290
  })
@@ -2253,7 +2301,7 @@ const WorkspacesListPanelContent = ({
2253
2301
  try {
2254
2302
  await panelActions.openWorkspace(workspace.id);
2255
2303
  events.emit(
2256
- createPanelEvent$2(`${PANEL_ID$7}:workspace:opened`, {
2304
+ createPanelEvent$3(`${PANEL_ID$9}:workspace:opened`, {
2257
2305
  workspaceId: workspace.id,
2258
2306
  workspace
2259
2307
  })
@@ -2277,7 +2325,7 @@ const WorkspacesListPanelContent = ({
2277
2325
  try {
2278
2326
  await panelActions.deleteWorkspace(workspace.id);
2279
2327
  events.emit(
2280
- createPanelEvent$2(`${PANEL_ID$7}:workspace:deleted`, {
2328
+ createPanelEvent$3(`${PANEL_ID$9}:workspace:deleted`, {
2281
2329
  workspaceId: workspace.id
2282
2330
  })
2283
2331
  );
@@ -2299,33 +2347,15 @@ const WorkspacesListPanelContent = ({
2299
2347
  },
2300
2348
  [panelActions, context]
2301
2349
  );
2302
- const handleCreateWorkspace = useCallback(async () => {
2303
- if (!panelActions.createWorkspace) {
2304
- console.warn("Create workspace action not available");
2305
- return;
2306
- }
2307
- const name = window.prompt("Enter workspace name:");
2308
- if (!(name == null ? void 0 : name.trim())) return;
2309
- try {
2310
- setIsCreating(true);
2311
- const workspace = await panelActions.createWorkspace(name.trim());
2312
- events.emit(
2313
- createPanelEvent$2(`${PANEL_ID$7}:workspace:created`, {
2314
- workspaceId: workspace.id,
2315
- workspace
2316
- })
2317
- );
2318
- await context.refresh("workspace", "workspaces");
2319
- } catch (error) {
2320
- console.error("Failed to create workspace:", error);
2321
- } finally {
2322
- setIsCreating(false);
2323
- }
2324
- }, [panelActions, events, context]);
2350
+ const handleCreateWorkspace = useCallback(() => {
2351
+ events.emit(
2352
+ createPanelEvent$3(`${PANEL_ID$9}:create-workspace-requested`, {})
2353
+ );
2354
+ }, [events]);
2325
2355
  useEffect(() => {
2326
2356
  const unsubscribers = [
2327
2357
  // Select workspace event from tools
2328
- events.on(`${PANEL_ID$7}:select-workspace`, (event) => {
2358
+ events.on(`${PANEL_ID$9}:select-workspace`, (event) => {
2329
2359
  var _a2;
2330
2360
  const workspaceId = (_a2 = event.payload) == null ? void 0 : _a2.workspaceId;
2331
2361
  if (workspaceId) {
@@ -2336,7 +2366,7 @@ const WorkspacesListPanelContent = ({
2336
2366
  }
2337
2367
  }),
2338
2368
  // Open workspace event from tools
2339
- events.on(`${PANEL_ID$7}:open-workspace`, (event) => {
2369
+ events.on(`${PANEL_ID$9}:open-workspace`, (event) => {
2340
2370
  var _a2;
2341
2371
  const workspaceId = (_a2 = event.payload) == null ? void 0 : _a2.workspaceId;
2342
2372
  if (workspaceId) {
@@ -2348,14 +2378,14 @@ const WorkspacesListPanelContent = ({
2348
2378
  }),
2349
2379
  // Create workspace event from tools
2350
2380
  events.on(
2351
- `${PANEL_ID$7}:create-workspace`,
2381
+ `${PANEL_ID$9}:create-workspace`,
2352
2382
  async (event) => {
2353
2383
  const { name, description } = event.payload || {};
2354
2384
  if (name && panelActions.createWorkspace) {
2355
2385
  try {
2356
2386
  const workspace = await panelActions.createWorkspace(name, { description });
2357
2387
  events.emit(
2358
- createPanelEvent$2(`${PANEL_ID$7}:workspace:created`, {
2388
+ createPanelEvent$3(`${PANEL_ID$9}:workspace:created`, {
2359
2389
  workspaceId: workspace.id,
2360
2390
  workspace
2361
2391
  })
@@ -2472,11 +2502,10 @@ const WorkspacesListPanelContent = ({
2472
2502
  children: /* @__PURE__ */ jsx(Search, { size: 16 })
2473
2503
  }
2474
2504
  ),
2475
- panelActions.createWorkspace && /* @__PURE__ */ jsx(
2505
+ /* @__PURE__ */ jsx(
2476
2506
  "button",
2477
2507
  {
2478
2508
  onClick: handleCreateWorkspace,
2479
- disabled: isCreating,
2480
2509
  style: {
2481
2510
  display: "flex",
2482
2511
  alignItems: "center",
@@ -2487,8 +2516,7 @@ const WorkspacesListPanelContent = ({
2487
2516
  border: `1px solid ${theme.colors.border}`,
2488
2517
  backgroundColor: theme.colors.primary,
2489
2518
  color: theme.colors.background,
2490
- cursor: isCreating ? "not-allowed" : "pointer",
2491
- opacity: isCreating ? 0.6 : 1,
2519
+ cursor: "pointer",
2492
2520
  transition: "all 0.15s ease"
2493
2521
  },
2494
2522
  title: "Create new workspace",
@@ -2970,10 +2998,10 @@ function formatNumber(num) {
2970
2998
  }
2971
2999
  return num.toString();
2972
3000
  }
2973
- const PANEL_ID$6 = "industry-theme.github-starred";
2974
- const createPanelEvent$1 = (type, payload) => ({
3001
+ const PANEL_ID$8 = "industry-theme.github-starred";
3002
+ const createPanelEvent$2 = (type, payload) => ({
2975
3003
  type,
2976
- source: PANEL_ID$6,
3004
+ source: PANEL_ID$8,
2977
3005
  timestamp: Date.now(),
2978
3006
  payload
2979
3007
  });
@@ -3062,7 +3090,7 @@ const GitHubStarredPanelContent = ({
3062
3090
  if (panelActions.cloneRepository) {
3063
3091
  await panelActions.cloneRepository(repo);
3064
3092
  events.emit(
3065
- createPanelEvent$1(`${PANEL_ID$6}:repository-cloned`, {
3093
+ createPanelEvent$2(`${PANEL_ID$8}:repository-cloned`, {
3066
3094
  repository: repo
3067
3095
  })
3068
3096
  );
@@ -3082,7 +3110,7 @@ const GitHubStarredPanelContent = ({
3082
3110
  (repo) => {
3083
3111
  setSelectedRepo(repo);
3084
3112
  events.emit(
3085
- createPanelEvent$1(`${PANEL_ID$6}:repository-selected`, { repository: repo })
3113
+ createPanelEvent$2(`${PANEL_ID$8}:repository-selected`, { repository: repo })
3086
3114
  );
3087
3115
  },
3088
3116
  [events]
@@ -3094,11 +3122,11 @@ const GitHubStarredPanelContent = ({
3094
3122
  }, [panelActions]);
3095
3123
  useEffect(() => {
3096
3124
  const unsubscribers = [
3097
- events.on(`${PANEL_ID$6}:filter`, (event) => {
3125
+ events.on(`${PANEL_ID$8}:filter`, (event) => {
3098
3126
  var _a2;
3099
3127
  setFilter(((_a2 = event.payload) == null ? void 0 : _a2.filter) || "");
3100
3128
  }),
3101
- events.on(`${PANEL_ID$6}:select-repository`, (event) => {
3129
+ events.on(`${PANEL_ID$8}:select-repository`, (event) => {
3102
3130
  var _a2;
3103
3131
  const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
3104
3132
  if (identifier) {
@@ -3110,7 +3138,7 @@ const GitHubStarredPanelContent = ({
3110
3138
  }
3111
3139
  }
3112
3140
  }),
3113
- events.on(`${PANEL_ID$6}:clone-repository`, (event) => {
3141
+ events.on(`${PANEL_ID$8}:clone-repository`, (event) => {
3114
3142
  var _a2;
3115
3143
  const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
3116
3144
  if (identifier) {
@@ -3443,10 +3471,10 @@ const GitHubStarredPanelPreview = () => {
3443
3471
  }
3444
3472
  );
3445
3473
  };
3446
- const PANEL_ID$5 = "industry-theme.github-projects";
3447
- const createPanelEvent = (type, payload) => ({
3474
+ const PANEL_ID$7 = "industry-theme.github-projects";
3475
+ const createPanelEvent$1 = (type, payload) => ({
3448
3476
  type,
3449
- source: PANEL_ID$5,
3477
+ source: PANEL_ID$7,
3450
3478
  timestamp: Date.now(),
3451
3479
  payload
3452
3480
  });
@@ -3569,7 +3597,7 @@ const GitHubProjectsPanelContent = ({
3569
3597
  if (panelActions.cloneRepository) {
3570
3598
  await panelActions.cloneRepository(repo);
3571
3599
  events.emit(
3572
- createPanelEvent(`${PANEL_ID$5}:repository-cloned`, {
3600
+ createPanelEvent$1(`${PANEL_ID$7}:repository-cloned`, {
3573
3601
  repository: repo
3574
3602
  })
3575
3603
  );
@@ -3589,7 +3617,7 @@ const GitHubProjectsPanelContent = ({
3589
3617
  (repo) => {
3590
3618
  setSelectedRepo(repo);
3591
3619
  events.emit(
3592
- createPanelEvent(`${PANEL_ID$5}:repository-selected`, { repository: repo })
3620
+ createPanelEvent$1(`${PANEL_ID$7}:repository-selected`, { repository: repo })
3593
3621
  );
3594
3622
  },
3595
3623
  [events]
@@ -3612,18 +3640,18 @@ const GitHubProjectsPanelContent = ({
3612
3640
  }, []);
3613
3641
  useEffect(() => {
3614
3642
  const unsubscribers = [
3615
- events.on(`${PANEL_ID$5}:filter`, (event) => {
3643
+ events.on(`${PANEL_ID$7}:filter`, (event) => {
3616
3644
  var _a2;
3617
3645
  setFilter(((_a2 = event.payload) == null ? void 0 : _a2.filter) || "");
3618
3646
  }),
3619
- events.on(`${PANEL_ID$5}:toggle-section`, (event) => {
3647
+ events.on(`${PANEL_ID$7}:toggle-section`, (event) => {
3620
3648
  var _a2;
3621
3649
  const owner = (_a2 = event.payload) == null ? void 0 : _a2.owner;
3622
3650
  if (owner) {
3623
3651
  toggleSection(owner);
3624
3652
  }
3625
3653
  }),
3626
- events.on(`${PANEL_ID$5}:select-repository`, (event) => {
3654
+ events.on(`${PANEL_ID$7}:select-repository`, (event) => {
3627
3655
  var _a2;
3628
3656
  const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
3629
3657
  if (identifier) {
@@ -3635,7 +3663,7 @@ const GitHubProjectsPanelContent = ({
3635
3663
  }
3636
3664
  }
3637
3665
  }),
3638
- events.on(`${PANEL_ID$5}:clone-repository`, (event) => {
3666
+ events.on(`${PANEL_ID$7}:clone-repository`, (event) => {
3639
3667
  var _a2;
3640
3668
  const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
3641
3669
  if (identifier) {
@@ -4079,127 +4107,1013 @@ const GitHubProjectsPanelPreview = () => {
4079
4107
  }
4080
4108
  );
4081
4109
  };
4082
- const PANEL_ID$4 = "industry-theme.local-projects";
4083
- const filterProjectsTool$1 = {
4084
- name: "filter_projects",
4085
- description: "Filter the local projects list by name, owner, or path",
4086
- inputs: {
4087
- type: "object",
4088
- properties: {
4089
- filter: {
4090
- type: "string",
4091
- description: "Search term to filter projects (matches name, owner, or path)"
4092
- }
4093
- },
4094
- required: ["filter"]
4095
- },
4096
- outputs: {
4097
- type: "object",
4098
- properties: {
4099
- success: { type: "boolean" },
4100
- message: { type: "string" }
4101
- }
4102
- },
4103
- tags: ["filter", "search", "projects"],
4104
- tool_call_template: {
4105
- call_template_type: "panel_event",
4106
- event_type: `${PANEL_ID$4}:filter`
4107
- }
4108
- };
4109
- const selectProjectTool = {
4110
- name: "select_project",
4111
- description: "Select a project by name or path to view its details",
4112
- inputs: {
4113
- type: "object",
4114
- properties: {
4115
- identifier: {
4116
- type: "string",
4117
- description: "Project name or full path to select"
4118
- }
4119
- },
4120
- required: ["identifier"]
4121
- },
4122
- outputs: {
4123
- type: "object",
4124
- properties: {
4125
- success: { type: "boolean" },
4126
- selectedProject: { type: "string" }
4127
- }
4128
- },
4129
- tags: ["select", "project", "navigation"],
4130
- tool_call_template: {
4131
- call_template_type: "panel_event",
4132
- event_type: `${PANEL_ID$4}:select-repository`
4133
- }
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
+ });
4134
4123
  };
4135
- const openProjectTool = {
4136
- name: "open_project",
4137
- description: "Open a local project in the development workspace",
4138
- inputs: {
4139
- type: "object",
4140
- properties: {
4141
- identifier: {
4142
- type: "string",
4143
- description: "Project name or full path to open"
4144
- }
4145
- },
4146
- required: ["identifier"]
4147
- },
4148
- outputs: {
4149
- type: "object",
4150
- properties: {
4151
- success: { type: "boolean" },
4152
- message: { type: "string" }
4153
- }
4154
- },
4155
- tags: ["open", "project", "workspace"],
4156
- tool_call_template: {
4157
- call_template_type: "panel_event",
4158
- 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";
4159
4133
  }
4160
4134
  };
4161
- const localProjectsPanelTools = [
4162
- filterProjectsTool$1,
4163
- selectProjectTool,
4164
- openProjectTool
4165
- ];
4166
- const localProjectsPanelToolsMetadata = {
4167
- id: PANEL_ID$4,
4168
- name: "Local Projects Panel",
4169
- description: "Tools for browsing and managing local Alexandria repositories",
4170
- tools: localProjectsPanelTools
4171
- };
4172
- const PANEL_ID$3 = "industry-theme.workspace-repositories";
4173
- const selectRepositoryTool = {
4174
- name: "select_workspace_repository",
4175
- description: "Selects a repository in the workspace panel",
4176
- inputs: {
4177
- type: "object",
4178
- properties: {
4179
- repositoryPath: {
4180
- type: "string",
4181
- description: "Path to the repository to select"
4182
- }
4183
- },
4184
- required: ["repositoryPath"]
4185
- },
4186
- outputs: {
4187
- type: "object",
4188
- properties: {
4189
- success: { type: "boolean" },
4190
- 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
+ ]
4191
4199
  }
4192
- },
4193
- tags: ["workspace", "repository", "select"],
4194
- tool_call_template: {
4195
- call_template_type: "panel_event",
4196
- event_type: `${PANEL_ID$3}:select-repository`
4197
- }
4200
+ );
4198
4201
  };
4199
- const refreshWorkspaceTool = {
4200
- name: "refresh_workspace",
4201
- description: "Refreshes the workspace repositories list",
4202
- inputs: {
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: {
4203
5117
  type: "object",
4204
5118
  properties: {
4205
5119
  force: {
@@ -4218,7 +5132,7 @@ const refreshWorkspaceTool = {
4218
5132
  tags: ["workspace", "refresh"],
4219
5133
  tool_call_template: {
4220
5134
  call_template_type: "panel_event",
4221
- event_type: `${PANEL_ID$3}:refresh-workspace`
5135
+ event_type: `${PANEL_ID$4}:refresh-workspace`
4222
5136
  }
4223
5137
  };
4224
5138
  const openRepositoryTool = {
@@ -4244,21 +5158,21 @@ const openRepositoryTool = {
4244
5158
  tags: ["workspace", "repository", "open"],
4245
5159
  tool_call_template: {
4246
5160
  call_template_type: "panel_event",
4247
- event_type: `${PANEL_ID$3}:open-repository`
5161
+ event_type: `${PANEL_ID$4}:open-repository`
4248
5162
  }
4249
5163
  };
4250
5164
  const workspaceRepositoriesPanelTools = [
4251
- selectRepositoryTool,
5165
+ selectRepositoryTool$1,
4252
5166
  refreshWorkspaceTool,
4253
5167
  openRepositoryTool
4254
5168
  ];
4255
5169
  const workspaceRepositoriesPanelToolsMetadata = {
4256
- id: PANEL_ID$3,
5170
+ id: PANEL_ID$4,
4257
5171
  name: "Workspace Repositories Panel",
4258
5172
  description: "Tools provided by the workspace repositories panel",
4259
5173
  tools: workspaceRepositoriesPanelTools
4260
5174
  };
4261
- const PANEL_ID$2 = "industry-theme.workspaces-list";
5175
+ const PANEL_ID$3 = "industry-theme.workspaces-list";
4262
5176
  const filterWorkspacesTool = {
4263
5177
  name: "filter_workspaces",
4264
5178
  description: "Filter the workspaces list by workspace name, description, or repository names within workspaces",
@@ -4282,7 +5196,7 @@ const filterWorkspacesTool = {
4282
5196
  tags: ["filter", "search", "workspaces"],
4283
5197
  tool_call_template: {
4284
5198
  call_template_type: "panel_event",
4285
- event_type: `${PANEL_ID$2}:filter`
5199
+ event_type: `${PANEL_ID$3}:filter`
4286
5200
  }
4287
5201
  };
4288
5202
  const selectWorkspaceTool = {
@@ -4308,7 +5222,7 @@ const selectWorkspaceTool = {
4308
5222
  tags: ["select", "workspace", "navigation"],
4309
5223
  tool_call_template: {
4310
5224
  call_template_type: "panel_event",
4311
- event_type: `${PANEL_ID$2}:select-workspace`
5225
+ event_type: `${PANEL_ID$3}:select-workspace`
4312
5226
  }
4313
5227
  };
4314
5228
  const openWorkspaceTool = {
@@ -4334,7 +5248,7 @@ const openWorkspaceTool = {
4334
5248
  tags: ["open", "workspace", "window"],
4335
5249
  tool_call_template: {
4336
5250
  call_template_type: "panel_event",
4337
- event_type: `${PANEL_ID$2}:open-workspace`
5251
+ event_type: `${PANEL_ID$3}:open-workspace`
4338
5252
  }
4339
5253
  };
4340
5254
  const createWorkspaceTool = {
@@ -4365,7 +5279,7 @@ const createWorkspaceTool = {
4365
5279
  tags: ["create", "workspace", "new"],
4366
5280
  tool_call_template: {
4367
5281
  call_template_type: "panel_event",
4368
- event_type: `${PANEL_ID$2}:create-workspace`
5282
+ event_type: `${PANEL_ID$3}:create-workspace`
4369
5283
  }
4370
5284
  };
4371
5285
  const workspacesListPanelTools = [
@@ -4375,13 +5289,13 @@ const workspacesListPanelTools = [
4375
5289
  createWorkspaceTool
4376
5290
  ];
4377
5291
  const workspacesListPanelToolsMetadata = {
4378
- id: PANEL_ID$2,
5292
+ id: PANEL_ID$3,
4379
5293
  name: "Workspaces List Panel",
4380
5294
  description: "Tools for browsing and managing workspaces",
4381
5295
  tools: workspacesListPanelTools
4382
5296
  };
4383
- const PANEL_ID$1 = "industry-theme.github-starred";
4384
- const filterStarredTool = {
5297
+ const PANEL_ID$2 = "industry-theme.github-starred";
5298
+ const filterStarredTool$1 = {
4385
5299
  name: "filter_starred_repositories",
4386
5300
  description: "Filter the starred repositories list by repository name, owner, language, or description",
4387
5301
  inputs: {
@@ -4404,7 +5318,7 @@ const filterStarredTool = {
4404
5318
  tags: ["filter", "search", "starred", "github"],
4405
5319
  tool_call_template: {
4406
5320
  call_template_type: "panel_event",
4407
- event_type: `${PANEL_ID$1}:filter`
5321
+ event_type: `${PANEL_ID$2}:filter`
4408
5322
  }
4409
5323
  };
4410
5324
  const selectStarredRepositoryTool = {
@@ -4434,7 +5348,7 @@ const selectStarredRepositoryTool = {
4434
5348
  tags: ["select", "starred", "github", "repository"],
4435
5349
  tool_call_template: {
4436
5350
  call_template_type: "panel_event",
4437
- event_type: `${PANEL_ID$1}:select-repository`
5351
+ event_type: `${PANEL_ID$2}:select-repository`
4438
5352
  }
4439
5353
  };
4440
5354
  const cloneStarredRepositoryTool = {
@@ -4464,21 +5378,21 @@ const cloneStarredRepositoryTool = {
4464
5378
  tags: ["clone", "starred", "github", "repository"],
4465
5379
  tool_call_template: {
4466
5380
  call_template_type: "panel_event",
4467
- event_type: `${PANEL_ID$1}:clone-repository`
5381
+ event_type: `${PANEL_ID$2}:clone-repository`
4468
5382
  }
4469
5383
  };
4470
5384
  const githubStarredPanelTools = [
4471
- filterStarredTool,
5385
+ filterStarredTool$1,
4472
5386
  selectStarredRepositoryTool,
4473
5387
  cloneStarredRepositoryTool
4474
5388
  ];
4475
5389
  const githubStarredPanelToolsMetadata = {
4476
- id: PANEL_ID$1,
5390
+ id: PANEL_ID$2,
4477
5391
  name: "GitHub Starred Panel",
4478
5392
  description: "Tools for browsing and managing starred GitHub repositories",
4479
5393
  tools: githubStarredPanelTools
4480
5394
  };
4481
- const PANEL_ID = "industry-theme.github-projects";
5395
+ const PANEL_ID$1 = "industry-theme.github-projects";
4482
5396
  const filterProjectsTool = {
4483
5397
  name: "filter_github_projects",
4484
5398
  description: "Filter the GitHub projects list by repository name, owner, language, or description",
@@ -4502,7 +5416,7 @@ const filterProjectsTool = {
4502
5416
  tags: ["filter", "search", "projects", "github"],
4503
5417
  tool_call_template: {
4504
5418
  call_template_type: "panel_event",
4505
- event_type: `${PANEL_ID}:filter`
5419
+ event_type: `${PANEL_ID$1}:filter`
4506
5420
  }
4507
5421
  };
4508
5422
  const toggleOwnerSectionTool = {
@@ -4529,7 +5443,7 @@ const toggleOwnerSectionTool = {
4529
5443
  tags: ["toggle", "section", "projects", "github"],
4530
5444
  tool_call_template: {
4531
5445
  call_template_type: "panel_event",
4532
- event_type: `${PANEL_ID}:toggle-section`
5446
+ event_type: `${PANEL_ID$1}:toggle-section`
4533
5447
  }
4534
5448
  };
4535
5449
  const selectProjectRepositoryTool = {
@@ -4559,7 +5473,7 @@ const selectProjectRepositoryTool = {
4559
5473
  tags: ["select", "projects", "github", "repository"],
4560
5474
  tool_call_template: {
4561
5475
  call_template_type: "panel_event",
4562
- event_type: `${PANEL_ID}:select-repository`
5476
+ event_type: `${PANEL_ID$1}:select-repository`
4563
5477
  }
4564
5478
  };
4565
5479
  const cloneProjectRepositoryTool = {
@@ -4589,7 +5503,7 @@ const cloneProjectRepositoryTool = {
4589
5503
  tags: ["clone", "projects", "github", "repository"],
4590
5504
  tool_call_template: {
4591
5505
  call_template_type: "panel_event",
4592
- event_type: `${PANEL_ID}:clone-repository`
5506
+ event_type: `${PANEL_ID$1}:clone-repository`
4593
5507
  }
4594
5508
  };
4595
5509
  const githubProjectsPanelTools = [
@@ -4599,11 +5513,180 @@ const githubProjectsPanelTools = [
4599
5513
  cloneProjectRepositoryTool
4600
5514
  ];
4601
5515
  const githubProjectsPanelToolsMetadata = {
4602
- id: PANEL_ID,
5516
+ id: PANEL_ID$1,
4603
5517
  name: "GitHub Projects Panel",
4604
5518
  description: "Tools for browsing and managing your GitHub repositories and organization repositories",
4605
5519
  tools: githubProjectsPanelTools
4606
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
+ };
4607
5690
  const panels = [
4608
5691
  {
4609
5692
  metadata: {
@@ -4712,6 +5795,28 @@ const panels = [
4712
5795
  onUnmount: async (_context) => {
4713
5796
  console.log("GitHub Projects Panel unmounting");
4714
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
+ }
4715
5820
  }
4716
5821
  ];
4717
5822
  const onPackageLoad = async () => {
@@ -4730,16 +5835,20 @@ export {
4730
5835
  LocalProjectsPanel,
4731
5836
  LocalProjectsPanelPreview,
4732
5837
  RepositoryAvatar,
5838
+ UserProfilePanel,
5839
+ UserProfilePanelPreview,
4733
5840
  WorkspaceCard,
4734
5841
  WorkspaceRepositoriesPanel,
4735
5842
  WorkspacesListPanel,
4736
5843
  WorkspacesListPanelPreview,
4737
5844
  cloneProjectRepositoryTool,
4738
5845
  cloneStarredRepositoryTool,
5846
+ cloneRepositoryTool as cloneUserRepositoryTool,
4739
5847
  createWorkspaceTool,
4740
5848
  filterProjectsTool as filterGitHubProjectsTool,
4741
5849
  filterProjectsTool$1 as filterProjectsTool,
4742
- filterStarredTool,
5850
+ filterStarredTool$1 as filterStarredTool,
5851
+ filterStarredTool as filterUserStarredTool,
4743
5852
  filterWorkspacesTool,
4744
5853
  githubProjectsPanelTools,
4745
5854
  githubProjectsPanelToolsMetadata,
@@ -4754,12 +5863,18 @@ export {
4754
5863
  openWorkspaceTool,
4755
5864
  panels,
4756
5865
  refreshWorkspaceTool,
5866
+ selectOrganizationTool,
4757
5867
  selectProjectRepositoryTool,
4758
5868
  selectProjectTool,
4759
- selectRepositoryTool,
5869
+ selectRepositoryTool$1 as selectRepositoryTool,
4760
5870
  selectStarredRepositoryTool,
5871
+ selectRepositoryTool as selectUserRepositoryTool,
4761
5872
  selectWorkspaceTool,
4762
5873
  toggleOwnerSectionTool,
5874
+ userProfilePanelTools,
5875
+ userProfilePanelToolsMetadata,
5876
+ viewOrganizationsTool,
5877
+ viewStarredTool,
4763
5878
  workspaceRepositoriesPanelTools,
4764
5879
  workspaceRepositoriesPanelToolsMetadata,
4765
5880
  workspacesListPanelTools,