@industry-theme/file-city-panel 0.2.63 → 0.2.65

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.
@@ -3,32 +3,43 @@ import React, { forwardRef, createElement, createContext, useContext, useState,
3
3
  import { createPortal } from "react-dom";
4
4
  import { GitStatusFileTree } from "@principal-ade/dynamic-file-tree";
5
5
  /**
6
- * @license lucide-react v0.552.0 - ISC
6
+ * @license lucide-react v0.563.0 - ISC
7
+ *
8
+ * This source code is licensed under the ISC license.
9
+ * See the LICENSE file in the root directory of this source tree.
10
+ */
11
+ const mergeClasses = (...classes) => classes.filter((className, index, array2) => {
12
+ return Boolean(className) && className.trim() !== "" && array2.indexOf(className) === index;
13
+ }).join(" ").trim();
14
+ /**
15
+ * @license lucide-react v0.563.0 - ISC
7
16
  *
8
17
  * This source code is licensed under the ISC license.
9
18
  * See the LICENSE file in the root directory of this source tree.
10
19
  */
11
20
  const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
21
+ /**
22
+ * @license lucide-react v0.563.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */
12
27
  const toCamelCase = (string) => string.replace(
13
28
  /^([A-Z])|[\s-_]+(\w)/g,
14
29
  (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
15
30
  );
31
+ /**
32
+ * @license lucide-react v0.563.0 - ISC
33
+ *
34
+ * This source code is licensed under the ISC license.
35
+ * See the LICENSE file in the root directory of this source tree.
36
+ */
16
37
  const toPascalCase = (string) => {
17
38
  const camelCase = toCamelCase(string);
18
39
  return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
19
40
  };
20
- const mergeClasses = (...classes) => classes.filter((className, index, array2) => {
21
- return Boolean(className) && className.trim() !== "" && array2.indexOf(className) === index;
22
- }).join(" ").trim();
23
- const hasA11yProp = (props) => {
24
- for (const prop in props) {
25
- if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
26
- return true;
27
- }
28
- }
29
- };
30
41
  /**
31
- * @license lucide-react v0.552.0 - ISC
42
+ * @license lucide-react v0.563.0 - ISC
32
43
  *
33
44
  * This source code is licensed under the ISC license.
34
45
  * See the LICENSE file in the root directory of this source tree.
@@ -45,7 +56,21 @@ var defaultAttributes = {
45
56
  strokeLinejoin: "round"
46
57
  };
47
58
  /**
48
- * @license lucide-react v0.552.0 - ISC
59
+ * @license lucide-react v0.563.0 - ISC
60
+ *
61
+ * This source code is licensed under the ISC license.
62
+ * See the LICENSE file in the root directory of this source tree.
63
+ */
64
+ const hasA11yProp = (props) => {
65
+ for (const prop in props) {
66
+ if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
67
+ return true;
68
+ }
69
+ }
70
+ return false;
71
+ };
72
+ /**
73
+ * @license lucide-react v0.563.0 - ISC
49
74
  *
50
75
  * This source code is licensed under the ISC license.
51
76
  * See the LICENSE file in the root directory of this source tree.
@@ -80,7 +105,7 @@ const Icon = forwardRef(
80
105
  )
81
106
  );
82
107
  /**
83
- * @license lucide-react v0.552.0 - ISC
108
+ * @license lucide-react v0.563.0 - ISC
84
109
  *
85
110
  * This source code is licensed under the ISC license.
86
111
  * See the LICENSE file in the root directory of this source tree.
@@ -102,7 +127,7 @@ const createLucideIcon = (iconName, iconNode) => {
102
127
  return Component;
103
128
  };
104
129
  /**
105
- * @license lucide-react v0.552.0 - ISC
130
+ * @license lucide-react v0.563.0 - ISC
106
131
  *
107
132
  * This source code is licensed under the ISC license.
108
133
  * See the LICENSE file in the root directory of this source tree.
@@ -118,7 +143,7 @@ const __iconNode$m = [
118
143
  ];
119
144
  const Activity = createLucideIcon("activity", __iconNode$m);
120
145
  /**
121
- * @license lucide-react v0.552.0 - ISC
146
+ * @license lucide-react v0.563.0 - ISC
122
147
  *
123
148
  * This source code is licensed under the ISC license.
124
149
  * See the LICENSE file in the root directory of this source tree.
@@ -136,7 +161,7 @@ const __iconNode$l = [
136
161
  ];
137
162
  const Box = createLucideIcon("box", __iconNode$l);
138
163
  /**
139
- * @license lucide-react v0.552.0 - ISC
164
+ * @license lucide-react v0.563.0 - ISC
140
165
  *
141
166
  * This source code is licensed under the ISC license.
142
167
  * See the LICENSE file in the root directory of this source tree.
@@ -156,7 +181,7 @@ const __iconNode$k = [
156
181
  ];
157
182
  const Building2 = createLucideIcon("building-2", __iconNode$k);
158
183
  /**
159
- * @license lucide-react v0.552.0 - ISC
184
+ * @license lucide-react v0.563.0 - ISC
160
185
  *
161
186
  * This source code is licensed under the ISC license.
162
187
  * See the LICENSE file in the root directory of this source tree.
@@ -169,7 +194,7 @@ const __iconNode$j = [
169
194
  ];
170
195
  const ChartColumn = createLucideIcon("chart-column", __iconNode$j);
171
196
  /**
172
- * @license lucide-react v0.552.0 - ISC
197
+ * @license lucide-react v0.563.0 - ISC
173
198
  *
174
199
  * This source code is licensed under the ISC license.
175
200
  * See the LICENSE file in the root directory of this source tree.
@@ -177,7 +202,7 @@ const ChartColumn = createLucideIcon("chart-column", __iconNode$j);
177
202
  const __iconNode$i = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
178
203
  const ChevronDown = createLucideIcon("chevron-down", __iconNode$i);
179
204
  /**
180
- * @license lucide-react v0.552.0 - ISC
205
+ * @license lucide-react v0.563.0 - ISC
181
206
  *
182
207
  * This source code is licensed under the ISC license.
183
208
  * See the LICENSE file in the root directory of this source tree.
@@ -185,7 +210,7 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$i);
185
210
  const __iconNode$h = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
186
211
  const ChevronRight = createLucideIcon("chevron-right", __iconNode$h);
187
212
  /**
188
- * @license lucide-react v0.552.0 - ISC
213
+ * @license lucide-react v0.563.0 - ISC
189
214
  *
190
215
  * This source code is licensed under the ISC license.
191
216
  * See the LICENSE file in the root directory of this source tree.
@@ -197,7 +222,7 @@ const __iconNode$g = [
197
222
  ];
198
223
  const CircleAlert = createLucideIcon("circle-alert", __iconNode$g);
199
224
  /**
200
- * @license lucide-react v0.552.0 - ISC
225
+ * @license lucide-react v0.563.0 - ISC
201
226
  *
202
227
  * This source code is licensed under the ISC license.
203
228
  * See the LICENSE file in the root directory of this source tree.
@@ -209,7 +234,7 @@ const __iconNode$f = [
209
234
  ];
210
235
  const ExternalLink = createLucideIcon("external-link", __iconNode$f);
211
236
  /**
212
- * @license lucide-react v0.552.0 - ISC
237
+ * @license lucide-react v0.563.0 - ISC
213
238
  *
214
239
  * This source code is licensed under the ISC license.
215
240
  * See the LICENSE file in the root directory of this source tree.
@@ -234,7 +259,7 @@ const __iconNode$e = [
234
259
  ];
235
260
  const EyeOff = createLucideIcon("eye-off", __iconNode$e);
236
261
  /**
237
- * @license lucide-react v0.552.0 - ISC
262
+ * @license lucide-react v0.563.0 - ISC
238
263
  *
239
264
  * This source code is licensed under the ISC license.
240
265
  * See the LICENSE file in the root directory of this source tree.
@@ -251,7 +276,7 @@ const __iconNode$d = [
251
276
  ];
252
277
  const Eye = createLucideIcon("eye", __iconNode$d);
253
278
  /**
254
- * @license lucide-react v0.552.0 - ISC
279
+ * @license lucide-react v0.563.0 - ISC
255
280
  *
256
281
  * This source code is licensed under the ISC license.
257
282
  * See the LICENSE file in the root directory of this source tree.
@@ -271,7 +296,7 @@ const __iconNode$c = [
271
296
  ];
272
297
  const FileText = createLucideIcon("file-text", __iconNode$c);
273
298
  /**
274
- * @license lucide-react v0.552.0 - ISC
299
+ * @license lucide-react v0.563.0 - ISC
275
300
  *
276
301
  * This source code is licensed under the ISC license.
277
302
  * See the LICENSE file in the root directory of this source tree.
@@ -288,7 +313,7 @@ const __iconNode$b = [
288
313
  ];
289
314
  const File = createLucideIcon("file", __iconNode$b);
290
315
  /**
291
- * @license lucide-react v0.552.0 - ISC
316
+ * @license lucide-react v0.563.0 - ISC
292
317
  *
293
318
  * This source code is licensed under the ISC license.
294
319
  * See the LICENSE file in the root directory of this source tree.
@@ -307,7 +332,7 @@ const __iconNode$a = [
307
332
  ];
308
333
  const FolderKanban = createLucideIcon("folder-kanban", __iconNode$a);
309
334
  /**
310
- * @license lucide-react v0.552.0 - ISC
335
+ * @license lucide-react v0.563.0 - ISC
311
336
  *
312
337
  * This source code is licensed under the ISC license.
313
338
  * See the LICENSE file in the root directory of this source tree.
@@ -323,7 +348,7 @@ const __iconNode$9 = [
323
348
  ];
324
349
  const Folder = createLucideIcon("folder", __iconNode$9);
325
350
  /**
326
- * @license lucide-react v0.552.0 - ISC
351
+ * @license lucide-react v0.563.0 - ISC
327
352
  *
328
353
  * This source code is licensed under the ISC license.
329
354
  * See the LICENSE file in the root directory of this source tree.
@@ -336,7 +361,7 @@ const __iconNode$8 = [
336
361
  ];
337
362
  const GitBranch = createLucideIcon("git-branch", __iconNode$8);
338
363
  /**
339
- * @license lucide-react v0.552.0 - ISC
364
+ * @license lucide-react v0.563.0 - ISC
340
365
  *
341
366
  * This source code is licensed under the ISC license.
342
367
  * See the LICENSE file in the root directory of this source tree.
@@ -348,7 +373,7 @@ const __iconNode$7 = [
348
373
  ];
349
374
  const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$7);
350
375
  /**
351
- * @license lucide-react v0.552.0 - ISC
376
+ * @license lucide-react v0.563.0 - ISC
352
377
  *
353
378
  * This source code is licensed under the ISC license.
354
379
  * See the LICENSE file in the root directory of this source tree.
@@ -362,7 +387,7 @@ const __iconNode$6 = [
362
387
  ];
363
388
  const GitFork = createLucideIcon("git-fork", __iconNode$6);
364
389
  /**
365
- * @license lucide-react v0.552.0 - ISC
390
+ * @license lucide-react v0.563.0 - ISC
366
391
  *
367
392
  * This source code is licensed under the ISC license.
368
393
  * See the LICENSE file in the root directory of this source tree.
@@ -375,7 +400,7 @@ const __iconNode$5 = [
375
400
  ];
376
401
  const GitPullRequest = createLucideIcon("git-pull-request", __iconNode$5);
377
402
  /**
378
- * @license lucide-react v0.552.0 - ISC
403
+ * @license lucide-react v0.563.0 - ISC
379
404
  *
380
405
  * This source code is licensed under the ISC license.
381
406
  * See the LICENSE file in the root directory of this source tree.
@@ -394,21 +419,21 @@ const __iconNode$4 = [
394
419
  ];
395
420
  const Package = createLucideIcon("package", __iconNode$4);
396
421
  /**
397
- * @license lucide-react v0.552.0 - ISC
422
+ * @license lucide-react v0.563.0 - ISC
398
423
  *
399
424
  * This source code is licensed under the ISC license.
400
425
  * See the LICENSE file in the root directory of this source tree.
401
426
  */
