@rslsp1/fa-app-tools 1.1.3 → 1.1.4

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.
package/dist/index.d.mts CHANGED
@@ -308,6 +308,6 @@ interface ProjectSyncTabProps {
308
308
  }
309
309
  declare const ProjectSyncTab: React.FC<ProjectSyncTabProps>;
310
310
 
311
- declare const LIB_VERSION = "1.1.3";
311
+ declare const LIB_VERSION = "1.1.4";
312
312
 
313
313
  export { AvatarArchitectApp, type AvatarArchitectAppProps, CollapsibleCard, CompactDropdown, type ExtractedCharacter, FaToolsBadge, type FlowSdk, GLOBAL_STYLES, type Generation, HistoryPanel, InspectPanel, LIB_VERSION, ListView, type MediaItem, MediaLibrary, PillButton, type ProjectMeta, type ProjectSettings, ProjectSyncTab, PromptTab, SectionLabel, type SelectedTag, SetupPanel, type SyncDiff, type TagOption, type WorkspaceTags, buildFallbackPrompt, buildGenerationPrompt, buildImageGenerationOptions, buildPromptTabPayload, cleanAiResponse, createFlowServices, exportProjectToZip, formatTreeToMarkdown, getFormattedTimestamp, importProjectFromZip, injectXMPMetadata, interpretSdkError, parsePromptFile, parsePromptResponse, useKeyboardNavigation, useOnClickOutside };
package/dist/index.d.ts CHANGED
@@ -308,6 +308,6 @@ interface ProjectSyncTabProps {
308
308
  }
309
309
  declare const ProjectSyncTab: React.FC<ProjectSyncTabProps>;
310
310
 
311
- declare const LIB_VERSION = "1.1.3";
311
+ declare const LIB_VERSION = "1.1.4";
312
312
 
313
313
  export { AvatarArchitectApp, type AvatarArchitectAppProps, CollapsibleCard, CompactDropdown, type ExtractedCharacter, FaToolsBadge, type FlowSdk, GLOBAL_STYLES, type Generation, HistoryPanel, InspectPanel, LIB_VERSION, ListView, type MediaItem, MediaLibrary, PillButton, type ProjectMeta, type ProjectSettings, ProjectSyncTab, PromptTab, SectionLabel, type SelectedTag, SetupPanel, type SyncDiff, type TagOption, type WorkspaceTags, buildFallbackPrompt, buildGenerationPrompt, buildImageGenerationOptions, buildPromptTabPayload, cleanAiResponse, createFlowServices, exportProjectToZip, formatTreeToMarkdown, getFormattedTimestamp, importProjectFromZip, injectXMPMetadata, interpretSdkError, parsePromptFile, parsePromptResponse, useKeyboardNavigation, useOnClickOutside };
package/dist/index.js CHANGED
@@ -1721,6 +1721,20 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
1721
1721
  const [seedMode, setSeedMode] = (0, import_react14.useState)("random");
1722
1722
  const [isLeftCollapsed, setIsLeftCollapsed] = (0, import_react14.useState)(false);
1723
1723
  const [isRightCollapsed, setIsRightCollapsed] = (0, import_react14.useState)(false);
1724
+ const [leftPanelWidth, setLeftPanelWidth] = (0, import_react14.useState)(() => {
1725
+ try {
1726
+ return parseInt(localStorage.getItem("aa-left-width") || "260", 10);
1727
+ } catch {
1728
+ return 260;
1729
+ }
1730
+ });
1731
+ const [rightPanelWidth, setRightPanelWidth] = (0, import_react14.useState)(() => {
1732
+ try {
1733
+ return parseInt(localStorage.getItem("aa-right-width") || "320", 10);
1734
+ } catch {
1735
+ return 320;
1736
+ }
1737
+ });
1724
1738
  const [isPromptCollapsed, setIsPromptCollapsed] = (0, import_react14.useState)(false);
1725
1739
  const [projectActionState, setProjectActionState] = (0, import_react14.useState)("idle");
1726
1740
  const syncServerDataRef = (0, import_react14.useRef)(null);
@@ -1806,6 +1820,44 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
1806
1820
  setActiveReferenceId(null);
1807
1821
  setActiveReferenceThumbnail(null);
1808
1822
  };
