@industry-theme/file-city-panel 0.2.43 → 0.2.45

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.
@@ -106,7 +106,7 @@ const createLucideIcon = (iconName, iconNode) => {
106
106
  * This source code is licensed under the ISC license.
107
107
  * See the LICENSE file in the root directory of this source tree.
108
108
  */
109
- const __iconNode$i = [
109
+ const __iconNode$p = [
110
110
  [
111
111
  "path",
112
112
  {
@@ -115,14 +115,32 @@ const __iconNode$i = [
115
115
  }
116
116
  ]
117
117
  ];
118
- const Activity = createLucideIcon("activity", __iconNode$i);
118
+ const Activity = createLucideIcon("activity", __iconNode$p);
119
119
  /**
120
120
  * @license lucide-react v0.552.0 - ISC
121
121
  *
122
122
  * This source code is licensed under the ISC license.
123
123
  * See the LICENSE file in the root directory of this source tree.
124
124
  */
125
- const __iconNode$h = [
125
+ const __iconNode$o = [
126
+ [
127
+ "path",
128
+ {
129
+ d: "M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",
130
+ key: "hh9hay"
131
+ }
132
+ ],
133
+ ["path", { d: "m3.3 7 8.7 5 8.7-5", key: "g66t2b" }],
134
+ ["path", { d: "M12 22V12", key: "d0xqtd" }]
135
+ ];
136
+ const Box = createLucideIcon("box", __iconNode$o);
137
+ /**
138
+ * @license lucide-react v0.552.0 - ISC
139
+ *
140
+ * This source code is licensed under the ISC license.
141
+ * See the LICENSE file in the root directory of this source tree.
142
+ */
143
+ const __iconNode$n = [
126
144
  ["path", { d: "M10 12h4", key: "a56b0p" }],
127
145
  ["path", { d: "M10 8h4", key: "1sr2af" }],
128
146
  ["path", { d: "M14 21v-3a2 2 0 0 0-4 0v3", key: "1rgiei" }],
@@ -135,55 +153,67 @@ const __iconNode$h = [
135
153
  ],
136
154
  ["path", { d: "M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16", key: "16ra0t" }]
137
155
  ];
138
- const Building2 = createLucideIcon("building-2", __iconNode$h);
156
+ const Building2 = createLucideIcon("building-2", __iconNode$n);
139
157
  /**
140
158
  * @license lucide-react v0.552.0 - ISC
141
159
  *
142
160
  * This source code is licensed under the ISC license.
143
161
  * See the LICENSE file in the root directory of this source tree.
144
162
  */
145
- const __iconNode$g = [
163
+ const __iconNode$m = [
146
164
  ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }],
147
165
  ["path", { d: "M18 17V9", key: "2bz60n" }],
148
166
  ["path", { d: "M13 17V5", key: "1frdt8" }],
149
167
  ["path", { d: "M8 17v-3", key: "17ska0" }]
150
168
  ];
151
- const ChartColumn = createLucideIcon("chart-column", __iconNode$g);
169
+ const ChartColumn = createLucideIcon("chart-column", __iconNode$m);
152
170
  /**
153
171
  * @license lucide-react v0.552.0 - ISC
154
172
  *
155
173
  * This source code is licensed under the ISC license.
156
174
  * See the LICENSE file in the root directory of this source tree.
157
175
  */
158
- const __iconNode$f = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
159
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$f);
176
+ const __iconNode$l = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
177
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$l);
160
178
  /**
161
179
  * @license lucide-react v0.552.0 - ISC
162
180
  *
163
181
  * This source code is licensed under the ISC license.
164
182
  * See the LICENSE file in the root directory of this source tree.
165
183
  */
166
- const __iconNode$e = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
167
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$e);
184
+ const __iconNode$k = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
185
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$k);
168
186
  /**
169
187
  * @license lucide-react v0.552.0 - ISC
170
188
  *
171
189
  * This source code is licensed under the ISC license.
172
190
  * See the LICENSE file in the root directory of this source tree.
173
191
  */
174
- const __iconNode$d = [
192
+ const __iconNode$j = [
175
193
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
176
194
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
177
195
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
178
196
  ];
179
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$d);
197
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$j);
180
198
  /**
181
199
  * @license lucide-react v0.552.0 - ISC
182
200
  *
183
201
  * This source code is licensed under the ISC license.
184
202
  * See the LICENSE file in the root directory of this source tree.
185
203
  */
