@industry-theme/alexandria-panels 0.1.33 → 0.1.35

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$B = [
143
+ const __iconNode$z = [
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,71 +153,71 @@ const __iconNode$B = [
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$B);
156
+ const Building2 = createLucideIcon("building-2", __iconNode$z);
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$A = [
163
+ const __iconNode$y = [
164
164
  ["path", { d: "M8 2v4", key: "1cmpym" }],
165
165
  ["path", { d: "M16 2v4", key: "4m81vk" }],
166
166
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
167
167
  ["path", { d: "M3 10h18", key: "8toen8" }]
168
168
  ];
169
- const Calendar = createLucideIcon("calendar", __iconNode$A);
169
+ const Calendar = createLucideIcon("calendar", __iconNode$y);
170
170
  /**
171
171
  * @license lucide-react v0.552.0 - ISC
172
172
  *
173
173
  * This source code is licensed under the ISC license.
174
174
  * See the LICENSE file in the root directory of this source tree.
175
175
  */
176
- const __iconNode$z = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
177
- const Check = createLucideIcon("check", __iconNode$z);
176
+ const __iconNode$x = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
177
+ const Check = createLucideIcon("check", __iconNode$x);
178
178
  /**
179
179
  * @license lucide-react v0.552.0 - ISC
180
180
  *
181
181
  * This source code is licensed under the ISC license.
182
182
  * See the LICENSE file in the root directory of this source tree.
183
183
  */
184
- const __iconNode$y = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
185
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$y);
184
+ const __iconNode$w = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
185
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$w);
186
186
  /**
187
187
  * @license lucide-react v0.552.0 - ISC
188
188
  *
189
189
  * This source code is licensed under the ISC license.
190
190
  * See the LICENSE file in the root directory of this source tree.
191
191
  */
192
- const __iconNode$x = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
193
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$x);
192
+ const __iconNode$v = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
193
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$v);
194
194
  /**
195
195
  * @license lucide-react v0.552.0 - ISC
196
196
  *
197
197
  * This source code is licensed under the ISC license.
198
198
  * See the LICENSE file in the root directory of this source tree.
199
199
  */
200
- const __iconNode$w = [
200
+ const __iconNode$u = [
201
201
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
202
202
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
203
203
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
204
204
  ];
205
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$w);
205
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$u);
206
206
  /**
207
207
  * @license lucide-react v0.552.0 - ISC
208
208
  *
209
209
  * This source code is licensed under the ISC license.
210
210
  * See the LICENSE file in the root directory of this source tree.
211
211
  */
212
- const __iconNode$v = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
213
- const Circle = createLucideIcon("circle", __iconNode$v);
212
+ const __iconNode$t = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
213
+ const Circle = createLucideIcon("circle", __iconNode$t);
214
214
  /**
215
215
  * @license lucide-react v0.552.0 - ISC
216
216
  *
217
217
  * This source code is licensed under the ISC license.
218
218
  * See the LICENSE file in the root directory of this source tree.
219
219
  */
220
- const __iconNode$u = [
220
+ const __iconNode$s = [
221
221
  ["path", { d: "m2 2 20 20", key: "1ooewy" }],
222
222
  ["path", { d: "M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193", key: "yfwify" }],
223
223
  [
@@ -225,85 +225,71 @@ const __iconNode$u = [
225
225
  { d: "M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07", key: "jlfiyv" }
226
226
  ]
227
227
  ];
228
- const CloudOff = createLucideIcon("cloud-off", __iconNode$u);
228
+ const CloudOff = createLucideIcon("cloud-off", __iconNode$s);
229
229
  /**
230
230
  * @license lucide-react v0.552.0 - ISC
231
231
  *
232
232
  * This source code is licensed under the ISC license.
233
233
  * See the LICENSE file in the root directory of this source tree.
234
234
  */
235
- const __iconNode$t = [
235
+ const __iconNode$r = [
236
236
  ["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }]
237
237
  ];
238
- const Cloud = createLucideIcon("cloud", __iconNode$t);
238
+ const Cloud = createLucideIcon("cloud", __iconNode$r);
239
239
  /**
240
240
  * @license lucide-react v0.552.0 - ISC
241
241
  *
242
242
  * This source code is licensed under the ISC license.
243
243
  * See the LICENSE file in the root directory of this source tree.
244
244
  */
245
- const __iconNode$s = [
245
+ const __iconNode$q = [
246
246
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
247
247
  ["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" }]
248
248
  ];
249
- const Copy = createLucideIcon("copy", __iconNode$s);
249
+ const Copy = createLucideIcon("copy", __iconNode$q);
250
250
  /**
251
251
  * @license lucide-react v0.552.0 - ISC
252
252
  *
253
253
  * This source code is licensed under the ISC license.
254
254
  * See the LICENSE file in the root directory of this source tree.
255
255
  */
256
- const __iconNode$r = [
256
+ const __iconNode$p = [
257
257
  ["path", { d: "M10 12h.01", key: "1kxr2c" }],
258
258
  ["path", { d: "M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14", key: "36qu9e" }],
259
259
  ["path", { d: "M2 20h20", key: "owomy5" }]
260
260
  ];
261
- const DoorClosed = createLucideIcon("door-closed", __iconNode$r);
261
+ const DoorClosed = createLucideIcon("door-closed", __iconNode$p);
262
262
  /**
263
263
  * @license lucide-react v0.552.0 - ISC
264
264
  *
265
265
  * This source code is licensed under the ISC license.
266
266
  * See the LICENSE file in the root directory of this source tree.
267
267
  */
268
- const __iconNode$q = [
268
+ const __iconNode$o = [
269
269
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
270
270
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
271
271
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
272
272
  ];
273
- const Download = createLucideIcon("download", __iconNode$q);
273
+ const Download = createLucideIcon("download", __iconNode$o);
274
274
  /**
275
275
  * @license lucide-react v0.552.0 - ISC
276
276
  *
277
277
  * This source code is licensed under the ISC license.
278
278
  * See the LICENSE file in the root directory of this source tree.
279
279
  */
280
- const __iconNode$p = [
280
+ const __iconNode$n = [
281
281
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
282
282
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
283
283
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
284
284
  ];
285
- const ExternalLink = createLucideIcon("external-link", __iconNode$p);
286
- /**
287
- * @license lucide-react v0.552.0 - ISC
288
- *
289
- * This source code is licensed under the ISC license.
290
- * See the LICENSE file in the root directory of this source tree.
291
- */
292
- const __iconNode$o = [
293
- ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
294
- ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }],
295
- ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }],
296
- ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }],
297
- ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }]
298
- ];
299
- const Focus = createLucideIcon("focus", __iconNode$o);
285
+ const ExternalLink = createLucideIcon("external-link", __iconNode$n);
300
286
  /**
301
287
  * @license lucide-react v0.552.0 - ISC
302
288
  *
303
289
  * This source code is licensed under the ISC license.
304
290
  * See the LICENSE file in the root directory of this source tree.
305
291
  */