1823
+ const startLeftResize = (e) => {
1824
+ e.preventDefault();
1825
+ const startX = e.clientX;
1826
+ const startW = leftPanelWidth;
1827
+ const onMove = (ev) => {
1828
+ const w = Math.max(180, Math.min(520, startW + ev.clientX - startX));
1829
+ setLeftPanelWidth(w);
1830
+ try {
1831
+ localStorage.setItem("aa-left-width", String(w));
1832
+ } catch {
1833
+ }
1834
+ };
1835
+ const onUp = () => {
1836
+ document.removeEventListener("mousemove", onMove);
1837
+ document.removeEventListener("mouseup", onUp);
1838
+ };
1839
+ document.addEventListener("mousemove", onMove);
1840
+ document.addEventListener("mouseup", onUp);
1841
+ };
1842
+ const startRightResize = (e) => {
1843
+ e.preventDefault();
1844
+ const startX = e.clientX;
1845
+ const startW = rightPanelWidth;
1846
+ const onMove = (ev) => {
1847
+ const w = Math.max(180, Math.min(520, startW - (ev.clientX - startX)));
1848
+ setRightPanelWidth(w);
1849
+ try {
1850
+ localStorage.setItem("aa-right-width", String(w));
1851
+ } catch {
1852
+ }
1853
+ };
1854
+ const onUp = () => {
1855
+ document.removeEventListener("mousemove", onMove);
1856
+ document.removeEventListener("mouseup", onUp);
1857
+ };
1858
+ document.addEventListener("mousemove", onMove);
1859
+ document.addEventListener("mouseup", onUp);
1860
+ };
1809
1861
  const handleScanImage = async (file) => {
1810
1862
  setIsScanningImage(true);
1811
1863
  try {
@@ -2382,7 +2434,7 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2382
2434
  } })
2383
2435
  ] })
2384
2436
  ] }),
2385
- mobileTab === "tools" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-col flex-1 min-h-0", children: [
2437
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: { display: mobileTab === "tools" ? "flex" : "none" }, className: "flex flex-col flex-1 min-h-0", children: [
2386
2438
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex border-b border-white/5 shrink-0", style: { height: 52 }, children: [
2387
2439
  workspaceTags && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("button", { onClick: () => {
2388
2440
  setLeftTab("prompt");
@@ -2439,10 +2491,10 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2439
2491
  isGeneratingNodeId: (id) => isSynthesizing && focusedNodeId === id
2440
2492
  }
2441
2493
  ) }),
2442
- leftTab === "prompt" && workspaceTags && activeTab !== "setup" && activeTab !== "sync" && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(PromptTab, { workspaceTags, onGenerate: handlePromptTabGenerate, isGenerating: isPromptTabGenerating, feedback: promptFeedback, promptResult: activePrompt || null, lastPayload: lastPromptPayload, onGenerateImage: (prompt) => {
2494
+ workspaceTags && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: { display: leftTab === "prompt" && activeTab !== "setup" && activeTab !== "sync" ? "flex" : "none" }, className: "absolute inset-0 flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(PromptTab, { workspaceTags, onGenerate: handlePromptTabGenerate, isGenerating: isPromptTabGenerating, feedback: promptFeedback, promptResult: activePrompt || null, lastPayload: lastPromptPayload, onGenerateImage: (prompt) => {
2443
2495
  handleGenerateImage(prompt);
2444
2496
  setMobileTab("stage");
2445
- }, onTagCreate: handleTagCreate, onTagUpdate: handleTagUpdate, onTagDelete: handleTagDelete, onScanImage: handleScanImage, isScanning: isScanningImage }),
2497
+ }, onTagCreate: handleTagCreate, onTagUpdate: handleTagUpdate, onTagDelete: handleTagDelete, onScanImage: handleScanImage, isScanning: isScanningImage }) }),
2446
2498
  activeTab === "setup" && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SetupPanel, { onWorkspaceImport: handleWorkspaceImport, buildInfo }),
2447
2499
  activeTab === "sync" && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2448
2500
  ProjectSyncTab,
@@ -2578,7 +2630,7 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2578
2630
  }