186
- const __iconNode$c = [
204
+ const __iconNode$i = [
205
+ ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
206
+ ["path", { d: "M10 14 21 3", key: "gplh6r" }],
207
+ ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
208
+ ];
209
+ const ExternalLink = createLucideIcon("external-link", __iconNode$i);
210
+ /**
211
+ * @license lucide-react v0.552.0 - ISC
212
+ *
213
+ * This source code is licensed under the ISC license.
214
+ * See the LICENSE file in the root directory of this source tree.
215
+ */
216
+ const __iconNode$h = [
187
217
  [
188
218
  "path",
189
219
  {
@@ -201,14 +231,14 @@ const __iconNode$c = [
201
231
  ],
202
232
  ["path", { d: "m2 2 20 20", key: "1ooewy" }]
203
233
  ];
204
- const EyeOff = createLucideIcon("eye-off", __iconNode$c);
234
+ const EyeOff = createLucideIcon("eye-off", __iconNode$h);
205
235
  /**
206
236
  * @license lucide-react v0.552.0 - ISC
207
237
  *
208
238
  * This source code is licensed under the ISC license.
209
239
  * See the LICENSE file in the root directory of this source tree.
210
240
  */
211
- const __iconNode$b = [
241
+ const __iconNode$g = [
212
242
  [
213
243
  "path",
214
244
  {
@@ -218,14 +248,14 @@ const __iconNode$b = [
218
248
  ],
219
249
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
220
250
  ];
221
- const Eye = createLucideIcon("eye", __iconNode$b);
251
+ const Eye = createLucideIcon("eye", __iconNode$g);
222
252
  /**
223
253
  * @license lucide-react v0.552.0 - ISC
224
254
  *
225
255
  * This source code is licensed under the ISC license.
226
256
  * See the LICENSE file in the root directory of this source tree.
227
257
  */
228
- const __iconNode$a = [
258
+ const __iconNode$f = [
229
259
  [
230
260
  "path",
231
261
  {
@@ -236,14 +266,14 @@ const __iconNode$a = [
236
266
  ["path", { d: "M12 17h.01", key: "p32p05" }],
237
267
  ["path", { d: "M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3", key: "mhlwft" }]
238
268
  ];
239
- const FileQuestionMark = createLucideIcon("file-question-mark", __iconNode$a);
269
+ const FileQuestionMark = createLucideIcon("file-question-mark", __iconNode$f);
240
270
  /**
241
271
  * @license lucide-react v0.552.0 - ISC
242
272
  *
243
273
  * This source code is licensed under the ISC license.
244
274
  * See the LICENSE file in the root directory of this source tree.
245
275
  */
246
- const __iconNode$9 = [
276
+ const __iconNode$e = [
247
277
  [
248
278
  "path",
249
279
  {
@@ -256,14 +286,14 @@ const __iconNode$9 = [
256
286
  ["path", { d: "M16 13H8", key: "t4e002" }],
257
287
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
258
288
  ];
259
- const FileText = createLucideIcon("file-text", __iconNode$9);
289
+ const FileText = createLucideIcon("file-text", __iconNode$e);
260
290
  /**
261
291
  * @license lucide-react v0.552.0 - ISC
262
292
  *
263
293
  * This source code is licensed under the ISC license.
264
294
  * See the LICENSE file in the root directory of this source tree.
265
295
  */
266
- const __iconNode$8 = [
296
+ const __iconNode$d = [
267
297
  [
268
298
  "path",
269
299
  {
@@ -273,14 +303,14 @@ const __iconNode$8 = [
273
303
  ],
274
304
  ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
275
305
  ];
276
- const File = createLucideIcon("file", __iconNode$8);
306
+ const File = createLucideIcon("file", __iconNode$d);
277
307
  /**
278
308
  * @license lucide-react v0.552.0 - ISC
279
309
  *
280
310
  * This source code is licensed under the ISC license.
281
311
  * See the LICENSE file in the root directory of this source tree.
282
312
  */
283
- const __iconNode$7 = [
313
+ const __iconNode$c = [
284
314
  [
285
315
  "path",
286
316
  {
@@ -289,71 +319,118 @@ const __iconNode$7 = [
289
319
  }
290
320
  ]
291
321
  ];
292
- const Folder = createLucideIcon("folder", __iconNode$7);
322
+ const Folder = createLucideIcon("folder", __iconNode$c);
293
323
  /**
294
324
  * @license lucide-react v0.552.0 - ISC
295
325
  *
296
326
  * This source code is licensed under the ISC license.
297
327
  * See the LICENSE file in the root directory of this source tree.
298
328
  */
299
- const __iconNode$6 = [
329
+ const __iconNode$b = [
300
330
  ["line", { x1: "6", x2: "6", y1: "3", y2: "15", key: "17qcm7" }],
301
331
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
302
332
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
303
333
  ["path", { d: "M18 9a9 9 0 0 1-9 9", key: "n2h4wq" }]
304
334
  ];
305
- const GitBranch = createLucideIcon("git-branch", __iconNode$6);
335
+ const GitBranch = createLucideIcon("git-branch", __iconNode$b);
306
336
  /**
307
337
  * @license lucide-react v0.552.0 - ISC
308
338
  *
309
339
  * This source code is licensed under the ISC license.
310
340
  * See the LICENSE file in the root directory of this source tree.
311
341
  */
312
- const __iconNode$5 = [
342
+ const __iconNode$a = [
313
343
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
314
344
  ["line", { x1: "3", x2: "9", y1: "12", y2: "12", key: "1dyftd" }],
315
345
  ["line", { x1: "15", x2: "21", y1: "12", y2: "12", key: "oup4p8" }]
316
346
  ];
317
- const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$5);
347
+ const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$a);
318
348
  /**
319
349
  * @license lucide-react v0.552.0 - ISC
320
350
  *
321
351
  * This source code is licensed under the ISC license.
322
352
  * See the LICENSE file in the root directory of this source tree.
323
353
  */
324
- const __iconNode$4 = [
354
+ const __iconNode$9 = [
355
+ ["circle", { cx: "12", cy: "18", r: "3", key: "1mpf1b" }],
356
+ ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
357
+ ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
358
+ ["path", { d: "M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9", key: "1uq4wg" }],
359
+ ["path", { d: "M12 12v3", key: "158kv8" }]
360
+ ];
361
+ const GitFork = createLucideIcon("git-fork", __iconNode$9);
362
+ /**
363
+ * @license lucide-react v0.552.0 - ISC
364
+ *
365
+ * This source code is licensed under the ISC license.
366
+ * See the LICENSE file in the root directory of this source tree.
367
+ */
368
+ const __iconNode$8 = [
325
369
  ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
326
370
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
327
371
  ["path", { d: "M13 6h3a2 2 0 0 1 2 2v7", key: "1yeb86" }],
328
372
  ["line", { x1: "6", x2: "6", y1: "9", y2: "21", key: "rroup" }]
329
373
  ];
330
- const GitPullRequest = createLucideIcon("git-pull-request", __iconNode$4);
374
+ const GitPullRequest = createLucideIcon("git-pull-request", __iconNode$8);
331
375
  /**
332
376
  * @license lucide-react v0.552.0 - ISC
333
377
  *
334
378
  * This source code is licensed under the ISC license.
335
379
  * See the LICENSE file in the root directory of this source tree.
336
380
  */
337
- const __iconNode$3 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
338
- const Minus = createLucideIcon("minus", __iconNode$3);
381
+ const __iconNode$7 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
382
+ const Minus = createLucideIcon("minus", __iconNode$7);
339
383
  /**
340
384
  * @license lucide-react v0.552.0 - ISC
341
385
  *
342
386
  * This source code is licensed under the ISC license.
343
387
  * See the LICENSE file in the root directory of this source tree.
344
388
  */
345
- const __iconNode$2 = [
389
+ const __iconNode$6 = [
390
+ [
391
+ "path",
392
+ {
393
+ d: "M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",
394
+ key: "1a0edw"
395
+ }
396
+ ],
397
+ ["path", { d: "M12 22V12", key: "d0xqtd" }],
398
+ ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }],
399
+ ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }]
400
+ ];
401
+ const Package = createLucideIcon("package", __iconNode$6);
402
+ /**
403
+ * @license lucide-react v0.552.0 - ISC
404
+ *
405
+ * This source code is licensed under the ISC license.
406
+ * See the LICENSE file in the root directory of this source tree.
407
+ */
408
+ const __iconNode$5 = [
346
409
  ["path", { d: "M5 12h14", key: "1ays0h" }],
347
410
  ["path", { d: "M12 5v14", key: "s699le" }]
348
411
  ];
349
- const Plus = createLucideIcon("plus", __iconNode$2);
412
+ const Plus = createLucideIcon("plus", __iconNode$5);
350
413
  /**
351
414
  * @license lucide-react v0.552.0 - ISC
352
415
  *
353
416
  * This source code is licensed under the ISC license.
354
417
  * See the LICENSE file in the root directory of this source tree.
355
418
  */
356
- const __iconNode$1 = [
419
+ const __iconNode$4 = [
420
+ ["path", { d: "m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "7g6ntu" }],
421
+ ["path", { d: "m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "ijws7r" }],
422
+ ["path", { d: "M7 21h10", key: "1b0cd5" }],
423
+ ["path", { d: "M12 3v18", key: "108xh3" }],
424
+ ["path", { d: "M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2", key: "3gwbw2" }]
425
+ ];
426
+ const Scale = createLucideIcon("scale", __iconNode$4);
427
+ /**
428
+ * @license lucide-react v0.552.0 - ISC
429
+ *
430
+ * This source code is licensed under the ISC license.
431
+ * See the LICENSE file in the root directory of this source tree.
432
+ */
433
+ const __iconNode$3 = [
357
434
  ["path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7", key: "1m0v6g" }],
358
435
  [
359
436
  "path",
@@ -363,7 +440,34 @@ const __iconNode$1 = [
363
440
  }
364
441
  ]
365
442
  ];
366
- const SquarePen = createLucideIcon("square-pen", __iconNode$1);
443
+ const SquarePen = createLucideIcon("square-pen", __iconNode$3);
444
+ /**
445
+ * @license lucide-react v0.552.0 - ISC
446
+ *
447
+ * This source code is licensed under the ISC license.
448
+ * See the LICENSE file in the root directory of this source tree.
449
+ */
450
+ const __iconNode$2 = [
451
+ [
452
+ "path",
453
+ {
454
+ d: "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",
455
+ key: "r04s7s"
456
+ }
457
+ ]
458
+ ];
459
+ const Star = createLucideIcon("star", __iconNode$2);
460
+ /**
461
+ * @license lucide-react v0.552.0 - ISC
462
+ *
463
+ * This source code is licensed under the ISC license.
464
+ * See the LICENSE file in the root directory of this source tree.
465
+ */
466
+ const __iconNode$1 = [
467
+ ["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
468
+ ["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
469
+ ];
470
+ const User = createLucideIcon("user", __iconNode$1);
367
471
  /**
368
472
  * @license lucide-react v0.552.0 - ISC
369
473
  *
@@ -10474,7 +10578,7 @@ const Legend = ({
10474
10578
  transition: "all 0.15s ease",
10475
10579
  minWidth: "100px",
10476
10580
  flex: "1 1 100px",
10477
- maxWidth: "200px",
10581
+ maxWidth: "300px",
10478
10582
  boxSizing: "border-box"
10479
10583
  },
10480
10584
  children: [
@@ -10613,7 +10717,7 @@ const Legend = ({
10613
10717
  transition: "all 0.15s ease",
10614
10718
  minWidth: "120px",
10615
10719
  flex: "1 1 120px",
10616
- maxWidth: "250px",
10720
+ maxWidth: "300px",
10617
10721
  boxSizing: "border-box"
10618
10722
  },
10619
10723
  children: [
@@ -10805,7 +10909,7 @@ const Legend = ({
10805
10909
  transition: "all 0.15s ease",
10806
10910
  minWidth: "100px",
10807
10911
  flex: "1 1 100px",
10808
- maxWidth: "200px",
10912
+ maxWidth: "300px",
10809
10913
  boxSizing: "border-box"
10810
10914
  },
10811
10915
  children: [
@@ -13471,7 +13575,7 @@ var fileColorHighlightLayers = {};
13471
13575
  const version = "1.0.0";
13472
13576
  const description = "Git Gallery file color palette configuration";
13473
13577
  const lastUpdated = "2025-01-26";
13474
- const suffixConfigs = /* @__PURE__ */ JSON.parse(`{".ts":{"primary":{"color":"#007ACC","renderStrategy":"fill","opacity":1},"displayName":"TypeScript","description":"TypeScript source files","category":"Frontend","source":"https://www.typescriptlang.org/branding/"},".tsx":{"primary":{"color":"#007ACC","renderStrategy":"fill","opacity":1},"secondary":{"color":"#61DBFB","renderStrategy":"border","opacity":0.6},"displayName":"TSX","description":"TypeScript React components","category":"Frontend"},".js":{"primary":{"color":"#f1e05a","renderStrategy":"fill","opacity":1},"displayName":"JavaScript","description":"JavaScript source files","category":"Frontend"},".jsx":{"primary":{"color":"#61dafb","renderStrategy":"fill","opacity":1},"secondary":{"color":"#f1e05a","renderStrategy":"border","opacity":0.4},"displayName":"JSX","description":"JavaScript React components","category":"Frontend"},".html":{"primary":{"color":"#e34c26","renderStrategy":"fill","opacity":1},"displayName":"HTML","description":"HyperText Markup Language","category":"Web"},".css":{"primary":{"color":"#563d7c","renderStrategy":"fill","opacity":1},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":1},"displayName":"CSS","description":"Cascading Style Sheets","category":"Web"},".scss":{"primary":{"color":"#c6538c","renderStrategy":"fill","opacity":1},"displayName":"SCSS","description":"Sassy CSS","category":"Web"},".sass":{"primary":{"color":"#c6538c","renderStrategy":"fill","opacity":1},"displayName":"Sass","description":"Syntactically Awesome Style Sheets","category":"Web"},".less":{"primary":{"color":"#1d365d","renderStrategy":"fill","opacity":1},"displayName":"Less","description":"Leaner Style Sheets","category":"Web"},".json":{"primary":{"color":"#ffd93d","renderStrategy":"fill","opacity":1},"secondary":{"color":"#ff8c00","renderStrategy":"border","borderWidth":1,"opacity":1},"displayName":"JSON","description":"JavaScript Object Notation","category":"Data"},".yaml":{"primary":{"color":"#cb171e","renderStrategy":"fill","opacity":1},"displayName":"YAML","description":"YAML Ain't Markup Language","category":"Config"},".yml":{"primary":{"color":"#cb171e","renderStrategy":"fill","opacity":1},"displayName":"YML","description":"YAML Ain't Markup Language","category":"Config"},".xml":{"primary":{"color":"#ff6600","renderStrategy":"fill","opacity":1},"displayName":"XML","description":"eXtensible Markup Language","category":"Data"},".toml":{"primary":{"color":"#9c4221","renderStrategy":"fill","opacity":1},"displayName":"TOML","description":"Tom's Obvious, Minimal Language","category":"Config"},".md":{"primary":{"color":"#083fa1","renderStrategy":"fill","opacity":1},"secondary":{"color":"#ffffff","renderStrategy":"border","opacity":0.3},"displayName":"Markdown","description":"Markdown documentation","category":"Documentation"},".mdx":{"primary":{"color":"#fcb32c","renderStrategy":"fill","opacity":1},"secondary":{"color":"#083fa1","renderStrategy":"glow","opacity":0.4},"displayName":"MDX","description":"Markdown with JSX","category":"Documentation"},".py":{"primary":{"color":"#3572A5","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffd43b","renderStrategy":"border","borderWidth":2,"opacity":0.9},"displayName":"Python","description":"Python source files","category":"Backend"},".java":{"primary":{"color":"#b07219","renderStrategy":"fill","opacity":1},"displayName":"Java","description":"Java source files","category":"Backend"},".go":{"primary":{"color":"#00ADD8","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"glow","opacity":0.5},"displayName":"Go","description":"Go source files","category":"Backend"},".rs":{"primary":{"color":"#dea584","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ce422b","renderStrategy":"border","borderWidth":2,"opacity":1},"displayName":"Rust","description":"Rust source files","category":"Backend"},".php":{"primary":{"color":"#4F5D95","renderStrategy":"fill","opacity":1},"displayName":"PHP","description":"PHP source files","category":"Backend"},".rb":{"primary":{"color":"#701516","renderStrategy":"fill","opacity":1},"secondary":{"color":"#ff0000","renderStrategy":"glow","opacity":0.3},"displayName":"Ruby","description":"Ruby source files","category":"Backend"},".swift":{"primary":{"color":"#fa7343","renderStrategy":"fill","opacity":0.8},"displayName":"Swift","description":"Swift source files","category":"Mobile"},".c":{"primary":{"color":"#555555","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":0.9},"displayName":"C","description":"C source files","category":"Systems"},".cpp":{"primary":{"color":"#f34b7d","renderStrategy":"fill","opacity":0.8},"displayName":"C++","description":"C++ source files","category":"Systems"},".cs":{"primary":{"color":"#178600","renderStrategy":"fill","opacity":1},"displayName":"C#","description":"C# source files","category":"Backend"},".kt":{"primary":{"color":"#A97BFF","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#7f39fb","renderStrategy":"glow","opacity":0.4},"displayName":"Kotlin","description":"Kotlin source files","category":"Mobile"},".sh":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":1},"displayName":"Shell","description":"Shell scripts","category":"Scripts"},".bash":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":0.8},"displayName":"Bash","description":"Bash scripts","category":"Scripts"},".zsh":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":0.8},"displayName":"Zsh","description":"Z shell scripts","category":"Scripts"},".fish":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":0.8},"displayName":"Fish","description":"Fish shell scripts","category":"Scripts"},".ps1":{"primary":{"color":"#012456","renderStrategy":"fill","opacity":1},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":0.9},"displayName":"PowerShell","description":"PowerShell scripts","category":"Scripts"},".sql":{"primary":{"color":"#e38c00","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"border","opacity":0.4},"displayName":"SQL","description":"Structured Query Language","category":"Database"},".svg":{"primary":{"color":"#ffb13b","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ff8c00","renderStrategy":"glow","opacity":0.5},"displayName":"SVG","description":"Scalable Vector Graphics","category":"Images"},".png":{"primary":{"color":"#00b4d8","renderStrategy":"fill","opacity":0.8},"displayName":"PNG","description":"Portable Network Graphics","category":"Images"},".jpg":{"primary":{"color":"#00b4d8","renderStrategy":"fill","opacity":0.8},"displayName":"JPEG","description":"Joint Photographic Experts Group","category":"Images"},".jpeg":{"primary":{"color":"#00b4d8","renderStrategy":"fill","opacity":0.8},"displayName":"JPEG","description":"Joint Photographic Experts Group","category":"Images"},".gif":{"primary":{"color":"#00b4d8","renderStrategy":"fill","opacity":0.8},"displayName":"GIF","description":"Graphics Interchange Format","category":"Images"},".webp":{"primary":{"color":"#00b4d8","renderStrategy":"fill","opacity":0.8},"displayName":"WebP","description":"Web Picture format","category":"Images"},".vue":{"primary":{"color":"#41b883","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#35495e","renderStrategy":"border","borderWidth":2,"opacity":1},"displayName":"Vue","description":"Vue.js components","category":"Frontend"},".svelte":{"primary":{"color":"#ff3e00","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"glow","opacity":0.6},"displayName":"Svelte","description":"Svelte components","category":"Frontend"},".dart":{"primary":{"color":"#0175c2","renderStrategy":"fill","opacity":0.8},"displayName":"Dart","description":"Dart source files","category":"Mobile"},".r":{"primary":{"color":"#198ce7","renderStrategy":"fill","opacity":0.8},"displayName":"R","description":"R statistical computing","category":"Analytics"},".lua":{"primary":{"color":"#000080","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":0.9},"displayName":"Lua","description":"Lua source files","category":"Scripts"},".vim":{"primary":{"color":"#019733","renderStrategy":"fill","opacity":0.8},"displayName":"Vim","description":"Vim configuration","category":"Config"},".canvas":{"primary":{"color":"#7c3aed","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#a78bfa","renderStrategy":"glow","opacity":0.5},"displayName":"Canvas","description":"Visual canvas files","category":"Data"},".lock":{"primary":{"color":"#6b7280","renderStrategy":"fill","opacity":0.7},"secondary":{"color":"#9ca3af","renderStrategy":"border","borderWidth":1,"opacity":0.8},"displayName":"Lock","description":"Lock files for dependency management","category":"Config"},".gitignore":{"primary":{"color":"#f05032","renderStrategy":"fill","opacity":0.7},"displayName":"Git Ignore","description":"Git ignore patterns","category":"Config"},".dockerignore":{"primary":{"color":"#2496ed","renderStrategy":"fill","opacity":0.7},"displayName":"Docker Ignore","description":"Docker ignore patterns","category":"Config"},".npmignore":{"primary":{"color":"#cb3837","renderStrategy":"fill","opacity":0.7},"displayName":"NPM Ignore","description":"NPM ignore patterns","category":"Config"},".eslintignore":{"primary":{"color":"#4b32c3","renderStrategy":"fill","opacity":0.7},"displayName":"ESLint Ignore","description":"ESLint ignore patterns","category":"Config"},".prettierignore":{"primary":{"color":"#56b3b4","renderStrategy":"fill","opacity":0.7},"displayName":"Prettier Ignore","description":"Prettier ignore patterns","category":"Config"},".bashrc":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":0.7},"displayName":"Bash RC","description":"Bash run commands","category":"Config"},".zshrc":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":0.7},"displayName":"Zsh RC","description":"Zsh run commands","category":"Config"},".vimrc":{"primary":{"color":"#019733","renderStrategy":"fill","opacity":0.7},"displayName":"Vim RC","description":"Vim run commands","category":"Config"},".npmrc":{"primary":{"color":"#cb3837","renderStrategy":"fill","opacity":0.7},"displayName":"NPM RC","description":"NPM configuration","category":"Config"},".eslintrc":{"primary":{"color":"#4b32c3","renderStrategy":"fill","opacity":0.7},"displayName":"ESLint RC","description":"ESLint configuration","category":"Config"},".prettierrc":{"primary":{"color":"#56b3b4","renderStrategy":"fill","opacity":0.7},"displayName":"Prettier RC","description":"Prettier configuration","category":"Config"},".babelrc":{"primary":{"color":"#f5da55","renderStrategy":"fill","opacity":0.7},"displayName":"Babel RC","description":"Babel configuration","category":"Config"},"LICENSE":{"primary":{"color":"#d4af37","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffd700","renderStrategy":"border","borderWidth":1,"opacity":0.9},"displayName":"License","description":"License file","category":"Documentation"},".txt":{"primary":{"color":"#6b7280","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#9ca3af","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Text","description":"Plain text files","category":"Documentation"},".scm":{"primary":{"color":"#6e56cf","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#9e8cfc","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Scheme","description":"Scheme/Tree-sitter query files","category":"Scripts"},".zig":{"primary":{"color":"#F7A41D","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Zig","description":"Zig source files","category":"Systems"},".zon":{"primary":{"color":"#F7A41D","renderStrategy":"fill","opacity":0.7},"secondary":{"color":"#ffd43b","renderStrategy":"border","borderWidth":1,"opacity":0.6},"displayName":"Zon","description":"Zig Object Notation","category":"Config"},".nix":{"primary":{"color":"#7ebae4","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#5277c3","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Nix","description":"Nix expression language","category":"Config"},".h":{"primary":{"color":"#a074c4","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":0.6},"displayName":"Header","description":"C/C++ header files","category":"Systems"},".po":{"primary":{"color":"#2e7d32","renderStrategy":"fill","opacity":0.7},"displayName":"Gettext","description":"Gettext translation files","category":"Data"},".pot":{"primary":{"color":"#2e7d32","renderStrategy":"fill","opacity":0.7},"displayName":"Gettext Template","description":"Gettext translation template","category":"Data"},".blp":{"primary":{"color":"#3584e4","renderStrategy":"fill","opacity":0.8},"displayName":"Blueprint","description":"GTK Blueprint UI files","category":"Frontend"},".glsl":{"primary":{"color":"#5686a5","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#8bc9f0","renderStrategy":"glow","opacity":0.4},"displayName":"GLSL","description":"OpenGL Shading Language","category":"Graphics"},".metal":{"primary":{"color":"#8c8c8c","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#c0c0c0","renderStrategy":"glow","opacity":0.5},"displayName":"Metal","description":"Apple Metal shaders","category":"Graphics"},".ttf":{"primary":{"color":"#e84393","renderStrategy":"fill","opacity":0.7},"displayName":"TrueType","description":"TrueType font files","category":"Assets"},".otf":{"primary":{"color":"#e84393","renderStrategy":"fill","opacity":0.7},"displayName":"OpenType","description":"OpenType font files","category":"Assets"},".woff":{"primary":{"color":"#e84393","renderStrategy":"fill","opacity":0.7},"displayName":"WOFF","description":"Web Open Font Format","category":"Assets"},".woff2":{"primary":{"color":"#e84393","renderStrategy":"fill","opacity":0.7},"displayName":"WOFF2","description":"Web Open Font Format 2","category":"Assets"},".xib":{"primary":{"color":"#147efb","renderStrategy":"fill","opacity":0.8},"displayName":"XIB","description":"Xcode Interface Builder","category":"Frontend"},".plist":{"primary":{"color":"#8e8e93","renderStrategy":"fill","opacity":0.7},"displayName":"Plist","description":"Apple Property List","category":"Config"},".entitlements":{"primary":{"color":"#ff9500","renderStrategy":"fill","opacity":0.7},"displayName":"Entitlements","description":"macOS entitlements","category":"Config"},".m":{"primary":{"color":"#438eff","renderStrategy":"fill","opacity":0.8},"displayName":"Objective-C","description":"Objective-C source files","category":"Mobile"},".mm":{"primary":{"color":"#438eff","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#f34b7d","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Objective-C++","description":"Objective-C++ source files","category":"Mobile"},".nu":{"primary":{"color":"#3aa675","renderStrategy":"fill","opacity":0.8},"displayName":"Nushell","description":"Nushell scripts","category":"Scripts"}}`);
13578
+ const suffixConfigs = /* @__PURE__ */ JSON.parse(`{".ts":{"primary":{"color":"#007ACC","renderStrategy":"fill","opacity":1},"displayName":"TypeScript","description":"TypeScript source files","category":"Frontend","source":"https://www.typescriptlang.org/branding/"},".tsx":{"primary":{"color":"#007ACC","renderStrategy":"fill","opacity":1},"secondary":{"color":"#61DBFB","renderStrategy":"border","opacity":0.6},"displayName":"TSX","description":"TypeScript React components","category":"Frontend"},".js":{"primary":{"color":"#f1e05a","renderStrategy":"fill","opacity":1},"displayName":"JavaScript","description":"JavaScript source files","category":"Frontend"},".jsx":{"primary":{"color":"#61dafb","renderStrategy":"fill","opacity":1},"secondary":{"color":"#f1e05a","renderStrategy":"border","opacity":0.4},"displayName":"JSX","description":"JavaScript React components","category":"Frontend"},".html":{"primary":{"color":"#e34c26","renderStrategy":"fill","opacity":1},"displayName":"HTML","description":"HyperText Markup Language","category":"Web"},".css":{"primary":{"color":"#563d7c","renderStrategy":"fill","opacity":1},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":1},"displayName":"CSS","description":"Cascading Style Sheets","category":"Web"},".scss":{"primary":{"color":"#c6538c","renderStrategy":"fill","opacity":1},"displayName":"SCSS","description":"Sassy CSS","category":"Web"},".sass":{"primary":{"color":"#c6538c","renderStrategy":"fill","opacity":1},"displayName":"Sass","description":"Syntactically Awesome Style Sheets","category":"Web"},".less":{"primary":{"color":"#1d365d","renderStrategy":"fill","opacity":1},"displayName":"Less","description":"Leaner Style Sheets","category":"Web"},".json":{"primary":{"color":"#ffd93d","renderStrategy":"fill","opacity":1},"secondary":{"color":"#ff8c00","renderStrategy":"border","borderWidth":1,"opacity":1},"displayName":"JSON","description":"JavaScript Object Notation","category":"Data"},".yaml":{"primary":{"color":"#cb171e","renderStrategy":"fill","opacity":1},"displayName":"YAML","description":"YAML Ain't Markup Language","category":"Config"},".yml":{"primary":{"color":"#cb171e","renderStrategy":"fill","opacity":1},"displayName":"YML","description":"YAML Ain't Markup Language","category":"Config"},".xml":{"primary":{"color":"#ff6600","renderStrategy":"fill","opacity":1},"displayName":"XML","description":"eXtensible Markup Language","category":"Data"},".toml":{"primary":{"color":"#9c4221","renderStrategy":"fill","opacity":1},"displayName":"TOML","description":"Tom's Obvious, Minimal Language","category":"Config"},".md":{"primary":{"color":"#083fa1","renderStrategy":"fill","opacity":1},"secondary":{"color":"#ffffff","renderStrategy":"border","opacity":0.3},"displayName":"Markdown","description":"Markdown documentation","category":"Documentation"},".mdx":{"primary":{"color":"#fcb32c","renderStrategy":"fill","opacity":1},"secondary":{"color":"#083fa1","renderStrategy":"glow","opacity":0.4},"displayName":"MDX","description":"Markdown with JSX","category":"Documentation"},".py":{"primary":{"color":"#3572A5","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffd43b","renderStrategy":"border","borderWidth":2,"opacity":0.9},"displayName":"Python","description":"Python source files","category":"Backend"},".java":{"primary":{"color":"#b07219","renderStrategy":"fill","opacity":1},"displayName":"Java","description":"Java source files","category":"Backend"},".go":{"primary":{"color":"#00ADD8","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"glow","opacity":0.5},"displayName":"Go","description":"Go source files","category":"Backend"},".rs":{"primary":{"color":"#dea584","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ce422b","renderStrategy":"border","borderWidth":2,"opacity":1},"displayName":"Rust","description":"Rust source files","category":"Backend"},".php":{"primary":{"color":"#4F5D95","renderStrategy":"fill","opacity":1},"displayName":"PHP","description":"PHP source files","category":"Backend"},".rb":{"primary":{"color":"#701516","renderStrategy":"fill","opacity":1},"secondary":{"color":"#ff0000","renderStrategy":"glow","opacity":0.3},"displayName":"Ruby","description":"Ruby source files","category":"Backend"},".swift":{"primary":{"color":"#fa7343","renderStrategy":"fill","opacity":0.8},"displayName":"Swift","description":"Swift source files","category":"Mobile"},".c":{"primary":{"color":"#555555","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":0.9},"displayName":"C","description":"C source files","category":"Systems"},".cpp":{"primary":{"color":"#f34b7d","renderStrategy":"fill","opacity":0.8},"displayName":"C++","description":"C++ source files","category":"Systems"},".cs":{"primary":{"color":"#178600","renderStrategy":"fill","opacity":1},"displayName":"C#","description":"C# source files","category":"Backend"},".kt":{"primary":{"color":"#A97BFF","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#7f39fb","renderStrategy":"glow","opacity":0.4},"displayName":"Kotlin","description":"Kotlin source files","category":"Mobile"},".sh":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":1},"displayName":"Shell","description":"Shell scripts","category":"Scripts"},".bash":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":0.8},"displayName":"Bash","description":"Bash scripts","category":"Scripts"},".zsh":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":0.8},"displayName":"Zsh","description":"Z shell scripts","category":"Scripts"},".fish":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":0.8},"displayName":"Fish","description":"Fish shell scripts","category":"Scripts"},".ps1":{"primary":{"color":"#012456","renderStrategy":"fill","opacity":1},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":0.9},"displayName":"PowerShell","description":"PowerShell scripts","category":"Scripts"},".sql":{"primary":{"color":"#e38c00","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"border","opacity":0.4},"displayName":"SQL","description":"Structured Query Language","category":"Database"},".svg":{"primary":{"color":"#ffb13b","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ff8c00","renderStrategy":"glow","opacity":0.5},"displayName":"SVG","description":"Scalable Vector Graphics","category":"Images"},".png":{"primary":{"color":"#00b4d8","renderStrategy":"fill","opacity":0.8},"displayName":"PNG","description":"Portable Network Graphics","category":"Images"},".jpg":{"primary":{"color":"#00b4d8","renderStrategy":"fill","opacity":0.8},"displayName":"JPEG","description":"Joint Photographic Experts Group","category":"Images"},".jpeg":{"primary":{"color":"#00b4d8","renderStrategy":"fill","opacity":0.8},"displayName":"JPEG","description":"Joint Photographic Experts Group","category":"Images"},".gif":{"primary":{"color":"#00b4d8","renderStrategy":"fill","opacity":0.8},"displayName":"GIF","description":"Graphics Interchange Format","category":"Images"},".webp":{"primary":{"color":"#00b4d8","renderStrategy":"fill","opacity":0.8},"displayName":"WebP","description":"Web Picture format","category":"Images"},".vue":{"primary":{"color":"#41b883","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#35495e","renderStrategy":"border","borderWidth":2,"opacity":1},"displayName":"Vue","description":"Vue.js components","category":"Frontend"},".svelte":{"primary":{"color":"#ff3e00","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"glow","opacity":0.6},"displayName":"Svelte","description":"Svelte components","category":"Frontend"},".dart":{"primary":{"color":"#0175c2","renderStrategy":"fill","opacity":0.8},"displayName":"Dart","description":"Dart source files","category":"Mobile"},".r":{"primary":{"color":"#198ce7","renderStrategy":"fill","opacity":0.8},"displayName":"R","description":"R statistical computing","category":"Analytics"},".lua":{"primary":{"color":"#000080","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":0.9},"displayName":"Lua","description":"Lua source files","category":"Scripts"},".vim":{"primary":{"color":"#019733","renderStrategy":"fill","opacity":0.8},"displayName":"Vim","description":"Vim configuration","category":"Config"},".canvas":{"primary":{"color":"#7c3aed","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#a78bfa","renderStrategy":"glow","opacity":0.5},"displayName":"Canvas","description":"Visual canvas files","category":"Data"},".lock":{"primary":{"color":"#6b7280","renderStrategy":"fill","opacity":0.7},"secondary":{"color":"#9ca3af","renderStrategy":"border","borderWidth":1,"opacity":0.8},"displayName":"Lock","description":"Lock files for dependency management","category":"Config"},".gitignore":{"primary":{"color":"#f05032","renderStrategy":"fill","opacity":0.7},"displayName":"Git Ignore","description":"Git ignore patterns","category":"Config"},".dockerignore":{"primary":{"color":"#2496ed","renderStrategy":"fill","opacity":0.7},"displayName":"Docker Ignore","description":"Docker ignore patterns","category":"Config"},".npmignore":{"primary":{"color":"#cb3837","renderStrategy":"fill","opacity":0.7},"displayName":"NPM Ignore","description":"NPM ignore patterns","category":"Config"},".eslintignore":{"primary":{"color":"#4b32c3","renderStrategy":"fill","opacity":0.7},"displayName":"ESLint Ignore","description":"ESLint ignore patterns","category":"Config"},".prettierignore":{"primary":{"color":"#56b3b4","renderStrategy":"fill","opacity":0.7},"displayName":"Prettier Ignore","description":"Prettier ignore patterns","category":"Config"},".bashrc":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":0.7},"displayName":"Bash RC","description":"Bash run commands","category":"Config"},".zshrc":{"primary":{"color":"#89e051","renderStrategy":"fill","opacity":0.7},"displayName":"Zsh RC","description":"Zsh run commands","category":"Config"},".vimrc":{"primary":{"color":"#019733","renderStrategy":"fill","opacity":0.7},"displayName":"Vim RC","description":"Vim run commands","category":"Config"},".npmrc":{"primary":{"color":"#cb3837","renderStrategy":"fill","opacity":0.7},"displayName":"NPM RC","description":"NPM configuration","category":"Config"},".eslintrc":{"primary":{"color":"#4b32c3","renderStrategy":"fill","opacity":0.7},"displayName":"ESLint RC","description":"ESLint configuration","category":"Config"},".prettierrc":{"primary":{"color":"#56b3b4","renderStrategy":"fill","opacity":0.7},"displayName":"Prettier RC","description":"Prettier configuration","category":"Config"},".babelrc":{"primary":{"color":"#f5da55","renderStrategy":"fill","opacity":0.7},"displayName":"Babel RC","description":"Babel configuration","category":"Config"},"LICENSE":{"primary":{"color":"#d4af37","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffd700","renderStrategy":"border","borderWidth":1,"opacity":0.9},"displayName":"License","description":"License file","category":"Documentation"},".txt":{"primary":{"color":"#6b7280","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#9ca3af","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Text","description":"Plain text files","category":"Documentation"},".scm":{"primary":{"color":"#6e56cf","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#9e8cfc","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Scheme","description":"Scheme/Tree-sitter query files","category":"Scripts"},".zig":{"primary":{"color":"#F7A41D","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Zig","description":"Zig source files","category":"Systems"},".zon":{"primary":{"color":"#F7A41D","renderStrategy":"fill","opacity":0.7},"secondary":{"color":"#ffd43b","renderStrategy":"border","borderWidth":1,"opacity":0.6},"displayName":"Zon","description":"Zig Object Notation","category":"Config"},".nix":{"primary":{"color":"#7ebae4","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#5277c3","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Nix","description":"Nix expression language","category":"Config"},".h":{"primary":{"color":"#a074c4","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#ffffff","renderStrategy":"border","borderWidth":1,"opacity":0.6},"displayName":"Header","description":"C/C++ header files","category":"Systems"},".po":{"primary":{"color":"#2e7d32","renderStrategy":"fill","opacity":0.7},"displayName":"Gettext","description":"Gettext translation files","category":"Data"},".pot":{"primary":{"color":"#2e7d32","renderStrategy":"fill","opacity":0.7},"displayName":"Gettext Template","description":"Gettext translation template","category":"Data"},".blp":{"primary":{"color":"#3584e4","renderStrategy":"fill","opacity":0.8},"displayName":"Blueprint","description":"GTK Blueprint UI files","category":"Frontend"},".glsl":{"primary":{"color":"#5686a5","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#8bc9f0","renderStrategy":"glow","opacity":0.4},"displayName":"GLSL","description":"OpenGL Shading Language","category":"Graphics"},".metal":{"primary":{"color":"#8c8c8c","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#c0c0c0","renderStrategy":"glow","opacity":0.5},"displayName":"Metal","description":"Apple Metal shaders","category":"Graphics"},".ttf":{"primary":{"color":"#e84393","renderStrategy":"fill","opacity":0.7},"displayName":"TrueType","description":"TrueType font files","category":"Assets"},".otf":{"primary":{"color":"#e84393","renderStrategy":"fill","opacity":0.7},"displayName":"OpenType","description":"OpenType font files","category":"Assets"},".woff":{"primary":{"color":"#e84393","renderStrategy":"fill","opacity":0.7},"displayName":"WOFF","description":"Web Open Font Format","category":"Assets"},".woff2":{"primary":{"color":"#e84393","renderStrategy":"fill","opacity":0.7},"displayName":"WOFF2","description":"Web Open Font Format 2","category":"Assets"},".xib":{"primary":{"color":"#147efb","renderStrategy":"fill","opacity":0.8},"displayName":"XIB","description":"Xcode Interface Builder","category":"Frontend"},".plist":{"primary":{"color":"#8e8e93","renderStrategy":"fill","opacity":0.7},"displayName":"Plist","description":"Apple Property List","category":"Config"},".entitlements":{"primary":{"color":"#ff9500","renderStrategy":"fill","opacity":0.7},"displayName":"Entitlements","description":"macOS entitlements","category":"Config"},".m":{"primary":{"color":"#438eff","renderStrategy":"fill","opacity":0.8},"displayName":"Objective-C","description":"Objective-C source files","category":"Mobile"},".mm":{"primary":{"color":"#438eff","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#f34b7d","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Objective-C++","description":"Objective-C++ source files","category":"Mobile"},".nu":{"primary":{"color":"#3aa675","renderStrategy":"fill","opacity":0.8},"displayName":"Nushell","description":"Nushell scripts","category":"Scripts"},".snap":{"primary":{"color":"#9d4edd","renderStrategy":"fill","opacity":0.8},"secondary":{"color":"#c77dff","renderStrategy":"border","borderWidth":1,"opacity":0.7},"displayName":"Snapshot","description":"Jest snapshot files","category":"Testing"}}`);
13475
13579
  const defaultConfig = { "primary": { "color": "#8b949e", "renderStrategy": "fill", "opacity": 0.6 }, "displayName": "Other", "description": "Unrecognized file types", "category": "Other" };
13476
13580
  const includeUnmatched = true;
13477
13581
  const require$$0 = {
@@ -26183,133 +26287,1109 @@ const CodeCityPanelContent = ({
26183
26287
  const CodeCityPanel = (props) => {
26184
26288
  return /* @__PURE__ */ jsx(CodeCityPanelContent, { ...props });
26185
26289
  };
26186
- const focusBuildingTool = {
26187
- name: "focus_building",
26188
- description: "Focuses the camera on a specific file (building) in the file city visualization",
26189
- inputs: {
26190
- type: "object",
26191
- properties: {
26192
- filePath: {
26193
- type: "string",
26194
- description: "Path to the file to focus on"
26195
- },
26196
- animate: {
26197
- type: "boolean",
26198
- description: "Whether to animate the camera transition"
26199
- }
26200
- },
26201
- required: ["filePath"]
26202
- },
26203
- outputs: {
26204
- type: "object",
26205
- properties: {
26206
- success: { type: "boolean" },
26207
- message: { type: "string" }
26208
- }
26209
- },
26210
- tags: ["navigation", "camera", "focus"],
26211
- tool_call_template: {
26212
- call_template_type: "panel_event",
26213
- event_type: "industry-theme.file-city-panel:focus-building"
26290
+ const NpmIcon$1 = ({ size: size2 }) => /* @__PURE__ */ jsx("svg", { width: size2, height: size2, viewBox: "0 0 24 24", fill: "#CB3837", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z" }) });
26291
+ const YarnIcon$1 = ({ size: size2 }) => /* @__PURE__ */ jsx("svg", { width: size2, height: size2, viewBox: "0 0 24 24", fill: "#2C8EBB", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M12 0C5.375 0 0 5.375 0 12s5.375 12 12 12 12-5.375 12-12S18.625 0 12 0zm.768 4.105c.183 0 .363.053.525.157.125.083.287.185.755 1.154.31-.088.468-.042.551-.019.204.056.366.19.463.375.477.917.542 2.553.334 3.605-.241 1.232-.755 2.029-1.131 2.576.324.329.778.899 1.117 1.825.278.774.31 1.478.273 2.015a5.51 5.51 0 0 0 .602-.329c.593-.366 1.487-.917 2.553-.931.714-.009 1.269.445 1.353 1.103a1.23 1.23 0 0 1-.945 1.362c-.649.158-.95.278-1.821.843-1.232.797-2.539 1.242-3.012 1.39a1.686 1.686 0 0 1-.704.343c-.737.181-3.266.315-3.466.315h-.046c-.783 0-1.214-.241-1.45-.491-.658.329-1.51.19-2.122-.134a1.078 1.078 0 0 1-.58-1.153 1.243 1.243 0 0 1-.153-.195c-.162-.25-.528-.936-.454-1.946.056-.723.556-1.367.88-1.71a5.522 5.522 0 0 1 .408-2.256c.306-.727.885-1.348 1.32-1.737-.32-.537-.644-1.367-.329-2.21.227-.602.412-.936.82-1.08h-.005c.199-.074.389-.153.486-.259a3.418 3.418 0 0 1 2.298-1.103c.037-.093.079-.185.125-.283.31-.658.639-1.029 1.024-1.168a.94.94 0 0 1 .328-.06z" }) });
26292
+ const PnpmIcon$1 = ({ size: size2 }) => /* @__PURE__ */ jsx("svg", { width: size2, height: size2, viewBox: "0 0 24 24", fill: "#F69220", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M0 0v7.5h7.5V0zm8.25 0v7.5h7.498V0zm8.25 0v7.5H24V0zM8.25 8.25v7.5h7.498v-7.5zm8.25 0v7.5H24v-7.5zM0 16.5V24h7.5v-7.5zm8.25 0V24h7.498v-7.5zm8.25 0V24H24v-7.5z" }) });
26293
+ const BunIcon$1 = ({ size: size2 }) => /* @__PURE__ */ jsx("svg", { width: size2, height: size2, viewBox: "0 0 24 24", fill: "#FBF0DF", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M12 22.596c6.628 0 12-4.338 12-9.688 0-3.318-2.057-6.248-5.219-7.986-1.286-.715-2.297-1.357-3.139-1.89C14.058 2.025 13.08 1.404 12 1.404c-1.097 0-2.334.785-3.966 1.821a49.92 49.92 0 0 1-2.816 1.697C2.057 6.66 0 9.59 0 12.908c0 5.35 5.372 9.687 12 9.687v.001Z" }) });
26294
+ const PackageManagerIcon$1 = ({
26295
+ packageManager,
26296
+ size: size2 = 14,
26297
+ color: color2
26298
+ }) => {
26299
+ switch (packageManager) {
26300
+ case "npm":
26301
+ return /* @__PURE__ */ jsx(NpmIcon$1, { size: size2 });
26302
+ case "yarn":
26303
+ return /* @__PURE__ */ jsx(YarnIcon$1, { size: size2 });
26304
+ case "pnpm":
26305
+ return /* @__PURE__ */ jsx(PnpmIcon$1, { size: size2 });
26306
+ case "bun":
26307
+ return /* @__PURE__ */ jsx(BunIcon$1, { size: size2 });
26308
+ default:
26309
+ return /* @__PURE__ */ jsx(Package, { size: size2, color: color2 });
26214
26310
  }
26215
26311
  };
26216
- const selectDistrictTool = {
26217
- name: "select_district",
26218
- description: "Selects and highlights a directory (district) in the file city visualization",
26219
- inputs: {
26220
- type: "object",
26221
- properties: {
26222
- directoryPath: {
26223
- type: "string",
26224
- description: "Path to the directory to select"
26225
- },
26226
- expandChildren: {
26227
- type: "boolean",
26228
- description: "Whether to expand and show child buildings"
26229
- }
26230
- },
26231
- required: ["directoryPath"]
26232
- },
26233
- outputs: {
26234
- type: "object",
26235
- properties: {
26236
- success: { type: "boolean" },
26237
- selectedDistrict: { type: "string" }
26238
- }
26239
- },
26240
- tags: ["selection", "district", "directory"],
26241
- tool_call_template: {
26242
- call_template_type: "panel_event",
26243
- event_type: "industry-theme.file-city-panel:select-district"
26312
+ function formatCount(count2) {
26313
+ if (count2 >= 1e6) {
26314
+ return `${(count2 / 1e6).toFixed(1)}m`;
26244
26315
  }
26245
- };
26246
- const resetViewTool = {
26247
- name: "reset_view",
26248
- description: "Resets the file city view to the default camera position",
26249
- inputs: {
26250
- type: "object",
26251
- properties: {
26252
- animate: {
26253
- type: "boolean",
26254
- description: "Whether to animate the camera reset"
26255
- }
26256
- }
26257
- },
26258
- outputs: {
26259
- type: "object",
26260
- properties: {
26261
- success: { type: "boolean" }
26262
- }
26263
- },
26264
- tags: ["navigation", "camera", "reset"],
26265
- tool_call_template: {
26266
- call_template_type: "panel_event",
26267
- event_type: "industry-theme.file-city-panel:reset-view"
26316
+ if (count2 >= 1e3) {
26317
+ return `${(count2 / 1e3).toFixed(1)}k`;
26268
26318
  }
26269
- };
26270
- const codeCityPanelTools = [
26271
- focusBuildingTool,
26272
- selectDistrictTool,
26273
- resetViewTool
26274
- ];
26275
- const codeCityPanelToolsMetadata = {
26276
- id: "industry-theme.file-city-panel",
26277
- name: "File City Panel",
26278
- description: "Tools provided by the file city visualization panel extension",
26279
- tools: codeCityPanelTools
26280
- };
26281
- const panels = [
26282
- {
26283
- metadata: {
26284
- id: "principal-ade.file-city-panel",
26285
- name: "File City Map",
26286
- icon: "🏙️",
26287
- version: "0.2.0",
26288
- author: "Principal AI",
26289
- description: "3D visualization of repository structure using the File City metaphor",
26290
- // Data slices this panel depends on
26291
- // - fileTree: Required - repository file structure
26292
- // - fileCityColorModes: Optional - controls which color modes are available
26293
- // (if not provided, only fileTypes and git modes are shown)
26294
- slices: ["fileTree", "fileCityColorModes"],
26295
- // UTCP-compatible tools this panel exposes
26296
- tools: codeCityPanelTools
26297
- },
26298
- component: CodeCityPanel,
26299
- // Optional: Called when this specific panel is mounted
26300
- onMount: async (context) => {
26301
- var _a;
26302
- console.log(
26303
- "File City Panel mounted",
26304
- (_a = context.currentScope.repository) == null ? void 0 : _a.path
26305
- );
26306
- if (context.hasSlice("fileTree") && !context.isSliceLoading("fileTree")) {
26307
- await context.refresh("repository", "fileTree");
26308
- }
26309
- },
26310
- // Optional: Called when this specific panel is unmounted
26311
- onUnmount: async (_context) => {
26312
- console.log("File City Panel unmounting");
26319
+ return count2.toString();
26320
+ }
26321
+ const FeedProjectHeader = ({
26322
+ repo,
26323
+ rootPackage,
26324
+ onOpen,
26325
+ compact = false
26326
+ }) => {
26327
+ const { theme: theme2 } = useTheme();
26328
+ const fontSizeSmall = theme2.fontSizes[0];
26329
+ const fontSizeMedium = theme2.fontSizes[1];
26330
+ const fontSizeLarge = theme2.fontSizes[2] || theme2.fontSizes[1];
26331
+ const totalDeps = rootPackage ? (rootPackage.dependencyCount || 0) + (rootPackage.devDependencyCount || 0) : 0;
26332
+ return /* @__PURE__ */ jsxs(
26333
+ "div",
26334
+ {
26335
+ style: {
26336
+ display: "flex",
26337
+ flexDirection: "column",
26338
+ gap: compact ? 8 : 12,
26339
+ padding: compact ? "10px 12px" : "14px 16px",
26340
+ backgroundColor: theme2.colors.background,
26341
+ borderBottom: `1px solid ${theme2.colors.border}`,
26342
+ fontFamily: theme2.fonts.body
26343
+ },
26344
+ children: [
26345
+ /* @__PURE__ */ jsxs(
26346
+ "div",
26347
+ {
26348
+ style: {
26349
+ display: "flex",
26350
+ alignItems: "center",
26351
+ justifyContent: "space-between",
26352
+ gap: 12
26353
+ },
26354
+ children: [
26355
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: 10, flex: 1, minWidth: 0 }, children: [
26356
+ repo.avatarUrl ? /* @__PURE__ */ jsx(
26357
+ "img",
26358
+ {
26359
+ src: repo.avatarUrl,
26360
+ alt: repo.owner,
26361
+ style: {
26362
+ width: compact ? 24 : 28,
26363
+ height: compact ? 24 : 28,
26364
+ borderRadius: repo.isOrganization ? "6px" : "50%",
26365
+ flexShrink: 0
26366
+ }
26367
+ }
26368
+ ) : /* @__PURE__ */ jsx(
26369
+ "div",
26370
+ {
26371
+ style: {
26372
+ width: compact ? 24 : 28,
26373
+ height: compact ? 24 : 28,
26374
+ borderRadius: repo.isOrganization ? "6px" : "50%",
26375
+ backgroundColor: theme2.colors.backgroundLight,
26376
+ display: "flex",
26377
+ alignItems: "center",
26378
+ justifyContent: "center",
26379
+ flexShrink: 0
26380
+ },
26381
+ children: repo.isOrganization ? /* @__PURE__ */ jsx(Building2, { size: 14, color: theme2.colors.textSecondary }) : /* @__PURE__ */ jsx(User, { size: 14, color: theme2.colors.textSecondary })
26382
+ }
26383
+ ),
26384
+ /* @__PURE__ */ jsx(
26385
+ "span",
26386
+ {
26387
+ style: {
26388
+ fontSize: compact ? fontSizeMedium : fontSizeLarge,
26389
+ fontWeight: 600,
26390
+ color: theme2.colors.text,
26391
+ overflow: "hidden",
26392
+ textOverflow: "ellipsis",
26393
+ whiteSpace: "nowrap"
26394
+ },
26395
+ title: repo.fullName,
26396
+ children: repo.name
26397
+ }
26398
+ )
26399
+ ] }),
26400
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: 12, flexShrink: 0 }, children: [
26401
+ repo.license && /* @__PURE__ */ jsxs(
26402
+ "div",
26403
+ {
26404
+ style: {
26405
+ display: "flex",
26406
+ alignItems: "center",
26407
+ gap: 4,
26408
+ fontSize: fontSizeSmall,
26409
+ color: theme2.colors.textSecondary
26410
+ },
26411
+ children: [
26412
+ /* @__PURE__ */ jsx(Scale, { size: 12 }),
26413
+ /* @__PURE__ */ jsx("span", { children: repo.license })
26414
+ ]
26415
+ }
26416
+ ),
26417
+ onOpen && /* @__PURE__ */ jsxs(
26418
+ "button",
26419
+ {
26420
+ onClick: onOpen,
26421
+ style: {
26422
+ display: "flex",
26423
+ alignItems: "center",
26424
+ gap: 4,
26425
+ padding: "5px 12px",
26426
+ fontSize: fontSizeSmall,
26427
+ fontWeight: 500,
26428
+ fontFamily: theme2.fonts.body,
26429
+ color: "#ffffff",
26430
+ backgroundColor: theme2.colors.primary,
26431
+ border: "none",
26432
+ borderRadius: "4px",
26433
+ cursor: "pointer",
26434
+ flexShrink: 0,
26435
+ transition: "opacity 0.15s ease"
26436
+ },
26437
+ onMouseEnter: (e) => {
26438
+ e.currentTarget.style.opacity = "0.9";
26439
+ },
26440
+ onMouseLeave: (e) => {
26441
+ e.currentTarget.style.opacity = "1";
26442
+ },
26443
+ children: [
26444
+ /* @__PURE__ */ jsx(ExternalLink, { size: 14 }),
26445
+ "Open"
26446
+ ]
26447
+ }
26448
+ )
26449
+ ] })
26450
+ ]
26451
+ }
26452
+ ),
26453
+ repo.description && !compact && /* @__PURE__ */ jsx(
26454
+ "p",
26455
+ {
26456
+ style: {
26457
+ margin: 0,
26458
+ fontSize: fontSizeSmall,
26459
+ color: theme2.colors.textSecondary,
26460
+ lineHeight: 1.4,
26461
+ display: "-webkit-box",
26462
+ WebkitLineClamp: 2,
26463
+ WebkitBoxOrient: "vertical",
26464
+ overflow: "hidden"
26465
+ },
26466
+ title: repo.description,
26467
+ children: repo.description
26468
+ }
26469
+ ),
26470
+ /* @__PURE__ */ jsxs(
26471
+ "div",
26472
+ {
26473
+ style: {
26474
+ display: "flex",
26475
+ alignItems: "center",
26476
+ gap: compact ? 12 : 16,
26477
+ flexWrap: "wrap"
26478
+ },
26479
+ children: [
26480
+ /* @__PURE__ */ jsxs(
26481
+ "div",
26482
+ {
26483
+ style: {
26484
+ display: "flex",
26485
+ alignItems: "center",
26486
+ gap: 4,
26487
+ fontSize: fontSizeSmall,
26488
+ color: theme2.colors.textSecondary
26489
+ },
26490
+ title: `${repo.stars.toLocaleString()} stars`,
26491
+ children: [
26492
+ /* @__PURE__ */ jsx(Star, { size: 13 }),
26493
+ /* @__PURE__ */ jsx("span", { children: formatCount(repo.stars) })
26494
+ ]
26495
+ }
26496
+ ),
26497
+ /* @__PURE__ */ jsxs(
26498
+ "div",
26499
+ {
26500
+ style: {
26501
+ display: "flex",
26502
+ alignItems: "center",
26503
+ gap: 4,
26504
+ fontSize: fontSizeSmall,
26505
+ color: theme2.colors.textSecondary
26506
+ },
26507
+ title: `${repo.forks.toLocaleString()} forks`,
26508
+ children: [
26509
+ /* @__PURE__ */ jsx(GitFork, { size: 13 }),
26510
+ /* @__PURE__ */ jsx("span", { children: formatCount(repo.forks) })
26511
+ ]
26512
+ }
26513
+ ),
26514
+ repo.watchers !== void 0 && /* @__PURE__ */ jsxs(
26515
+ "div",
26516
+ {
26517
+ style: {
26518
+ display: "flex",
26519
+ alignItems: "center",
26520
+ gap: 4,
26521
+ fontSize: fontSizeSmall,
26522
+ color: theme2.colors.textSecondary
26523
+ },
26524
+ title: `${repo.watchers.toLocaleString()} watching`,
26525
+ children: [
26526
+ /* @__PURE__ */ jsx(Eye, { size: 13 }),
26527
+ /* @__PURE__ */ jsx("span", { children: formatCount(repo.watchers) })
26528
+ ]
26529
+ }
26530
+ ),
26531
+ repo.openIssues !== void 0 && repo.openIssues > 0 && /* @__PURE__ */ jsxs(
26532
+ "div",
26533
+ {
26534
+ style: {
26535
+ display: "flex",
26536
+ alignItems: "center",
26537
+ gap: 4,
26538
+ fontSize: fontSizeSmall,
26539
+ color: theme2.colors.textSecondary
26540
+ },
26541
+ title: `${repo.openIssues.toLocaleString()} open issues`,
26542
+ children: [
26543
+ /* @__PURE__ */ jsx(CircleAlert, { size: 13 }),
26544
+ /* @__PURE__ */ jsx("span", { children: formatCount(repo.openIssues) })
26545
+ ]
26546
+ }
26547
+ ),
26548
+ repo.htmlUrl && /* @__PURE__ */ jsxs(
26549
+ "a",
26550
+ {
26551
+ href: repo.htmlUrl,
26552
+ target: "_blank",
26553
+ rel: "noopener noreferrer",
26554
+ style: {
26555
+ display: "flex",
26556
+ alignItems: "center",
26557
+ gap: 4,
26558
+ fontSize: fontSizeSmall,
26559
+ color: theme2.colors.textSecondary,
26560
+ textDecoration: "none"
26561
+ },
26562
+ title: repo.htmlUrl,
26563
+ children: [
26564
+ /* @__PURE__ */ jsx(ExternalLink, { size: 12 }),
26565
+ /* @__PURE__ */ jsx("span", { children: "GitHub" })
26566
+ ]
26567
+ }
26568
+ )
26569
+ ]
26570
+ }
26571
+ ),
26572
+ rootPackage && /* @__PURE__ */ jsxs(
26573
+ "div",
26574
+ {
26575
+ style: {
26576
+ display: "flex",
26577
+ alignItems: "center",
26578
+ gap: compact ? 12 : 16,
26579
+ flexWrap: "wrap",
26580
+ paddingTop: compact ? 4 : 8,
26581
+ borderTop: `1px solid ${theme2.colors.border}`
26582
+ },
26583
+ children: [
26584
+ rootPackage.packageManager && /* @__PURE__ */ jsxs(
26585
+ "div",
26586
+ {
26587
+ style: {
26588
+ display: "flex",
26589
+ alignItems: "center",
26590
+ gap: 6
26591
+ },
26592
+ children: [
26593
+ /* @__PURE__ */ jsx(
26594
+ PackageManagerIcon$1,
26595
+ {
26596
+ packageManager: rootPackage.packageManager,
26597
+ size: 14,
26598
+ color: theme2.colors.textSecondary
26599
+ }
26600
+ ),
26601
+ rootPackage.name && /* @__PURE__ */ jsx(
26602
+ "span",
26603
+ {
26604
+ style: {
26605
+ fontSize: fontSizeSmall,
26606
+ color: theme2.colors.text,
26607
+ fontWeight: 500
26608
+ },
26609
+ children: rootPackage.name
26610
+ }
26611
+ ),
26612
+ rootPackage.version && /* @__PURE__ */ jsxs(
26613
+ "span",
26614
+ {
26615
+ style: {
26616
+ fontSize: fontSizeSmall,
26617
+ color: theme2.colors.textSecondary,
26618
+ backgroundColor: theme2.colors.backgroundLight,
26619
+ padding: "1px 5px",
26620
+ borderRadius: "3px"
26621
+ },
26622
+ children: [
26623
+ "v",
26624
+ rootPackage.version
26625
+ ]
26626
+ }
26627
+ )
26628
+ ]
26629
+ }
26630
+ ),
26631
+ rootPackage.isMonorepo && /* @__PURE__ */ jsxs(
26632
+ "span",
26633
+ {
26634
+ style: {
26635
+ display: "flex",
26636
+ alignItems: "center",
26637
+ gap: 4,
26638
+ fontSize: fontSizeSmall,
26639
+ color: "#8b5cf6",
26640
+ backgroundColor: "rgba(139, 92, 246, 0.15)",
26641
+ padding: "2px 6px",
26642
+ borderRadius: "4px"
26643
+ },
26644
+ children: [
26645
+ /* @__PURE__ */ jsx(GitBranch, { size: 12 }),
26646
+ rootPackage.packageCount ? `${rootPackage.packageCount} packages` : "monorepo"
26647
+ ]
26648
+ }
26649
+ ),
26650
+ totalDeps > 0 && /* @__PURE__ */ jsxs(
26651
+ "div",
26652
+ {
26653
+ style: {
26654
+ display: "flex",
26655
+ alignItems: "center",
26656
+ gap: 4,
26657
+ fontSize: fontSizeSmall,
26658
+ color: theme2.colors.textSecondary
26659
+ },
26660
+ title: `${rootPackage.dependencyCount || 0} prod, ${rootPackage.devDependencyCount || 0} dev dependencies`,
26661
+ children: [
26662
+ /* @__PURE__ */ jsx(Box, { size: 12 }),
26663
+ /* @__PURE__ */ jsxs("span", { children: [
26664
+ rootPackage.dependencyCount || 0,
26665
+ " deps",
26666
+ rootPackage.devDependencyCount ? ` + ${rootPackage.devDependencyCount} dev` : ""
26667
+ ] })
26668
+ ]
26669
+ }
26670
+ )
26671
+ ]
26672
+ }
26673
+ )
26674
+ ]
26675
+ }
26676
+ );
26677
+ };
26678
+ const FeedCodeCityPanelContent = ({
26679
+ context,
26680
+ actions: actions2,
26681
+ events
26682
+ }) => {
26683
+ var _a, _b, _c, _d, _e, _f, _g;
26684
+ const { theme: theme2 } = useTheme();
26685
+ const [cityData, setCityData] = useState(null);
26686
+ const [hoverInfo, setHoverInfo] = useState(null);
26687
+ const [highlightLayers, setHighlightLayers] = useState([]);
26688
+ const [loading, setLoading] = useState(false);
26689
+ const [containerSize, setContainerSize] = useState(null);
26690
+ const contentContainerRef = useRef(null);
26691
+ const feedProjectSlice = context.getSlice("feedProject");
26692
+ const LEGEND_MIN_SIZE = 200;
26693
+ const HOVER_BAR_HEIGHT = 48;
26694
+ useEffect(() => {
26695
+ const container = contentContainerRef.current;
26696
+ if (!container) return;
26697
+ const resizeObserver = new ResizeObserver((entries) => {
26698
+ for (const entry of entries) {
26699
+ const { width, height } = entry.contentRect;
26700
+ setContainerSize({ width, height });
26701
+ }
26702
+ });
26703
+ resizeObserver.observe(container);
26704
+ return () => resizeObserver.disconnect();
26705
+ }, []);
26706
+ const layout = useMemo(() => {
26707
+ if (!containerSize) {
26708
+ return { mapSize: 0, legendPosition: "bottom" };
26709
+ }
26710
+ const { width, height } = containerSize;
26711
+ const isLandscape = width > height;
26712
+ if (isLandscape) {
26713
+ const idealMapSize = height;
26714
+ const availableForLegend = width - idealMapSize;
26715
+ const legendNeedsMoreSpace = availableForLegend < LEGEND_MIN_SIZE;
26716
+ const mapSize = legendNeedsMoreSpace ? width - LEGEND_MIN_SIZE : idealMapSize;
26717
+ return { mapSize, legendPosition: "right" };
26718
+ } else {
26719
+ const idealMapHeight = width + HOVER_BAR_HEIGHT;
26720
+ const availableForLegend = height - idealMapHeight;
26721
+ const legendNeedsMoreSpace = availableForLegend < LEGEND_MIN_SIZE;
26722
+ const mapSize = legendNeedsMoreSpace ? height - LEGEND_MIN_SIZE : idealMapHeight;
26723
+ return { mapSize, legendPosition: "bottom" };
26724
+ }
26725
+ }, [containerSize]);
26726
+ const fileTreeSlice = context.getSlice("fileTree");
26727
+ useEffect(() => {
26728
+ if (!(fileTreeSlice == null ? void 0 : fileTreeSlice.data) || fileTreeSlice.loading) {
26729
+ return;
26730
+ }
26731
+ setLoading(true);
26732
+ try {
26733
+ const fileInfoList = fileTreeSlice.data.allFiles.map((file) => {
26734
+ const pathParts = file.path.split("/");
26735
+ const fileName = file.name || pathParts[pathParts.length - 1];
26736
+ const extension = fileName.includes(".") ? fileName.split(".").pop() || "" : "";
26737
+ return {
26738
+ path: file.path,
26739
+ name: fileName,
26740
+ extension,
26741
+ size: file.size || 1e3,
26742
+ lastModified: /* @__PURE__ */ new Date(),
26743
+ isDirectory: false,
26744
+ relativePath: file.path
26745
+ };
26746
+ });
26747
+ const fileSystemTree = buildFileSystemTreeFromFileInfoList(
26748
+ fileInfoList,
26749
+ fileTreeSlice.data.sha || "unknown"
26750
+ );
26751
+ const builder = new CodeCityBuilderWithGrid();
26752
+ const data = builder.buildCityFromFileSystem(fileSystemTree, "");
26753
+ setCityData(data);
26754
+ if (data.buildings) {
26755
+ const fileTypeLayers = distExports.createFileColorHighlightLayers(data.buildings);
26756
+ setHighlightLayers(fileTypeLayers);
26757
+ }
26758
+ } catch (error) {
26759
+ console.error("Error building city:", error);
26760
+ } finally {
26761
+ setLoading(false);
26762
+ }
26763
+ }, [fileTreeSlice == null ? void 0 : fileTreeSlice.data, fileTreeSlice == null ? void 0 : fileTreeSlice.loading]);
26764
+ const legendFileTypes = useMemo(() => {
26765
+ return highlightLayers.filter((layer) => layer.id.endsWith("-primary")).map((layer) => ({
26766
+ id: layer.id,
26767
+ name: layer.name,
26768
+ fillColor: layer.color,
26769
+ count: layer.items.length,
26770
+ enabled: layer.enabled
26771
+ }));
26772
+ }, [highlightLayers]);
26773
+ const toggleFileType = useCallback((id2) => {
26774
+ setHighlightLayers(
26775
+ (prev) => prev.map((layer) => {
26776
+ if (layer.id === id2 || layer.id === id2.replace("-primary", "-secondary")) {
26777
+ return { ...layer, enabled: !layer.enabled };
26778
+ }
26779
+ return layer;
26780
+ })
26781
+ );
26782
+ }, []);
26783
+ const handleHover = useCallback((info) => {
26784
+ setHoverInfo(info);
26785
+ }, []);
26786
+ const handleFileClick = useCallback(
26787
+ (filePath) => {
26788
+ if (actions2.openFile) {
26789
+ actions2.openFile(filePath);
26790
+ }
26791
+ },
26792
+ [actions2]
26793
+ );
26794
+ const handleOpen = useCallback(() => {
26795
+ var _a2;
26796
+ if (((_a2 = feedProjectSlice == null ? void 0 : feedProjectSlice.data) == null ? void 0 : _a2.repo) && events) {
26797
+ events.emit({
26798
+ type: "project:open",
26799
+ source: "feed-code-city-panel",
26800
+ timestamp: Date.now(),
26801
+ payload: {
26802
+ repo: feedProjectSlice.data.repo,
26803
+ rootPackage: feedProjectSlice.data.rootPackage
26804
+ }
26805
+ });
26806
+ }
26807
+ }, [events, feedProjectSlice == null ? void 0 : feedProjectSlice.data]);
26808
+ return /* @__PURE__ */ jsxs(
26809
+ "div",
26810
+ {
26811
+ style: {
26812
+ display: "flex",
26813
+ flexDirection: "column",
26814
+ height: "100%",
26815
+ width: "100%",
26816
+ backgroundColor: theme2.colors.background
26817
+ },
26818
+ children: [
26819
+ ((_a = feedProjectSlice == null ? void 0 : feedProjectSlice.data) == null ? void 0 : _a.repo) && /* @__PURE__ */ jsx(
26820
+ FeedProjectHeader,
26821
+ {
26822
+ repo: feedProjectSlice.data.repo,
26823
+ rootPackage: feedProjectSlice.data.rootPackage,
26824
+ onOpen: handleOpen
26825
+ }
26826
+ ),
26827
+ /* @__PURE__ */ jsxs(
26828
+ "div",
26829
+ {
26830
+ ref: contentContainerRef,
26831
+ style: {
26832
+ flex: 1,
26833
+ width: "100%",
26834
+ position: "relative",
26835
+ overflow: "hidden",
26836
+ display: "flex",
26837
+ flexDirection: layout.legendPosition === "right" ? "row" : "column"
26838
+ },
26839
+ children: [
26840
+ /* @__PURE__ */ jsxs(
26841
+ "div",
26842
+ {
26843
+ style: {
26844
+ width: layout.legendPosition === "right" ? layout.mapSize : "100%",
26845
+ height: layout.legendPosition === "bottom" ? layout.mapSize : "100%",
26846
+ flexShrink: 0,
26847
+ position: "relative",
26848
+ display: "flex",
26849
+ flexDirection: "column"
26850
+ },
26851
+ children: [
26852
+ /* @__PURE__ */ jsx("div", { style: { flex: 1, position: "relative", minHeight: 0 }, children: loading ? /* @__PURE__ */ jsx(
26853
+ "div",
26854
+ {
26855
+ style: {
26856
+ display: "flex",
26857
+ alignItems: "center",
26858
+ justifyContent: "center",
26859
+ height: "100%",
26860
+ color: theme2.colors.textSecondary
26861
+ },
26862
+ children: "Loading repository structure..."
26863
+ }
26864
+ ) : !cityData ? /* @__PURE__ */ jsxs(
26865
+ "div",
26866
+ {
26867
+ style: {
26868
+ display: "flex",
26869
+ flexDirection: "column",
26870
+ alignItems: "center",
26871
+ justifyContent: "center",
26872
+ height: "100%",
26873
+ color: theme2.colors.textSecondary,
26874
+ gap: "12px"
26875
+ },
26876
+ children: [
26877
+ /* @__PURE__ */ jsx(Building2, { size: 32, style: { opacity: 0.5 } }),
26878
+ /* @__PURE__ */ jsx("div", { children: context.currentScope.repository ? "Building File City..." : "No repository loaded" })
26879
+ ]
26880
+ }
26881
+ ) : /* @__PURE__ */ jsx(
26882
+ distExports.ArchitectureMapHighlightLayers,
26883
+ {
26884
+ cityData,
26885
+ highlightLayers,
26886
+ showLayerControls: false,
26887
+ onLayerToggle: () => {
26888
+ },
26889
+ defaultDirectoryColor: "#111827",
26890
+ onFileClick: handleFileClick,
26891
+ showFileTypeIcons: true,
26892
+ className: "w-full h-full",
26893
+ showDirectoryLabels: true,
26894
+ onHover: handleHover,
26895
+ enableZoom: false,
26896
+ allowZoomToPath: true,
26897
+ zoomAnimationSpeed: 0.12
26898
+ }
26899
+ ) }),
26900
+ /* @__PURE__ */ jsx(
26901
+ "div",
26902
+ {
26903
+ style: {
26904
+ height: "48px",
26905
+ borderTop: `1px solid ${theme2.colors.border}`,
26906
+ backgroundColor: theme2.colors.background,
26907
+ display: "flex",
26908
+ alignItems: "center",
26909
+ padding: "0 12px",
26910
+ fontSize: theme2.fontSizes[0],
26911
+ fontFamily: theme2.fonts.body,
26912
+ color: theme2.colors.text,
26913
+ flexShrink: 0
26914
+ },
26915
+ children: hoverInfo && (hoverInfo.hoveredBuilding || hoverInfo.hoveredDistrict) ? /* @__PURE__ */ jsxs(Fragment, { children: [
26916
+ /* @__PURE__ */ jsxs(
26917
+ "div",
26918
+ {
26919
+ style: {
26920
+ flex: "1 1 auto",
26921
+ display: "flex",
26922
+ flexDirection: "column",
26923
+ gap: "1px",
26924
+ minWidth: 0
26925
+ },
26926
+ children: [
26927
+ /* @__PURE__ */ jsx(
26928
+ "div",
26929
+ {
26930
+ style: {
26931
+ fontWeight: 600,
26932
+ fontFamily: theme2.fonts.monospace,
26933
+ color: theme2.colors.primary,
26934
+ fontSize: theme2.fontSizes[1],
26935
+ overflow: "hidden",
26936
+ textOverflow: "ellipsis",
26937
+ whiteSpace: "nowrap"
26938
+ },
26939
+ children: ((_b = hoverInfo.fileTooltip) == null ? void 0 : _b.text) || ((_d = (_c = hoverInfo.hoveredDistrict) == null ? void 0 : _c.path) == null ? void 0 : _d.split("/").pop()) || ((_e = hoverInfo.hoveredDistrict) == null ? void 0 : _e.path) || "Unknown"
26940
+ }
26941
+ ),
26942
+ /* @__PURE__ */ jsx(
26943
+ "div",
26944
+ {
26945
+ style: {
26946
+ fontFamily: theme2.fonts.monospace,
26947
+ color: theme2.colors.textSecondary,
26948
+ fontSize: theme2.fontSizes[0],
26949
+ overflow: "hidden",
26950
+ textOverflow: "ellipsis",
26951
+ whiteSpace: "nowrap"
26952
+ },
26953
+ children: ((_f = hoverInfo.hoveredBuilding) == null ? void 0 : _f.path) || ((_g = hoverInfo.hoveredDistrict) == null ? void 0 : _g.path) || "/"
26954
+ }
26955
+ )
26956
+ ]
26957
+ }
26958
+ ),
26959
+ hoverInfo.hoveredDistrict && hoverInfo.fileCount !== null && /* @__PURE__ */ jsxs(
26960
+ "div",
26961
+ {
26962
+ style: {
26963
+ fontSize: theme2.fontSizes[0],
26964
+ color: theme2.colors.textSecondary,
26965
+ whiteSpace: "nowrap"
26966
+ },
26967
+ children: [
26968
+ hoverInfo.fileCount,
26969
+ " ",
26970
+ hoverInfo.fileCount === 1 ? "file" : "files"
26971
+ ]
26972
+ }
26973
+ )
26974
+ ] }) : /* @__PURE__ */ jsx("div", { style: { color: theme2.colors.textSecondary, fontStyle: "italic" }, children: "Hover over the map to see file details" })
26975
+ }
26976
+ )
26977
+ ]
26978
+ }
26979
+ ),
26980
+ /* @__PURE__ */ jsx(
26981
+ Legend,
26982
+ {
26983
+ fileTypes: legendFileTypes,
26984
+ onItemClick: toggleFileType,
26985
+ position: layout.legendPosition
26986
+ }
26987
+ )
26988
+ ]
26989
+ }
26990
+ )
26991
+ ]
26992
+ }
26993
+ );
26994
+ };
26995
+ const FeedCodeCityPanel = (props) => {
26996
+ return /* @__PURE__ */ jsx(FeedCodeCityPanelContent, { ...props });
26997
+ };
26998
+ const focusBuildingTool = {
26999
+ name: "focus_building",
27000
+ description: "Focuses the camera on a specific file (building) in the file city visualization",
27001
+ inputs: {
27002
+ type: "object",
27003
+ properties: {
27004
+ filePath: {
27005
+ type: "string",
27006
+ description: "Path to the file to focus on"
27007
+ },
27008
+ animate: {
27009
+ type: "boolean",
27010
+ description: "Whether to animate the camera transition"
27011
+ }
27012
+ },
27013
+ required: ["filePath"]
27014
+ },
27015
+ outputs: {
27016
+ type: "object",
27017
+ properties: {
27018
+ success: { type: "boolean" },
27019
+ message: { type: "string" }
27020
+ }
27021
+ },
27022
+ tags: ["navigation", "camera", "focus"],
27023
+ tool_call_template: {
27024
+ call_template_type: "panel_event",
27025
+ event_type: "industry-theme.file-city-panel:focus-building"
27026
+ }
27027
+ };
27028
+ const selectDistrictTool = {
27029
+ name: "select_district",
27030
+ description: "Selects and highlights a directory (district) in the file city visualization",
27031
+ inputs: {
27032
+ type: "object",
27033
+ properties: {
27034
+ directoryPath: {
27035
+ type: "string",
27036
+ description: "Path to the directory to select"
27037
+ },
27038
+ expandChildren: {
27039
+ type: "boolean",
27040
+ description: "Whether to expand and show child buildings"
27041
+ }
27042
+ },
27043
+ required: ["directoryPath"]
27044
+ },
27045
+ outputs: {
27046
+ type: "object",
27047
+ properties: {
27048
+ success: { type: "boolean" },
27049
+ selectedDistrict: { type: "string" }
27050
+ }
27051
+ },
27052
+ tags: ["selection", "district", "directory"],
27053
+ tool_call_template: {
27054
+ call_template_type: "panel_event",
27055
+ event_type: "industry-theme.file-city-panel:select-district"
27056
+ }
27057
+ };
27058
+ const resetViewTool = {
27059
+ name: "reset_view",
27060
+ description: "Resets the file city view to the default camera position",
27061
+ inputs: {
27062
+ type: "object",
27063
+ properties: {
27064
+ animate: {
27065
+ type: "boolean",
27066
+ description: "Whether to animate the camera reset"
27067
+ }
27068
+ }
27069
+ },
27070
+ outputs: {
27071
+ type: "object",
27072
+ properties: {
27073
+ success: { type: "boolean" }
27074
+ }
27075
+ },
27076
+ tags: ["navigation", "camera", "reset"],
27077
+ tool_call_template: {
27078
+ call_template_type: "panel_event",
27079
+ event_type: "industry-theme.file-city-panel:reset-view"
27080
+ }
27081
+ };
27082
+ const codeCityPanelTools = [
27083
+ focusBuildingTool,
27084
+ selectDistrictTool,
27085
+ resetViewTool
27086
+ ];
27087
+ const codeCityPanelToolsMetadata = {
27088
+ id: "industry-theme.file-city-panel",
27089
+ name: "File City Panel",
27090
+ description: "Tools provided by the file city visualization panel extension",
27091
+ tools: codeCityPanelTools
27092
+ };
27093
+ const NpmIcon = ({ size: size2 }) => /* @__PURE__ */ jsx("svg", { width: size2, height: size2, viewBox: "0 0 24 24", fill: "#CB3837", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z" }) });
27094
+ const YarnIcon = ({ size: size2 }) => /* @__PURE__ */ jsx("svg", { width: size2, height: size2, viewBox: "0 0 24 24", fill: "#2C8EBB", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M12 0C5.375 0 0 5.375 0 12s5.375 12 12 12 12-5.375 12-12S18.625 0 12 0zm.768 4.105c.183 0 .363.053.525.157.125.083.287.185.755 1.154.31-.088.468-.042.551-.019.204.056.366.19.463.375.477.917.542 2.553.334 3.605-.241 1.232-.755 2.029-1.131 2.576.324.329.778.899 1.117 1.825.278.774.31 1.478.273 2.015a5.51 5.51 0 0 0 .602-.329c.593-.366 1.487-.917 2.553-.931.714-.009 1.269.445 1.353 1.103a1.23 1.23 0 0 1-.945 1.362c-.649.158-.95.278-1.821.843-1.232.797-2.539 1.242-3.012 1.39a1.686 1.686 0 0 1-.704.343c-.737.181-3.266.315-3.466.315h-.046c-.783 0-1.214-.241-1.45-.491-.658.329-1.51.19-2.122-.134a1.078 1.078 0 0 1-.58-1.153 1.243 1.243 0 0 1-.153-.195c-.162-.25-.528-.936-.454-1.946.056-.723.556-1.367.88-1.71a5.522 5.522 0 0 1 .408-2.256c.306-.727.885-1.348 1.32-1.737-.32-.537-.644-1.367-.329-2.21.227-.602.412-.936.82-1.08h-.005c.199-.074.389-.153.486-.259a3.418 3.418 0 0 1 2.298-1.103c.037-.093.079-.185.125-.283.31-.658.639-1.029 1.024-1.168a.94.94 0 0 1 .328-.06z" }) });
27095
+ const PnpmIcon = ({ size: size2 }) => /* @__PURE__ */ jsx("svg", { width: size2, height: size2, viewBox: "0 0 24 24", fill: "#F69220", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M0 0v7.5h7.5V0zm8.25 0v7.5h7.498V0zm8.25 0v7.5H24V0zM8.25 8.25v7.5h7.498v-7.5zm8.25 0v7.5H24v-7.5zM0 16.5V24h7.5v-7.5zm8.25 0V24h7.498v-7.5zm8.25 0V24H24v-7.5z" }) });
27096
+ const BunIcon = ({ size: size2 }) => /* @__PURE__ */ jsx("svg", { width: size2, height: size2, viewBox: "0 0 24 24", fill: "#FBF0DF", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M12 22.596c6.628 0 12-4.338 12-9.688 0-3.318-2.057-6.248-5.219-7.986-1.286-.715-2.297-1.357-3.139-1.89C14.058 2.025 13.08 1.404 12 1.404c-1.097 0-2.334.785-3.966 1.821a49.92 49.92 0 0 1-2.816 1.697C2.057 6.66 0 9.59 0 12.908c0 5.35 5.372 9.687 12 9.687v.001Z" }) });
27097
+ const PackageManagerIcon = ({
27098
+ packageManager,
27099
+ size: size2 = 16,
27100
+ color: color2
27101
+ }) => {
27102
+ switch (packageManager) {
27103
+ case "npm":
27104
+ return /* @__PURE__ */ jsx(NpmIcon, { size: size2 });
27105
+ case "yarn":
27106
+ return /* @__PURE__ */ jsx(YarnIcon, { size: size2 });
27107
+ case "pnpm":
27108
+ return /* @__PURE__ */ jsx(PnpmIcon, { size: size2 });
27109
+ case "bun":
27110
+ return /* @__PURE__ */ jsx(BunIcon, { size: size2 });
27111
+ default:
27112
+ return /* @__PURE__ */ jsx(Package, { size: size2, color: color2 });
27113
+ }
27114
+ };
27115
+ const ProjectInfoHeader = ({
27116
+ project,
27117
+ onOpen,
27118
+ compact = false
27119
+ }) => {
27120
+ const { theme: theme2 } = useTheme();
27121
+ const totalDeps = (project.dependencyCount || 0) + (project.devDependencyCount || 0);
27122
+ const fontSizeSmall = theme2.fontSizes[0];
27123
+ const fontSizeMedium = theme2.fontSizes[1];
27124
+ const fontSizeLarge = theme2.fontSizes[2] || theme2.fontSizes[1];
27125
+ return /* @__PURE__ */ jsxs(
27126
+ "div",
27127
+ {
27128
+ style: {
27129
+ display: "flex",
27130
+ flexDirection: "column",
27131
+ gap: compact ? 4 : 8,
27132
+ padding: compact ? "8px 12px" : "12px 16px",
27133
+ backgroundColor: theme2.colors.background,
27134
+ borderBottom: `1px solid ${theme2.colors.border}`,
27135
+ fontFamily: theme2.fonts.body,
27136
+ minHeight: compact ? 48 : "auto"
27137
+ },
27138
+ children: [
27139
+ /* @__PURE__ */ jsxs(
27140
+ "div",
27141
+ {
27142
+ style: {
27143
+ display: "flex",
27144
+ alignItems: "center",
27145
+ justifyContent: "space-between",
27146
+ gap: 12
27147
+ },
27148
+ children: [
27149
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: [
27150
+ project.packageManager && /* @__PURE__ */ jsx("div", { style: { flexShrink: 0 }, children: /* @__PURE__ */ jsx(
27151
+ PackageManagerIcon,
27152
+ {
27153
+ packageManager: project.packageManager,
27154
+ size: compact ? 18 : 20,
27155
+ color: theme2.colors.textSecondary
27156
+ }
27157
+ ) }),
27158
+ /* @__PURE__ */ jsx(
27159
+ "span",
27160
+ {
27161
+ style: {
27162
+ fontSize: compact ? fontSizeMedium : fontSizeLarge,
27163
+ fontWeight: 600,
27164
+ color: theme2.colors.text,
27165
+ overflow: "hidden",
27166
+ textOverflow: "ellipsis",
27167
+ whiteSpace: "nowrap"
27168
+ },
27169
+ title: project.name,
27170
+ children: project.name
27171
+ }
27172
+ ),
27173
+ project.version && /* @__PURE__ */ jsxs(
27174
+ "span",
27175
+ {
27176
+ style: {
27177
+ fontSize: fontSizeSmall,
27178
+ color: theme2.colors.textSecondary,
27179
+ backgroundColor: theme2.colors.backgroundLight,
27180
+ padding: "2px 6px",
27181
+ borderRadius: "4px",
27182
+ flexShrink: 0
27183
+ },
27184
+ children: [
27185
+ "v",
27186
+ project.version
27187
+ ]
27188
+ }
27189
+ ),
27190
+ project.isMonorepo && /* @__PURE__ */ jsxs(
27191
+ "span",
27192
+ {
27193
+ style: {
27194
+ display: "flex",
27195
+ alignItems: "center",
27196
+ gap: 4,
27197
+ fontSize: fontSizeSmall,
27198
+ color: "#8b5cf6",
27199
+ backgroundColor: "rgba(139, 92, 246, 0.15)",
27200
+ padding: "2px 6px",
27201
+ borderRadius: "4px",
27202
+ flexShrink: 0
27203
+ },
27204
+ children: [
27205
+ /* @__PURE__ */ jsx(GitBranch, { size: 12 }),
27206
+ project.packageCount ? `${project.packageCount} packages` : "monorepo"
27207
+ ]
27208
+ }
27209
+ )
27210
+ ] }),
27211
+ onOpen && /* @__PURE__ */ jsxs(
27212
+ "button",
27213
+ {
27214
+ onClick: onOpen,
27215
+ style: {
27216
+ display: "flex",
27217
+ alignItems: "center",
27218
+ gap: 4,
27219
+ padding: "4px 10px",
27220
+ fontSize: fontSizeSmall,
27221
+ fontWeight: 500,
27222
+ fontFamily: theme2.fonts.body,
27223
+ color: "#ffffff",
27224
+ backgroundColor: theme2.colors.primary,
27225
+ border: "none",
27226
+ borderRadius: "4px",
27227
+ cursor: "pointer",
27228
+ flexShrink: 0,
27229
+ transition: "opacity 0.15s ease"
27230
+ },
27231
+ onMouseEnter: (e) => {
27232
+ e.currentTarget.style.opacity = "0.9";
27233
+ },
27234
+ onMouseLeave: (e) => {
27235
+ e.currentTarget.style.opacity = "1";
27236
+ },
27237
+ children: [
27238
+ /* @__PURE__ */ jsx(ExternalLink, { size: 14 }),
27239
+ "Open"
27240
+ ]
27241
+ }
27242
+ )
27243
+ ]
27244
+ }
27245
+ ),
27246
+ !compact && project.description && /* @__PURE__ */ jsx(
27247
+ "p",
27248
+ {
27249
+ style: {
27250
+ margin: 0,
27251
+ fontSize: fontSizeSmall,
27252
+ color: theme2.colors.textSecondary,
27253
+ overflow: "hidden",
27254
+ textOverflow: "ellipsis",
27255
+ whiteSpace: "nowrap"
27256
+ },
27257
+ title: project.description,
27258
+ children: project.description
27259
+ }
27260
+ ),
27261
+ /* @__PURE__ */ jsxs(
27262
+ "div",
27263
+ {
27264
+ style: {
27265
+ display: "flex",
27266
+ alignItems: "center",
27267
+ gap: compact ? 12 : 16,
27268
+ flexWrap: "wrap"
27269
+ },
27270
+ children: [
27271
+ project.license && /* @__PURE__ */ jsxs(
27272
+ "div",
27273
+ {
27274
+ style: {
27275
+ display: "flex",
27276
+ alignItems: "center",
27277
+ gap: 4,
27278
+ fontSize: fontSizeSmall,
27279
+ color: theme2.colors.textSecondary
27280
+ },
27281
+ title: `License: ${project.license}`,
27282
+ children: [
27283
+ /* @__PURE__ */ jsx(Scale, { size: 12 }),
27284
+ /* @__PURE__ */ jsx("span", { children: project.license })
27285
+ ]
27286
+ }
27287
+ ),
27288
+ totalDeps > 0 && /* @__PURE__ */ jsxs(
27289
+ "div",
27290
+ {
27291
+ style: {
27292
+ display: "flex",
27293
+ alignItems: "center",
27294
+ gap: 4,
27295
+ fontSize: fontSizeSmall,
27296
+ color: theme2.colors.textSecondary
27297
+ },
27298
+ title: `${project.dependencyCount || 0} prod, ${project.devDependencyCount || 0} dev dependencies`,
27299
+ children: [
27300
+ /* @__PURE__ */ jsx(Box, { size: 12 }),
27301
+ /* @__PURE__ */ jsxs("span", { children: [
27302
+ project.dependencyCount || 0,
27303
+ " deps",
27304
+ project.devDependencyCount ? ` + ${project.devDependencyCount} dev` : ""
27305
+ ] })
27306
+ ]
27307
+ }
27308
+ ),
27309
+ project.author && /* @__PURE__ */ jsxs(
27310
+ "div",
27311
+ {
27312
+ style: {
27313
+ display: "flex",
27314
+ alignItems: "center",
27315
+ gap: 4,
27316
+ fontSize: fontSizeSmall,
27317
+ color: theme2.colors.textSecondary
27318
+ },
27319
+ title: `Author: ${project.author}`,
27320
+ children: [
27321
+ /* @__PURE__ */ jsx(FileText, { size: 12 }),
27322
+ /* @__PURE__ */ jsx("span", { children: project.author })
27323
+ ]
27324
+ }
27325
+ )
27326
+ ]
27327
+ }
27328
+ )
27329
+ ]
27330
+ }
27331
+ );
27332
+ };
27333
+ const panels = [
27334
+ {
27335
+ metadata: {
27336
+ id: "principal-ade.file-city-panel",
27337
+ name: "File City Map",
27338
+ icon: "🏙️",
27339
+ version: "0.2.0",
27340
+ author: "Principal AI",
27341
+ description: "3D visualization of repository structure using the File City metaphor",
27342
+ // Data slices this panel depends on
27343
+ // - fileTree: Required - repository file structure
27344
+ // - fileCityColorModes: Optional - controls which color modes are available
27345
+ // (if not provided, only fileTypes and git modes are shown)
27346
+ slices: ["fileTree", "fileCityColorModes"],
27347
+ // UTCP-compatible tools this panel exposes
27348
+ tools: codeCityPanelTools
27349
+ },
27350
+ component: CodeCityPanel,
27351
+ // Optional: Called when this specific panel is mounted
27352
+ onMount: async (context) => {
27353
+ var _a;
27354
+ console.log(
27355
+ "File City Panel mounted",
27356
+ (_a = context.currentScope.repository) == null ? void 0 : _a.path
27357
+ );
27358
+ if (context.hasSlice("fileTree") && !context.isSliceLoading("fileTree")) {
27359
+ await context.refresh("repository", "fileTree");
27360
+ }
27361
+ },
27362
+ // Optional: Called when this specific panel is unmounted
27363
+ onUnmount: async (_context) => {
27364
+ console.log("File City Panel unmounting");
27365
+ }
27366
+ },
27367
+ {
27368
+ metadata: {
27369
+ id: "principal-ade.feed-file-city-panel",
27370
+ name: "Feed Project View",
27371
+ icon: "📦",
27372
+ version: "0.1.0",
27373
+ author: "Principal AI",
27374
+ description: "File City visualization with project header for feed view context",
27375
+ // Data slices this panel depends on
27376
+ // - fileTree: Required - repository file structure
27377
+ // - feedProject: Required - GitHub repo info and package details
27378
+ slices: ["fileTree", "feedProject"]
27379
+ },
27380
+ component: FeedCodeCityPanel,
27381
+ onMount: async (context) => {
27382
+ var _a;
27383
+ console.log(
27384
+ "Feed File City Panel mounted",
27385
+ (_a = context.currentScope.repository) == null ? void 0 : _a.path
27386
+ );
27387
+ if (context.hasSlice("fileTree") && !context.isSliceLoading("fileTree")) {
27388
+ await context.refresh("repository", "fileTree");
27389
+ }
27390
+ },
27391
+ onUnmount: async (_context) => {
27392
+ console.log("Feed File City Panel unmounting");
26313
27393
  }
26314
27394
  }
26315
27395
  ];
@@ -26322,6 +27402,9 @@ const onPackageUnload = async () => {
26322
27402
  export {
26323
27403
  COLOR_MODES,
26324
27404
  DEFAULT_COLOR_MODES,
27405
+ FeedCodeCityPanel,
27406
+ FeedProjectHeader,
27407
+ ProjectInfoHeader,
26325
27408
  QUALITY_COLOR_MODES,
26326
27409
  codeCityPanelTools,
26327
27410
  codeCityPanelToolsMetadata,