@industry-theme/file-city-panel 0.3.0 → 0.3.2

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.
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  export interface ContextContainerProps {
3
3
  /** Position of the context area - affects border styling */
4
- position?: 'right' | 'bottom';
4
+ position?: 'top' | 'left' | 'right' | 'bottom';
5
5
  /** Content to render inside the container */
6
6
  children: React.ReactNode;
7
7
  /** Optional additional styles to merge with container styles */
@@ -22,8 +22,10 @@ export interface ContextContainerProps {
22
22
  * - `overflow: 'hidden'` - Prevents content overflow and layout breaking
23
23
  *
24
24
  * ## Position-Aware Borders
25
+ * - `position="top"` - Adds bottom border
25
26
  * - `position="bottom"` - Adds top border
26
27
  * - `position="right"` - Adds left border
28
+ * - `position="left"` - Adds right border
27
29
  *
28
30
  * ## Usage
29
31
  * ```tsx
@@ -1 +1 @@
1
- {"version":3,"file":"ContextContainer.d.ts","sourceRoot":"","sources":["../../src/components/ContextContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gEAAgE;IAChE,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA+B5D,CAAC"}
1
+ {"version":3,"file":"ContextContainer.d.ts","sourceRoot":"","sources":["../../src/components/ContextContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC/C,6CAA6C;IAC7C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gEAAgE;IAChE,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAmC5D,CAAC"}
@@ -17,8 +17,8 @@ export interface TourPlayerProps {
17
17
  }) => void;
18
18
  /** Whether the tour player is visible */
19
19
  visible?: boolean;
20
- /** Position of the player UI - 'right'/'bottom' for Context Panel flex layout, or 'top'/'overlay' for absolute positioning */
21
- position?: 'top' | 'bottom' | 'overlay' | 'right';
20
+ /** Position of the player UI - 'top'/'left'/'right'/'bottom' for Context Panel flex layout, or 'overlay' for absolute positioning */
21
+ position?: 'top' | 'bottom' | 'overlay' | 'left' | 'right';
22
22
  /** Skip welcome screen and start playing immediately */
23
23
  skipWelcome?: boolean;
24
24
  /** Optional TTS adapter for audio narration */
@@ -1 +1 @@
1
- {"version":3,"file":"TourPlayer.d.ts","sourceRoot":"","sources":["../../src/components/TourPlayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAiBxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGnF,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,IAAI,EAAE,gBAAgB,CAAC;IAEvB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,iCAAiC;IACjC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAEvE,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAE1E,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,8HAA8H;IAC9H,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IAElD,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAEjC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC,yDAAyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,iEAAiE;IACjE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAggChD,CAAC"}
1
+ {"version":3,"file":"TourPlayer.d.ts","sourceRoot":"","sources":["../../src/components/TourPlayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAiBxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGnF,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,IAAI,EAAE,gBAAgB,CAAC;IAEvB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,iCAAiC;IACjC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAEvE,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAE1E,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,qIAAqI;IACrI,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IAE3D,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAEjC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC,yDAAyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,iEAAiE;IACjE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA4/BhD,CAAC"}
@@ -10,8 +10,8 @@ export interface TourPlayerIntegrationProps {
10
10
  visible: boolean;
11
11
  /** Callback when tour exits */
12
12
  onExit: () => void;
13
- /** Position of the player UI - 'right'/'bottom' for Context Panel layout, or 'top'/'bottom'/'overlay' for absolute positioning */
14
- position?: 'top' | 'bottom' | 'overlay' | 'right';
13
+ /** Position of the player UI - 'top'/'left'/'right'/'bottom' for Context Panel layout, or 'overlay' for absolute positioning */
14
+ position?: 'top' | 'bottom' | 'overlay' | 'left' | 'right';
15
15
  }
16
16
  /**
17
17
  * TourPlayerIntegration - Connects TourPlayer to File City Panel events
@@ -1 +1 @@
1
- {"version":3,"file":"TourPlayerIntegration.d.ts","sourceRoot":"","sources":["../../src/components/TourPlayerIntegration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAA8C,MAAM,2BAA2B,CAAC;AAG9G,MAAM,WAAW,0BAA0B;IACzC,4BAA4B;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IAEvB,0DAA0D;IAC1D,MAAM,EAAE,aAAa,CAAC;IAEtB,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IAEjB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB,kIAAkI;IAClI,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;CACnD;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA4LtE,CAAC"}
1
+ {"version":3,"file":"TourPlayerIntegration.d.ts","sourceRoot":"","sources":["../../src/components/TourPlayerIntegration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAA8C,MAAM,2BAA2B,CAAC;AAG9G,MAAM,WAAW,0BAA0B;IACzC,4BAA4B;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IAEvB,0DAA0D;IAC1D,MAAM,EAAE,aAAa,CAAC;IAEtB,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IAEjB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB,gIAAgI;IAChI,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5D;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA4LtE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -45,12 +45,14 @@ export type { PrFilesStatus, PrChangeSelectionStatus } from './panels/components
45
45
  export { StoryboardFilesCardList } from './panels/components/StoryboardFilesCardList';
46
46
  export type { StoryboardFileCategory } from './panels/components/StoryboardFilesCardList';
47
47
  /**
48
- * Export TTS (Text-to-Speech) components and adapters for tour narration.
48
+ * Export TTS (Text-to-Speech) components and types for tour narration.
49
+ *
50
+ * Note: The panel defines the TextToSpeechAdapter interface but does NOT
51
+ * provide a production implementation. Host applications must implement
52
+ * the adapter to handle API calls with proper credentials.
49
53
  */
50
54
  export { TourPlayer } from './components/TourPlayer';
51
55
  export type { TourPlayerProps } from './components/TourPlayer';
52
- export { S3BackedTTSAdapter } from './adapters/S3BackedTTSAdapter';
53
- export type { S3BackedTTSAdapterConfig } from './adapters/S3BackedTTSAdapter';
54
56
  export { MockTTSAdapter } from './mocks/MockTTSAdapter';
55
57
  export type { MockTTSAdapterConfig } from './mocks/MockTTSAdapter';
56
58
  export type { TextToSpeechAdapter, TTSState, TTSOptions, TTSEvent, TourAudioContext, } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAGlE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,EAyEnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAGzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qBAG3B,CAAC;AAEF;;;GAGG;AACH,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,YAAY,EACV,2BAA2B,EAC3B,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACrG,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,YAAY,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,YAAY,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAE1F;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,YAAY,EACV,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAGlE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,EAyEnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAGzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qBAG3B,CAAC;AAEF;;;GAGG;AACH,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,YAAY,EACV,2BAA2B,EAC3B,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACrG,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,YAAY,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,YAAY,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAE1F;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,YAAY,EACV,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
@@ -107,7 +107,7 @@ interface LegendProps {
107
107
  onAgentLayerClick?: (id: string) => void;
108
108
  onQualityMetricClick?: (id: string) => void;
109
109
  onClearAgentLayers?: () => void;
110
- position?: 'bottom' | 'right';
110
+ position?: 'top' | 'bottom' | 'right';
111
111
  }
112
112
  /**
113
113
  * Legend component that displays file type colors and layer information.
@@ -1 +1 @@
1
- {"version":3,"file":"Legend.d.ts","sourceRoot":"","sources":["../../../src/panels/components/Legend.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Legend.d.ts","sourceRoot":"","sources":["../../../src/panels/components/Legend.tsx"],"names":[],"mappings":"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"}
@@ -48798,7 +48798,9 @@ const ContextContainer = ({
48798
48798
  className
48799
48799
  }) => {
48800
48800
  const { theme: theme2 } = useTheme();
48801
+ const isTop = position === "top";
48801
48802
  const isRight = position === "right";
48803
+ const isLeft = position === "left";
48802
48804
  return /* @__PURE__ */ jsx(
48803
48805
  "div",
48804
48806
  {
@@ -48809,8 +48811,10 @@ const ContextContainer = ({
48809
48811
  gap: "12px",
48810
48812
  padding: "12px 0",
48811
48813
  backgroundColor: theme2.colors.background,
48812
- borderTop: isRight ? "none" : `1px solid ${theme2.colors.border}`,
48814
+ borderTop: isRight || isLeft || isTop ? "none" : `1px solid ${theme2.colors.border}`,
48815
+ borderBottom: isTop ? `1px solid ${theme2.colors.border}` : "none",
48813
48816
  borderLeft: isRight ? `1px solid ${theme2.colors.border}` : "none",
48817
+ borderRight: isLeft ? `1px solid ${theme2.colors.border}` : "none",
48814
48818
  boxSizing: "border-box",
48815
48819
  flex: 1,
48816
48820
  minWidth: 0,
@@ -50826,7 +50830,7 @@ const TourPlayer = ({
50826
50830
  const showTTSControls = !!ttsAdapter && audioReady;
50827
50831
  const canAutoPlay = autoPlayAudio && autoAdvanceOnAudioEnd;
50828
50832
  if (!visible) return null;
50829
- const useAbsolutePositioning = position === "top" || position === "overlay";
50833
+ const useAbsolutePositioning = position === "overlay";
50830
50834
  const absoluteContainerStyle = {
50831
50835
  // Positioned mode (absolute/fixed positioning)
50832
50836
  position: "absolute",
@@ -50836,10 +50840,6 @@ const TourPlayer = ({
50836
50840
  borderColor: theme2.colors.border,
50837
50841
  boxShadow: "0 -4px 16px rgba(0,0,0,0.1)",
50838
50842
  zIndex: 100,
50839
- ...position === "top" && {
50840
- top: 0,
50841
- borderBottom: `2px solid ${theme2.colors.border}`
50842
- },
50843
50843
  ...position === "overlay" && {
50844
50844
  top: "50%",
50845
50845
  left: "50%",
@@ -50903,7 +50903,7 @@ const TourPlayer = ({
50903
50903
  "h2",
50904
50904
  {
50905
50905
  style: {
50906
- fontSize: theme2.fontSizes[3],
50906
+ fontSize: theme2.fontSizes[4],
50907
50907
  fontFamily: theme2.fonts.heading,
50908
50908
  color: theme2.colors.text,
50909
50909
  margin: 0
@@ -50920,7 +50920,7 @@ const TourPlayer = ({
50920
50920
  "p",
50921
50921
  {
50922
50922
  style: {
50923
- fontSize: theme2.fontSizes[1],
50923
+ fontSize: theme2.fontSizes[2],
50924
50924
  fontFamily: theme2.fonts.body,
50925
50925
  color: theme2.colors.textSecondary,
50926
50926
  margin: 0,
@@ -50946,7 +50946,7 @@ const TourPlayer = ({
50946
50946
  backgroundColor: theme2.colors.primary + "20",
50947
50947
  color: theme2.colors.primary,
50948
50948
  borderRadius: "4px",
50949
- fontSize: theme2.fontSizes[0],
50949
+ fontSize: theme2.fontSizes[1],
50950
50950
  fontFamily: theme2.fonts.body,
50951
50951
  fontWeight: 500
50952
50952
  },
@@ -50961,7 +50961,7 @@ const TourPlayer = ({
50961
50961
  backgroundColor: theme2.colors.accent + "20",
50962
50962
  color: theme2.colors.accent,
50963
50963
  borderRadius: "4px",
50964
- fontSize: theme2.fontSizes[0],
50964
+ fontSize: theme2.fontSizes[1],
50965
50965
  fontFamily: theme2.fonts.body,
50966
50966
  fontWeight: 500
50967
50967
  },
@@ -50990,7 +50990,7 @@ const TourPlayer = ({
50990
50990
  "div",
50991
50991
  {
50992
50992
  style: {
50993
- fontSize: theme2.fontSizes[1],
50993
+ fontSize: theme2.fontSizes[2],
50994
50994
  fontFamily: theme2.fonts.heading,
50995
50995
  color: theme2.colors.text,
50996
50996
  fontWeight: 600,
@@ -51005,7 +51005,7 @@ const TourPlayer = ({
51005
51005
  style: {
51006
51006
  margin: 0,
51007
51007
  paddingLeft: "20px",
51008
- fontSize: theme2.fontSizes[0],
51008
+ fontSize: theme2.fontSizes[1],
51009
51009
  fontFamily: theme2.fonts.body,
51010
51010
  color: theme2.colors.textSecondary
51011
51011
  },
@@ -51037,7 +51037,7 @@ const TourPlayer = ({
51037
51037
  color: theme2.colors.textSecondary,
51038
51038
  border: `1px solid ${theme2.colors.border}`,
51039
51039
  borderRadius: "6px",
51040
- fontSize: theme2.fontSizes[1],
51040
+ fontSize: theme2.fontSizes[2],
51041
51041
  fontFamily: theme2.fonts.body,
51042
51042
  cursor: "pointer",
51043
51043
  transition: "all 0.2s"
@@ -51066,7 +51066,7 @@ const TourPlayer = ({
51066
51066
  color: "#ffffff",
51067
51067
  border: "none",
51068
51068
  borderRadius: "6px",
51069
- fontSize: theme2.fontSizes[1],
51069
+ fontSize: theme2.fontSizes[2],
51070
51070
  fontFamily: theme2.fonts.body,
51071
51071
  fontWeight: 600,
51072
51072
  cursor: "pointer",
@@ -51100,7 +51100,7 @@ const TourPlayer = ({
51100
51100
  color: "#ffffff",
51101
51101
  border: "none",
51102
51102
  borderRadius: "6px",
51103
- fontSize: theme2.fontSizes[1],
51103
+ fontSize: theme2.fontSizes[2],
51104
51104
  fontFamily: theme2.fonts.body,
51105
51105
  fontWeight: 600,
51106
51106
  cursor: "pointer",
@@ -51177,7 +51177,7 @@ const TourPlayer = ({
51177
51177
  backgroundColor: theme2.colors.primary + "20",
51178
51178
  color: theme2.colors.primary,
51179
51179
  borderRadius: "6px",
51180
- fontSize: theme2.fontSizes[0],
51180
+ fontSize: theme2.fontSizes[1],
51181
51181
  fontFamily: theme2.fonts.monospace,
51182
51182
  fontWeight: 600
51183
51183
  },
@@ -51196,7 +51196,7 @@ const TourPlayer = ({
51196
51196
  alignItems: "center",
51197
51197
  gap: "4px",
51198
51198
  color: theme2.colors.textSecondary,
51199
- fontSize: theme2.fontSizes[0],
51199
+ fontSize: theme2.fontSizes[1],
51200
51200
  fontFamily: theme2.fonts.body
51201
51201
  },
51202
51202
  children: [
@@ -51216,7 +51216,7 @@ const TourPlayer = ({
51216
51216
  alignItems: "center",
51217
51217
  gap: "4px",
51218
51218
  color: theme2.colors.primary,
51219
- fontSize: theme2.fontSizes[0],
51219
+ fontSize: theme2.fontSizes[1],
51220
51220
  fontFamily: theme2.fonts.body,
51221
51221
  fontWeight: 600
51222
51222
  },
@@ -51246,7 +51246,7 @@ const TourPlayer = ({
51246
51246
  color: theme2.colors.textSecondary,
51247
51247
  border: `1px solid ${theme2.colors.border}`,
51248
51248
  borderRadius: "6px",
51249
- fontSize: theme2.fontSizes[0],
51249
+ fontSize: theme2.fontSizes[1],
51250
51250
  fontFamily: theme2.fonts.body,
51251
51251
  cursor: "pointer",
51252
51252
  transition: "all 0.2s"
@@ -51282,7 +51282,7 @@ const TourPlayer = ({
51282
51282
  "h2",
51283
51283
  {
51284
51284
  style: {
51285
- fontSize: theme2.fontSizes[3],
51285
+ fontSize: theme2.fontSizes[4],
51286
51286
  fontFamily: theme2.fonts.heading,
51287
51287
  color: theme2.colors.text,
51288
51288
  marginBottom: "8px",
@@ -51295,7 +51295,7 @@ const TourPlayer = ({
51295
51295
  "p",
51296
51296
  {
51297
51297
  style: {
51298
- fontSize: theme2.fontSizes[1],
51298
+ fontSize: theme2.fontSizes[2],
51299
51299
  fontFamily: theme2.fonts.body,
51300
51300
  color: theme2.colors.textSecondary,
51301
51301
  margin: 0,
@@ -51310,7 +51310,7 @@ const TourPlayer = ({
51310
51310
  "h4",
51311
51311
  {
51312
51312
  style: {
51313
- fontSize: theme2.fontSizes[1],
51313
+ fontSize: theme2.fontSizes[2],
51314
51314
  fontFamily: theme2.fonts.heading,
51315
51315
  color: theme2.colors.text,
51316
51316
  marginBottom: "8px"
@@ -51349,7 +51349,7 @@ const TourPlayer = ({
51349
51349
  "span",
51350
51350
  {
51351
51351
  style: {
51352
- fontSize: theme2.fontSizes[0],
51352
+ fontSize: theme2.fontSizes[1],
51353
51353
  fontFamily: theme2.fonts.body,
51354
51354
  color: theme2.colors.text
51355
51355
  },
@@ -51366,7 +51366,7 @@ const TourPlayer = ({
51366
51366
  "h4",
51367
51367
  {
51368
51368
  style: {
51369
- fontSize: theme2.fontSizes[1],
51369
+ fontSize: theme2.fontSizes[2],
51370
51370
  fontFamily: theme2.fonts.heading,
51371
51371
  color: theme2.colors.text,
51372
51372
  marginBottom: "8px"
@@ -51389,7 +51389,7 @@ const TourPlayer = ({
51389
51389
  color: theme2.colors.primary,
51390
51390
  borderRadius: "6px",
51391
51391
  border: `1px solid ${theme2.colors.border}`,
51392
- fontSize: theme2.fontSizes[0],
51392
+ fontSize: theme2.fontSizes[1],
51393
51393
  fontFamily: theme2.fonts.body,
51394
51394
  textDecoration: "none",
51395
51395
  transition: "all 0.2s"
@@ -51440,7 +51440,7 @@ const TourPlayer = ({
51440
51440
  color: theme2.colors.text,
51441
51441
  border: `1px solid ${theme2.colors.border}`,
51442
51442
  borderRadius: "8px",
51443
- fontSize: theme2.fontSizes[1],
51443
+ fontSize: theme2.fontSizes[2],
51444
51444
  fontFamily: theme2.fonts.body,
51445
51445
  cursor: (ttsState == null ? void 0 : ttsState.isLoading) || !audioReady ? "not-allowed" : "pointer",
51446
51446
  opacity: (ttsState == null ? void 0 : ttsState.isLoading) || !audioReady ? 0.5 : 1,
@@ -51477,7 +51477,7 @@ const TourPlayer = ({
51477
51477
  color: isAutoPlaying ? "#ffffff" : theme2.colors.text,
51478
51478
  border: `1px solid ${isAutoPlaying ? theme2.colors.primary : theme2.colors.border}`,
51479
51479
  borderRadius: "8px",
51480
- fontSize: theme2.fontSizes[1],
51480
+ fontSize: theme2.fontSizes[2],
51481
51481
  fontFamily: theme2.fonts.body,
51482
51482
  cursor: !audioReady ? "not-allowed" : "pointer",
51483
51483
  opacity: !audioReady ? 0.5 : 1,
@@ -51499,7 +51499,7 @@ const TourPlayer = ({
51499
51499
  )
51500
51500
  ] }),
51501
51501
  (ttsState == null ? void 0 : ttsState.isPlaying) && ttsState.duration && /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
51502
- /* @__PURE__ */ jsx("span", { style: { fontSize: theme2.fontSizes[0], color: theme2.colors.textSecondary, minWidth: "35px" }, children: formatTime(ttsState.currentTime || 0) }),
51502
+ /* @__PURE__ */ jsx("span", { style: { fontSize: theme2.fontSizes[1], color: theme2.colors.textSecondary, minWidth: "35px" }, children: formatTime(ttsState.currentTime || 0) }),
51503
51503
  /* @__PURE__ */ jsx(
51504
51504
  "div",
51505
51505
  {
@@ -51523,7 +51523,7 @@ const TourPlayer = ({
51523
51523
  )
51524
51524
  }
51525
51525
  ),
51526
- /* @__PURE__ */ jsx("span", { style: { fontSize: theme2.fontSizes[0], color: theme2.colors.textSecondary, minWidth: "35px" }, children: formatTime(ttsState.duration) })
51526
+ /* @__PURE__ */ jsx("span", { style: { fontSize: theme2.fontSizes[1], color: theme2.colors.textSecondary, minWidth: "35px" }, children: formatTime(ttsState.duration) })
51527
51527
  ] })
51528
51528
  ]
51529
51529
  }
@@ -51555,7 +51555,7 @@ const TourPlayer = ({
51555
51555
  color: isFirstStep ? theme2.colors.textSecondary : theme2.colors.text,
51556
51556
  border: `1px solid ${theme2.colors.border}`,
51557
51557
  borderRadius: "8px",
51558
- fontSize: theme2.fontSizes[1],
51558
+ fontSize: theme2.fontSizes[2],
51559
51559
  fontFamily: theme2.fonts.body,
51560
51560
  cursor: isFirstStep ? "not-allowed" : "pointer",
51561
51561
  opacity: isFirstStep ? 0.5 : 1,
@@ -51610,7 +51610,7 @@ const TourPlayer = ({
51610
51610
  color: isLastStep ? theme2.colors.textSecondary : "#ffffff",
51611
51611
  border: `1px solid ${isLastStep ? theme2.colors.border : theme2.colors.primary}`,
51612
51612
  borderRadius: "8px",
51613
- fontSize: theme2.fontSizes[1],
51613
+ fontSize: theme2.fontSizes[2],
51614
51614
  fontFamily: theme2.fonts.body,
51615
51615
  fontWeight: 600,
51616
51616
  cursor: isLastStep ? "not-allowed" : "pointer",
@@ -53612,7 +53612,7 @@ const CodeCityPanelContent = ({
53612
53612
  return { mapSize, legendPosition: "right" };
53613
53613
  } else {
53614
53614
  const mapSize = width + HOVER_BAR_HEIGHT;
53615
- return { mapSize, legendPosition: "bottom" };
53615
+ return { mapSize, legendPosition: "top" };
53616
53616
  }
53617
53617
  }, [containerSize]);
53618
53618
  const fileTreeSlice = context.getSlice("fileTree");
@@ -54786,7 +54786,7 @@ const CodeCityPanelContent = ({
54786
54786
  position: "relative",
54787
54787
  overflow: "hidden",
54788
54788
  display: "flex",
54789
- flexDirection: layout.legendPosition === "right" ? "row" : "column"
54789
+ flexDirection: layout.legendPosition === "right" ? "row" : layout.legendPosition === "top" ? "column-reverse" : "column"
54790
54790
  },
54791
54791
  children: [
54792
54792
  /* @__PURE__ */ jsxs(
@@ -54794,9 +54794,9 @@ const CodeCityPanelContent = ({
54794
54794
  {
54795
54795
  style: {
54796
54796
  // In landscape: fixed width for square map, flex height
54797
- // In portrait: fixed height for square map + hover bar, full width
54797
+ // In portrait: limit to 65% height when tour player is on top
54798
54798
  width: layout.legendPosition === "right" ? layout.mapSize : "100%",
54799
- height: layout.legendPosition === "bottom" ? layout.mapSize : "100%",
54799
+ height: layout.legendPosition === "top" ? "65%" : layout.legendPosition === "bottom" ? layout.mapSize : "100%",
54800
54800
  flexShrink: 0,
54801
54801
  position: "relative",
54802
54802
  display: "flex",
@@ -56320,202 +56320,6 @@ const ProjectInfoHeader = ({
56320
56320
  }
56321
56321
  );
56322
56322
  };
56323
- class S3BackedTTSAdapter {
56324
- constructor(config) {
56325
- this.audioCache = /* @__PURE__ */ new Map();
56326
- this.audio = null;
56327
- this.eventTarget = new EventTarget();
56328
- this._state = {
56329
- isLoading: false,
56330
- isPlaying: false,
56331
- isPaused: false,
56332
- error: null
56333
- };
56334
- this.apiBaseUrl = config.apiBaseUrl.replace(/\/$/, "");
56335
- this.fetchImpl = config.fetchImpl || fetch.bind(window);
56336
- }
56337
- get state() {
56338
- return { ...this._state };
56339
- }
56340
- setState(updates) {
56341
- this._state = { ...this._state, ...updates };
56342
- }
56343
- /**
56344
- * Fetch audio URLs for all steps in a tour
56345
- */
56346
- async fetchTourAudio(tourId, stepIds, context, options) {
56347
- this.setState({ isLoading: true, error: null });
56348
- this.emit("loading");
56349
- try {
56350
- const response = await this.fetchImpl(`${this.apiBaseUrl}/api/tts/batch-generate`, {
56351
- method: "POST",
56352
- headers: {
56353
- "Content-Type": "application/json"
56354
- },
56355
- body: JSON.stringify({
56356
- owner: context.owner,
56357
- repo: context.repo,
56358
- path: context.path,
56359
- commitSha: context.commitSha,
56360
- voice: options == null ? void 0 : options.voice,
56361
- speed: options == null ? void 0 : options.speed
56362
- })
56363
- });
56364
- if (!response.ok) {
56365
- const error = await response.json().catch(() => ({ error: "Unknown error" }));
56366
- throw new Error(error.message || `API error: ${response.statusText}`);
56367
- }
56368
- const data = await response.json();
56369
- this.audioCache.clear();
56370
- for (const step of data.steps) {
56371
- if (step.status === "ready" || step.status === void 0) {
56372
- this.audioCache.set(step.stepId, step.audioUrl);
56373
- }
56374
- }
56375
- this.setState({ isLoading: false });
56376
- console.log(
56377
- `[TTS] Loaded ${this.audioCache.size}/${data.totalSteps} audio files (${data.cachedSteps} cached, ${data.generatingSteps} generating)`
56378
- );
56379
- return new Map(this.audioCache);
56380
- } catch (error) {
56381
- const err = error instanceof Error ? error : new Error("Failed to fetch tour audio");
56382
- this.setState({ isLoading: false, error: err });
56383
- this.emit("error");
56384
- throw err;
56385
- }
56386
- }
56387
- /**
56388
- * Play audio for a specific step
56389
- */
56390
- async speak(stepId) {
56391
- const audioUrl = this.audioCache.get(stepId);
56392
- if (!audioUrl) {
56393
- const error = new Error(
56394
- `No audio URL for step: ${stepId}. Call fetchTourAudio first.`
56395
- );
56396
- this.setState({ error });
56397
- this.emit("error");
56398
- throw error;
56399
- }
56400
- this.stop();
56401
- try {
56402
- await this.playAudio(audioUrl);
56403
- } catch (error) {
56404
- const err = error instanceof Error ? error : new Error("Audio playback failed");
56405
- this.setState({ error: err, isPlaying: false });
56406
- this.emit("error");
56407
- throw err;
56408
- }
56409
- }
56410
- /**
56411
- * Play audio from URL
56412
- */
56413
- async playAudio(url) {
56414
- this.audio = new Audio(url);
56415
- this.setState({ isPlaying: true, isPaused: false, error: null });
56416
- this.audio.addEventListener("loadedmetadata", () => {
56417
- if (this.audio) {
56418
- this.setState({
56419
- duration: this.audio.duration,
56420
- currentTime: 0,
56421
- progress: 0
56422
- });
56423
- }
56424
- });
56425
- this.audio.addEventListener("timeupdate", () => {
56426
- if (this.audio && this.audio.duration) {
56427
- const currentTime = this.audio.currentTime;
56428
- const progress = currentTime / this.audio.duration * 100;
56429
- this.setState({ currentTime, progress });
56430
- }
56431
- });
56432
- this.audio.addEventListener("ended", () => {
56433
- this.setState({
56434
- isPlaying: false,
56435
- isPaused: false,
56436
- currentTime: 0,
56437
- progress: 0
56438
- });
56439
- this.emit("ended");
56440
- });
56441
- this.audio.addEventListener("error", () => {
56442
- const error = new Error("Audio playback failed");
56443
- this.setState({ isPlaying: false, error });
56444
- this.emit("error");
56445
- });
56446
- this.emit("playing");
56447
- await this.audio.play();
56448
- }
56449
- /**
56450
- * Stop current audio playback
56451
- */
56452
- stop() {
56453
- if (this.audio) {
56454
- this.audio.pause();
56455
- this.audio.currentTime = 0;
56456
- this.audio = null;
56457
- }
56458
- this.setState({
56459
- isPlaying: false,
56460
- isPaused: false,
56461
- currentTime: 0,
56462
- progress: 0
56463
- });
56464
- }
56465
- /**
56466
- * Pause current audio playback
56467
- */
56468
- pause() {
56469
- if (this.audio && !this.audio.paused) {
56470
- this.audio.pause();
56471
- this.setState({ isPlaying: false, isPaused: true });
56472
- this.emit("paused");
56473
- }
56474
- }
56475
- /**
56476
- * Resume paused audio playback
56477
- */
56478
- resume() {
56479
- if (this.audio && this.audio.paused) {
56480
- this.audio.play();
56481
- this.setState({ isPlaying: true, isPaused: false });
56482
- this.emit("playing");
56483
- }
56484
- }
56485
- /**
56486
- * Subscribe to TTS events
56487
- */
56488
- addEventListener(event, handler) {
56489
- this.eventTarget.addEventListener(event, handler);
56490
- }
56491
- /**
56492
- * Unsubscribe from TTS events
56493
- */
56494
- removeEventListener(event, handler) {
56495
- this.eventTarget.removeEventListener(event, handler);
56496
- }
56497
- /**
56498
- * Emit an event
56499
- */
56500
- emit(event) {
56501
- this.eventTarget.dispatchEvent(new Event(event));
56502
- }
56503
- /**
56504
- * Clear all cached audio URLs
56505
- */
56506
- clearCache() {
56507
- this.audioCache.clear();
56508
- }
56509
- /**
56510
- * Get cache statistics (for debugging)
56511
- */
56512
- getCacheStats() {
56513
- return {
56514
- size: this.audioCache.size,
56515
- entries: Array.from(this.audioCache.keys())
56516
- };
56517
- }
56518
- }
56519
56323
  class MockTTSAdapter {
56520
56324
  constructor(config = {}) {
56521
56325
  this.audioCache = /* @__PURE__ */ new Map();
@@ -56803,7 +56607,6 @@ export {
56803
56607
  PrChangesCardList,
56804
56608
  ProjectInfoHeader,
56805
56609
  QUALITY_COLOR_MODES,
56806
- S3BackedTTSAdapter,
56807
56610
  StoryboardFilesCardList,
56808
56611
  TourPlayer,
56809
56612
  codeCityPanelTools,