2579
2631
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex h-screen w-screen bg-[#0e0e0e] text-white overflow-hidden", style: hcStyle, children: [
2580
2632
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "absolute top-2 right-2 z-50", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { onClick: () => setShowStart(true), className: "text-white/10 hover:text-white/30 transition-colors text-[10px]", children: "\u21C4" }) }),
2581
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-col border-r border-white/5 overflow-hidden relative bg-black/10 shrink-0", style: { width: isLeftCollapsed ? 48 : 260, transition: "width 0.2s" }, children: [
2633
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-col border-r border-white/5 overflow-hidden relative bg-black/10 shrink-0", style: { width: isLeftCollapsed ? 48 : leftPanelWidth, transition: "none" }, children: [
2582
2634
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "h-14 border-b border-white/5 flex items-center justify-between shrink-0 px-1", children: [
2583
2635
  !isLeftCollapsed && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-1 gap-1", children: [
2584
2636
  workspaceTags && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("button", { onClick: () => setLeftTab("prompt"), className: `flex-1 flex items-center justify-center gap-1 h-8 rounded-lg text-[8px] font-bold uppercase tracking-wide transition-colors ${leftTab === "prompt" ? "bg-white/10 text-white" : "text-white/30 hover:text-white/60"}`, children: [
@@ -2621,6 +2673,7 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2621
2673
  leftTab === "prompt" && workspaceTags && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(PromptTab, { workspaceTags, onGenerate: handlePromptTabGenerate, isGenerating: isPromptTabGenerating, feedback: promptFeedback, promptResult: activePrompt || null, lastPayload: lastPromptPayload, onGenerateImage: (prompt) => handleGenerateImage(prompt), onTagCreate: handleTagCreate, onTagUpdate: handleTagUpdate, onTagDelete: handleTagDelete, onScanImage: handleScanImage, isScanning: isScanningImage })
2622
2674
  ] })
2623
2675
  ] }),
2676
+ !isLeftCollapsed && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { onMouseDown: startLeftResize, className: "w-1 shrink-0 cursor-col-resize hover:bg-white/20 active:bg-white/30 transition-colors", style: { background: "transparent" } }),
2624
2677
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex-1 flex flex-col bg-[#0b0b0b] overflow-hidden", children: [
2625
2678
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "h-14 border-b border-white/5 flex items-center px-4 gap-2 justify-between shrink-0 bg-black/20", children: [
2626
2679
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center gap-1.5", children: [
@@ -2674,7 +2727,8 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2674
2727
  ] }) })
2675
2728
  ] })
2676
2729
  ] }),
2677
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-col border-l border-white/5 bg-[#0e0e0e] shrink-0", style: { width: isRightCollapsed ? 60 : 320, transition: "width 0.2s" }, children: [
2730
+ !isRightCollapsed && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { onMouseDown: startRightResize, className: "w-1 shrink-0 cursor-col-resize hover:bg-white/20 active:bg-white/30 transition-colors", style: { background: "transparent" } }),
2731
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-col border-l border-white/5 bg-[#0e0e0e] shrink-0", style: { width: isRightCollapsed ? 60 : rightPanelWidth, transition: "none" }, children: [
2678
2732
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex border-b border-white/5 h-14 shrink-0 overflow-hidden", children: [
2679
2733
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "flex flex-1", children: ["history", "gallery", "inspect", "setup", "sync"].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { onClick: () => {
2680
2734
  setActiveTab(tab);
@@ -2722,7 +2776,7 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2722
2776
  }
2723
2777
 
2724
2778
  // src/index.ts
2725
- var LIB_VERSION = "1.1.3";
2779
+ var LIB_VERSION = "1.1.4";
2726
2780
  // Annotate the CommonJS export names for ESM import in node:
2727
2781
  0 && (module.exports = {
2728
2782
  AvatarArchitectApp,
package/dist/index.mjs CHANGED
@@ -1655,6 +1655,20 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
1655
1655
  const [seedMode, setSeedMode] = useState6("random");
1656
1656
  const [isLeftCollapsed, setIsLeftCollapsed] = useState6(false);
1657
1657
  const [isRightCollapsed, setIsRightCollapsed] = useState6(false);
1658
+ const [leftPanelWidth, setLeftPanelWidth] = useState6(() => {
1659
+ try {
1660
+ return parseInt(localStorage.getItem("aa-left-width") || "260", 10);
1661
+ } catch {
1662
+ return 260;
1663
+ }
1664
+ });
1665
+ const [rightPanelWidth, setRightPanelWidth] = useState6(() => {
1666
+ try {
1667
+ return parseInt(localStorage.getItem("aa-right-width") || "320", 10);
1668
+ } catch {
1669
+ return 320;
1670
+ }
1671
+ });
1658
1672
  const [isPromptCollapsed, setIsPromptCollapsed] = useState6(false);
1659
1673
  const [projectActionState, setProjectActionState] = useState6("idle");
1660
1674
  const syncServerDataRef = useRef6(null);
@@ -1740,6 +1754,44 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
1740
1754
  setActiveReferenceId(null);
1741
1755
  setActiveReferenceThumbnail(null);
1742
1756
  };
1757
+ const startLeftResize = (e) => {
1758
+ e.preventDefault();
1759
+ const startX = e.clientX;
1760
+ const startW = leftPanelWidth;
1761
+ const onMove = (ev) => {
1762
+ const w = Math.max(180, Math.min(520, startW + ev.clientX - startX));
1763
+ setLeftPanelWidth(w);
1764
+ try {
1765
+ localStorage.setItem("aa-left-width", String(w));
1766
+ } catch {
1767
+ }
1768
+ };
1769
+ const onUp = () => {
1770
+ document.removeEventListener("mousemove", onMove);
1771
+ document.removeEventListener("mouseup", onUp);
1772
+ };
1773
+ document.addEventListener("mousemove", onMove);
1774
+ document.addEventListener("mouseup", onUp);
1775
+ };
1776
+ const startRightResize = (e) => {
1777
+ e.preventDefault();
1778
+ const startX = e.clientX;
1779
+ const startW = rightPanelWidth;
1780
+ const onMove = (ev) => {
1781
+ const w = Math.max(180, Math.min(520, startW - (ev.clientX - startX)));
1782
+ setRightPanelWidth(w);
1783
+ try {
1784
+ localStorage.setItem("aa-right-width", String(w));
1785
+ } catch {
1786
+ }
1787
+ };
1788
+ const onUp = () => {
1789
+ document.removeEventListener("mousemove", onMove);
1790
+ document.removeEventListener("mouseup", onUp);
1791
+ };
1792
+ document.addEventListener("mousemove", onMove);
1793
+ document.addEventListener("mouseup", onUp);
1794
+ };
1743
1795
  const handleScanImage = async (file) => {
1744
1796
  setIsScanningImage(true);
1745
1797
  try {
@@ -2316,7 +2368,7 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2316
2368
  } })
2317
2369
  ] })
