@industry-theme/file-city-panel 0.2.64 → 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;
@@ -4421,273 +4356,27 @@ ${projectInfo.currentBranch}`;
4421
4356
  height: "100%",
4422
4357
  zIndex: 2,
4423
4358
  cursor: interactionCursor
4424
- }, onMouseMove: handleMouseMove, onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, onClick: handleClick, onMouseLeave: handleMouseLeave, onWheel: handleWheel })
4425
- );
4426
- }
4427
- function calculateScaleAndOffset(cityData, width, height, padding) {
4428
- const cityWidth = cityData.bounds.maxX - cityData.bounds.minX;
4429
- const cityDepth = cityData.bounds.maxZ - cityData.bounds.minZ;
4430
- const horizontalPadding = padding;
4431
- const verticalPadding = padding * 2;
4432
- const scaleX = (width - horizontalPadding) / cityDepth;
4433
- const scaleZ = (height - verticalPadding) / cityWidth;
4434
- const scale = Math.min(scaleX, scaleZ);
4435
- const scaledCityWidth = cityDepth * scale;
4436
- 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
- }, {});
4359
+ }, onMouseMove: handleMouseMove, onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, onClick: handleClick, onMouseLeave: handleMouseLeave, onWheel: handleWheel })
4360
+ );
4688
4361
  }
4689
- return fileColorHighlightLayers;
4362
+ function calculateScaleAndOffset(cityData, width, height, padding) {
4363
+ const cityWidth = cityData.bounds.maxX - cityData.bounds.minX;
4364
+ const cityDepth = cityData.bounds.maxZ - cityData.bounds.minZ;
4365
+ const horizontalPadding = padding;
4366
+ const verticalPadding = padding * 2;
4367
+ const scaleX = (width - horizontalPadding) / cityDepth;
4368
+ const scaleZ = (height - verticalPadding) / cityWidth;
4369
+ const scale = Math.min(scaleX, scaleZ);
4370
+ const scaledCityWidth = cityDepth * scale;
4371
+ const scaledCityHeight = cityWidth * scale;
4372
+ const offsetX = (width - scaledCityWidth) / 2;
4373
+ const offsetZ = (height - scaledCityHeight) / 2;
4374
+ return { scale, offsetX, offsetZ };
4375
+ }
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,14 @@ 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();
14266
14222
  const [copiedPath, setCopiedPath] = React.useState(null);
14267
14223
  const getFileName = useCallback((path) => {
14268
14224
  const parts = path.split("/");
@@ -14287,7 +14243,7 @@ const FileCardList = ({
14287
14243
  return EXTENSION_COLORS[ext];
14288
14244
  }, [getFileName]);
14289
14245
  const sortedFiles = useMemo(() => {
14290
- return [...files].sort((a, b) => {
14246
+ return [...files2].sort((a, b) => {
14291
14247
  const aIsDir = isDirectory(a.path);
14292
14248
  const bIsDir = isDirectory(b.path);
14293
14249
  if (aIsDir !== bIsDir) return aIsDir ? -1 : 1;
@@ -14295,8 +14251,8 @@ const FileCardList = ({
14295
14251
  const bName = getFileName(b.path).toLowerCase();
14296
14252
  return aName.localeCompare(bName);
14297
14253
  });
14298
- }, [files, isDirectory, getFileName]);
14299
- if (files.length === 0) {
14254
+ }, [files2, isDirectory, getFileName]);
14255
+ if (files2.length === 0) {
14300
14256
  return /* @__PURE__ */ jsx(
14301
14257
  "div",
14302
14258
  {
@@ -14494,7 +14450,7 @@ const GitChangesCardList = ({
14494
14450
  onFileClick,
14495
14451
  onFileHover
14496
14452
  }) => {
14497
- const { theme: theme2 } = useTheme$1();
14453
+ const { theme: theme2 } = useTheme();
14498
14454
  const fileStatusMap = useMemo(() => {
14499
14455
  const map = /* @__PURE__ */ new Map();
14500
14456
  gitStatus.stagedFiles.forEach((f) => map.set(f, "staged"));
@@ -14503,7 +14459,7 @@ const GitChangesCardList = ({
14503
14459
  gitStatus.modifiedFiles.forEach((f) => map.set(f, "unstaged"));
14504
14460
  return map;
14505
14461
  }, [gitStatus]);
14506
- const files = useMemo(() => {
14462
+ const files2 = useMemo(() => {
14507
14463
  const items = [];
14508
14464
  const addFiles = (paths, status) => {
14509
14465
  paths.forEach((path) => {
@@ -14527,7 +14483,7 @@ const GitChangesCardList = ({
14527
14483
  const status = fileStatusMap.get(filePath);
14528
14484
  onFileClick == null ? void 0 : onFileClick(filePath, status);
14529
14485
  }, [fileStatusMap, onFileClick]);
14530
- const hasChanges = files.length > 0;
14486
+ const hasChanges = files2.length > 0;
14531
14487
  if (!hasChanges) {
14532
14488
  return /* @__PURE__ */ jsx(
14533
14489
  "div",
@@ -14547,7 +14503,7 @@ const GitChangesCardList = ({
14547
14503
  return /* @__PURE__ */ jsx(
14548
14504
  FileCardList,
14549
14505
  {
14550
- files,
14506
+ files: files2,
14551
14507
  onFileClick: handleFileClick,
14552
14508
  onFileHover,
14553
14509
  horizontalPadding,
@@ -14579,7 +14535,7 @@ const PrChangesCardList = ({
14579
14535
  onFileClick,
14580
14536
  onFileHover
14581
14537
  }) => {
14582
- const { theme: theme2 } = useTheme$1();
14538
+ const { theme: theme2 } = useTheme();
14583
14539
  const renamedPaths = useMemo(
14584
14540
  () => prFiles.renamed.map((r) => r.filename),
14585
14541
  [prFiles.renamed]
@@ -14607,7 +14563,7 @@ const PrChangesCardList = ({
14607
14563
  renamedPaths.forEach((f) => map.set(f, "renamed"));
14608
14564
  return map;
14609
14565
  }, [prFiles, renamedPaths]);
14610
- const files = useMemo(() => {
14566
+ const files2 = useMemo(() => {
14611
14567
  const items = [];
14612
14568
  const addFiles = (paths, status) => {
14613
14569
  paths.forEach((path) => {
@@ -14631,7 +14587,7 @@ const PrChangesCardList = ({
14631
14587
  const status = fileStatusMap.get(filePath);
14632
14588
  onFileClick == null ? void 0 : onFileClick(filePath, status);
14633
14589
  }, [fileStatusMap, onFileClick]);
14634
- const hasChanges = files.length > 0;
14590
+ const hasChanges = files2.length > 0;
14635
14591
  if (!hasChanges) {
14636
14592
  return /* @__PURE__ */ jsx(
14637
14593
  "div",
@@ -14651,7 +14607,7 @@ const PrChangesCardList = ({
14651
14607
  return /* @__PURE__ */ jsx(
14652
14608
  FileCardList,
14653
14609
  {
14654
- files,
14610
+ files: files2,
14655
14611
  onFileClick: handleFileClick,
14656
14612
  onFileHover,
14657
14613
  horizontalPadding,
@@ -14794,7 +14750,7 @@ const CommitChangesTree = ({
14794
14750
  onFileClick,
14795
14751
  onNodeHover
14796
14752
  }) => {
14797
- const { theme: theme2 } = useTheme$1();
14753
+ const { theme: theme2 } = useTheme();
14798
14754
  const hasChanges = useMemo(
14799
14755
  () => commitFiles.added.length > 0 || commitFiles.modified.length > 0 || commitFiles.removed.length > 0 || commitFiles.renamed.length > 0,
14800
14756
  [commitFiles.added.length, commitFiles.modified.length, commitFiles.removed.length, commitFiles.renamed.length]
@@ -14906,7 +14862,7 @@ const StoryboardFilesCardList = ({
14906
14862
  onFileHover,
14907
14863
  showHeader = true
14908
14864
  }) => {
14909
- const { theme: theme2 } = useTheme$1();
14865
+ const { theme: theme2 } = useTheme();
14910
14866
  const { storyboard, workflow, scenario, nodeSources } = storyboardContext;
14911
14867
  const sourceFiles = useMemo(() => {
14912
14868
  if (!storyboard) return [];
@@ -14925,7 +14881,7 @@ const StoryboardFilesCardList = ({
14925
14881
  }
14926
14882
  return Array.from(sourceFilesSet);
14927
14883
  }, [storyboard, workflow, scenario, nodeSources]);
14928
- const files = useMemo(() => {
14884
+ const files2 = useMemo(() => {
14929
14885
  return sourceFiles.filter((path) => path && path.trim()).map((path) => ({ path }));
14930
14886
  }, [sourceFiles]);
14931
14887
  const handleFileClick = useCallback((filePath) => {
@@ -14947,7 +14903,7 @@ const StoryboardFilesCardList = ({
14947
14903
  }
14948
14904
  );
14949
14905
  }
14950
- if (files.length === 0) {
14906
+ if (files2.length === 0) {
14951
14907
  return /* @__PURE__ */ jsx(
14952
14908
  "div",
14953
14909
  {
@@ -15009,7 +14965,7 @@ const StoryboardFilesCardList = ({
15009
14965
  /* @__PURE__ */ jsx(
15010
14966
  FileCardList,
15011
14967
  {
15012
- files,
14968
+ files: files2,
15013
14969
  onFileClick: handleFileClick,
15014
14970
  onFileHover,
15015
14971
  horizontalPadding,
@@ -15049,7 +15005,7 @@ const Legend = ({
15049
15005
  onClearAgentLayers,
15050
15006
  position = "bottom"
15051
15007
  }) => {
15052
- const { theme: theme2 } = useTheme$1();
15008
+ const { theme: theme2 } = useTheme();
15053
15009
  const hasGitStatus = gitStatus != null && (gitStatus.stagedFiles.length > 0 || gitStatus.modifiedFiles.length > 0 || gitStatus.untrackedFiles.length > 0 || gitStatus.deletedFiles.length > 0);
15054
15010
  const hasPrFiles = prFiles != null && (prFiles.added.length > 0 || prFiles.modified.length > 0 || prFiles.removed.length > 0 || prFiles.renamed.length > 0);
15055
15011
  const hasCommitFiles = commitFiles != null && (commitFiles.added.length > 0 || commitFiles.modified.length > 0 || commitFiles.removed.length > 0 || commitFiles.renamed.length > 0);
@@ -15641,7 +15597,7 @@ const AgentActivityView = ({
15641
15597
  onClearAll,
15642
15598
  showHeader = true
15643
15599
  }) => {
15644
- const { theme: theme2 } = useTheme$1();
15600
+ const { theme: theme2 } = useTheme();
15645
15601
  const [expandedLayers, setExpandedLayers] = React.useState(/* @__PURE__ */ new Set());
15646
15602
  const toggleExpanded = (id2) => {
15647
15603
  setExpandedLayers((prev) => {
@@ -16090,7 +16046,7 @@ const LegendTabs = ({
16090
16046
  onTabChange
16091
16047
  }) => {
16092
16048
  var _a;
16093
- const { theme: theme2 } = useTheme$1();
16049
+ const { theme: theme2 } = useTheme();
16094
16050
  const [activeTab, setActiveTab] = React.useState(
16095
16051
  defaultTab || ((_a = tabs[0]) == null ? void 0 : _a.id) || "agent"
16096
16052
  );
@@ -17892,7 +17848,7 @@ const CodeCityPanelContent = ({
17892
17848
  events
17893
17849
  }) => {
17894
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;
17895
- const { theme: theme2 } = useTheme$1();
17851
+ const { theme: theme2 } = useTheme();
17896
17852
  const [cityData, setCityData] = useState(null);
17897
17853
  const [hoverInfo, setHoverInfo] = useState(null);
17898
17854
  const [highlightLayers, setHighlightLayers] = useState([]);
@@ -19342,7 +19298,7 @@ function adjustBrightness(color2, percent) {
19342
19298
  return color2;
19343
19299
  }
19344
19300
  const FeedProjectHeaderSkeleton = ({ compact = false }) => {
19345
- const { theme: theme2 } = useTheme$1();
19301
+ const { theme: theme2 } = useTheme();
19346
19302
  React.useEffect(() => {
19347
19303
  injectShimmerStyles();
19348
19304
  }, []);
@@ -19399,7 +19355,7 @@ const FeedProjectHeader = ({
19399
19355
  onOpen,
19400
19356
  compact = false
19401
19357
  }) => {
19402
- const { theme: theme2 } = useTheme$1();
19358
+ const { theme: theme2 } = useTheme();
19403
19359
  const fontSizeSmall = theme2.fontSizes[0];
19404
19360
  const fontSizeMedium = theme2.fontSizes[1];
19405
19361
  const fontSizeLarge = theme2.fontSizes[2] || theme2.fontSizes[1];
@@ -19653,7 +19609,7 @@ const FeedCodeCityPanelContent = ({
19653
19609
  events
19654
19610
  }) => {
19655
19611
  var _a, _b, _c, _d, _e, _f;
19656
- const { theme: theme2 } = useTheme$1();
19612
+ const { theme: theme2 } = useTheme();
19657
19613
  const [cityData, setCityData] = useState(null);
19658
19614
  const [hoverInfo, setHoverInfo] = useState(null);
19659
19615
  const [highlightLayers, setHighlightLayers] = useState([]);
@@ -20104,7 +20060,7 @@ const ProjectInfoHeader = ({
20104
20060
  onOpen,
20105
20061
  compact = false
20106
20062
  }) => {
20107
- const { theme: theme2 } = useTheme$1();
20063
+ const { theme: theme2 } = useTheme();
20108
20064
  const totalDeps = (project.dependencyCount || 0) + (project.devDependencyCount || 0);
20109
20065
  const fontSizeSmall = theme2.fontSizes[0];
20110
20066
  const fontSizeMedium = theme2.fontSizes[1];