blob: 87b0b87eba48c0577214eff54ed13b0748f8b28f [file] [log] [blame]
/**
* Centralized exports for all demo fixtures
*/
// Tool calls
export {
sampleToolCalls,
longBashCommand,
multipleToolCallGroups,
} from "./tool-calls";
// Timeline messages
export {
sampleTimelineMessages,
longTimelineMessage,
mixedTimelineMessages,
} from "./timeline-messages";
// Container status
export {
sampleUsage,
sampleContainerState,
lightUsageState,
heavyUsageState,
} from "./container-status";
// View mode select
export {
sampleViewModeConfigs,
viewModeScenarios,
applyViewModeConfig,
createViewModeTestButtons,
} from "./view-mode-select";
// Call status
export {
idleCallStatus,
workingCallStatus,
heavyWorkingCallStatus,
disconnectedCallStatus,
workingDisconnectedCallStatus,
} from "./call-status";
export type { CallStatusState } from "./call-status";
// Ensure dark mode CSS variables are available
if (
typeof document !== "undefined" &&
!document.getElementById("demo-fixtures-dark-mode-styles")
) {
const style = document.createElement("style");
style.id = "demo-fixtures-dark-mode-styles";
style.textContent = `
:root {
--demo-fixture-section-border: #e1e5e9;
--demo-fixture-section-bg: #f8f9fa;
--demo-fixture-header-color: #24292f;
--demo-fixture-text-color: #656d76;
--demo-fixture-button-bg: #0969da;
--demo-fixture-button-hover-bg: #0860ca;
--demo-label-color: #24292f;
--demo-secondary-text: #666;
--demo-light-bg: #f6f8fa;
--demo-card-bg: #ffffff;
--demo-border: #d1d9e0;
--demo-instruction-bg: #e3f2fd;
--demo-control-bg: #f0f0f0;
}
.dark {
--demo-fixture-section-border: #30363d;
--demo-fixture-section-bg: #21262d;
--demo-fixture-header-color: #e6edf3;
--demo-fixture-text-color: #8b949e;
--demo-fixture-button-bg: #4493f8;
--demo-fixture-button-hover-bg: #539bf5;
--demo-label-color: #e6edf3;
--demo-secondary-text: #8b949e;
--demo-light-bg: #21262d;
--demo-card-bg: #0d1117;
--demo-border: #30363d;
--demo-instruction-bg: #1c2128;
--demo-control-bg: #21262d;
}
`;
document.head.appendChild(style);
}
// Common demo utilities
export const demoStyles = {
container: `
max-width: 1200px;
margin: 20px auto;
padding: 20px;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
`,
demoSection: `
margin: 20px 0;
padding: 15px;
border: 1px solid var(--demo-fixture-section-border);
border-radius: 8px;
background: var(--demo-fixture-section-bg);
transition: background-color 0.2s, border-color 0.2s;
`,
demoHeader: `
font-size: 18px;
font-weight: 600;
margin-bottom: 10px;
color: var(--demo-fixture-header-color);
transition: color 0.2s;
`,
};
/**
* Common demo setup utilities
*/
export const demoUtils = {
/**
* Create a labeled demo section
*/
createDemoSection(title: string, description?: string): HTMLElement {
const section = document.createElement("div");
section.style.cssText = demoStyles.demoSection;
const header = document.createElement("h3");
header.style.cssText = demoStyles.demoHeader;
header.textContent = title;
section.appendChild(header);
if (description) {
const desc = document.createElement("p");
desc.textContent = description;
desc.style.cssText =
"color: var(--demo-fixture-text-color); margin-bottom: 15px; transition: color 0.2s;";
section.appendChild(desc);
}
return section;
},
/**
* Wait for a specified number of milliseconds
*/
delay(ms: number): Promise<void> {
return new Promise((resolve) => setTimeout(resolve, ms));
},
/**
* Create a simple button for demo interactions
*/
createButton(text: string, onClick: () => void): HTMLButtonElement {
const button = document.createElement("button");
button.textContent = text;
button.style.cssText = `
padding: 8px 16px;
margin: 5px;
background: var(--demo-fixture-button-bg);
color: white;
border: none;
border-radius: 6px;
cursor: pointer;
font-size: 14px;
transition: background-color 0.2s;
`;
button.addEventListener("mouseenter", () => {
button.style.background = "var(--demo-fixture-button-hover-bg)";
});
button.addEventListener("mouseleave", () => {
button.style.background = "var(--demo-fixture-button-bg)";
});
button.addEventListener("click", onClick);
return button;
},
};