2318
2370
  ] }),
2319
- mobileTab === "tools" && /* @__PURE__ */ jsxs11("div", { className: "flex flex-col flex-1 min-h-0", children: [
2371
+ /* @__PURE__ */ jsxs11("div", { style: { display: mobileTab === "tools" ? "flex" : "none" }, className: "flex flex-col flex-1 min-h-0", children: [
2320
2372
  /* @__PURE__ */ jsxs11("div", { className: "flex border-b border-white/5 shrink-0", style: { height: 52 }, children: [
2321
2373
  workspaceTags && /* @__PURE__ */ jsxs11("button", { onClick: () => {
2322
2374
  setLeftTab("prompt");
@@ -2373,10 +2425,10 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2373
2425
  isGeneratingNodeId: (id) => isSynthesizing && focusedNodeId === id
2374
2426
  }
2375
2427
  ) }),
2376
- leftTab === "prompt" && workspaceTags && activeTab !== "setup" && activeTab !== "sync" && /* @__PURE__ */ jsx13(PromptTab, { workspaceTags, onGenerate: handlePromptTabGenerate, isGenerating: isPromptTabGenerating, feedback: promptFeedback, promptResult: activePrompt || null, lastPayload: lastPromptPayload, onGenerateImage: (prompt) => {
2428
+ workspaceTags && /* @__PURE__ */ jsx13("div", { style: { display: leftTab === "prompt" && activeTab !== "setup" && activeTab !== "sync" ? "flex" : "none" }, className: "absolute inset-0 flex-col", children: /* @__PURE__ */ jsx13(PromptTab, { workspaceTags, onGenerate: handlePromptTabGenerate, isGenerating: isPromptTabGenerating, feedback: promptFeedback, promptResult: activePrompt || null, lastPayload: lastPromptPayload, onGenerateImage: (prompt) => {
2377
2429
  handleGenerateImage(prompt);
2378
2430
  setMobileTab("stage");
2379
- }, onTagCreate: handleTagCreate, onTagUpdate: handleTagUpdate, onTagDelete: handleTagDelete, onScanImage: handleScanImage, isScanning: isScanningImage }),
2431
+ }, onTagCreate: handleTagCreate, onTagUpdate: handleTagUpdate, onTagDelete: handleTagDelete, onScanImage: handleScanImage, isScanning: isScanningImage }) }),
2380
2432
  activeTab === "setup" && /* @__PURE__ */ jsx13(SetupPanel, { onWorkspaceImport: handleWorkspaceImport, buildInfo }),
2381
2433
  activeTab === "sync" && /* @__PURE__ */ jsx13(
2382
2434
  ProjectSyncTab,
@@ -2512,7 +2564,7 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2512
2564
  }
2513
2565
  return /* @__PURE__ */ jsxs11("div", { className: "flex h-screen w-screen bg-[#0e0e0e] text-white overflow-hidden", style: hcStyle, children: [
2514
2566
  /* @__PURE__ */ jsx13("div", { className: "absolute top-2 right-2 z-50", children: /* @__PURE__ */ jsx13("button", { onClick: () => setShowStart(true), className: "text-white/10 hover:text-white/30 transition-colors text-[10px]", children: "\u21C4" }) }),
2515
- /* @__PURE__ */ jsxs11("div", { className: "flex flex-col border-r border-white/5 overflow-hidden relative bg-black/10 shrink-0", style: { width: isLeftCollapsed ? 48 : 260, transition: "width 0.2s" }, children: [
2567
+ /* @__PURE__ */ jsxs11("div", { className: "flex flex-col border-r border-white/5 overflow-hidden relative bg-black/10 shrink-0", style: { width: isLeftCollapsed ? 48 : leftPanelWidth, transition: "none" }, children: [
2516
2568
  /* @__PURE__ */ jsxs11("div", { className: "h-14 border-b border-white/5 flex items-center justify-between shrink-0 px-1", children: [
2517
2569
  !isLeftCollapsed && /* @__PURE__ */ jsxs11("div", { className: "flex flex-1 gap-1", children: [
2518
2570
  workspaceTags && /* @__PURE__ */ jsxs11("button", { onClick: () => setLeftTab("prompt"), className: `flex-1 flex items-center justify-center gap-1 h-8 rounded-lg text-[8px] font-bold uppercase tracking-wide transition-colors ${leftTab === "prompt" ? "bg-white/10 text-white" : "text-white/30 hover:text-white/60"}`, children: [
@@ -2555,6 +2607,7 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2555
2607
  leftTab === "prompt" && workspaceTags && /* @__PURE__ */ jsx13(PromptTab, { workspaceTags, onGenerate: handlePromptTabGenerate, isGenerating: isPromptTabGenerating, feedback: promptFeedback, promptResult: activePrompt || null, lastPayload: lastPromptPayload, onGenerateImage: (prompt) => handleGenerateImage(prompt), onTagCreate: handleTagCreate, onTagUpdate: handleTagUpdate, onTagDelete: handleTagDelete, onScanImage: handleScanImage, isScanning: isScanningImage })
2556
2608
  ] })
2557
2609
  ] }),
2610
+ !isLeftCollapsed && /* @__PURE__ */ jsx13("div", { onMouseDown: startLeftResize, className: "w-1 shrink-0 cursor-col-resize hover:bg-white/20 active:bg-white/30 transition-colors", style: { background: "transparent" } }),
2558
2611
  /* @__PURE__ */ jsxs11("div", { className: "flex-1 flex flex-col bg-[#0b0b0b] overflow-hidden", children: [
2559
2612
  /* @__PURE__ */ jsxs11("div", { className: "h-14 border-b border-white/5 flex items-center px-4 gap-2 justify-between shrink-0 bg-black/20", children: [
2560
2613
  /* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-1.5", children: [
@@ -2608,7 +2661,8 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2608
2661
  ] }) })
2609
2662
  ] })
2610
2663
  ] }),
2611
- /* @__PURE__ */ jsxs11("div", { className: "flex flex-col border-l border-white/5 bg-[#0e0e0e] shrink-0", style: { width: isRightCollapsed ? 60 : 320, transition: "width 0.2s" }, children: [
2664
+ !isRightCollapsed && /* @__PURE__ */ jsx13("div", { onMouseDown: startRightResize, className: "w-1 shrink-0 cursor-col-resize hover:bg-white/20 active:bg-white/30 transition-colors", style: { background: "transparent" } }),
2665
+ /* @__PURE__ */ jsxs11("div", { className: "flex flex-col border-l border-white/5 bg-[#0e0e0e] shrink-0", style: { width: isRightCollapsed ? 60 : rightPanelWidth, transition: "none" }, children: [
2612
2666
  /* @__PURE__ */ jsxs11("div", { className: "flex border-b border-white/5 h-14 shrink-0 overflow-hidden", children: [
2613
2667
  /* @__PURE__ */ jsx13("div", { className: "flex flex-1", children: ["history", "gallery", "inspect", "setup", "sync"].map((tab) => /* @__PURE__ */ jsx13("button", { onClick: () => {
2614
2668
  setActiveTab(tab);
@@ -2656,7 +2710,7 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
2656
2710
  }
2657
2711
 
2658
2712
  // src/index.ts
2659
- var LIB_VERSION = "1.1.3";
2713
+ var LIB_VERSION = "1.1.4";
2660
2714
  export {
2661
2715
  AvatarArchitectApp,
2662
2716
  CollapsibleCard,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rslsp1/fa-app-tools",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "description": "Shared tools and hooks for Fine Art flow apps",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",