306
- const __iconNode$n = [
292
+ const __iconNode$m = [
307
293
  [
308
294
  "path",
309
295
  {
@@ -315,14 +301,14 @@ const __iconNode$n = [
315
301
  ["path", { d: "M18 19c-2.8 0-5-2.2-5-5v8", key: "pkpw2h" }],
316
302
  ["circle", { cx: "20", cy: "19", r: "2", key: "1obnsp" }]
317
303
  ];
318
- const FolderGit2 = createLucideIcon("folder-git-2", __iconNode$n);
304
+ const FolderGit2 = createLucideIcon("folder-git-2", __iconNode$m);
319
305
  /**
320
306
  * @license lucide-react v0.552.0 - ISC
321
307
  *
322
308
  * This source code is licensed under the ISC license.
323
309
  * See the LICENSE file in the root directory of this source tree.
324
310
  */
325
- const __iconNode$m = [
311
+ const __iconNode$l = [
326
312
  [
327
313
  "path",
328
314
  {
@@ -331,14 +317,14 @@ const __iconNode$m = [
331
317
  }
332
318
  ]
333
319
  ];
334
- const FolderOpen = createLucideIcon("folder-open", __iconNode$m);
320
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$l);
335
321
  /**
336
322
  * @license lucide-react v0.552.0 - ISC
337
323
  *
338
324
  * This source code is licensed under the ISC license.
339
325
  * See the LICENSE file in the root directory of this source tree.
340
326
  */
341
- const __iconNode$l = [
327
+ const __iconNode$k = [
342
328
  ["path", { d: "M12 10v6", key: "1bos4e" }],
343
329
  ["path", { d: "M9 13h6", key: "1uhe8q" }],
344
330
  [
@@ -349,14 +335,14 @@ const __iconNode$l = [
349
335
  }
350
336
  ]
351
337
  ];
352
- const FolderPlus = createLucideIcon("folder-plus", __iconNode$l);
338
+ const FolderPlus = createLucideIcon("folder-plus", __iconNode$k);
353
339
  /**
354
340
  * @license lucide-react v0.552.0 - ISC
355
341
  *
356
342
  * This source code is licensed under the ISC license.
357
343
  * See the LICENSE file in the root directory of this source tree.
358
344
  */
359
- const __iconNode$k = [
345
+ const __iconNode$j = [
360
346
  [
361
347
  "path",
362
348
  {
@@ -365,41 +351,41 @@ const __iconNode$k = [
365
351
  }
366
352
  ]
367
353
  ];
368
- const Folder = createLucideIcon("folder", __iconNode$k);
354
+ const Folder = createLucideIcon("folder", __iconNode$j);
369
355
  /**
370
356
  * @license lucide-react v0.552.0 - ISC
371
357
  *
372
358
  * This source code is licensed under the ISC license.
373
359
  * See the LICENSE file in the root directory of this source tree.
374
360
  */
375
- const __iconNode$j = [
361
+ const __iconNode$i = [
376
362
  ["line", { x1: "6", x2: "6", y1: "3", y2: "15", key: "17qcm7" }],
377
363
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
378
364
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
379
365
  ["path", { d: "M18 9a9 9 0 0 1-9 9", key: "n2h4wq" }]
380
366
  ];
381
- const GitBranch = createLucideIcon("git-branch", __iconNode$j);
367
+ const GitBranch = createLucideIcon("git-branch", __iconNode$i);
382
368
  /**
383
369
  * @license lucide-react v0.552.0 - ISC
384
370
  *
385
371
  * This source code is licensed under the ISC license.
386
372
  * See the LICENSE file in the root directory of this source tree.
387
373
  */
388
- const __iconNode$i = [
374
+ const __iconNode$h = [
389
375
  ["circle", { cx: "12", cy: "18", r: "3", key: "1mpf1b" }],
390
376
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
391
377
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
392
378
  ["path", { d: "M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9", key: "1uq4wg" }],
393
379
  ["path", { d: "M12 12v3", key: "158kv8" }]
394
380
  ];
395
- const GitFork = createLucideIcon("git-fork", __iconNode$i);
381
+ const GitFork = createLucideIcon("git-fork", __iconNode$h);
396
382
  /**
397
383
  * @license lucide-react v0.552.0 - ISC
398
384
  *
399
385
  * This source code is licensed under the ISC license.
400
386
  * See the LICENSE file in the root directory of this source tree.
401
387
  */
402
- const __iconNode$h = [
388
+ const __iconNode$g = [
403
389
  ["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
404
390
  [
405
391
  "path",
@@ -409,14 +395,14 @@ const __iconNode$h = [
409
395
  }
410
396
  ]
411
397
  ];
412
- const House = createLucideIcon("house", __iconNode$h);
398
+ const House = createLucideIcon("house", __iconNode$g);
413
399
  /**
414
400
  * @license lucide-react v0.552.0 - ISC
415
401
  *
416
402
  * This source code is licensed under the ISC license.
417
403
  * See the LICENSE file in the root directory of this source tree.
418
404
  */
419
- const __iconNode$g = [
405
+ const __iconNode$f = [
420
406
  [
421
407
  "path",
422
408
  {
@@ -439,44 +425,44 @@ const __iconNode$g = [
439
425
  }
440
426
  ]
441
427
  ];
442
- const Layers = createLucideIcon("layers", __iconNode$g);
428
+ const Layers = createLucideIcon("layers", __iconNode$f);
443
429
  /**
444
430
  * @license lucide-react v0.552.0 - ISC
445
431
  *
446
432
  * This source code is licensed under the ISC license.
447
433
  * See the LICENSE file in the root directory of this source tree.
448
434
  */
449
- const __iconNode$f = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
450
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$f);
435
+ const __iconNode$e = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
436
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$e);
451
437
  /**
452
438
  * @license lucide-react v0.552.0 - ISC
453
439
  *
454
440
  * This source code is licensed under the ISC license.
455
441
  * See the LICENSE file in the root directory of this source tree.
456
442
  */
457
- const __iconNode$e = [
443
+ const __iconNode$d = [
458
444
  ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
459
445
  ["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
460
446
  ];
461
- const Lock = createLucideIcon("lock", __iconNode$e);
447
+ const Lock = createLucideIcon("lock", __iconNode$d);
462
448
  /**
463
449
  * @license lucide-react v0.552.0 - ISC
464
450
  *
465
451
  * This source code is licensed under the ISC license.
466
452
  * See the LICENSE file in the root directory of this source tree.
467
453
  */
468
- const __iconNode$d = [
454
+ const __iconNode$c = [
469
455
  ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
470
456
  ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
471
457
  ];
472
- const Mail = createLucideIcon("mail", __iconNode$d);
458
+ const Mail = createLucideIcon("mail", __iconNode$c);
473
459
  /**
474
460
  * @license lucide-react v0.552.0 - ISC
475
461
  *
476
462
  * This source code is licensed under the ISC license.
477
463
  * See the LICENSE file in the root directory of this source tree.
478
464
  */
479
- const __iconNode$c = [
465
+ const __iconNode$b = [
480
466
  [
481
467
  "path",
482
468
  {
@@ -486,18 +472,7 @@ const __iconNode$c = [
486
472
  ],
487
473
  ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }]
488
474
  ];
489
- const MapPin = createLucideIcon("map-pin", __iconNode$c);
490
- /**
491
- * @license lucide-react v0.552.0 - ISC
492
- *
493
- * This source code is licensed under the ISC license.
494
- * See the LICENSE file in the root directory of this source tree.
495
- */
496
- const __iconNode$b = [
497
- ["path", { d: "M8 6L12 2L16 6", key: "1yvkyx" }],
498
- ["path", { d: "M12 2V22", key: "r89rzk" }]
499
- ];
500
- const MoveUp = createLucideIcon("move-up", __iconNode$b);
475
+ const MapPin = createLucideIcon("map-pin", __iconNode$b);
501
476
  /**
502
477
  * @license lucide-react v0.552.0 - ISC
503
478
  *
@@ -735,7 +710,7 @@ const LocalProjectCard = ({
735
710
  workspacePath,
736
711
  userHomePath
737
712
  }) => {
738
- var _a, _b, _c, _d, _e, _f;
713
+ var _a, _b, _c, _d;
739
714
  const { theme } = useTheme();
740
715
  const [isHovered, setIsHovered] = useState(false);
741
716
  const [copiedPath, setCopiedPath] = useState(false);
@@ -759,40 +734,6 @@ const LocalProjectCard = ({
759
734
  const handleDoubleClick = () => {
760
735
  onOpen == null ? void 0 : onOpen(entry);
761
736
  };
762
- const handleOpenClick = (e) => {
763
- e.stopPropagation();
764
- onOpen == null ? void 0 : onOpen(entry);
765
- };
766
- const handleRemoveClick = (e) => {
767
- e.stopPropagation();
768
- onRemove == null ? void 0 : onRemove(entry);
769
- };
770
- const handleAddToWorkspaceClick = (e) => {
771
- e.stopPropagation();
772
- onAddToWorkspace == null ? void 0 : onAddToWorkspace(entry);
773
- };
774
- const handleRemoveFromWorkspaceClick = async (e) => {
775
- e.stopPropagation();
776
- try {
777
- setIsRemoving(true);
778
- onRemoveFromWorkspace == null ? void 0 : onRemoveFromWorkspace(entry);
779
- } finally {
780
- setIsRemoving(false);
781
- }
782
- };
783
- const handleMoveToWorkspaceClick = async (e) => {
784
- e.stopPropagation();
785
- try {
786
- setIsMoving(true);
787
- onMoveToWorkspace == null ? void 0 : onMoveToWorkspace(entry);
788
- } finally {
789
- setIsMoving(false);
790
- }
791
- };
792
- const handleTrackClick = (e) => {
793
- e.stopPropagation();
794
- onTrack == null ? void 0 : onTrack(entry);
795
- };
796
737
  const handleCopyPath = async (e) => {
797
738
  e.stopPropagation();
798
739
  try {
@@ -803,220 +744,6 @@ const LocalProjectCard = ({
803
744
  console.error("Failed to copy path:", err);
804
745
  }
805
746
  };
806
- const actionButtonStyle = {
807
- display: "flex",
808
- alignItems: "center",
809
- justifyContent: "center",
810
- gap: "4px",
811
- flex: 1,
812
- height: "24px",
813
- padding: "0 8px",
814
- border: "none",
815
- borderRadius: "4px",
816
- backgroundColor: "transparent",
817
- color: theme.colors.textSecondary,
818
- cursor: "pointer",
819
- fontSize: `${theme.fontSizes[1]}px`,
820
- fontFamily: theme.fonts.body,
821
- transition: "all 0.15s ease"
822
- };
823
- const handleButtonHover = (e, isDestructive = false) => {
824
- if (isDestructive) {
825
- e.currentTarget.style.backgroundColor = `${theme.colors.error || "#ef4444"}15`;
826
- e.currentTarget.style.color = theme.colors.error || "#ef4444";
827
- } else {
828
- e.currentTarget.style.backgroundColor = theme.colors.backgroundTertiary;
829
- e.currentTarget.style.color = theme.colors.text;
830
- }
831
- };
832
- const handleButtonLeave = (e, defaultColor) => {
833
- e.currentTarget.style.backgroundColor = "transparent";
834
- e.currentTarget.style.color = defaultColor || theme.colors.textSecondary;
835
- };
836
- const renderActionButtons = () => {
837
- if (actionMode === "add-to-workspace") {
838
- return /* @__PURE__ */ jsxs(
839
- "button",
840
- {
841
- type: "button",
842
- onClick: handleAddToWorkspaceClick,
843
- disabled: isLoading,
844
- title: "Add to workspace",
845
- style: actionButtonStyle,
846
- onMouseEnter: (e) => handleButtonHover(e),
847
- onMouseLeave: (e) => handleButtonLeave(e),
848
- children: [
849
- isLoading ? /* @__PURE__ */ jsx(LoaderCircle, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ jsx(Plus, { size: 14 }),
850
- /* @__PURE__ */ jsx("span", { children: "Add" })
851
- ]
852
- }
853
- );
854
- }
855
- if (actionMode === "workspace") {
856
- return /* @__PURE__ */ jsxs(Fragment, { children: [
857
- isInWorkspaceDirectory === false && onMoveToWorkspace && /* @__PURE__ */ jsxs(
858
- "button",
859
- {
860
- type: "button",
861
- onClick: handleMoveToWorkspaceClick,
862
- disabled: isMoving,
863
- title: "Move to workspace directory",
864
- style: actionButtonStyle,
865
- onMouseEnter: (e) => handleButtonHover(e),
866
- onMouseLeave: (e) => handleButtonLeave(e),
867
- children: [
868
- isMoving ? /* @__PURE__ */ jsx(LoaderCircle, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ jsx(MoveUp, { size: 14 }),
869
- /* @__PURE__ */ jsx("span", { children: "Move" })
870
- ]
871
- }
872
- ),
873
- /* @__PURE__ */ jsxs(
874
- "button",
875
- {
876
- type: "button",
877
- onClick: handleCopyPath,
878
- title: copiedPath ? "Copied!" : `Copy path: ${entry.path}`,
879
- style: {
880
- ...actionButtonStyle,
881
- color: copiedPath ? theme.colors.success || "#10b981" : theme.colors.textSecondary
882
- },
883
- onMouseEnter: (e) => handleButtonHover(e),
884
- onMouseLeave: (e) => handleButtonLeave(e, copiedPath ? theme.colors.success || "#10b981" : void 0),
885
- children: [
886
- copiedPath ? /* @__PURE__ */ jsx(Check, { size: 14 }) : /* @__PURE__ */ jsx(Copy, { size: 14 }),
887
- /* @__PURE__ */ jsx("span", { children: copiedPath ? "Copied" : "Copy" })
888
- ]
889
- }
890
- ),
891
- /* @__PURE__ */ jsxs(
892
- "button",
893
- {
894
- type: "button",
895
- onClick: handleOpenClick,
896
- title: "Open repository",
897
- style: actionButtonStyle,
898
- onMouseEnter: (e) => handleButtonHover(e),
899
- onMouseLeave: (e) => handleButtonLeave(e),
900
- children: [
901
- /* @__PURE__ */ jsx(FolderOpen, { size: 14 }),
902
- /* @__PURE__ */ jsx("span", { children: "Open" })
903
- ]
904
- }
905
- ),
906
- onRemoveFromWorkspace && /* @__PURE__ */ jsxs(
907
- "button",
908
- {
909
- type: "button",
910
- onClick: handleRemoveFromWorkspaceClick,
911
- disabled: isRemoving,
912
- title: "Remove from workspace",
913
- style: actionButtonStyle,
914
- onMouseEnter: (e) => handleButtonHover(e, true),
915
- onMouseLeave: (e) => handleButtonLeave(e),
916
- children: [
917
- isRemoving ? /* @__PURE__ */ jsx(LoaderCircle, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ jsx(X, { size: 14 }),
918
- /* @__PURE__ */ jsx("span", { children: "Remove" })
919
- ]
920
- }
921
- )
922
- ] });
923
- }
924
- if (actionMode === "discovered") {
925
- return /* @__PURE__ */ jsxs(Fragment, { children: [
926
- /* @__PURE__ */ jsxs(
927
- "button",
928
- {
929
- type: "button",
930
- onClick: handleTrackClick,
931
- disabled: isLoading,
932
- title: "Track this repository",
933
- style: {
934
- ...actionButtonStyle,
935
- backgroundColor: theme.colors.primary,
936
- color: theme.colors.background
937
- },
938
- onMouseEnter: (e) => {
939
- e.currentTarget.style.opacity = "0.9";
940
- },
941
- onMouseLeave: (e) => {
942
- e.currentTarget.style.opacity = "1";
943
- },
944
- children: [
945
- isLoading ? /* @__PURE__ */ jsx(LoaderCircle, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ jsx(Plus, { size: 14 }),
946
- /* @__PURE__ */ jsx("span", { children: "Track" })
947
- ]
948
- }
949
- ),
950
- /* @__PURE__ */ jsxs(
951
- "button",
952
- {
953
- type: "button",
954
- onClick: handleOpenClick,
955
- title: "Open repository",
956
- style: actionButtonStyle,
957
- onMouseEnter: (e) => handleButtonHover(e),
958
- onMouseLeave: (e) => handleButtonLeave(e),
959
- children: [
960
- /* @__PURE__ */ jsx(FolderOpen, { size: 14 }),
961
- /* @__PURE__ */ jsx("span", { children: "Open" })
962
- ]
963
- }
964
- )
965
- ] });
966
- }
967
- return /* @__PURE__ */ jsxs(Fragment, { children: [
968
- /* @__PURE__ */ jsxs(
969
- "button",
970
- {
971
- type: "button",
972
- onClick: handleCopyPath,
973
- title: copiedPath ? "Copied!" : `Copy path: ${entry.path}`,
974
- style: {
975
- ...actionButtonStyle,
976
- color: copiedPath ? theme.colors.success || "#10b981" : theme.colors.textSecondary
977
- },
978
- onMouseEnter: (e) => handleButtonHover(e),
979
- onMouseLeave: (e) => handleButtonLeave(e, copiedPath ? theme.colors.success || "#10b981" : void 0),
980
- children: [
981
- copiedPath ? /* @__PURE__ */ jsx(Check, { size: 14 }) : /* @__PURE__ */ jsx(Copy, { size: 14 }),
982
- /* @__PURE__ */ jsx("span", { children: copiedPath ? "Copied" : "Copy" })
983
- ]
984
- }
985
- ),
986
- /* @__PURE__ */ jsxs(
987
- "button",
988
- {
989
- type: "button",
990
- onClick: handleOpenClick,
991
- title: windowState === "ready" ? "Focus window" : windowState === "opening" ? "Window is opening..." : "Open locally",
992
- disabled: windowState === "opening",
993
- style: actionButtonStyle,
994
- onMouseEnter: (e) => handleButtonHover(e),
995
- onMouseLeave: (e) => handleButtonLeave(e),
996
- children: [
997
- windowState === "ready" ? /* @__PURE__ */ jsx(Focus, { size: 14 }) : windowState === "opening" ? /* @__PURE__ */ jsx(LoaderCircle, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ jsx(FolderOpen, { size: 14 }),
998
- /* @__PURE__ */ jsx("span", { children: windowState === "ready" ? "Focus" : "Open" })
999
- ]
1000
- }
1001
- ),
1002
- actionMode === "default" && onRemove && /* @__PURE__ */ jsxs(
1003
- "button",
1004
- {
1005
- type: "button",
1006
- onClick: handleRemoveClick,
1007
- disabled: isLoading,
1008
- title: "Remove from local projects",
1009
- style: actionButtonStyle,
1010
- onMouseEnter: (e) => handleButtonHover(e, true),
1011
- onMouseLeave: (e) => handleButtonLeave(e),
1012
- children: [
1013
- isLoading ? /* @__PURE__ */ jsx(LoaderCircle, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ jsx(X, { size: 14 }),
1014
- /* @__PURE__ */ jsx("span", { children: "Remove" })
1015
- ]
1016
- }
1017
- )
1018
- ] });
1019
- };
1020
747
  const cardStyle = {
1021
748
  display: "flex",
1022
749
  flexDirection: "row",
@@ -1128,49 +855,54 @@ const LocalProjectCard = ({
1128
855
  /* @__PURE__ */ jsxs(
1129
856
  "div",
1130
857
  {
858
+ onClick: handleCopyPath,
1131
859
  style: {
1132
860
  display: "flex",
1133
861
  alignItems: "center",
862
+ gap: "6px",
1134
863
  minHeight: "24px",
1135
- position: "relative"
864
+ cursor: "pointer",
865
+ padding: "2px 0"
1136
866
  },
867
+ title: copiedPath ? "Copied!" : `Click to copy: ${entry.path}`,
1137
868
  children: [
1138
869
  /* @__PURE__ */ jsx(
1139
- "div",
870
+ "span",
1140
871
  {
1141
872
  style: {
1142
873
  flex: 1,
1143
874
  fontSize: `${theme.fontSizes[1]}px`,
1144
- color: theme.colors.textSecondary,
875
+ color: copiedPath ? theme.colors.success || "#10b981" : theme.colors.textSecondary,
1145
876
  lineHeight: 1.4,
1146
877
  whiteSpace: "nowrap",
1147
878
  overflow: "hidden",
1148
879
  textOverflow: "ellipsis",
1149
880
  minWidth: 0,
1150
- opacity: isHovered ? 0 : 1,
1151
- transition: "opacity 0.15s ease"
881
+ transition: "color 0.15s ease"
1152
882
  },
1153
- title: ((_e = entry.github) == null ? void 0 : _e.description) || displayPath,
1154
- children: ((_f = entry.github) == null ? void 0 : _f.description) || displayPath
883
+ children: copiedPath ? "✓ Copied!" : displayPath
1155
884
  }
1156
885
  ),
1157
- /* @__PURE__ */ jsx(
1158
- "div",
886
+ !copiedPath && /* @__PURE__ */ jsx(
887
+ Copy,
1159
888
  {
889
+ size: 12,
1160
890
  style: {
1161
- position: "absolute",
1162
- left: 0,
1163
- right: 0,
1164
- top: 0,
1165
- bottom: 0,
1166
- display: "flex",
1167
- alignItems: "center",
1168
- gap: "4px",
891
+ color: theme.colors.textSecondary,
892
+ flexShrink: 0,
1169
893
  opacity: isHovered ? 1 : 0,
1170
- pointerEvents: isHovered ? "auto" : "none",
1171
894
  transition: "opacity 0.15s ease"
1172
- },
1173
- children: renderActionButtons()
895
+ }
896
+ }
897
+ ),
898
+ copiedPath && /* @__PURE__ */ jsx(
899
+ Check,
900
+ {
901
+ size: 12,
902
+ style: {
903
+ color: theme.colors.success || "#10b981",
904
+ flexShrink: 0
905
+ }
1174
906
  }
1175
907
  )
1176
908
  ]
@@ -1206,13 +938,14 @@ const LocalProjectsPanelContent = ({
1206
938
  const [windowStates, setWindowStates] = useState(/* @__PURE__ */ new Map());
1207
939
  const [sortByOrg, setSortByOrg] = useState(false);
1208
940
  const handleToggleSearch = useCallback(() => {
941
+ if (defaultShowSearch) return;
1209
942
  setShowSearch((prev) => {
1210
943
  if (prev) {
1211
944
  setFilter("");
1212
945
  }
1213
946
  return !prev;
1214
947
  });
1215
- }, []);
948
+ }, [defaultShowSearch]);
1216
949
  const handleClearFilter = useCallback(() => {
1217
950
  setFilter("");
1218
951
  }, []);
@@ -1455,20 +1188,171 @@ const LocalProjectsPanelContent = ({
1455
1188
  ) });
1456
1189
  }
1457
1190
  return /* @__PURE__ */ jsxs("div", { className: "local-projects-panel", style: contentContainerStyle, children: [
1458
- /* @__PURE__ */ jsxs(
1191
+ /* @__PURE__ */ jsx(
1459
1192
  "div",
1460
1193
  {
1461
1194
  style: {
1462
1195
  position: "relative",
1463
1196
  height: "40px",
1464
1197
  minHeight: "40px",
1465
- padding: "0 16px",
1198
+ padding: defaultShowSearch && showSearch ? "0 16px 0 8px" : "0 16px",
1466
1199
  borderBottom: `1px solid ${theme.colors.border}`,
1467
1200
  display: "flex",
1468
1201
  alignItems: "center",
1469
1202
  boxSizing: "border-box"
1470
1203
  },
1471
- children: [
1204
+ children: defaultShowSearch && showSearch ? /* @__PURE__ */ jsxs(
1205
+ "div",
1206
+ {
1207
+ style: {
1208
+ display: "flex",
1209
+ alignItems: "center",
1210
+ gap: "8px",
1211
+ width: "100%"
1212
+ },
1213
+ children: [
1214
+ /* @__PURE__ */ jsxs("div", { style: { position: "relative", flex: 1, display: "flex", alignItems: "center" }, children: [
1215
+ /* @__PURE__ */ jsx(
1216
+ Search,
1217
+ {
1218
+ size: 16,
1219
+ color: theme.colors.textSecondary,
1220
+ style: {
1221
+ position: "absolute",
1222
+ left: "10px",
1223
+ pointerEvents: "none"
1224
+ }
1225
+ }
1226
+ ),
1227
+ /* @__PURE__ */ jsx(
1228
+ "input",
1229
+ {
1230
+ type: "text",
1231
+ className: "search-input",
1232
+ placeholder: "Filter local projects...",
1233
+ value: filter,
1234
+ onChange: (e) => setFilter(e.target.value),
1235
+ autoFocus: true,
1236
+ style: {
1237
+ width: "100%",
1238
+ padding: "6px 32px 6px 32px",
1239
+ fontSize: `${theme.fontSizes[1]}px`,
1240
+ color: theme.colors.text,
1241
+ backgroundColor: theme.colors.background,
1242
+ border: `1px solid ${theme.colors.border}`,
1243
+ borderRadius: "4px",
1244
+ outline: "none",
1245
+ fontFamily: theme.fonts.body,
1246
+ transition: "border-color 0.2s ease",
1247
+ ["--theme-primary"]: theme.colors.primary
1248
+ }
1249
+ }
1250
+ ),
1251
+ filter && /* @__PURE__ */ jsx(
1252
+ "button",
1253
+ {
1254
+ className: "clear-filter-button",
1255
+ onClick: handleClearFilter,
1256
+ style: {
1257
+ position: "absolute",
1258
+ right: "8px",
1259
+ background: "none",
1260
+ border: "none",
1261
+ cursor: "pointer",
1262
+ padding: "4px",
1263
+ display: "flex",
1264
+ alignItems: "center",
1265
+ justifyContent: "center",
1266
+ color: theme.colors.textSecondary,
1267
+ ["--theme-text"]: theme.colors.text
1268
+ },
1269
+ children: /* @__PURE__ */ jsx(X, { size: 16 })
1270
+ }
1271
+ )
1272
+ ] }),
1273
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
1274
+ /* @__PURE__ */ jsx(
1275
+ "button",
1276
+ {
1277
+ onClick: () => setSortByOrg(!sortByOrg),
1278
+ title: sortByOrg ? "Sort by: Last opened, then organization" : "Sort by: Last opened, then name",
1279
+ style: {
1280
+ padding: "4px 8px",
1281
+ height: "30px",
1282
+ borderRadius: "4px",
1283
+ border: `1px solid ${theme.colors.border}`,
1284
+ backgroundColor: theme.colors.backgroundSecondary,
1285
+ color: sortByOrg ? theme.colors.primary : theme.colors.textSecondary,
1286
+ cursor: "pointer",
1287
+ display: "flex",
1288
+ alignItems: "center",
1289
+ justifyContent: "center",
1290
+ transition: "all 0.15s",
1291
+ flexShrink: 0
1292
+ },
1293
+ children: sortByOrg ? /* @__PURE__ */ jsx(Building2, { size: 16 }) : /* @__PURE__ */ jsx(FolderGit2, { size: 16 })
1294
+ }
1295
+ ),
1296
+ /* @__PURE__ */ jsx(
1297
+ "button",
1298
+ {
1299
+ onClick: handleScanForRepos,
1300
+ disabled: isScanning,
1301
+ title: "Scan for repositories",
1302
+ style: {
1303
+ padding: "4px 8px",
1304
+ height: "30px",
1305
+ borderRadius: "4px",
1306
+ border: `1px solid ${theme.colors.border}`,
1307
+ backgroundColor: theme.colors.backgroundSecondary,
1308
+ color: theme.colors.textSecondary,
1309
+ cursor: isScanning ? "default" : "pointer",
1310
+ display: "flex",
1311
+ alignItems: "center",
1312
+ justifyContent: "center",
1313
+ opacity: isScanning ? 0.6 : 1,
1314
+ transition: "all 0.2s",
1315
+ flexShrink: 0
1316
+ },
1317
+ children: /* @__PURE__ */ jsx(
1318
+ RefreshCw,
1319
+ {
1320
+ size: 16,
1321
+ style: {
1322
+ animation: isScanning ? "spin 1s linear infinite" : "none"
1323
+ }
1324
+ }
1325
+ )
1326
+ }
1327
+ ),
1328
+ panelActions.selectDirectory && /* @__PURE__ */ jsx(
1329
+ "button",
1330
+ {
1331
+ onClick: handleAddProject,
1332
+ disabled: isAdding,
1333
+ title: "Add existing project",
1334
+ style: {
1335
+ padding: "4px 8px",
1336
+ height: "30px",
1337
+ borderRadius: "4px",
1338
+ border: "none",
1339
+ backgroundColor: theme.colors.primary,
1340
+ color: theme.colors.background,
1341
+ cursor: isAdding ? "default" : "pointer",
1342
+ display: "flex",
1343
+ alignItems: "center",
1344
+ justifyContent: "center",
1345
+ opacity: isAdding ? 0.6 : 1,
1346
+ transition: "opacity 0.2s",
1347
+ flexShrink: 0
1348
+ },
1349
+ children: /* @__PURE__ */ jsx(Plus, { size: 16 })
1350
+ }
1351
+ )
1352
+ ] })
1353
+ ]
1354
+ }
1355
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
1472
1356
  /* @__PURE__ */ jsxs(
1473
1357
  "div",
1474
1358
  {
@@ -1536,10 +1420,11 @@ const LocalProjectsPanelContent = ({
1536
1420
  onClick: () => setSortByOrg(!sortByOrg),
1537
1421
  title: sortByOrg ? "Sort by: Last opened, then organization" : "Sort by: Last opened, then name",
1538
1422
  style: {
1539
- padding: "4px",
1423
+ padding: "4px 8px",
1424
+ height: "30px",
1540
1425
  borderRadius: "4px",
1541
- border: `1px solid ${sortByOrg ? theme.colors.border : "transparent"}`,
1542
- backgroundColor: sortByOrg ? theme.colors.backgroundSecondary : "none",
1426
+ border: `1px solid ${theme.colors.border}`,
1427
+ backgroundColor: theme.colors.backgroundSecondary,
1543
1428
  color: sortByOrg ? theme.colors.primary : theme.colors.textSecondary,
1544
1429
  cursor: "pointer",
1545
1430
  display: "flex",
@@ -1558,7 +1443,8 @@ const LocalProjectsPanelContent = ({
1558
1443
  disabled: isScanning,
1559
1444
  title: "Scan for repositories",
1560
1445
  style: {
1561
- padding: "4px",
1446
+ padding: "4px 8px",
1447
+ height: "30px",
1562
1448
  borderRadius: "4px",
1563
1449
  border: `1px solid ${theme.colors.border}`,
1564
1450
  backgroundColor: theme.colors.backgroundSecondary,
@@ -1589,7 +1475,8 @@ const LocalProjectsPanelContent = ({
1589
1475
  disabled: isAdding,
1590
1476
  title: "Add existing project",
1591
1477
  style: {
1592
- padding: "4px",
1478
+ padding: "4px 8px",
1479
+ height: "30px",
1593
1480
  borderRadius: "4px",
1594
1481
  border: "none",
1595
1482
  backgroundColor: theme.colors.primary,
@@ -1609,7 +1496,7 @@ const LocalProjectsPanelContent = ({
1609
1496
  ]
1610
1497
  }
1611
1498
  ),
1612
- showSearch && /* @__PURE__ */ jsxs(
1499
+ showSearch && !defaultShowSearch && /* @__PURE__ */ jsxs(
1613
1500
  "div",
1614
1501
  {
1615
1502
  className: "search-overlay",
@@ -1707,7 +1594,7 @@ const LocalProjectsPanelContent = ({
1707
1594
  ]
1708
1595
  }
1709
1596
  )
1710
- ]
1597
+ ] })
1711
1598
  }
1712
1599
  ),
1713
1600
  /* @__PURE__ */ jsxs(
@@ -2675,6 +2562,15 @@ const WorkspacesListPanelContent = ({
2675
2562
  const [workspaceRepositories, setWorkspaceRepositories] = useState(
2676
2563
  /* @__PURE__ */ new Map()
2677
2564
  );
2565
+ const handleToggleSearch = useCallback(() => {
2566
+ if (defaultShowSearch) return;
2567
+ setShowSearchBox((prev) => {
2568
+ if (prev) {
2569
+ setSearchQuery("");
2570
+ }
2571
+ return !prev;
2572
+ });
2573
+ }, [defaultShowSearch]);
2678
2574
  const panelActions = actions;
2679
2575
  const workspacesSlice = context.getSlice("workspaces");
2680
2576
  const workspaces = useMemo(
@@ -2899,20 +2795,109 @@ const WorkspacesListPanelContent = ({
2899
2795
  ) });
2900
2796
  }
2901
2797
  return /* @__PURE__ */ jsxs("div", { style: contentContainerStyle, children: [
2902
- /* @__PURE__ */ jsxs(
2798
+ /* @__PURE__ */ jsx(
2903
2799
  "div",
2904
2800
  {
2905
2801
  style: {
2906
2802
  position: "relative",
2907
2803
  height: "40px",
2908
2804
  minHeight: "40px",
2909
- padding: "0 16px",
2805
+ padding: defaultShowSearch && showSearchBox ? "0 16px 0 8px" : "0 16px",
2910
2806
  borderBottom: `1px solid ${theme.colors.border}`,
2911
2807
  display: "flex",
2912
2808
  alignItems: "center",
2913
2809
  boxSizing: "border-box"
2914
2810
  },
2915
- children: [
2811
+ children: defaultShowSearch && showSearchBox ? /* @__PURE__ */ jsxs(
2812
+ "div",
2813
+ {
2814
+ style: {
2815
+ display: "flex",
2816
+ alignItems: "center",
2817
+ gap: "8px",
2818
+ width: "100%"
2819
+ },
2820
+ children: [
2821
+ /* @__PURE__ */ jsxs("div", { style: { position: "relative", flex: 1, display: "flex", alignItems: "center" }, children: [
2822
+ /* @__PURE__ */ jsx(
2823
+ Search,
2824
+ {
2825
+ size: 16,
2826
+ color: theme.colors.textSecondary,
2827
+ style: {
2828
+ position: "absolute",
2829
+ left: "10px",
2830
+ pointerEvents: "none"
2831
+ }
2832
+ }
2833
+ ),
2834
+ /* @__PURE__ */ jsx(
2835
+ "input",
2836
+ {
2837
+ type: "text",
2838
+ placeholder: "Filter workspaces...",
2839
+ value: searchQuery,
2840
+ onChange: (e) => setSearchQuery(e.target.value),
2841
+ autoFocus: true,
2842
+ style: {
2843
+ width: "100%",
2844
+ padding: "6px 32px 6px 32px",
2845
+ fontSize: `${theme.fontSizes[1]}px`,
2846
+ color: theme.colors.text,
2847
+ backgroundColor: theme.colors.background,
2848
+ border: `1px solid ${theme.colors.border}`,
2849
+ borderRadius: "4px",
2850
+ outline: "none",
2851
+ fontFamily: theme.fonts.body,
2852
+ transition: "border-color 0.2s ease",
2853
+ ["--theme-primary"]: theme.colors.primary
2854
+ }
2855
+ }
2856
+ ),
2857
+ searchQuery && /* @__PURE__ */ jsx(
2858
+ "button",
2859
+ {
2860
+ onClick: () => setSearchQuery(""),
2861
+ style: {
2862
+ position: "absolute",
2863
+ right: "8px",
2864
+ background: "none",
2865
+ border: "none",
2866
+ cursor: "pointer",
2867
+ padding: "4px",
2868
+ display: "flex",
2869
+ alignItems: "center",
2870
+ justifyContent: "center",
2871
+ color: theme.colors.textSecondary
2872
+ },
2873
+ title: "Clear search",
2874
+ children: /* @__PURE__ */ jsx(X, { size: 16 })
2875
+ }
2876
+ )
2877
+ ] }),
2878
+ /* @__PURE__ */ jsx("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: /* @__PURE__ */ jsx(
2879
+ "button",
2880
+ {
2881
+ onClick: handleCreateWorkspace,
2882
+ style: {
2883
+ padding: "4px 8px",
2884
+ height: "30px",
2885
+ borderRadius: "4px",
2886
+ border: "none",
2887
+ backgroundColor: theme.colors.primary,
2888
+ color: theme.colors.background,
2889
+ cursor: "pointer",
2890
+ display: "flex",
2891
+ alignItems: "center",
2892
+ justifyContent: "center"
2893
+ },
2894
+ title: "Create new workspace",
2895
+ children: /* @__PURE__ */ jsx(Plus, { size: 16 })
2896
+ }
2897
+ ) })
2898
+ ]
2899
+ }
2900
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
2916
2901
  /* @__PURE__ */ jsxs(
2917
2902
  "div",
2918
2903
  {
@@ -2956,18 +2941,14 @@ const WorkspacesListPanelContent = ({
2956
2941
  /* @__PURE__ */ jsx(
2957
2942
  "button",
2958
2943
  {
2959
- onClick: () => {
2960
- setShowSearchBox(!showSearchBox);
2961
- if (showSearchBox) {
2962
- setSearchQuery("");
2963
- }
2964
- },
2944
+ onClick: handleToggleSearch,
2965
2945
  style: {
2966
2946
  background: showSearchBox ? theme.colors.backgroundSecondary : "none",
2967
2947
  border: `1px solid ${showSearchBox ? theme.colors.border : "transparent"}`,
2968
2948
  borderRadius: "4px",
2969
2949
  cursor: "pointer",
2970
- padding: "4px",
2950
+ padding: "4px 8px",
2951
+ height: "30px",
2971
2952
  display: "flex",
2972
2953
  alignItems: "center",
2973
2954
  justifyContent: "center",
@@ -2982,7 +2963,8 @@ const WorkspacesListPanelContent = ({
2982
2963
  {
2983
2964
  onClick: handleCreateWorkspace,
2984
2965
  style: {
2985
- padding: "4px",
2966
+ padding: "4px 8px",
2967
+ height: "30px",
2986
2968
  borderRadius: "4px",
2987
2969
  border: "none",
2988
2970
  backgroundColor: theme.colors.primary,
@@ -3000,7 +2982,7 @@ const WorkspacesListPanelContent = ({
3000
2982
  ]
3001
2983
  }
3002
2984
  ),
3003
- showSearchBox && /* @__PURE__ */ jsxs(
2985
+ showSearchBox && !defaultShowSearch && /* @__PURE__ */ jsxs(
3004
2986
  "div",
3005
2987
  {
3006
2988
  style: {
@@ -3074,10 +3056,7 @@ const WorkspacesListPanelContent = ({
3074
3056
  /* @__PURE__ */ jsx(
3075
3057
  "button",
3076
3058
  {
3077
- onClick: () => {
3078
- setShowSearchBox(false);
3079
- setSearchQuery("");
3080
- },
3059
+ onClick: handleToggleSearch,
3081
3060
  style: {
3082
3061
  background: "none",
3083
3062
  border: "none",
@@ -3096,7 +3075,7 @@ const WorkspacesListPanelContent = ({
3096
3075
  ]
3097
3076
  }
3098
3077
  )
3099
- ]
3078
+ ] })
3100
3079
  }
3101
3080
  ),
3102
3081
  /* @__PURE__ */ jsxs(
@@ -3444,13 +3423,14 @@ const WorkspaceCollectionPanelContent = ({
3444
3423
  const [filter, setFilter] = useState("");
3445
3424
  const [showSearch, setShowSearch] = useState(defaultShowSearch);
3446
3425
  const handleToggleSearch = useCallback(() => {
3426
+ if (defaultShowSearch) return;
3447
3427
  setShowSearch((prev) => {
3448
3428
  if (prev) {
3449
3429
  setFilter("");
3450
3430
  }
3451
3431
  return !prev;
3452
3432
  });
3453
- }, []);
3433
+ }, [defaultShowSearch]);
3454
3434
  const handleClearFilter = useCallback(() => {
3455
3435
  setFilter("");
3456
3436
  }, []);
@@ -3730,20 +3710,112 @@ const WorkspaceCollectionPanelContent = ({
3730
3710
  ) });
3731
3711
  }
3732
3712
  return /* @__PURE__ */ jsxs("div", { style: contentContainerStyle, children: [
3733
- /* @__PURE__ */ jsxs(
3713
+ /* @__PURE__ */ jsx(
3734
3714
  "div",
3735
3715
  {
3736
3716
  style: {
3737
3717
  position: "relative",
3738
3718
  height: "40px",
3739
3719
  minHeight: "40px",
3740
- padding: "0 16px",
3720
+ padding: defaultShowSearch && showSearch ? "0 16px 0 8px" : "0 16px",
3741
3721
  borderBottom: `1px solid ${theme.colors.border}`,
3742
3722
  display: "flex",
3743
3723
  alignItems: "center",
3744
3724
  boxSizing: "border-box"
3745
3725
  },
3746
- children: [
3726
+ children: defaultShowSearch && showSearch && repositories.length > 0 ? /* @__PURE__ */ jsxs(
3727
+ "div",
3728
+ {
3729
+ style: {
3730
+ display: "flex",
3731
+ alignItems: "center",
3732
+ gap: "8px",
3733
+ width: "100%"
3734
+ },
3735
+ children: [
3736
+ /* @__PURE__ */ jsxs("div", { style: { position: "relative", flex: 1, display: "flex", alignItems: "center" }, children: [
3737
+ /* @__PURE__ */ jsx(
3738
+ Search,
3739
+ {
3740
+ size: 16,
3741
+ color: theme.colors.textSecondary,
3742
+ style: {
3743
+ position: "absolute",
3744
+ left: "10px",
3745
+ pointerEvents: "none"
3746
+ }
3747
+ }
3748
+ ),
3749
+ /* @__PURE__ */ jsx(
3750
+ "input",
3751
+ {
3752
+ type: "text",
3753
+ className: "search-input",
3754
+ placeholder: "Filter repositories...",
3755
+ value: filter,
3756
+ onChange: (e) => setFilter(e.target.value),
3757
+ autoFocus: true,
3758
+ style: {
3759
+ width: "100%",
3760
+ padding: "6px 32px 6px 32px",
3761
+ fontSize: `${theme.fontSizes[1]}px`,
3762
+ color: theme.colors.text,
3763
+ backgroundColor: theme.colors.background,
3764
+ border: `1px solid ${theme.colors.border}`,
3765
+ borderRadius: "4px",
3766
+ outline: "none",
3767
+ fontFamily: theme.fonts.body,
3768
+ transition: "border-color 0.2s ease",
3769
+ ["--theme-primary"]: theme.colors.primary
3770
+ }
3771
+ }
3772
+ ),
3773
+ filter && /* @__PURE__ */ jsx(
3774
+ "button",
3775
+ {
3776
+ className: "clear-filter-button",
3777
+ onClick: handleClearFilter,
3778
+ style: {
3779
+ position: "absolute",
3780
+ right: "8px",
3781
+ background: "none",
3782
+ border: "none",
3783
+ cursor: "pointer",
3784
+ padding: "4px",
3785
+ display: "flex",
3786
+ alignItems: "center",
3787
+ justifyContent: "center",
3788
+ color: theme.colors.textSecondary,
3789
+ ["--theme-text"]: theme.colors.text
3790
+ },
3791
+ children: /* @__PURE__ */ jsx(X, { size: 16 })
3792
+ }
3793
+ )
3794
+ ] }),
3795
+ /* @__PURE__ */ jsx("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: /* @__PURE__ */ jsx(
3796
+ "button",
3797
+ {
3798
+ onClick: toggleSort,
3799
+ style: {
3800
+ padding: "4px 10px",
3801
+ height: "30px",
3802
+ borderRadius: "4px",
3803
+ border: `1px solid ${theme.colors.border}`,
3804
+ background: theme.colors.backgroundSecondary,
3805
+ color: theme.colors.text,
3806
+ fontSize: `${theme.fontSizes[1]}px`,
3807
+ fontFamily: theme.fonts.body,
3808
+ cursor: "pointer",
3809
+ display: "flex",
3810
+ alignItems: "center",
3811
+ gap: "4px"
3812
+ },
3813
+ children: sortField === "name" ? "A-Z" : "Recent"
3814
+ }
3815
+ ) })
3816
+ ]
3817
+ }
3818
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
3747
3819
  /* @__PURE__ */ jsxs(
3748
3820
  "div",
3749
3821
  {
@@ -3794,7 +3866,8 @@ const WorkspaceCollectionPanelContent = ({
3794
3866
  border: `1px solid ${showSearch ? theme.colors.border : "transparent"}`,
3795
3867
  borderRadius: "4px",
3796
3868
  cursor: "pointer",
3797
- padding: "4px",
3869
+ padding: "4px 8px",
3870
+ height: "30px",
3798
3871
  display: "flex",
3799
3872
  alignItems: "center",
3800
3873
  justifyContent: "center",
@@ -3811,9 +3884,10 @@ const WorkspaceCollectionPanelContent = ({
3811
3884
  onClick: toggleSort,
3812
3885
  style: {
3813
3886
  padding: "4px 10px",
3887
+ height: "30px",
3814
3888
  borderRadius: "4px",
3815
3889
  border: `1px solid ${theme.colors.border}`,
3816
- background: theme.colors.background,
3890
+ background: theme.colors.backgroundSecondary,
3817
3891
  color: theme.colors.text,
3818
3892
  fontSize: `${theme.fontSizes[1]}px`,
3819
3893
  fontFamily: theme.fonts.body,
@@ -3829,7 +3903,7 @@ const WorkspaceCollectionPanelContent = ({
3829
3903
  ]
3830
3904
  }
3831
3905
  ),
3832
- showSearch && /* @__PURE__ */ jsxs(
3906
+ showSearch && !defaultShowSearch && /* @__PURE__ */ jsxs(
3833
3907
  "div",
3834
3908
  {
3835
3909
  className: "search-overlay",
@@ -3927,7 +4001,7 @@ const WorkspaceCollectionPanelContent = ({
3927
4001
  ]
3928
4002
  }
3929
4003
  )
3930
- ]
4004
+ ] })
3931
4005
  }
3932
4006
  ),
3933
4007
  error && /* @__PURE__ */ jsx(