402
427
  const __iconNode$3 = [
403
- ["path", { d: "m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "7g6ntu" }],
404
- ["path", { d: "m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "ijws7r" }],
405
- ["path", { d: "M7 21h10", key: "1b0cd5" }],
406
428
  ["path", { d: "M12 3v18", key: "108xh3" }],
407
- ["path", { d: "M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2", key: "3gwbw2" }]
429
+ ["path", { d: "m19 8 3 8a5 5 0 0 1-6 0zV7", key: "zcdpyk" }],
430
+ ["path", { d: "M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1", key: "1yorad" }],
431
+ ["path", { d: "m5 8 3 8a5 5 0 0 1-6 0zV7", key: "eua70x" }],
432
+ ["path", { d: "M7 21h10", key: "1b0cd5" }]
408
433
  ];
409
434
  const Scale = createLucideIcon("scale", __iconNode$3);
410
435
  /**
411
- * @license lucide-react v0.552.0 - ISC
436
+ * @license lucide-react v0.563.0 - ISC
412
437
  *
413
438
  * This source code is licensed under the ISC license.
414
439
  * See the LICENSE file in the root directory of this source tree.
@@ -424,7 +449,7 @@ const __iconNode$2 = [
424
449
  ];
425
450
  const Star = createLucideIcon("star", __iconNode$2);
426
451
  /**
427
- * @license lucide-react v0.552.0 - ISC
452
+ * @license lucide-react v0.563.0 - ISC
428
453
  *
429
454
  * This source code is licensed under the ISC license.
430
455
  * See the LICENSE file in the root directory of this source tree.
@@ -435,7 +460,7 @@ const __iconNode$1 = [
435
460
  ];
436
461
  const User = createLucideIcon("user", __iconNode$1);
437
462
  /**
438
- * @license lucide-react v0.552.0 - ISC
463
+ * @license lucide-react v0.563.0 - ISC
439
464
  *
440
465
  * This source code is licensed under the ISC license.
441
466
  * See the LICENSE file in the root directory of this source tree.
@@ -445,231 +470,6 @@ const __iconNode = [
445
470
  ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
446
471
  ];
447
472
  const X = createLucideIcon("x", __iconNode);
448
- var ThemeContext$1;
449
- var getThemeContext$1 = () => {
450
- if (typeof window !== "undefined") {
451
- const globalWindow = window;
452
- if (!globalWindow.__principlemd_theme_context__) {
453
- globalWindow.__principlemd_theme_context__ = createContext(void 0);
454
- }
455
- return globalWindow.__principlemd_theme_context__;
456
- } else {
457
- if (!ThemeContext$1) {
458
- ThemeContext$1 = createContext(void 0);
459
- }
460
- return ThemeContext$1;
461
- }
462
- };
463
- var ThemeContextSingleton$1 = getThemeContext$1();
464
- var useTheme$1 = () => {
465
- const context = useContext(ThemeContextSingleton$1);
466
- if (!context) {
467
- throw new Error("useTheme must be used within a ThemeProvider");
468
- }
469
- return context;
470
- };
471
- function getDefaultExportFromCjs(x) {
472
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
473
- }
474
- function getAugmentedNamespace(n) {
475
- if (Object.prototype.hasOwnProperty.call(n, "__esModule")) return n;
476
- var f = n.default;
477
- if (typeof f == "function") {
478
- var a = function a2() {
479
- if (this instanceof a2) {
480
- return Reflect.construct(f, arguments, this.constructor);
481
- }
482
- return f.apply(this, arguments);
483
- };
484
- a.prototype = f.prototype;
485
- } else a = {};
486
- Object.defineProperty(a, "__esModule", { value: true });
487
- Object.keys(n).forEach(function(k) {
488
- var d = Object.getOwnPropertyDescriptor(n, k);
489
- Object.defineProperty(a, k, d.get ? d : {
490
- enumerable: true,
491
- get: function() {
492
- return n[k];
493
- }
494
- });
495
- });
496
- return a;
497
- }
498
- var dist$1 = {};
499
- var ArchitectureMapHighlightLayers = {};
500
- var glassmorphismTheme = {
501
- space: [0, 4, 8, 16, 32, 64, 128, 256, 512],
502
- fonts: {
503
- body: '"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
504
- heading: '"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
505
- monospace: '"Fira Code", "SF Mono", Monaco, Inconsolata, monospace'
506
- },
507
- fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],
508
- fontScale: 1,
509
- fontWeights: {
510
- body: 400,
511
- heading: 600,
512
- bold: 700,
513
- light: 300,
514
- medium: 500,
515
- semibold: 600
516
- },
517
- lineHeights: {
518
- body: 1.6,
519
- heading: 1.3,
520
- tight: 1.4,
521
- relaxed: 1.8
522
- },
523
- breakpoints: ["640px", "768px", "1024px", "1280px"],
524
- sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],
525
- radii: [0, 8, 12, 16, 20, 24, 32, 40],
526
- shadows: [
527
- "none",
528
- "0 8px 32px 0 rgba(31, 38, 135, 0.15)",
529
- "0 12px 40px 0 rgba(31, 38, 135, 0.2)",
530
- "0 16px 48px 0 rgba(31, 38, 135, 0.25)",
531
- "0 20px 56px 0 rgba(31, 38, 135, 0.3)",
532
- "0 24px 64px 0 rgba(31, 38, 135, 0.35)"
533
- ],
534
- zIndices: [0, 1, 10, 20, 30, 40, 50],
535
- colors: {
536
- text: "rgba(255, 255, 255, 0.95)",
537
- background: "rgba(255, 255, 255, 0.1)",
538
- primary: "rgba(99, 102, 241, 0.9)",
539
- secondary: "rgba(139, 92, 246, 0.9)",
540
- accent: "rgba(236, 72, 153, 0.9)",
541
- highlight: "rgba(99, 102, 241, 0.2)",
542
- muted: "rgba(255, 255, 255, 0.05)",
543
- success: "rgba(34, 197, 94, 0.9)",
544
- warning: "rgba(251, 146, 60, 0.9)",
545
- error: "rgba(239, 68, 68, 0.9)",
546
- info: "rgba(59, 130, 246, 0.9)",
547
- border: "rgba(255, 255, 255, 0.18)",
548
- backgroundSecondary: "rgba(255, 255, 255, 0.15)",
549
- backgroundTertiary: "rgba(255, 255, 255, 0.2)",
550
- backgroundLight: "rgba(255, 255, 255, 0.08)",
551
- backgroundHover: "rgba(255, 255, 255, 0.25)",
552
- surface: "rgba(255, 255, 255, 0.12)",
553
- textSecondary: "rgba(255, 255, 255, 0.8)",
554
- textTertiary: "rgba(255, 255, 255, 0.6)",
555
- textMuted: "rgba(255, 255, 255, 0.5)",
556
- highlightBg: "rgba(251, 191, 36, 0.3)",
557
- highlightBorder: "rgba(251, 191, 36, 0.5)"
558
- },
559
- modes: {
560
- dark: {
561
- text: "rgba(255, 255, 255, 0.95)",
562
- background: "rgba(0, 0, 0, 0.3)",
563
- primary: "rgba(129, 140, 248, 0.9)",
564
- secondary: "rgba(167, 139, 250, 0.9)",
565
- accent: "rgba(244, 114, 182, 0.9)",
566
- highlight: "rgba(129, 140, 248, 0.25)",
567
- muted: "rgba(0, 0, 0, 0.15)",
568
- success: "rgba(74, 222, 128, 0.9)",
569
- warning: "rgba(251, 191, 36, 0.9)",
570
- error: "rgba(248, 113, 113, 0.9)",
571
- info: "rgba(96, 165, 250, 0.9)",
572
- border: "rgba(255, 255, 255, 0.15)",
573
- backgroundSecondary: "rgba(0, 0, 0, 0.4)",
574
- backgroundTertiary: "rgba(0, 0, 0, 0.5)",
575
- backgroundLight: "rgba(0, 0, 0, 0.2)",
576
- backgroundHover: "rgba(255, 255, 255, 0.1)",
577
- surface: "rgba(0, 0, 0, 0.35)",
578
- textSecondary: "rgba(255, 255, 255, 0.8)",
579
- textTertiary: "rgba(255, 255, 255, 0.6)",
580
- textMuted: "rgba(255, 255, 255, 0.4)",
581
- highlightBg: "rgba(251, 191, 36, 0.35)",
582
- highlightBorder: "rgba(251, 191, 36, 0.6)"
583
- },
584
- frosted: {
585
- text: "rgba(31, 41, 55, 0.95)",
586
- background: "rgba(255, 255, 255, 0.3)",
587
- primary: "rgba(79, 70, 229, 0.95)",
588
- secondary: "rgba(124, 58, 237, 0.95)",
589
- accent: "rgba(219, 39, 119, 0.95)",
590
- highlight: "rgba(79, 70, 229, 0.15)",
591
- muted: "rgba(255, 255, 255, 0.4)",
592
- success: "rgba(16, 185, 129, 0.95)",
593
- warning: "rgba(245, 158, 11, 0.95)",
594
- error: "rgba(220, 38, 38, 0.95)",
595
- info: "rgba(37, 99, 235, 0.95)",
596
- border: "rgba(255, 255, 255, 0.5)",
597
- backgroundSecondary: "rgba(255, 255, 255, 0.4)",
598
- backgroundTertiary: "rgba(255, 255, 255, 0.5)",
599
- backgroundLight: "rgba(255, 255, 255, 0.25)",
600
- backgroundHover: "rgba(255, 255, 255, 0.6)",
601
- surface: "rgba(255, 255, 255, 0.35)",
602
- textSecondary: "rgba(31, 41, 55, 0.8)",
603
- textTertiary: "rgba(31, 41, 55, 0.6)",
604
- textMuted: "rgba(31, 41, 55, 0.5)",
605
- highlightBg: "rgba(251, 191, 36, 0.4)",
606
- highlightBorder: "rgba(251, 191, 36, 0.7)"
607
- }
608
- },
609
- buttons: {
610
- primary: {
611
- color: "white",
612
- bg: "primary",
613
- borderWidth: 1,
614
- borderStyle: "solid",
615
- borderColor: "rgba(255, 255, 255, 0.2)",
616
- "&:hover": {
617
- bg: "secondary"
618
- }
619
- },
620
- secondary: {
621
- color: "text",
622
- bg: "rgba(255, 255, 255, 0.1)",
623
- borderWidth: 1,
624
- borderStyle: "solid",
625
- borderColor: "rgba(255, 255, 255, 0.2)",
626
- "&:hover": {
627
- bg: "rgba(255, 255, 255, 0.2)"
628
- }
629
- },
630
- ghost: {
631
- color: "text",
632
- bg: "transparent",
633
- borderWidth: 1,
634
- borderStyle: "solid",
635
- borderColor: "transparent",
636
- "&:hover": {
637
- borderColor: "rgba(255, 255, 255, 0.2)",
638
- bg: "rgba(255, 255, 255, 0.05)"
639
- }
640
- }
641
- },
642
- text: {
643
- heading: {
644
- fontFamily: "heading",
645
- fontWeight: "heading",
646
- lineHeight: "heading"
647
- },
648
- body: {
649
- fontFamily: "body",
650
- fontWeight: "body",
651
- lineHeight: "body"
652
- },
653
- caption: {
654
- fontSize: 1,
655
- color: "textSecondary"
656
- }
657
- },
658
- cards: {
659
- primary: {
660
- bg: "surface",
661
- border: "1px solid",
662
- borderColor: "border",
663
- borderRadius: 3
664
- },
665
- secondary: {
666
- bg: "backgroundSecondary",
667
- border: "1px solid",
668
- borderColor: "border",
669
- borderRadius: 3
670
- }
671
- }
672
- };
673
473
  var defaultMarkdownTheme = {
674
474
  space: [0, 4, 8, 16, 32, 64, 128, 256, 512],
675
475
  fonts: {
@@ -711,23 +511,24 @@ var defaultMarkdownTheme = {
711
511
  primary: "#007acc",
712
512
  secondary: "#005a9e",
713
513
  accent: "#1a1a1a",
714
- highlight: "rgba(0, 122, 204, 0.1)",
514
+ highlight: "#e6f4fb",
715
515
  muted: "#f0f0f0",
716
516
  success: "#28a745",
717
517
  warning: "#ffc107",
718
518
  error: "#dc3545",
719
519
  info: "#17a2b8",
720
- border: "rgba(0, 0, 0, 0.1)",
520
+ border: "#e6e6e6",
721
521
  backgroundSecondary: "#f8f9fa",
722
522
  backgroundTertiary: "#e9ecef",
723
- backgroundLight: "rgba(0, 0, 0, 0.03)",
724
- backgroundHover: "rgba(0, 0, 0, 0.05)",
523
+ backgroundLight: "#f7f7f7",
524
+ backgroundHover: "#f2f2f2",
725
525
  surface: "#ffffff",
726
526
  textSecondary: "#555555",
727
527
  textTertiary: "#888888",
728
528
  textMuted: "#aaaaaa",
729
- highlightBg: "rgba(255, 235, 59, 0.3)",
730
- highlightBorder: "rgba(255, 235, 59, 0.6)"
529
+ highlightBg: "#fff9c4",
530
+ highlightBorder: "#fff389",
531
+ textOnPrimary: "#ffffff"
731
532
  },
732
533
  buttons: {
733
534
  primary: {
@@ -821,23 +622,24 @@ var defaultTerminalTheme = {
821
622
  primary: "#ffc107",
822
623
  secondary: "#ffb300",
823
624
  accent: "#ffffff",
824
- highlight: "rgba(255, 193, 7, 0.1)",
625
+ highlight: "#1a1301",
825
626
  muted: "#1a1a1a",
826
627
  success: "#4caf50",
827
628
  warning: "#ff9800",
828
629
  error: "#f44336",
829
630
  info: "#2196f3",
830
- border: "rgba(255, 193, 7, 0.2)",
631
+ border: "#332701",
831
632
  backgroundSecondary: "#0a0a0a",
832
633
  backgroundTertiary: "#111111",
833
- backgroundLight: "rgba(255, 193, 7, 0.03)",
834
- backgroundHover: "rgba(255, 193, 7, 0.05)",
634
+ backgroundLight: "#080600",
635
+ backgroundHover: "#0d0a00",
835
636
  surface: "#050505",
836
637
  textSecondary: "#e0e0e0",
837
638
  textTertiary: "#b0b0b0",
838
639
  textMuted: "#808080",
839
- highlightBg: "rgba(255, 193, 7, 0.2)",
840
- highlightBorder: "rgba(255, 193, 7, 0.4)"
640
+ highlightBg: "#332701",
641
+ highlightBorder: "#664d03",
642
+ textOnPrimary: "#000000"
841
643
  },
842
644
  buttons: {
843
645
  primary: {
@@ -932,23 +734,24 @@ var defaultEditorTheme = {
932
734
  primary: "#569cd6",
933
735
  secondary: "#408ac9",
934
736
  accent: "#c586c0",
935
- highlight: "rgba(86, 156, 214, 0.1)",
737
+ highlight: "#242b30",
936
738
  muted: "#2a2a2a",
937
739
  success: "#6a9955",
938
740
  warning: "#d18616",
939
741
  error: "#f44747",
940
742
  info: "#569cd6",
941
- border: "rgba(255, 255, 255, 0.1)",
743
+ border: "#343434",
942
744
  backgroundSecondary: "#252526",
943
745
  backgroundTertiary: "#333333",
944
- backgroundLight: "rgba(255, 255, 255, 0.03)",
945
- backgroundHover: "rgba(255, 255, 255, 0.05)",
746
+ backgroundLight: "#252525",
747
+ backgroundHover: "#292929",
946
748
  surface: "#252526",
947
749
  textSecondary: "#cccccc",
948
750
  textTertiary: "#999999",
949
751
  textMuted: "#666666",
950
- highlightBg: "rgba(255, 235, 59, 0.2)",
951
- highlightBorder: "rgba(255, 235, 59, 0.4)"
752
+ highlightBg: "#4b4724",
753
+ highlightBorder: "#78702a",
754
+ textOnPrimary: "#ffffff"
952
755
  },
953
756
  buttons: {
954
757
  primary: {
@@ -1042,23 +845,24 @@ var landingPageTheme = {
1042
845
  primary: "#00C2FF",
1043
846
  secondary: "#0098CC",
1044
847
  accent: "#0066FF",
1045
- highlight: "rgba(0, 194, 255, 0.15)",
848
+ highlight: "#001d26",
1046
849
  muted: "#1a1a1a",
1047
850
  success: "#4caf50",
1048
851
  warning: "#ff9800",
1049
852
  error: "#f44336",
1050
853
  info: "#2196f3",
1051
- border: "rgba(0, 194, 255, 0.2)",
854
+ border: "#002733",
1052
855
  backgroundSecondary: "#0a1628",
1053
856
  backgroundTertiary: "#0f1c2e",
1054
- backgroundLight: "rgba(0, 194, 255, 0.04)",
1055
- backgroundHover: "rgba(0, 194, 255, 0.1)",
1056
- surface: "rgba(0, 0, 0, 0.4)",
857
+ backgroundLight: "#00080a",
858
+ backgroundHover: "#00131a",
859
+ surface: "#000000",
1057
860
  textSecondary: "#d1d5db",
1058
861
  textTertiary: "#9ca3af",
1059
862
  textMuted: "#6b7280",
1060
- highlightBg: "rgba(255, 235, 59, 0.25)",
1061
- highlightBorder: "rgba(255, 235, 59, 0.5)"
863
+ highlightBg: "#403b0f",
864
+ highlightBorder: "#80761e",
865
+ textOnPrimary: "#000000"
1062
866
  },
1063
867
  buttons: {
1064
868
  primary: {
@@ -1078,13 +882,13 @@ var landingPageTheme = {
1078
882
  bg: "transparent",
1079
883
  borderWidth: 1,
1080
884
  borderStyle: "solid",
1081
- borderColor: "rgba(0, 194, 255, 0.3)",
885
+ borderColor: "#003a4d",
1082
886
  padding: "8px 16px",
1083
887
  fontSize: 14,
1084
888
  fontWeight: 600,
1085
889
  cursor: "pointer",
1086
890
  "&:hover": {
1087
- bg: "rgba(0, 194, 255, 0.1)",
891
+ bg: "#00131a",
1088
892
  borderColor: "#00C2FF"
1089
893
  }
1090
894
  },
@@ -1098,7 +902,7 @@ var landingPageTheme = {
1098
902
  cursor: "pointer",
1099
903
  "&:hover": {
1100
904
  color: "#00D9FF",
1101
- bg: "rgba(0, 194, 255, 0.1)"
905
+ bg: "#00131a"
1102
906
  }
1103
907
  }
1104
908
  },
@@ -1128,9 +932,9 @@ var landingPageTheme = {
1128
932
  borderRadius: 4
1129
933
  },
1130
934
  secondary: {
1131
- bg: "rgba(0, 194, 255, 0.05)",
935
+ bg: "#000a0d",
1132
936
  border: "1px solid",
1133
- borderColor: "rgba(0, 194, 255, 0.2)",
937
+ borderColor: "#002733",
1134
938
  borderRadius: 4
1135
939
  }
1136
940
  }
@@ -1143,23 +947,24 @@ var landingPageLightTheme = {
1143
947
  primary: "#0098CC",
1144
948
  secondary: "#00C2FF",
1145
949
  accent: "#0066FF",
1146
- highlight: "rgba(0, 152, 204, 0.1)",
950
+ highlight: "#e6f5fa",
1147
951
  muted: "#f0f0f0",
1148
952
  success: "#4caf50",
1149
953
  warning: "#ff9800",
1150
954
  error: "#f44336",
1151
955
  info: "#2196f3",
1152
- border: "rgba(0, 152, 204, 0.2)",
956
+ border: "#cceaf5",
1153
957
  backgroundSecondary: "#f8f9fa",
1154
958
  backgroundTertiary: "#e9ecef",
1155
- backgroundLight: "rgba(0, 152, 204, 0.03)",
1156
- backgroundHover: "rgba(0, 152, 204, 0.05)",
1157
- surface: "rgba(255, 255, 255, 0.95)",
959
+ backgroundLight: "#f7fcfd",
960
+ backgroundHover: "#f2fafc",
961
+ surface: "#ffffff",
1158
962
  textSecondary: "#555555",
1159
963
  textTertiary: "#888888",
1160
964
  textMuted: "#aaaaaa",
1161
- highlightBg: "rgba(255, 235, 59, 0.3)",
1162
- highlightBorder: "rgba(255, 235, 59, 0.6)"
965
+ highlightBg: "#fff9c4",
966
+ highlightBorder: "#fff389",
967
+ textOnPrimary: "#ffffff"
1163
968
  },
1164
969
  buttons: {
1165
970
  primary: {
@@ -1179,13 +984,13 @@ var landingPageLightTheme = {
1179
984
  bg: "transparent",
1180
985
  borderWidth: 1,
1181
986
  borderStyle: "solid",
1182
- borderColor: "rgba(0, 152, 204, 0.3)",
987
+ borderColor: "#b2e0f0",
1183
988
  padding: "8px 16px",
1184
989
  fontSize: 14,
1185
990
  fontWeight: 600,
1186
991
  cursor: "pointer",
1187
992
  "&:hover": {
1188
- bg: "rgba(0, 152, 204, 0.05)",
993
+ bg: "#f2fafc",
1189
994
  borderColor: "#0098CC"
1190
995
  }
1191
996
  },
@@ -1199,7 +1004,7 @@ var landingPageLightTheme = {
1199
1004
  cursor: "pointer",
1200
1005
  "&:hover": {
1201
1006
  color: "#007aa8",
1202
- bg: "rgba(0, 152, 204, 0.05)"
1007
+ bg: "#f2fafc"
1203
1008
  }
1204
1009
  }
1205
1010
  }
@@ -1245,23 +1050,24 @@ var regalTheme = {
1245
1050
  primary: "#d4a574",
1246
1051
  secondary: "#e0b584",
1247
1052
  accent: "#c9b8a3",
1248
- highlight: "rgba(212, 165, 116, 0.15)",
1053
+ highlight: "#363338",
1249
1054
  muted: "#8b7968",
1250
1055
  success: "#5c8a72",
1251
1056
  warning: "#d4a574",
1252
1057
  error: "#a85751",
1253
1058
  info: "#d4a574",
1254
- border: "rgba(212, 165, 116, 0.2)",
1059
+ border: "#3f3a3c",
1255
1060
  backgroundSecondary: "#212738",
1256
1061
  backgroundTertiary: "#2d3446",
1257
- backgroundLight: "rgba(212, 165, 116, 0.08)",
1258
- backgroundHover: "rgba(212, 165, 116, 0.15)",
1062
+ backgroundLight: "#292a34",
1063
+ backgroundHover: "#363338",
1259
1064
  surface: "#212738",
1260
1065
  textSecondary: "#c9b8a3",
1261
1066
  textTertiary: "#8b7968",
1262
1067
  textMuted: "#8b7968",
1263
- highlightBg: "rgba(255, 193, 7, 0.25)",
1264
- highlightBorder: "rgba(255, 193, 7, 0.5)"
1068
+ highlightBg: "#534724",
1069
+ highlightBorder: "#8c701a",
1070
+ textOnPrimary: "#1a1f2e"
1265
1071
  },
1266
1072
  buttons: {
1267
1073
  primary: {
@@ -1354,52 +1160,53 @@ var terminalTheme = {
1354
1160
  zIndices: [0, 1, 10, 20, 30, 40, 50],
1355
1161
  colors: {
1356
1162
  text: "#e4e4e4",
1357
- background: "rgba(10, 10, 10, 0.85)",
1163
+ background: "#0a0a0a",
1358
1164
  primary: "#66b3ff",
1359
1165
  secondary: "#80c4ff",
1360
1166
  accent: "#66ff99",
1361
- highlight: "rgba(102, 179, 255, 0.15)",
1362
- muted: "rgba(26, 26, 26, 0.8)",
1167
+ highlight: "#18283d",
1168
+ muted: "#1a1a1a",
1363
1169
  success: "#66ff99",
1364
1170
  warning: "#ffcc66",
1365
1171
  error: "#ff6666",
1366
1172
  info: "#66b3ff",
1367
- border: "rgba(255, 255, 255, 0.1)",
1368
- backgroundSecondary: "rgba(15, 15, 15, 0.9)",
1369
- backgroundTertiary: "rgba(20, 20, 20, 0.9)",
1370
- backgroundLight: "rgba(255, 255, 255, 0.05)",
1371
- backgroundHover: "rgba(102, 179, 255, 0.08)",
1372
- surface: "rgba(15, 15, 15, 0.95)",
1373
- textSecondary: "rgba(255, 255, 255, 0.7)",
1374
- textTertiary: "rgba(255, 255, 255, 0.5)",
1375
- textMuted: "rgba(255, 255, 255, 0.4)",
1376
- highlightBg: "rgba(255, 235, 59, 0.25)",
1377
- highlightBorder: "rgba(255, 235, 59, 0.5)"
1173
+ border: "#1a1a1a",
1174
+ backgroundSecondary: "#0f0f0f",
1175
+ backgroundTertiary: "#141414",
1176
+ backgroundLight: "#0d0d0d",
1177
+ backgroundHover: "#0d1520",
1178
+ surface: "#0f0f0f",
1179
+ textSecondary: "#b3b3b3",
1180
+ textTertiary: "#808080",
1181
+ textMuted: "#666666",
1182
+ highlightBg: "#40391e",
1183
+ highlightBorder: "#7f7530",
1184
+ textOnPrimary: "#ffffff"
1378
1185
  },
1379
1186
  modes: {
1380
1187
  light: {
1381
1188
  text: "#1a1a1a",
1382
- background: "rgba(255, 255, 255, 0.9)",
1189
+ background: "#ffffff",
1383
1190
  primary: "#0066cc",
1384
1191
  secondary: "#0052a3",
1385
1192
  accent: "#00cc88",
1386
- highlight: "rgba(0, 102, 204, 0.08)",
1387
- muted: "rgba(245, 245, 245, 0.8)",
1193
+ highlight: "#e6f2ff",
1194
+ muted: "#f5f5f5",
1388
1195
  success: "#00cc88",
1389
1196
  warning: "#ffaa00",
1390
1197
  error: "#ff3333",
1391
1198
  info: "#0066cc",
1392
- border: "rgba(0, 0, 0, 0.1)",
1393
- backgroundSecondary: "rgba(250, 250, 250, 0.9)",
1394
- backgroundTertiary: "rgba(245, 245, 245, 0.9)",
1395
- backgroundLight: "rgba(0, 0, 0, 0.02)",
1396
- backgroundHover: "rgba(0, 102, 204, 0.04)",
1397
- surface: "rgba(255, 255, 255, 0.95)",
1398
- textSecondary: "rgba(0, 0, 0, 0.6)",
1399
- textTertiary: "rgba(0, 0, 0, 0.4)",
1400
- textMuted: "rgba(0, 0, 0, 0.3)",
1401
- highlightBg: "rgba(255, 235, 59, 0.3)",
1402
- highlightBorder: "rgba(255, 235, 59, 0.6)"
1199
+ border: "#e6e6e6",
1200
+ backgroundSecondary: "#fafafa",
1201
+ backgroundTertiary: "#f5f5f5",
1202
+ backgroundLight: "#fafafa",
1203
+ backgroundHover: "#f5f9fd",
1204
+ surface: "#ffffff",
1205
+ textSecondary: "#666666",
1206
+ textTertiary: "#999999",
1207
+ textMuted: "#b3b3b3",
1208
+ highlightBg: "#fff9c4",
1209
+ highlightBorder: "#fff389"
1403
1210
  }
1404
1211
  },
1405
1212
  buttons: {
@@ -1501,23 +1308,24 @@ var matrixTheme = {
1501
1308
  primary: "#00d835",
1502
1309
  secondary: "#00a828",
1503
1310
  accent: "#00d835",
1504
- highlight: "rgba(0, 216, 53, 0.15)",
1311
+ highlight: "#002008",
1505
1312
  muted: "#0a0a0a",
1506
1313
  success: "#00d835",
1507
1314
  warning: "#d4a000",
1508
1315
  error: "#d63333",
1509
1316
  info: "#00a8d6",
1510
- border: "rgba(0, 216, 53, 0.2)",
1317
+ border: "#002b0b",
1511
1318
  backgroundSecondary: "#0a0a0a",
1512
1319
  backgroundTertiary: "#111111",
1513
- backgroundLight: "rgba(0, 216, 53, 0.03)",
1514
- backgroundHover: "rgba(0, 216, 53, 0.08)",
1320
+ backgroundLight: "#000602",
1321
+ backgroundHover: "#001104",
1515
1322
  surface: "#050505",
1516
1323
  textSecondary: "#808080",
1517
1324
  textTertiary: "#606060",
1518
1325
  textMuted: "#484848",
1519
- highlightBg: "rgba(0, 216, 53, 0.25)",
1520
- highlightBorder: "rgba(0, 216, 53, 0.5)"
1326
+ highlightBg: "#00360d",
1327
+ highlightBorder: "#006c1b",
1328
+ textOnPrimary: "#000000"
1521
1329
  },
1522
1330
  buttons: {
1523
1331
  primary: {
@@ -1618,23 +1426,24 @@ var matrixMinimalTheme = {
1618
1426
  primary: "#b8b8b8",
1619
1427
  secondary: "#909090",
1620
1428
  accent: "#00d835",
1621
- highlight: "rgba(0, 216, 53, 0.1)",
1429
+ highlight: "#001605",
1622
1430
  muted: "#0a0a0a",
1623
1431
  success: "#00d835",
1624
1432
  warning: "#d4a000",
1625
1433
  error: "#d63333",
1626
1434
  info: "#00a8d6",
1627
- border: "rgba(184, 184, 184, 0.1)",
1435
+ border: "#121212",
1628
1436
  backgroundSecondary: "#0a0a0a",
1629
1437
  backgroundTertiary: "#111111",
1630
- backgroundLight: "rgba(184, 184, 184, 0.02)",
1631
- backgroundHover: "rgba(0, 216, 53, 0.05)",
1438
+ backgroundLight: "#040404",
1439
+ backgroundHover: "#000b03",
1632
1440
  surface: "#050505",
1633
1441
  textSecondary: "#808080",
1634
1442
  textTertiary: "#606060",
1635
1443
  textMuted: "#484848",
1636
- highlightBg: "rgba(0, 216, 53, 0.2)",
1637
- highlightBorder: "rgba(0, 216, 53, 0.4)"
1444
+ highlightBg: "#002b0b",
1445
+ highlightBorder: "#005615",
1446
+ textOnPrimary: "#000000"
1638
1447
  },
1639
1448
  buttons: {
1640
1449
  primary: {
@@ -1735,23 +1544,24 @@ var slateTheme = {
1735
1544
  primary: "#d1d5db",
1736
1545
  secondary: "#6b7280",
1737
1546
  accent: "#f59e0b",
1738
- highlight: "rgba(209, 213, 219, 0.15)",
1547
+ highlight: "#353838",
1739
1548
  muted: "#2d3134",
1740
1549
  success: "#10b981",
1741
1550
  warning: "#f59e0b",
1742
1551
  error: "#ef4444",
1743
1552
  info: "#3b82f6",
1744
- border: "rgba(156, 163, 175, 0.15)",
1553
+ border: "#2d3034",
1745
1554
  backgroundSecondary: "#22252a",
1746
1555
  backgroundTertiary: "#2d3134",
1747
- backgroundLight: "rgba(156, 163, 175, 0.05)",
1748
- backgroundHover: "rgba(156, 163, 175, 0.1)",
1556
+ backgroundLight: "#202325",
1557
+ backgroundHover: "#27292c",
1749
1558
  surface: "#1f2124",
1750
1559
  textSecondary: "#e5e7eb",
1751
1560
  textTertiary: "#6b7280",
1752
1561
  textMuted: "#4b5563",
1753
- highlightBg: "rgba(245, 158, 11, 0.25)",
1754
- highlightBorder: "rgba(245, 158, 11, 0.5)"
1562
+ highlightBg: "#513c19",
1563
+ highlightBorder: "#875d14",
1564
+ textOnPrimary: "#1a1c1e"
1755
1565
  },
1756
1566
  buttons: {
1757
1567
  primary: {
@@ -2160,7 +1970,13 @@ var ThemeShowcase = ({
2160
1970
  gridTemplateColumns: "repeat(auto-fill, minmax(200px, 1fr))",
2161
1971
  gap: theme2.space[3]
2162
1972
  }
2163
- }, ["backgroundSecondary", "backgroundTertiary", "backgroundLight", "backgroundHover", "surface"].map((key) => {
1973
+ }, [
1974
+ "backgroundSecondary",
1975
+ "backgroundTertiary",
1976
+ "backgroundLight",
1977
+ "backgroundHover",
1978
+ "surface"
1979
+ ].map((key) => {
2164
1980
  const color2 = theme2.colors[key];
2165
1981
  if (!color2)
2166
1982
  return null;
@@ -2200,7 +2016,7 @@ var ThemeShowcase = ({
2200
2016
  fontSize: theme2.fontSizes[4],
2201
2017
  marginBottom: theme2.space[2]
2202
2018
  }
2203
- }, "Heading Font: ", showValues && /* @__PURE__ */ React.createElement("span", {
2019
+ }, "Heading Font:", " ", showValues && /* @__PURE__ */ React.createElement("span", {
2204
2020
  style: {
2205
2021
  fontFamily: theme2.fonts.monospace,
2206
2022
  fontSize: theme2.fontSizes[1],
@@ -2212,7 +2028,7 @@ var ThemeShowcase = ({
2212
2028
  fontSize: theme2.fontSizes[2],
2213
2029
  marginBottom: theme2.space[2]
2214
2030
  }
2215
- }, "Body Font: ", showValues && /* @__PURE__ */ React.createElement("span", {
2031
+ }, "Body Font:", " ", showValues && /* @__PURE__ */ React.createElement("span", {
2216
2032
  style: {
2217
2033
  fontFamily: theme2.fonts.monospace,
2218
2034
  fontSize: theme2.fontSizes[1],
@@ -2223,7 +2039,7 @@ var ThemeShowcase = ({
2223
2039
  fontFamily: theme2.fonts.monospace,
2224
2040
  fontSize: theme2.fontSizes[2]
2225
2041
  }
2226
- }, "Monospace Font: ", showValues && /* @__PURE__ */ React.createElement("span", {
2042
+ }, "Monospace Font:", " ", showValues && /* @__PURE__ */ React.createElement("span", {
2227
2043
  style: {
2228
2044
  fontSize: theme2.fontSizes[1],
2229
2045
  color: theme2.colors.textSecondary
@@ -2421,7 +2237,6 @@ const esm$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePropert
2421
2237
  getShadow,
2422
2238
  getSpace,
2423
2239
  getZIndex,
2424
- glassmorphismTheme,
2425
2240
  increaseFontScale,
2426
2241
  landingPageLightTheme,
2427
2242
  landingPageTheme,
@@ -2441,6 +2256,35 @@ const esm$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePropert
2441
2256
  useTheme,
2442
2257
  withTheme
2443
2258
  }, Symbol.toStringTag, { value: "Module" }));
2259
+ function getDefaultExportFromCjs(x) {
2260
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
2261
+ }
2262
+ function getAugmentedNamespace(n) {
2263
+ if (Object.prototype.hasOwnProperty.call(n, "__esModule")) return n;
2264
+ var f = n.default;
2265
+ if (typeof f == "function") {
2266
+ var a = function a2() {
2267
+ if (this instanceof a2) {
2268
+ return Reflect.construct(f, arguments, this.constructor);
2269
+ }
2270
+ return f.apply(this, arguments);
2271
+ };
2272
+ a.prototype = f.prototype;
2273
+ } else a = {};
2274
+ Object.defineProperty(a, "__esModule", { value: true });
2275
+ Object.keys(n).forEach(function(k) {
2276
+ var d = Object.getOwnPropertyDescriptor(n, k);
2277
+ Object.defineProperty(a, k, d.get ? d : {
2278
+ enumerable: true,
2279
+ get: function() {
2280
+ return n[k];
2281
+ }
2282
+ });
2283
+ });
2284
+ return a;
2285
+ }
2286
+ var dist$1 = {};
2287
+ var ArchitectureMapHighlightLayers = {};
2444
2288
  const require$$7 = /* @__PURE__ */ getAugmentedNamespace(esm$1);
2445
2289
  var cityDataUtils = {};
2446
2290
  var hasRequiredCityDataUtils;
@@ -2726,6 +2570,92 @@ function requireCityDataUtils() {
2726
2570
  return cityDataUtils;
2727
2571
  }
2728
2572
  var drawLayeredBuildings = {};
2573
+ var lucideIconConverter = {};
2574
+ var hasRequiredLucideIconConverter;
2575
+ function requireLucideIconConverter() {
2576
+ if (hasRequiredLucideIconConverter) return lucideIconConverter;
2577
+ hasRequiredLucideIconConverter = 1;
2578
+ Object.defineProperty(lucideIconConverter, "__esModule", { value: true });
2579
+ lucideIconConverter.lucideIconToDataUrl = lucideIconToDataUrl;
2580
+ lucideIconConverter.preloadCommonIcons = preloadCommonIcons;
2581
+ lucideIconConverter.getLucideIconImage = getLucideIconImage;
2582
+ lucideIconConverter.clearIconCache = clearIconCache;
2583
+ lucideIconConverter.getAvailableIcons = getAvailableIcons;
2584
+ const svgCache = /* @__PURE__ */ new Map();
2585
+ const imageCache = /* @__PURE__ */ new Map();
2586
+ const ICON_PATHS = {
2587
+ TestTube: '<path d="M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5s-2.5-1.1-2.5-2.5V2"/><path d="M8.5 2h7"/><path d="M14.5 16h-5"/>',
2588
+ FlaskConical: '<path d="M10 2v7.527a2 2 0 0 1-.211.896L4.72 20.55a1 1 0 0 0 .9 1.45h12.76a1 1 0 0 0 .9-1.45l-5.069-10.127A2 2 0 0 1 14 9.527V2"/><path d="M8.5 2h7"/><path d="M7 16h10"/>',
2589
+ FileCode: '<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="m10 13-2 2 2 2"/><path d="m14 17 2-2-2-2"/>',
2590
+ FileText: '<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M10 9H8"/><path d="M16 13H8"/><path d="M16 17H8"/>',
2591
+ File: '<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/>',
2592
+ Folder: '<path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>'
2593
+ };
2594
+ function lucideIconToDataUrl(iconName, color2 = "white", size = 24) {
2595
+ const cacheKey = `${iconName}-${color2}-${size}`;
2596
+ if (svgCache.has(cacheKey)) {
2597
+ const cached = svgCache.get(cacheKey);
2598
+ if (cached) {
2599
+ return cached;
2600
+ }
2601
+ }
2602
+ const pathData = ICON_PATHS[iconName];
2603
+ if (!pathData) {
2604
+ console.warn(`[lucideIconConverter] Icon "${iconName}" not found. Available icons:`, Object.keys(ICON_PATHS));
2605
+ return null;
2606
+ }
2607
+ try {
2608
+ const svgString = `<svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 24 24" fill="none" stroke="${color2}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${pathData}</svg>`;
2609
+ const encodedSvg = encodeURIComponent(svgString);
2610
+ const dataUrl = `data:image/svg+xml,${encodedSvg}`;
2611
+ svgCache.set(cacheKey, dataUrl);
2612
+ return dataUrl;
2613
+ } catch (error) {
2614
+ console.error(`[lucideIconConverter] Error converting icon "${iconName}":`, error);
2615
+ return null;
2616
+ }
2617
+ }
2618
+ function preloadCommonIcons() {
2619
+ const commonIcons = [
2620
+ "TestTube",
2621
+ "FileCode",
2622
+ "FileText",
2623
+ "File",
2624
+ "Folder",
2625
+ "Image",
2626
+ "Database",
2627
+ "Settings"
2628
+ ];
2629
+ commonIcons.forEach((iconName) => {
2630
+ lucideIconToDataUrl(iconName);
2631
+ });
2632
+ }
2633
+ function getLucideIconImage(iconName, color2 = "white", size = 24) {
2634
+ const cacheKey = `${iconName}-${color2}-${size}`;
2635
+ if (imageCache.has(cacheKey)) {
2636
+ const cached = imageCache.get(cacheKey);
2637
+ if (cached) {
2638
+ return cached;
2639
+ }
2640
+ }
2641
+ const dataUrl = lucideIconToDataUrl(iconName, color2, size);
2642
+ if (!dataUrl) {
2643
+ return null;
2644
+ }
2645
+ const img = new Image();
2646
+ img.src = dataUrl;
2647
+ imageCache.set(cacheKey, img);
2648
+ return img;
2649
+ }
2650
+ function clearIconCache() {
2651
+ svgCache.clear();
2652
+ imageCache.clear();
2653
+ }
2654
+ function getAvailableIcons() {
2655
+ return Object.keys(ICON_PATHS);
2656
+ }
2657
+ return lucideIconConverter;
2658
+ }
2729
2659
  var hasRequiredDrawLayeredBuildings;
2730
2660
  function requireDrawLayeredBuildings() {
2731
2661
  if (hasRequiredDrawLayeredBuildings) return drawLayeredBuildings;
@@ -2735,6 +2665,7 @@ function requireDrawLayeredBuildings() {
2735
2665
  drawLayeredBuildings.drawGrid = drawGrid;
2736
2666
  drawLayeredBuildings.drawLayeredDistricts = drawLayeredDistricts;
2737
2667
  drawLayeredBuildings.drawLayeredBuildings = drawLayeredBuildings$1;
2668
+ const lucideIconConverter_1 = requireLucideIconConverter();
2738
2669
  class LayerIndex {
2739
2670
  constructor(layers) {
2740
2671
  this.exactIndex = /* @__PURE__ */ new Map();
@@ -2959,15 +2890,18 @@ function requireDrawLayeredBuildings() {
2959
2890
  ctx.globalAlpha = coverOptions.opacity || 0.8;
2960
2891
  ctx.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);
2961
2892
  ctx.globalAlpha = 1;
2962
- if (coverOptions.image) {
2963
- const img = new Image();
2964
- img.onload = () => {
2965
- const imageSize = coverOptions.iconSize || Math.min(bounds.width, bounds.height) * 0.4;
2966
- const imageX = bounds.x + bounds.width / 2 - imageSize / 2;
2967
- const imageY = coverOptions.text ? bounds.y + bounds.height * 0.25 : bounds.y + bounds.height / 2 - imageSize / 2;
2968
- ctx.drawImage(img, imageX, imageY, imageSize, imageSize);
2969
- };
2893
+ let img = null;
2894
+ if (coverOptions.lucideIcon) {
2895
+ img = (0, lucideIconConverter_1.getLucideIconImage)(coverOptions.lucideIcon, "#ffffff", coverOptions.iconSize || 24);
2896
+ } else if (coverOptions.image) {
2897
+ img = new Image();
2970
2898
  img.src = coverOptions.image;
2899
+ }
2900
+ if (img) {
2901
+ const imageSize = coverOptions.iconSize || Math.min(bounds.width, bounds.height) * 0.4;
2902
+ const imageX = bounds.x + bounds.width / 2 - imageSize / 2;
2903
+ const imageY = coverOptions.text ? bounds.y + bounds.height * 0.25 : bounds.y + bounds.height / 2 - imageSize / 2;
2904
+ ctx.drawImage(img, imageX, imageY, imageSize, imageSize);
2971
2905
  } else if (coverOptions.icon) {
2972
2906
  const iconSize = coverOptions.iconSize || Math.min(bounds.width, bounds.height) * 0.3;
2973
2907
  ctx.font = `${iconSize}px Arial`;
@@ -3259,7 +3193,8 @@ function requireDrawLayeredBuildings() {
3259
3193
  ctx.strokeRect(bounds.x - 1, bounds.y - 1, bounds.width + 2, bounds.height + 2);
3260
3194
  }
3261
3195
  }
3262
- if (showFileTypeIcons && isReactFile(building.fileExtension)) {
3196
+ const isTestFile = building.path.includes(".test.") || building.path.includes(".spec.");
3197
+ if (showFileTypeIcons && isReactFile(building.fileExtension) && !isTestFile) {
3263
3198
  const reactSize = Math.min(width, height) * 0.75;
3264
3199
  const reactX = pos.x;
3265
3200
  const reactY = pos.y;
@@ -4434,260 +4369,14 @@ ${projectInfo.currentBranch}`;
4434
4369
  const scale = Math.min(scaleX, scaleZ);
4435
4370
  const scaledCityWidth = cityDepth * scale;
4436
4371
  const scaledCityHeight = cityWidth * scale;
4437
- const offsetX = (width - scaledCityWidth) / 2;
4438
- const offsetZ = (height - scaledCityHeight) / 2;
4439
- return { scale, offsetX, offsetZ };
4440
- }
4441
- ArchitectureMapHighlightLayers.ArchitectureMapHighlightLayers = ArchitectureMapHighlightLayersInner;
4442
- return ArchitectureMapHighlightLayers;
4443
- }
4444
- var fileColorHighlightLayers = {};
4445
- const version = "1.0.0";
4446
- const description = "Git Gallery file color palette configuration";
4447
- const lastUpdated = "2025-01-26";
4448
- 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"}}`);
4449
- const defaultConfig = { "primary": { "color": "#8b949e", "renderStrategy": "fill", "opacity": 0.6 }, "displayName": "Other", "description": "Unrecognized file types", "category": "Other" };
4450
- const includeUnmatched = true;
4451
- const require$$0 = {
4452
- version,
4453
- description,
4454
- lastUpdated,
4455
- suffixConfigs,
4456
- defaultConfig,
4457
- includeUnmatched
4458
- };
4459
- var hasRequiredFileColorHighlightLayers;
4460
- function requireFileColorHighlightLayers() {
4461
- if (hasRequiredFileColorHighlightLayers) return fileColorHighlightLayers;
4462
- hasRequiredFileColorHighlightLayers = 1;
4463
- var __importDefault = fileColorHighlightLayers && fileColorHighlightLayers.__importDefault || function(mod) {
4464
- return mod && mod.__esModule ? mod : { "default": mod };
4465
- };
4466
- Object.defineProperty(fileColorHighlightLayers, "__esModule", { value: true });
4467
- fileColorHighlightLayers.createFileColorHighlightLayers = createFileColorHighlightLayers;
4468
- fileColorHighlightLayers.getDefaultFileColorConfig = getDefaultFileColorConfig;
4469
- fileColorHighlightLayers.getFileColorMapping = getFileColorMapping;
4470
- const files_json_1 = __importDefault(require$$0);
4471
- function createFileColorHighlightLayers(files, config) {
4472
- if (!files || files.length === 0) {
4473
- return [];
4474
- }
4475
- const colorConfig = config || files_json_1.default;
4476
- const { suffixConfigs: suffixConfigs2, defaultConfig: defaultFileConfig, includeUnmatched: includeUnmatched2 = true } = colorConfig;
4477
- if (!suffixConfigs2 || typeof suffixConfigs2 !== "object") {
4478
- console.error("[FileColorHighlightLayers] Invalid suffixConfigs structure");
4479
- return [];
4480
- }
4481
- const filesBySuffix = /* @__PURE__ */ new Map();
4482
- const unmatchedFilesBySuffix = /* @__PURE__ */ new Map();
4483
- const noExtensionFiles = [];
4484
- files.forEach((file) => {
4485
- const filePath = file.path;
4486
- const lastSlash = filePath.lastIndexOf("/");
4487
- const fileName = lastSlash === -1 ? filePath : filePath.substring(lastSlash + 1);
4488
- const lastDot = fileName.lastIndexOf(".");
4489
- if (suffixConfigs2[fileName]) {
4490
- if (!filesBySuffix.has(fileName)) {
4491
- filesBySuffix.set(fileName, []);
4492
- }
4493
- const fileNameFiles = filesBySuffix.get(fileName);
4494
- if (fileNameFiles) {
4495
- fileNameFiles.push(filePath);
4496
- }
4497
- return;
4498
- }
4499
- if (lastDot === -1 || lastDot === fileName.length - 1) {
4500
- if (includeUnmatched2) {
4501
- noExtensionFiles.push(filePath);
4502
- }
4503
- return;
4504
- }
4505
- const extension = fileName.substring(lastDot).toLowerCase();
4506
- if (suffixConfigs2[extension]) {
4507
- if (!filesBySuffix.has(extension)) {
4508
- filesBySuffix.set(extension, []);
4509
- }
4510
- const extFiles = filesBySuffix.get(extension);
4511
- if (extFiles) {
4512
- extFiles.push(filePath);
4513
- }
4514
- } else if (includeUnmatched2) {
4515
- if (!unmatchedFilesBySuffix.has(extension)) {
4516
- unmatchedFilesBySuffix.set(extension, []);
4517
- }
4518
- const unmatchedExtFiles = unmatchedFilesBySuffix.get(extension);
4519
- if (unmatchedExtFiles) {
4520
- unmatchedExtFiles.push(filePath);
4521
- }
4522
- }
4523
- });
4524
- const layers = [];
4525
- const sortedSuffixes = Array.from(filesBySuffix.entries()).sort(([, filesA], [, filesB]) => filesB.length - filesA.length);
4526
- let basePriority = 1;
4527
- sortedSuffixes.forEach(([suffix, files2]) => {
4528
- const suffixConfig = suffixConfigs2[suffix];
4529
- const extensionName = suffix.startsWith(".") ? suffix.substring(1) : suffix;
4530
- const primaryLayer = {
4531
- id: `ext-${extensionName}-primary`,
4532
- name: suffixConfig.displayName || extensionName.toUpperCase(),
4533
- color: suffixConfig.primary.color,
4534
- enabled: true,
4535
- opacity: suffixConfig.primary.opacity ?? 1,
4536
- priority: suffixConfig.primary.priority ?? basePriority,
4537
- items: files2.map((path) => ({
4538
- path,
4539
- type: "file",
4540
- renderStrategy: suffixConfig.primary.renderStrategy,
4541
- ...suffixConfig.primary.coverOptions && {
4542
- coverOptions: suffixConfig.primary.coverOptions
4543
- },
4544
- ...suffixConfig.primary.customRender && {
4545
- customRender: suffixConfig.primary.customRender
4546
- }
4547
- }))
4548
- };
4549
- if (suffixConfig.primary.borderWidth) {
4550
- primaryLayer.borderWidth = suffixConfig.primary.borderWidth;
4551
- }
4552
- layers.push(primaryLayer);
4553
- if (suffixConfig.secondary) {
4554
- const secondary = suffixConfig.secondary;
4555
- const secondaryLayer = {
4556
- id: `ext-${extensionName}-secondary`,
4557
- name: `${suffixConfig.displayName || extensionName.toUpperCase()} Secondary`,
4558
- color: secondary.color,
4559
- enabled: true,
4560
- opacity: secondary.opacity ?? 1,
4561
- priority: secondary.priority ?? basePriority + 100,
4562
- // Higher priority by default
4563
- items: files2.map((path) => ({
4564
- path,
4565
- type: "file",
4566
- renderStrategy: secondary.renderStrategy,
4567
- ...secondary.coverOptions && { coverOptions: secondary.coverOptions },
4568
- ...secondary.customRender && { customRender: secondary.customRender }
4569
- }))
4570
- };
4571
- if (secondary.borderWidth) {
4572
- secondaryLayer.borderWidth = secondary.borderWidth;
4573
- }
4574
- layers.push(secondaryLayer);
4575
- }
4576
- basePriority += 2;
4577
- });
4578
- if (includeUnmatched2 && defaultFileConfig) {
4579
- const sortedUnmatchedSuffixes = Array.from(unmatchedFilesBySuffix.entries()).sort(([, filesA], [, filesB]) => filesB.length - filesA.length);
4580
- sortedUnmatchedSuffixes.forEach(([suffix, files2]) => {
4581
- const extensionName = suffix.startsWith(".") ? suffix.substring(1) : suffix;
4582
- const unmatchedLayer = {
4583
- id: `ext-${extensionName}-primary`,
4584
- name: extensionName.toUpperCase(),
4585
- color: defaultFileConfig.primary.color,
4586
- enabled: true,
4587
- opacity: defaultFileConfig.primary.opacity ?? 1,
4588
- priority: defaultFileConfig.primary.priority ?? basePriority,
4589
- items: files2.map((path) => ({
4590
- path,
4591
- type: "file",
4592
- renderStrategy: defaultFileConfig.primary.renderStrategy,
4593
- ...defaultFileConfig.primary.coverOptions && {
4594
- coverOptions: defaultFileConfig.primary.coverOptions
4595
- },
4596
- ...defaultFileConfig.primary.customRender && {
4597
- customRender: defaultFileConfig.primary.customRender
4598
- }
4599
- }))
4600
- };
4601
- if (defaultFileConfig.primary.borderWidth) {
4602
- unmatchedLayer.borderWidth = defaultFileConfig.primary.borderWidth;
4603
- }
4604
- layers.push(unmatchedLayer);
4605
- if (defaultFileConfig.secondary) {
4606
- const secondary = defaultFileConfig.secondary;
4607
- const unmatchedSecondaryLayer = {
4608
- id: `ext-${extensionName}-secondary`,
4609
- name: `${extensionName.toUpperCase()} Secondary`,
4610
- color: secondary.color,
4611
- enabled: true,
4612
- opacity: secondary.opacity ?? 1,
4613
- priority: secondary.priority ?? basePriority + 100,
4614
- items: files2.map((path) => ({
4615
- path,
4616
- type: "file",
4617
- renderStrategy: secondary.renderStrategy,
4618
- ...secondary.coverOptions && { coverOptions: secondary.coverOptions },
4619
- ...secondary.customRender && { customRender: secondary.customRender }
4620
- }))
4621
- };
4622
- if (secondary.borderWidth) {
4623
- unmatchedSecondaryLayer.borderWidth = secondary.borderWidth;
4624
- }
4625
- layers.push(unmatchedSecondaryLayer);
4626
- }
4627
- basePriority += 2;
4628
- });
4629
- if (noExtensionFiles.length > 0) {
4630
- const noExtLayer = {
4631
- id: "other-files-primary",
4632
- name: "OTHER",
4633
- color: defaultFileConfig.primary.color,
4634
- enabled: true,
4635
- opacity: defaultFileConfig.primary.opacity ?? 1,
4636
- priority: defaultFileConfig.primary.priority ?? basePriority,
4637
- items: noExtensionFiles.map((path) => ({
4638
- path,
4639
- type: "file",
4640
- renderStrategy: defaultFileConfig.primary.renderStrategy,
4641
- ...defaultFileConfig.primary.coverOptions && {
4642
- coverOptions: defaultFileConfig.primary.coverOptions
4643
- },
4644
- ...defaultFileConfig.primary.customRender && {
4645
- customRender: defaultFileConfig.primary.customRender
4646
- }
4647
- }))
4648
- };
4649
- if (defaultFileConfig.primary.borderWidth) {
4650
- noExtLayer.borderWidth = defaultFileConfig.primary.borderWidth;
4651
- }
4652
- layers.push(noExtLayer);
4653
- if (defaultFileConfig.secondary) {
4654
- const secondary = defaultFileConfig.secondary;
4655
- const noExtSecondaryLayer = {
4656
- id: "other-files-secondary",
4657
- name: "OTHER Secondary",
4658
- color: secondary.color,
4659
- enabled: true,
4660
- opacity: secondary.opacity ?? 1,
4661
- priority: secondary.priority ?? basePriority + 100,
4662
- items: noExtensionFiles.map((path) => ({
4663
- path,
4664
- type: "file",
4665
- renderStrategy: secondary.renderStrategy,
4666
- ...secondary.coverOptions && { coverOptions: secondary.coverOptions },
4667
- ...secondary.customRender && { customRender: secondary.customRender }
4668
- }))
4669
- };
4670
- if (secondary.borderWidth) {
4671
- noExtSecondaryLayer.borderWidth = secondary.borderWidth;
4672
- }
4673
- layers.push(noExtSecondaryLayer);
4674
- }
4675
- }
4676
- }
4677
- return layers;
4678
- }
4679
- function getDefaultFileColorConfig() {
4680
- return files_json_1.default;
4681
- }
4682
- function getFileColorMapping(config) {
4683
- const colorConfig = config || files_json_1.default;
4684
- return Object.entries(colorConfig.suffixConfigs).reduce((acc, [extension, suffixConfig]) => {
4685
- acc[extension] = suffixConfig.primary.color;
4686
- return acc;
4687
- }, {});
4372
+ const offsetX = (width - scaledCityWidth) / 2;
4373
+ const offsetZ = (height - scaledCityHeight) / 2;
4374
+ return { scale, offsetX, offsetZ };
4688
4375
  }
4689
- return fileColorHighlightLayers;
4376
+ ArchitectureMapHighlightLayers.ArchitectureMapHighlightLayers = ArchitectureMapHighlightLayersInner;
4377
+ return ArchitectureMapHighlightLayers;
4690
4378
  }
4379
+ var fileColorHighlightLayers = {};
4691
4380
  function count(node) {
4692
4381
  var sum = 0, children2 = node.children, i = children2 && children2.length;
4693
4382
  if (!i) sum = 1;
@@ -5596,7 +5285,7 @@ class CodeCityBuilderWithGrid {
5596
5285
  gridLayout: void 0
5597
5286
  // Prevent recursion
5598
5287
  };
5599
- const cellCity = this.buildSingleCellCity(cellTree, rootPath, cellOptions);
5288
+ const cellCity = this.buildSingleCellCity(cellTree, rootPath, cellOptions, cellBounds.width, cellBounds.height);
5600
5289
  cellCity.buildings.forEach((building) => {
5601
5290
  building.position.x += cellBounds.x;
5602
5291
  building.position.z += cellBounds.y;
@@ -5673,19 +5362,29 @@ class CodeCityBuilderWithGrid {
5673
5362
  *
5674
5363
  * Results are cached based on file tree identity and layout options.
5675
5364
  * Cache hits skip the expensive D3 treemap computation entirely.
5365
+ *
5366
+ * @param explicitWidth - Optional explicit width to use instead of calculating
5367
+ * @param explicitHeight - Optional explicit height to use instead of calculating
5676
5368
  */
5677
- buildSingleCellCity(fileSystemTree, rootPath = "", options = {}) {
5369
+ buildSingleCellCity(fileSystemTree, rootPath = "", options = {}, explicitWidth, explicitHeight) {
5678
5370
  const cacheKey = this.generateCacheKey(fileSystemTree, rootPath, options);
5679
5371
  const cached = this.getCached(cacheKey);
5680
5372
  if (cached) {
5681
5373
  return cached;
5682
5374
  }
5683
5375
  const { padding = 4, paddingOuter = 8, paddingTop = 20, paddingBottom = 20, paddingLeft = 4, paddingRight = 4, paddingInner = 4, round = true, tile = treemapSquarify } = options;
5684
- const totalFiles = fileSystemTree.stats.totalFiles;
5685
- const totalDirectories = fileSystemTree.stats.totalDirectories;
5686
- const sizeResult = this.calculateOptimalSize(totalFiles, totalDirectories, options);
5687
- const width = sizeResult.width;
5688
- const height = sizeResult.height;
5376
+ let width;
5377
+ let height;
5378
+ if (explicitWidth !== void 0 && explicitHeight !== void 0) {
5379
+ width = explicitWidth;
5380
+ height = explicitHeight;
5381
+ } else {
5382
+ const totalFiles = fileSystemTree.stats.totalFiles;
5383
+ const totalDirectories = fileSystemTree.stats.totalDirectories;
5384
+ const sizeResult = this.calculateOptimalSize(totalFiles, totalDirectories, options);
5385
+ width = sizeResult.width;
5386
+ height = sizeResult.height;
5387
+ }
5689
5388
  const buildings = [];
5690
5389
  const districts = [];
5691
5390
  const hierarchyData = this.convertToD3Hierarchy(fileSystemTree.root);
@@ -6275,6 +5974,20 @@ const CommonSorts = {
6275
5974
  return a.lastModified.getTime() - b.lastModified.getTime();
6276
5975
  }
6277
5976
  };
5977
+ const version = "1.0.0";
5978
+ const description = "Git Gallery file color palette configuration";
5979
+ const lastUpdated = "2025-01-26";
5980
+ 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"},".test.ts":{"primary":{"color":"#10b981","renderStrategy":"cover","opacity":0.8,"coverOptions":{"lucideIcon":"TestTube","iconSize":24,"backgroundColor":"#10b981"}},"displayName":"Test (TS)","description":"TypeScript test files","category":"Testing"},".test.tsx":{"primary":{"color":"#10b981","renderStrategy":"cover","opacity":0.8,"coverOptions":{"lucideIcon":"TestTube","iconSize":24,"backgroundColor":"#10b981"}},"secondary":{"color":"#61DBFB","renderStrategy":"border","opacity":0.6},"displayName":"Test (TSX)","description":"TypeScript React test files","category":"Testing"},".spec.ts":{"primary":{"color":"#059669","renderStrategy":"cover","opacity":0.8,"coverOptions":{"lucideIcon":"FlaskConical","iconSize":24,"backgroundColor":"#059669"}},"displayName":"Spec (TS)","description":"TypeScript spec files","category":"Testing"},".spec.tsx":{"primary":{"color":"#059669","renderStrategy":"cover","opacity":0.8,"coverOptions":{"lucideIcon":"FlaskConical","iconSize":24,"backgroundColor":"#059669"}},"secondary":{"color":"#61DBFB","renderStrategy":"border","opacity":0.6},"displayName":"Spec (TSX)","description":"TypeScript React spec files","category":"Testing"},".test.js":{"primary":{"color":"#10b981","renderStrategy":"cover","opacity":0.8,"coverOptions":{"lucideIcon":"TestTube","iconSize":24,"backgroundColor":"#10b981"}},"displayName":"Test (JS)","description":"JavaScript test files","category":"Testing"},".test.jsx":{"primary":{"color":"#10b981","renderStrategy":"cover","opacity":0.8,"coverOptions":{"lucideIcon":"TestTube","iconSize":24,"backgroundColor":"#10b981"}},"secondary":{"color":"#61DBFB","renderStrategy":"border","opacity":0.6},"displayName":"Test (JSX)","description":"JavaScript React test files","category":"Testing"},".spec.js":{"primary":{"color":"#059669","renderStrategy":"cover","opacity":0.8,"coverOptions":{"lucideIcon":"FlaskConical","iconSize":24,"backgroundColor":"#059669"}},"displayName":"Spec (JS)","description":"JavaScript spec files","category":"Testing"},".spec.jsx":{"primary":{"color":"#059669","renderStrategy":"cover","opacity":0.8,"coverOptions":{"lucideIcon":"FlaskConical","iconSize":24,"backgroundColor":"#059669"}},"secondary":{"color":"#61DBFB","renderStrategy":"border","opacity":0.6},"displayName":"Spec (JSX)","description":"JavaScript React spec files","category":"Testing"}}`);
5981
+ const defaultConfig = { "primary": { "color": "#8b949e", "renderStrategy": "fill", "opacity": 0.6 }, "displayName": "Other", "description": "Unrecognized file types", "category": "Other" };
5982
+ const includeUnmatched = true;
5983
+ const files = {
5984
+ version,
5985
+ description,
5986
+ lastUpdated,
5987
+ suffixConfigs,
5988
+ defaultConfig,
5989
+ includeUnmatched
5990
+ };
6278
5991
  const dist = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6279
5992
  __proto__: null,
6280
5993
  CodeCityBuilderWithGrid,
@@ -6283,9 +5996,250 @@ const dist = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty
6283
5996
  MultiVersionCityBuilder,
6284
5997
  buildFileSystemTreeFromFileInfoList,
6285
5998
  buildMultiVersionCity,
5999
+ defaultFileColorConfig: files,
6286
6000
  getFilesFromGitHubTree
6287
6001
  }, Symbol.toStringTag, { value: "Module" }));
6288
6002
  const require$$4 = /* @__PURE__ */ getAugmentedNamespace(dist);
6003
+ var hasRequiredFileColorHighlightLayers;
6004
+ function requireFileColorHighlightLayers() {
6005
+ if (hasRequiredFileColorHighlightLayers) return fileColorHighlightLayers;
6006
+ hasRequiredFileColorHighlightLayers = 1;
6007
+ Object.defineProperty(fileColorHighlightLayers, "__esModule", { value: true });
6008
+ fileColorHighlightLayers.createFileColorHighlightLayers = createFileColorHighlightLayers;
6009
+ fileColorHighlightLayers.getDefaultFileColorConfig = getDefaultFileColorConfig;
6010
+ fileColorHighlightLayers.getFileColorMapping = getFileColorMapping;
6011
+ const file_city_builder_1 = require$$4;
6012
+ function createFileColorHighlightLayers(files2, config) {
6013
+ if (!files2 || files2.length === 0) {
6014
+ return [];
6015
+ }
6016
+ const colorConfig = config || file_city_builder_1.defaultFileColorConfig;
6017
+ const { suffixConfigs: suffixConfigs2, defaultConfig: defaultFileConfig, includeUnmatched: includeUnmatched2 = true } = colorConfig;
6018
+ if (!suffixConfigs2 || typeof suffixConfigs2 !== "object") {
6019
+ console.error("[FileColorHighlightLayers] Invalid suffixConfigs structure");
6020
+ return [];
6021
+ }
6022
+ const filesBySuffix = /* @__PURE__ */ new Map();
6023
+ const unmatchedFilesBySuffix = /* @__PURE__ */ new Map();
6024
+ const noExtensionFiles = [];
6025
+ files2.forEach((file) => {
6026
+ const filePath = file.path;
6027
+ const lastSlash = filePath.lastIndexOf("/");
6028
+ const fileName = lastSlash === -1 ? filePath : filePath.substring(lastSlash + 1);
6029
+ if (suffixConfigs2[fileName]) {
6030
+ if (!filesBySuffix.has(fileName)) {
6031
+ filesBySuffix.set(fileName, []);
6032
+ }
6033
+ const fileNameFiles = filesBySuffix.get(fileName);
6034
+ if (fileNameFiles) {
6035
+ fileNameFiles.push(filePath);
6036
+ }
6037
+ return;
6038
+ }
6039
+ const lastDot = fileName.lastIndexOf(".");
6040
+ if (lastDot === -1 || lastDot === fileName.length - 1) {
6041
+ if (includeUnmatched2) {
6042
+ noExtensionFiles.push(filePath);
6043
+ }
6044
+ return;
6045
+ }
6046
+ let extension = null;
6047
+ const lowerFileName = fileName.toLowerCase();
6048
+ const sortedSuffixes2 = Object.keys(suffixConfigs2).sort((a, b) => b.length - a.length);
6049
+ for (const suffix of sortedSuffixes2) {
6050
+ if (lowerFileName.endsWith(suffix)) {
6051
+ extension = suffix;
6052
+ break;
6053
+ }
6054
+ }
6055
+ if (!extension) {
6056
+ extension = fileName.substring(lastDot).toLowerCase();
6057
+ }
6058
+ if (suffixConfigs2[extension]) {
6059
+ if (!filesBySuffix.has(extension)) {
6060
+ filesBySuffix.set(extension, []);
6061
+ }
6062
+ const extFiles = filesBySuffix.get(extension);
6063
+ if (extFiles) {
6064
+ extFiles.push(filePath);
6065
+ }
6066
+ } else if (includeUnmatched2) {
6067
+ if (!unmatchedFilesBySuffix.has(extension)) {
6068
+ unmatchedFilesBySuffix.set(extension, []);
6069
+ }
6070
+ const unmatchedExtFiles = unmatchedFilesBySuffix.get(extension);
6071
+ if (unmatchedExtFiles) {
6072
+ unmatchedExtFiles.push(filePath);
6073
+ }
6074
+ }
6075
+ });
6076
+ const layers = [];
6077
+ const sortedSuffixes = Array.from(filesBySuffix.entries()).sort(([, filesA], [, filesB]) => filesB.length - filesA.length);
6078
+ let basePriority = 1;
6079
+ sortedSuffixes.forEach(([suffix, files3]) => {
6080
+ const suffixConfig = suffixConfigs2[suffix];
6081
+ const extensionName = suffix.startsWith(".") ? suffix.substring(1) : suffix;
6082
+ const primaryLayer = {
6083
+ id: `ext-${extensionName}-primary`,
6084
+ name: suffixConfig.displayName || extensionName.toUpperCase(),
6085
+ color: suffixConfig.primary.color,
6086
+ enabled: true,
6087
+ opacity: suffixConfig.primary.opacity ?? 1,
6088
+ priority: suffixConfig.primary.priority ?? basePriority,
6089
+ items: files3.map((path) => ({
6090
+ path,
6091
+ type: "file",
6092
+ renderStrategy: suffixConfig.primary.renderStrategy,
6093
+ ...suffixConfig.primary.coverOptions && {
6094
+ coverOptions: suffixConfig.primary.coverOptions
6095
+ },
6096
+ ...suffixConfig.primary.customRender && {
6097
+ customRender: suffixConfig.primary.customRender
6098
+ }
6099
+ }))
6100
+ };
6101
+ if (suffixConfig.primary.borderWidth) {
6102
+ primaryLayer.borderWidth = suffixConfig.primary.borderWidth;
6103
+ }
6104
+ layers.push(primaryLayer);
6105
+ if (suffixConfig.secondary) {
6106
+ const secondary = suffixConfig.secondary;
6107
+ const secondaryLayer = {
6108
+ id: `ext-${extensionName}-secondary`,
6109
+ name: `${suffixConfig.displayName || extensionName.toUpperCase()} Secondary`,
6110
+ color: secondary.color,
6111
+ enabled: true,
6112
+ opacity: secondary.opacity ?? 1,
6113
+ priority: secondary.priority ?? basePriority + 100,
6114
+ // Higher priority by default
6115
+ items: files3.map((path) => ({
6116
+ path,
6117
+ type: "file",
6118
+ renderStrategy: secondary.renderStrategy,
6119
+ ...secondary.coverOptions && { coverOptions: secondary.coverOptions },
6120
+ ...secondary.customRender && { customRender: secondary.customRender }
6121
+ }))
6122
+ };
6123
+ if (secondary.borderWidth) {
6124
+ secondaryLayer.borderWidth = secondary.borderWidth;
6125
+ }
6126
+ layers.push(secondaryLayer);
6127
+ }
6128
+ basePriority += 2;
6129
+ });
6130
+ if (includeUnmatched2 && defaultFileConfig) {
6131
+ const sortedUnmatchedSuffixes = Array.from(unmatchedFilesBySuffix.entries()).sort(([, filesA], [, filesB]) => filesB.length - filesA.length);
6132
+ sortedUnmatchedSuffixes.forEach(([suffix, files3]) => {
6133
+ const extensionName = suffix.startsWith(".") ? suffix.substring(1) : suffix;
6134
+ const unmatchedLayer = {
6135
+ id: `ext-${extensionName}-primary`,
6136
+ name: extensionName.toUpperCase(),
6137
+ color: defaultFileConfig.primary.color,
6138
+ enabled: true,
6139
+ opacity: defaultFileConfig.primary.opacity ?? 1,
6140
+ priority: defaultFileConfig.primary.priority ?? basePriority,
6141
+ items: files3.map((path) => ({
6142
+ path,
6143
+ type: "file",
6144
+ renderStrategy: defaultFileConfig.primary.renderStrategy,
6145
+ ...defaultFileConfig.primary.coverOptions && {
6146
+ coverOptions: defaultFileConfig.primary.coverOptions
6147
+ },
6148
+ ...defaultFileConfig.primary.customRender && {
6149
+ customRender: defaultFileConfig.primary.customRender
6150
+ }
6151
+ }))
6152
+ };
6153
+ if (defaultFileConfig.primary.borderWidth) {
6154
+ unmatchedLayer.borderWidth = defaultFileConfig.primary.borderWidth;
6155
+ }
6156
+ layers.push(unmatchedLayer);
6157
+ if (defaultFileConfig.secondary) {
6158
+ const secondary = defaultFileConfig.secondary;
6159
+ const unmatchedSecondaryLayer = {
6160
+ id: `ext-${extensionName}-secondary`,
6161
+ name: `${extensionName.toUpperCase()} Secondary`,
6162
+ color: secondary.color,
6163
+ enabled: true,
6164
+ opacity: secondary.opacity ?? 1,
6165
+ priority: secondary.priority ?? basePriority + 100,
6166
+ items: files3.map((path) => ({
6167
+ path,
6168
+ type: "file",
6169
+ renderStrategy: secondary.renderStrategy,
6170
+ ...secondary.coverOptions && { coverOptions: secondary.coverOptions },
6171
+ ...secondary.customRender && { customRender: secondary.customRender }
6172
+ }))
6173
+ };
6174
+ if (secondary.borderWidth) {
6175
+ unmatchedSecondaryLayer.borderWidth = secondary.borderWidth;
6176
+ }
6177
+ layers.push(unmatchedSecondaryLayer);
6178
+ }
6179
+ basePriority += 2;
6180
+ });
6181
+ if (noExtensionFiles.length > 0) {
6182
+ const noExtLayer = {
6183
+ id: "other-files-primary",
6184
+ name: "OTHER",
6185
+ color: defaultFileConfig.primary.color,
6186
+ enabled: true,
6187
+ opacity: defaultFileConfig.primary.opacity ?? 1,
6188
+ priority: defaultFileConfig.primary.priority ?? basePriority,
6189
+ items: noExtensionFiles.map((path) => ({
6190
+ path,
6191
+ type: "file",
6192
+ renderStrategy: defaultFileConfig.primary.renderStrategy,
6193
+ ...defaultFileConfig.primary.coverOptions && {
6194
+ coverOptions: defaultFileConfig.primary.coverOptions
6195
+ },
6196
+ ...defaultFileConfig.primary.customRender && {
6197
+ customRender: defaultFileConfig.primary.customRender
6198
+ }
6199
+ }))
6200
+ };
6201
+ if (defaultFileConfig.primary.borderWidth) {
6202
+ noExtLayer.borderWidth = defaultFileConfig.primary.borderWidth;
6203
+ }
6204
+ layers.push(noExtLayer);
6205
+ if (defaultFileConfig.secondary) {
6206
+ const secondary = defaultFileConfig.secondary;
6207
+ const noExtSecondaryLayer = {
6208
+ id: "other-files-secondary",
6209
+ name: "OTHER Secondary",
6210
+ color: secondary.color,
6211
+ enabled: true,
6212
+ opacity: secondary.opacity ?? 1,
6213
+ priority: secondary.priority ?? basePriority + 100,
6214
+ items: noExtensionFiles.map((path) => ({
6215
+ path,
6216
+ type: "file",
6217
+ renderStrategy: secondary.renderStrategy,
6218
+ ...secondary.coverOptions && { coverOptions: secondary.coverOptions },
6219
+ ...secondary.customRender && { customRender: secondary.customRender }
6220
+ }))
6221
+ };
6222
+ if (secondary.borderWidth) {
6223
+ noExtSecondaryLayer.borderWidth = secondary.borderWidth;
6224
+ }
6225
+ layers.push(noExtSecondaryLayer);
6226
+ }
6227
+ }
6228
+ }
6229
+ return layers;
6230
+ }
6231
+ function getDefaultFileColorConfig() {
6232
+ return file_city_builder_1.defaultFileColorConfig;
6233
+ }
6234
+ function getFileColorMapping(config) {
6235
+ const colorConfig = config || file_city_builder_1.defaultFileColorConfig;
6236
+ return Object.entries(colorConfig.suffixConfigs).reduce((acc, [extension, suffixConfig]) => {
6237
+ acc[extension] = suffixConfig.primary.color;
6238
+ return acc;
6239
+ }, {});
6240
+ }
6241
+ return fileColorHighlightLayers;
6242
+ }
6289
6243
  var useCodeCityData = {};
6290
6244
  var hasRequiredUseCodeCityData;
6291
6245
  function requireUseCodeCityData() {
@@ -13966,6 +13920,7 @@ function requireCityViewWithReactFlow() {
13966
13920
  return react_1.default.createElement(
13967
13921
  "div",
13968
13922
  { className: "cell-node", style: {
13923
+ boxSizing: "border-box",
13969
13924
  background: selected ? `linear-gradient(135deg, ${theme2.colors.primary} 0%, ${theme2.colors.accent} 100%)` : `linear-gradient(135deg, ${theme2.colors.backgroundSecondary} 0%, ${theme2.colors.background} 100%)`,
13970
13925
  borderRadius: `${theme2.radii[2]}px`,
13971
13926
  padding: `${theme2.space[3]}px`,
@@ -14043,7 +13998,8 @@ function requireCityViewWithReactFlow() {
14043
13998
  }
14044
13999
  ],
14045
14000
  showGrid: false,
14046
- showDirectoryLabels: false,
14001
+ showDirectoryLabels: true,
14002
+ showFileNames: true,
14047
14003
  canvasBackgroundColor: theme2.colors.background,
14048
14004
  defaultBuildingColor: theme2.colors.muted,
14049
14005
  defaultDirectoryColor: theme2.colors.backgroundSecondary,
@@ -14255,14 +14211,15 @@ function requireDist() {
14255
14211
  var distExports = requireDist();
14256
14212
  const EXTENSION_COLORS = distExports.getFileColorMapping();
14257
14213
  const FileCardList = ({
14258
- files,
14214
+ files: files2,
14259
14215
  onFileClick,
14260
14216
  onFileHover,
14261
14217
  emptyMessage = "No files",
14262
14218
  horizontalPadding = "0px",
14263
14219
  showIcons = true
14264
14220
  }) => {
14265
- const { theme: theme2 } = useTheme$1();
14221
+ const { theme: theme2 } = useTheme();
14222
+ const [copiedPath, setCopiedPath] = React.useState(null);
14266
14223
  const getFileName = useCallback((path) => {
14267
14224
  const parts = path.split("/");
14268
14225
  return parts[parts.length - 1] || path;
@@ -14286,7 +14243,7 @@ const FileCardList = ({
14286
14243
  return EXTENSION_COLORS[ext];
14287
14244
  }, [getFileName]);
14288
14245
  const sortedFiles = useMemo(() => {
14289
- return [...files].sort((a, b) => {
14246
+ return [...files2].sort((a, b) => {
14290
14247
  const aIsDir = isDirectory(a.path);
14291
14248
  const bIsDir = isDirectory(b.path);
14292
14249
  if (aIsDir !== bIsDir) return aIsDir ? -1 : 1;
@@ -14294,8 +14251,8 @@ const FileCardList = ({
14294
14251
  const bName = getFileName(b.path).toLowerCase();
14295
14252
  return aName.localeCompare(bName);
14296
14253
  });
14297
- }, [files, isDirectory, getFileName]);
14298
- if (files.length === 0) {
14254
+ }, [files2, isDirectory, getFileName]);
14255
+ if (files2.length === 0) {
14299
14256
  return /* @__PURE__ */ jsx(
14300
14257
  "div",
14301
14258
  {
@@ -14331,6 +14288,15 @@ const FileCardList = ({
14331
14288
  onClick: () => onFileClick == null ? void 0 : onFileClick(file.path),
14332
14289
  onMouseEnter: () => onFileHover == null ? void 0 : onFileHover(file.path),
14333
14290
  onMouseLeave: () => onFileHover == null ? void 0 : onFileHover(null),
14291
+ onContextMenu: (e) => {
14292
+ e.preventDefault();
14293
+ navigator.clipboard.writeText(file.path).then(() => {
14294
+ setCopiedPath(file.path);
14295
+ setTimeout(() => setCopiedPath(null), 1500);
14296
+ }).catch((err) => {
14297
+ console.error("Failed to copy file path to clipboard:", err);
14298
+ });
14299
+ },
14334
14300
  style: {
14335
14301
  display: "flex",
14336
14302
  alignItems: "center",
@@ -14437,6 +14403,22 @@ const FileCardList = ({
14437
14403
  },
14438
14404
  children: file.badge
14439
14405
  }
14406
+ ),
14407
+ copiedPath === file.path && /* @__PURE__ */ jsx(
14408
+ "span",
14409
+ {
14410
+ style: {
14411
+ fontFamily: theme2.fonts.body,
14412
+ fontSize: theme2.fontSizes[0],
14413
+ fontWeight: 600,
14414
+ color: "#22c55e",
14415
+ backgroundColor: "#22c55e20",
14416
+ padding: "4px 8px",
14417
+ borderRadius: "4px",
14418
+ flexShrink: 0
14419
+ },
14420
+ children: "Copied!"
14421
+ }
14440
14422
  )
14441
14423
  ]
14442
14424
  },
@@ -14468,7 +14450,7 @@ const GitChangesCardList = ({
14468
14450
  onFileClick,
14469
14451
  onFileHover
14470
14452
  }) => {
14471
- const { theme: theme2 } = useTheme$1();
14453
+ const { theme: theme2 } = useTheme();
14472
14454
  const fileStatusMap = useMemo(() => {
14473
14455
  const map = /* @__PURE__ */ new Map();
14474
14456
  gitStatus.stagedFiles.forEach((f) => map.set(f, "staged"));
@@ -14477,7 +14459,7 @@ const GitChangesCardList = ({
14477
14459
  gitStatus.modifiedFiles.forEach((f) => map.set(f, "unstaged"));
14478
14460
  return map;
14479
14461
  }, [gitStatus]);
14480
- const files = useMemo(() => {
14462
+ const files2 = useMemo(() => {
14481
14463
  const items = [];
14482
14464
  const addFiles = (paths, status) => {
14483
14465
  paths.forEach((path) => {
@@ -14501,7 +14483,7 @@ const GitChangesCardList = ({
14501
14483
  const status = fileStatusMap.get(filePath);
14502
14484
  onFileClick == null ? void 0 : onFileClick(filePath, status);
14503
14485
  }, [fileStatusMap, onFileClick]);
14504
- const hasChanges = files.length > 0;
14486
+ const hasChanges = files2.length > 0;
14505
14487
  if (!hasChanges) {
14506
14488
  return /* @__PURE__ */ jsx(
14507
14489
  "div",
@@ -14521,7 +14503,7 @@ const GitChangesCardList = ({
14521
14503
  return /* @__PURE__ */ jsx(
14522
14504
  FileCardList,
14523
14505
  {
14524
- files,
14506
+ files: files2,
14525
14507
  onFileClick: handleFileClick,
14526
14508
  onFileHover,
14527
14509
  horizontalPadding,
@@ -14553,7 +14535,7 @@ const PrChangesCardList = ({
14553
14535
  onFileClick,
14554
14536
  onFileHover
14555
14537
  }) => {
14556
- const { theme: theme2 } = useTheme$1();
14538
+ const { theme: theme2 } = useTheme();
14557
14539
  const renamedPaths = useMemo(
14558
14540
  () => prFiles.renamed.map((r) => r.filename),
14559
14541
  [prFiles.renamed]
@@ -14581,7 +14563,7 @@ const PrChangesCardList = ({
14581
14563
  renamedPaths.forEach((f) => map.set(f, "renamed"));
14582
14564
  return map;
14583
14565
  }, [prFiles, renamedPaths]);
14584
- const files = useMemo(() => {
14566
+ const files2 = useMemo(() => {
14585
14567
  const items = [];
14586
14568
  const addFiles = (paths, status) => {
14587
14569
  paths.forEach((path) => {
@@ -14605,7 +14587,7 @@ const PrChangesCardList = ({
14605
14587
  const status = fileStatusMap.get(filePath);
14606
14588
  onFileClick == null ? void 0 : onFileClick(filePath, status);
14607
14589
  }, [fileStatusMap, onFileClick]);
14608
- const hasChanges = files.length > 0;
14590
+ const hasChanges = files2.length > 0;
14609
14591
  if (!hasChanges) {
14610
14592
  return /* @__PURE__ */ jsx(
14611
14593
  "div",
@@ -14625,7 +14607,7 @@ const PrChangesCardList = ({
14625
14607
  return /* @__PURE__ */ jsx(
14626
14608
  FileCardList,
14627
14609
  {
14628
- files,
14610
+ files: files2,
14629
14611
  onFileClick: handleFileClick,
14630
14612
  onFileHover,
14631
14613
  horizontalPadding,
@@ -14768,7 +14750,7 @@ const CommitChangesTree = ({
14768
14750
  onFileClick,
14769
14751
  onNodeHover
14770
14752
  }) => {
14771
- const { theme: theme2 } = useTheme$1();
14753
+ const { theme: theme2 } = useTheme();
14772
14754
  const hasChanges = useMemo(
14773
14755
  () => commitFiles.added.length > 0 || commitFiles.modified.length > 0 || commitFiles.removed.length > 0 || commitFiles.renamed.length > 0,
14774
14756
  [commitFiles.added.length, commitFiles.modified.length, commitFiles.removed.length, commitFiles.renamed.length]
@@ -14880,7 +14862,7 @@ const StoryboardFilesCardList = ({
14880
14862
  onFileHover,
14881
14863
  showHeader = true
14882
14864
  }) => {
14883
- const { theme: theme2 } = useTheme$1();
14865
+ const { theme: theme2 } = useTheme();
14884
14866
  const { storyboard, workflow, scenario, nodeSources } = storyboardContext;
14885
14867
  const sourceFiles = useMemo(() => {
14886
14868
  if (!storyboard) return [];
@@ -14899,7 +14881,7 @@ const StoryboardFilesCardList = ({
14899
14881
  }
14900
14882
  return Array.from(sourceFilesSet);
14901
14883
  }, [storyboard, workflow, scenario, nodeSources]);
14902
- const files = useMemo(() => {
14884
+ const files2 = useMemo(() => {
14903
14885
  return sourceFiles.filter((path) => path && path.trim()).map((path) => ({ path }));
14904
14886
  }, [sourceFiles]);
14905
14887
  const handleFileClick = useCallback((filePath) => {
@@ -14921,7 +14903,7 @@ const StoryboardFilesCardList = ({
14921
14903
  }
14922
14904
  );
14923
14905
  }
14924
- if (files.length === 0) {
14906
+ if (files2.length === 0) {
14925
14907
  return /* @__PURE__ */ jsx(
14926
14908
  "div",
14927
14909
  {
@@ -14983,7 +14965,7 @@ const StoryboardFilesCardList = ({
14983
14965
  /* @__PURE__ */ jsx(
14984
14966
  FileCardList,
14985
14967
  {
14986
- files,
14968
+ files: files2,
14987
14969
  onFileClick: handleFileClick,
14988
14970
  onFileHover,
14989
14971
  horizontalPadding,
@@ -15023,7 +15005,7 @@ const Legend = ({
15023
15005
  onClearAgentLayers,
15024
15006
  position = "bottom"
15025
15007
  }) => {
15026
- const { theme: theme2 } = useTheme$1();
15008
+ const { theme: theme2 } = useTheme();
15027
15009
  const hasGitStatus = gitStatus != null && (gitStatus.stagedFiles.length > 0 || gitStatus.modifiedFiles.length > 0 || gitStatus.untrackedFiles.length > 0 || gitStatus.deletedFiles.length > 0);
15028
15010
  const hasPrFiles = prFiles != null && (prFiles.added.length > 0 || prFiles.modified.length > 0 || prFiles.removed.length > 0 || prFiles.renamed.length > 0);
15029
15011
  const hasCommitFiles = commitFiles != null && (commitFiles.added.length > 0 || commitFiles.modified.length > 0 || commitFiles.removed.length > 0 || commitFiles.renamed.length > 0);
@@ -15615,7 +15597,7 @@ const AgentActivityView = ({
15615
15597
  onClearAll,
15616
15598
  showHeader = true
15617
15599
  }) => {
15618
- const { theme: theme2 } = useTheme$1();
15600
+ const { theme: theme2 } = useTheme();
15619
15601
  const [expandedLayers, setExpandedLayers] = React.useState(/* @__PURE__ */ new Set());
15620
15602
  const toggleExpanded = (id2) => {
15621
15603
  setExpandedLayers((prev) => {
@@ -16064,7 +16046,7 @@ const LegendTabs = ({
16064
16046
  onTabChange
16065
16047
  }) => {
16066
16048
  var _a;
16067
- const { theme: theme2 } = useTheme$1();
16049
+ const { theme: theme2 } = useTheme();
16068
16050
  const [activeTab, setActiveTab] = React.useState(
16069
16051
  defaultTab || ((_a = tabs[0]) == null ? void 0 : _a.id) || "agent"
16070
16052
  );
@@ -17866,7 +17848,7 @@ const CodeCityPanelContent = ({
17866
17848
  events
17867
17849
  }) => {
17868
17850
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C;
17869
- const { theme: theme2 } = useTheme$1();
17851
+ const { theme: theme2 } = useTheme();
17870
17852
  const [cityData, setCityData] = useState(null);
17871
17853
  const [hoverInfo, setHoverInfo] = useState(null);
17872
17854
  const [highlightLayers, setHighlightLayers] = useState([]);
@@ -19316,7 +19298,7 @@ function adjustBrightness(color2, percent) {
19316
19298
  return color2;
19317
19299
  }
19318
19300
  const FeedProjectHeaderSkeleton = ({ compact = false }) => {
19319
- const { theme: theme2 } = useTheme$1();
19301
+ const { theme: theme2 } = useTheme();
19320
19302
  React.useEffect(() => {
19321
19303
  injectShimmerStyles();
19322
19304
  }, []);
@@ -19373,7 +19355,7 @@ const FeedProjectHeader = ({
19373
19355
  onOpen,
19374
19356
  compact = false
19375
19357
  }) => {
19376
- const { theme: theme2 } = useTheme$1();
19358
+ const { theme: theme2 } = useTheme();
19377
19359
  const fontSizeSmall = theme2.fontSizes[0];
19378
19360
  const fontSizeMedium = theme2.fontSizes[1];
19379
19361
  const fontSizeLarge = theme2.fontSizes[2] || theme2.fontSizes[1];
@@ -19627,7 +19609,7 @@ const FeedCodeCityPanelContent = ({
19627
19609
  events
19628
19610
  }) => {
19629
19611
  var _a, _b, _c, _d, _e, _f;
19630
- const { theme: theme2 } = useTheme$1();
19612
+ const { theme: theme2 } = useTheme();
19631
19613
  const [cityData, setCityData] = useState(null);
19632
19614
  const [hoverInfo, setHoverInfo] = useState(null);
19633
19615
  const [highlightLayers, setHighlightLayers] = useState([]);
@@ -20078,7 +20060,7 @@ const ProjectInfoHeader = ({
20078
20060
  onOpen,
20079
20061
  compact = false
20080
20062
  }) => {
20081
- const { theme: theme2 } = useTheme$1();
20063
+ const { theme: theme2 } = useTheme();
20082
20064
  const totalDeps = (project.dependencyCount || 0) + (project.devDependencyCount || 0);
20083
20065
  const fontSizeSmall = theme2.fontSizes[0];
20084
20066
  const fontSizeMedium = theme2.fontSizes[1];