@guidekit/react 0.1.0-beta.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.tsx"],"names":["useContext","GuideKitContext","useRef","GuideKitCore","useEffect","useCallback","useSyncExternalStore","jsxs","jsx","useState","Fragment"],"mappings":"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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;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","file":"index.cjs","sourcesContent":["// ---------------------------------------------------------------------------\n// @guidekit/react — React bindings for GuideKit SDK\n// ---------------------------------------------------------------------------\n//\n// Provides: GuideKitProvider, split hooks (useGuideKitStatus, useGuideKitVoice,\n// useGuideKitActions, useGuideKitContext), combined useGuideKit hook, and an\n// internal GuideKitWidget rendered inside Shadow DOM.\n//\n// All hooks use React 18's useSyncExternalStore for tear-free, concurrent-mode\n// safe reads from the GuideKitCore store. Functions are memoised with\n// useCallback so they are referentially stable across renders.\n// ---------------------------------------------------------------------------\n\nimport { GuideKitCore } from '@guidekit/core';\nimport type {\n GuideKitCoreOptions,\n GuideKitProviderProps,\n AgentState,\n GuideKitStore,\n GuideKitErrorType,\n GuideKitEvent,\n} from '@guidekit/core';\n\nimport React, {\n useContext,\n useEffect,\n useRef,\n useCallback,\n useSyncExternalStore,\n useState,\n} from 'react';\nimport type { ReactNode } from 'react';\n\nimport { GuideKitContext } from './_context.js';\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** SSR-safe default snapshot returned when there is no GuideKitCore instance. */\nconst SSR_SNAPSHOT: GuideKitStore = {\n status: { isReady: false, agentState: { status: 'idle' }, error: null },\n voice: { isListening: false, isSpeaking: false },\n hasConsent: false,\n};\n\n/** Noop subscriber for SSR — never fires, returns a stable unsubscribe. */\nconst SSR_SUBSCRIBE = (_listener: () => void): (() => void) => () => {};\n\n// ---------------------------------------------------------------------------\n// Internal hook: access the core instance from context\n// ---------------------------------------------------------------------------\n\nfunction useGuideKitCore(): GuideKitCore | null {\n return useContext(GuideKitContext);\n}\n\n// ---------------------------------------------------------------------------\n// GuideKitProvider\n// ---------------------------------------------------------------------------\n\nexport function GuideKitProvider(\n props: GuideKitProviderProps & { children: ReactNode },\n) {\n const {\n children,\n tokenEndpoint,\n stt,\n tts,\n llm,\n agent,\n contentMap,\n options,\n theme,\n locale: _locale,\n instanceId,\n rootElement,\n onError,\n onEvent,\n onReady,\n onBeforeLLMCall,\n } = props;\n\n // Use a ref so the core instance is created once and never causes re-renders.\n // We also track whether the ref was initialised to avoid re-creating after\n // React StrictMode's double-mount (SingletonGuard handles concurrency, but\n // we still want to be explicit).\n const coreRef = useRef<GuideKitCore | null>(null);\n const initCalled = useRef(false);\n\n // Build the options object. We memoise the option values but the core is\n // created imperatively, not via state — this avoids render-triggered side\n // effects.\n if (coreRef.current === null) {\n const coreOptions: GuideKitCoreOptions = {\n tokenEndpoint,\n stt,\n tts,\n llm,\n agent,\n contentMap,\n options,\n instanceId,\n rootElement,\n onError,\n onEvent,\n onReady,\n onBeforeLLMCall,\n };\n coreRef.current = new GuideKitCore(coreOptions);\n }\n\n // init() on mount, destroy() on unmount.\n useEffect(() => {\n const core = coreRef.current;\n if (!core) return;\n\n // SSR guard\n if (typeof window === 'undefined') return;\n\n // Prevent double-init in StrictMode. The SingletonGuard in core also\n // protects against this, but this flag avoids the extra async call.\n if (initCalled.current) return;\n initCalled.current = true;\n\n core.init().catch((initErr: unknown) => {\n if (options?.debug) {\n console.error('[GuideKit:React] init() failed', initErr);\n }\n if (initErr && typeof initErr === 'object' && 'message' in initErr) {\n onError?.(initErr as GuideKitErrorType);\n }\n });\n\n return () => {\n initCalled.current = false;\n core.destroy().catch((destroyErr: unknown) => {\n if (options?.debug) {\n console.error('[GuideKit:React] destroy() failed', destroyErr);\n }\n });\n };\n }, []);\n\n return (\n <GuideKitContext.Provider value={coreRef.current}>\n {children}\n <GuideKitWidget theme={theme} consentRequired={options?.consentRequired} instanceId={instanceId} />\n </GuideKitContext.Provider>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Split Hook: useGuideKitStatus\n// ---------------------------------------------------------------------------\n\nexport function useGuideKitStatus(): {\n isReady: boolean;\n agentState: AgentState;\n error: GuideKitErrorType | null;\n} {\n const core = useGuideKitCore();\n\n const subscribe = useCallback(\n (listener: () => void) =>\n core ? core.subscribe(listener) : SSR_SUBSCRIBE(listener),\n [core],\n );\n\n const getSnapshot = useCallback(\n () => (core ? core.getSnapshot().status : SSR_SNAPSHOT.status),\n [core],\n );\n\n return useSyncExternalStore(subscribe, getSnapshot, () => SSR_SNAPSHOT.status);\n}\n\n// ---------------------------------------------------------------------------\n// Split Hook: useGuideKitVoice\n// ---------------------------------------------------------------------------\n\nexport function useGuideKitVoice(): {\n isListening: boolean;\n isSpeaking: boolean;\n startListening: () => void;\n stopListening: () => void;\n sendText: (text: string) => Promise<string>;\n} {\n const core = useGuideKitCore();\n\n const subscribe = useCallback(\n (listener: () => void) =>\n core ? core.subscribe(listener) : SSR_SUBSCRIBE(listener),\n [core],\n );\n\n const getSnapshot = useCallback(\n () => (core ? core.getSnapshot().voice : SSR_SNAPSHOT.voice),\n [core],\n );\n\n const voiceSlice = useSyncExternalStore(\n subscribe,\n getSnapshot,\n () => SSR_SNAPSHOT.voice,\n );\n\n const startListening = useCallback(() => {\n if (core) {\n core.startListening().catch((err) => {\n console.error('[GuideKit] Failed to start listening:', err);\n });\n }\n }, [core]);\n\n const stopListening = useCallback(() => {\n if (core) {\n core.stopListening();\n }\n }, [core]);\n\n const sendText = useCallback(\n (text: string): Promise<string> => {\n if (!core) {\n return Promise.reject(\n new Error('GuideKit not initialised. Wrap your app in <GuideKitProvider>.'),\n );\n }\n return core.sendText(text);\n },\n [core],\n );\n\n return {\n ...voiceSlice,\n startListening,\n stopListening,\n sendText,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Split Hook: useGuideKitActions\n// ---------------------------------------------------------------------------\n\nexport function useGuideKitActions(): {\n highlight: (\n sectionId: string,\n options?: { selector?: string; tooltip?: string; position?: string },\n ) => void;\n dismissHighlight: () => void;\n scrollToSection: (sectionId: string, offset?: number) => void;\n startTour: (sectionIds: string[], mode?: 'auto' | 'manual') => void;\n navigate: (href: string) => void;\n} {\n const core = useGuideKitCore();\n\n const highlight = useCallback(\n (\n sectionId: string,\n options?: { selector?: string; tooltip?: string; position?: string },\n ) => {\n core?.highlight({\n sectionId,\n selector: options?.selector,\n tooltip: options?.tooltip,\n position: options?.position as 'top' | 'bottom' | 'left' | 'right' | 'auto' | undefined,\n });\n },\n [core],\n );\n\n const dismissHighlight = useCallback(() => {\n core?.dismissHighlight();\n }, [core]);\n\n const scrollToSection = useCallback(\n (sectionId: string, offset?: number) => {\n core?.scrollToSection(sectionId, offset);\n },\n [core],\n );\n\n const startTour = useCallback(\n (sectionIds: string[], mode?: 'auto' | 'manual') => {\n core?.startTour(sectionIds, mode);\n },\n [core],\n );\n\n const navigate = useCallback(\n (href: string) => {\n core?.navigate(href).catch((err) => {\n console.error('[GuideKit] Navigation failed:', err);\n });\n },\n [core],\n );\n\n return { highlight, dismissHighlight, scrollToSection, startTour, navigate };\n}\n\n// ---------------------------------------------------------------------------\n// Split Hook: useGuideKitContext\n// ---------------------------------------------------------------------------\n\nexport function useGuideKitContext(): {\n setPageContext: (context: Record<string, unknown>) => void;\n addContext: (key: string, value: unknown) => void;\n registerAction: (\n actionId: string,\n action: {\n description: string;\n parameters: Record<string, unknown>;\n handler: (params: Record<string, unknown>) => Promise<unknown>;\n },\n ) => void;\n} {\n const core = useGuideKitCore();\n\n const setPageContext = useCallback(\n (context: Record<string, unknown>) => {\n core?.setPageContext(context);\n },\n [core],\n );\n\n const addContext = useCallback(\n (key: string, value: unknown) => {\n core?.setPageContext({ [key]: value });\n },\n [core],\n );\n\n const registerAction = useCallback(\n (\n actionId: string,\n action: {\n description: string;\n parameters: Record<string, unknown>;\n handler: (params: Record<string, unknown>) => Promise<unknown>;\n },\n ) => {\n core?.registerAction(actionId, action);\n },\n [core],\n );\n\n return { setPageContext, addContext, registerAction };\n}\n\n// ---------------------------------------------------------------------------\n// Combined Hook: useGuideKit\n// ---------------------------------------------------------------------------\n\nexport function useGuideKit(): {\n isReady: boolean;\n agentState: AgentState;\n error: GuideKitErrorType | null;\n isListening: boolean;\n isSpeaking: boolean;\n startListening: () => void;\n stopListening: () => void;\n sendText: (text: string) => Promise<string>;\n highlight: (\n sectionId: string,\n options?: { selector?: string; tooltip?: string; position?: string },\n ) => void;\n dismissHighlight: () => void;\n scrollToSection: (sectionId: string, offset?: number) => void;\n startTour: (sectionIds: string[], mode?: 'auto' | 'manual') => void;\n navigate: (href: string) => void;\n setPageContext: (context: Record<string, unknown>) => void;\n addContext: (key: string, value: unknown) => void;\n registerAction: (\n actionId: string,\n action: {\n description: string;\n parameters: Record<string, unknown>;\n handler: (params: Record<string, unknown>) => Promise<unknown>;\n },\n ) => void;\n} {\n const status = useGuideKitStatus();\n const voice = useGuideKitVoice();\n const actions = useGuideKitActions();\n const ctx = useGuideKitContext();\n\n return {\n ...status,\n ...voice,\n ...actions,\n ...ctx,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Transcript message type (internal)\n// ---------------------------------------------------------------------------\n\ninterface TranscriptMessage {\n id: string;\n role: 'user' | 'assistant';\n content: string;\n timestamp: number;\n}\n\n// ---------------------------------------------------------------------------\n// CSS for the widget (injected into Shadow DOM)\n// ---------------------------------------------------------------------------\n\nconst WIDGET_STYLES = /* css */ `\n :host {\n --gk-primary: #6366f1;\n --gk-primary-hover: #4f46e5;\n --gk-primary-active: #4338ca;\n --gk-bg: #ffffff;\n --gk-bg-secondary: #f8fafc;\n --gk-text: #1e293b;\n --gk-text-secondary: #64748b;\n --gk-border: #e2e8f0;\n --gk-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);\n --gk-radius: 16px;\n --gk-fab-size: 56px;\n --gk-panel-width: 380px;\n --gk-panel-height: 520px;\n --gk-font: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n\n all: initial;\n font-family: var(--gk-font);\n position: fixed;\n z-index: 2147483647;\n bottom: 24px;\n right: 24px;\n }\n\n @media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.01ms !important;\n }\n }\n\n /* ----- Floating Action Button ----- */\n\n .gk-fab {\n width: var(--gk-fab-size);\n height: var(--gk-fab-size);\n border-radius: 50%;\n border: none;\n background: var(--gk-primary);\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 16px rgba(99, 102, 241, 0.35);\n transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.15s ease;\n outline: none;\n position: relative;\n }\n\n .gk-fab:hover {\n background: var(--gk-primary-hover);\n transform: scale(1.05);\n box-shadow: 0 6px 24px rgba(99, 102, 241, 0.45);\n }\n\n .gk-fab:active {\n background: var(--gk-primary-active);\n transform: scale(0.97);\n }\n\n .gk-fab:focus-visible {\n outline: 2px solid var(--gk-primary);\n outline-offset: 3px;\n }\n\n .gk-fab svg {\n width: 24px;\n height: 24px;\n fill: currentColor;\n transition: transform 0.2s ease;\n }\n\n .gk-fab[aria-expanded=\"true\"] svg {\n transform: rotate(45deg);\n }\n\n /* ----- Panel ----- */\n\n .gk-panel {\n position: absolute;\n bottom: calc(var(--gk-fab-size) + 16px);\n right: 0;\n width: var(--gk-panel-width);\n height: var(--gk-panel-height);\n background: var(--gk-bg);\n border-radius: var(--gk-radius);\n box-shadow: var(--gk-shadow);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n opacity: 0;\n transform: translateY(12px) scale(0.95);\n pointer-events: none;\n transition: opacity 0.2s ease, transform 0.2s ease;\n }\n\n .gk-panel[data-open=\"true\"] {\n opacity: 1;\n transform: translateY(0) scale(1);\n pointer-events: auto;\n }\n\n /* ----- Header ----- */\n\n .gk-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--gk-border);\n background: var(--gk-bg);\n flex-shrink: 0;\n }\n\n .gk-header-title {\n font-size: 15px;\n font-weight: 600;\n color: var(--gk-text);\n margin: 0;\n }\n\n .gk-header-status {\n font-size: 12px;\n color: var(--gk-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .gk-status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #94a3b8;\n flex-shrink: 0;\n }\n\n .gk-status-dot[data-ready=\"true\"] {\n background: #22c55e;\n }\n\n .gk-close-btn {\n width: 28px;\n height: 28px;\n border-radius: 8px;\n border: none;\n background: transparent;\n color: var(--gk-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s ease, color 0.15s ease;\n outline: none;\n flex-shrink: 0;\n }\n\n .gk-close-btn:hover {\n background: var(--gk-bg-secondary);\n color: var(--gk-text);\n }\n\n .gk-close-btn:focus-visible {\n outline: 2px solid var(--gk-primary);\n outline-offset: -2px;\n }\n\n .gk-close-btn svg {\n width: 16px;\n height: 16px;\n fill: currentColor;\n }\n\n /* ----- Transcript ----- */\n\n .gk-transcript {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n scroll-behavior: smooth;\n }\n\n .gk-transcript::-webkit-scrollbar {\n width: 4px;\n }\n\n .gk-transcript::-webkit-scrollbar-thumb {\n background: var(--gk-border);\n border-radius: 2px;\n }\n\n .gk-empty-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n color: var(--gk-text-secondary);\n text-align: center;\n padding: 32px 16px;\n }\n\n .gk-empty-state-icon {\n width: 40px;\n height: 40px;\n border-radius: 12px;\n background: var(--gk-bg-secondary);\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 4px;\n }\n\n .gk-empty-state-icon svg {\n width: 20px;\n height: 20px;\n fill: var(--gk-text-secondary);\n }\n\n .gk-empty-state p {\n margin: 0;\n font-size: 13px;\n line-height: 1.5;\n }\n\n /* ----- Message Bubbles ----- */\n\n .gk-message {\n max-width: 85%;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n line-height: 1.5;\n word-wrap: break-word;\n white-space: pre-wrap;\n }\n\n .gk-message[data-role=\"user\"] {\n align-self: flex-end;\n background: var(--gk-primary);\n color: #fff;\n border-bottom-right-radius: 4px;\n }\n\n .gk-message[data-role=\"assistant\"] {\n align-self: flex-start;\n background: var(--gk-bg-secondary);\n color: var(--gk-text);\n border-bottom-left-radius: 4px;\n }\n\n /* ----- Processing indicator ----- */\n\n .gk-processing {\n align-self: flex-start;\n display: flex;\n gap: 4px;\n padding: 12px 16px;\n }\n\n .gk-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--gk-text-secondary);\n animation: gk-bounce 1.4s ease-in-out infinite;\n }\n\n .gk-dot:nth-child(2) { animation-delay: 0.16s; }\n .gk-dot:nth-child(3) { animation-delay: 0.32s; }\n\n @keyframes gk-bounce {\n 0%, 80%, 100% { transform: translateY(0); }\n 40% { transform: translateY(-6px); }\n }\n\n /* ----- Input Area ----- */\n\n .gk-input-area {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--gk-border);\n background: var(--gk-bg);\n flex-shrink: 0;\n }\n\n .gk-input {\n flex: 1;\n min-height: 40px;\n max-height: 120px;\n padding: 8px 14px;\n border: 1px solid var(--gk-border);\n border-radius: 12px;\n background: var(--gk-bg);\n color: var(--gk-text);\n font-family: var(--gk-font);\n font-size: 14px;\n line-height: 1.5;\n resize: none;\n outline: none;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n }\n\n .gk-input::placeholder {\n color: var(--gk-text-secondary);\n }\n\n .gk-input:focus {\n border-color: var(--gk-primary);\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);\n }\n\n .gk-send-btn {\n width: 40px;\n height: 40px;\n border-radius: 12px;\n border: none;\n background: var(--gk-primary);\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: background 0.15s ease, transform 0.1s ease;\n outline: none;\n }\n\n .gk-send-btn:hover:not(:disabled) {\n background: var(--gk-primary-hover);\n }\n\n .gk-send-btn:active:not(:disabled) {\n transform: scale(0.93);\n }\n\n .gk-send-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .gk-send-btn:focus-visible {\n outline: 2px solid var(--gk-primary);\n outline-offset: 3px;\n }\n\n .gk-send-btn svg {\n width: 18px;\n height: 18px;\n fill: currentColor;\n }\n\n /* ----- Mic Button ----- */\n\n .gk-mic-btn {\n width: 40px;\n height: 40px;\n border-radius: 12px;\n border: none;\n background: transparent;\n color: var(--gk-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: background 0.15s ease, color 0.15s ease, transform 0.1s ease;\n outline: none;\n }\n\n .gk-mic-btn:hover:not(:disabled) {\n background: var(--gk-bg-secondary);\n color: var(--gk-text);\n }\n\n .gk-mic-btn:active:not(:disabled) {\n transform: scale(0.93);\n }\n\n .gk-mic-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .gk-mic-btn:focus-visible {\n outline: 2px solid var(--gk-primary);\n outline-offset: 3px;\n }\n\n .gk-mic-btn svg {\n width: 20px;\n height: 20px;\n fill: currentColor;\n }\n\n .gk-mic-btn[data-active=\"true\"] {\n background: #fee2e2;\n color: #dc2626;\n }\n\n .gk-mic-btn[data-active=\"true\"]:hover {\n background: #fecaca;\n }\n\n /* Pulse animation for active mic */\n @keyframes gk-pulse {\n 0%, 100% { box-shadow: 0 0 0 0 rgba(220, 38, 38, 0.4); }\n 50% { box-shadow: 0 0 0 6px rgba(220, 38, 38, 0); }\n }\n\n .gk-mic-btn[data-active=\"true\"] {\n animation: gk-pulse 1.5s ease-in-out infinite;\n }\n\n /* ----- Voice Degraded Banner ----- */\n\n .gk-voice-notice {\n padding: 6px 16px;\n background: #fffbeb;\n color: #92400e;\n font-size: 12px;\n line-height: 1.4;\n border-top: 1px solid #fde68a;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n /* ----- Error Banner ----- */\n\n .gk-error {\n padding: 8px 16px;\n background: #fef2f2;\n color: #dc2626;\n font-size: 12px;\n line-height: 1.4;\n border-top: 1px solid #fecaca;\n flex-shrink: 0;\n }\n\n /* ----- Mobile Responsive: Bottom Sheet ----- */\n\n @media (hover: none) and (pointer: coarse), (max-width: 768px) {\n :host {\n bottom: 16px !important;\n right: 16px !important;\n left: auto !important;\n }\n\n .gk-panel {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 70vh;\n max-height: 70vh;\n border-radius: var(--gk-radius) var(--gk-radius) 0 0;\n transform: translateY(100%);\n padding-bottom: env(safe-area-inset-bottom, 0px);\n }\n\n .gk-panel[data-open=\"true\"] {\n transform: translateY(0);\n }\n\n .gk-fab {\n bottom: 16px;\n right: 16px;\n }\n\n .gk-input-area {\n padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));\n }\n\n /* Touch targets min 44x44 */\n .gk-send-btn,\n .gk-mic-btn,\n .gk-close-btn {\n min-width: 44px;\n min-height: 44px;\n }\n }\n\n /* ----- Privacy Consent Dialog ----- */\n\n .gk-consent-dialog {\n position: absolute;\n bottom: calc(var(--gk-fab-size) + 16px);\n right: 0;\n width: var(--gk-panel-width);\n background: var(--gk-bg);\n border-radius: var(--gk-radius);\n box-shadow: var(--gk-shadow);\n padding: 24px;\n opacity: 0;\n transform: translateY(12px) scale(0.95);\n pointer-events: none;\n transition: opacity 0.2s ease, transform 0.2s ease;\n }\n\n .gk-consent-dialog[data-open=\"true\"] {\n opacity: 1;\n transform: translateY(0) scale(1);\n pointer-events: auto;\n }\n\n .gk-consent-message {\n font-size: 14px;\n line-height: 1.6;\n color: var(--gk-text);\n margin: 0 0 20px 0;\n }\n\n .gk-consent-actions {\n display: flex;\n gap: 10px;\n justify-content: flex-end;\n }\n\n .gk-consent-btn {\n padding: 8px 20px;\n border-radius: 10px;\n font-family: var(--gk-font);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s ease, transform 0.1s ease;\n outline: none;\n border: none;\n }\n\n .gk-consent-btn:focus-visible {\n outline: 2px solid var(--gk-primary);\n outline-offset: 2px;\n }\n\n .gk-consent-btn:active {\n transform: scale(0.97);\n }\n\n .gk-consent-btn--decline {\n background: var(--gk-bg-secondary);\n color: var(--gk-text-secondary);\n border: 1px solid var(--gk-border);\n }\n\n .gk-consent-btn--decline:hover {\n background: var(--gk-border);\n color: var(--gk-text);\n }\n\n .gk-consent-btn--accept {\n background: var(--gk-primary);\n color: #fff;\n }\n\n .gk-consent-btn--accept:hover {\n background: var(--gk-primary-hover);\n }\n\n /* ----- High Contrast (Windows) ----- */\n\n @media (forced-colors: active) {\n .gk-fab,\n .gk-send-btn,\n .gk-mic-btn {\n border: 2px solid ButtonText;\n }\n\n .gk-panel {\n border: 1px solid ButtonText;\n }\n\n .gk-message[data-role=\"user\"] {\n border: 1px solid Highlight;\n }\n\n .gk-message[data-role=\"assistant\"] {\n border: 1px solid ButtonText;\n }\n\n .gk-consent-dialog {\n border: 1px solid ButtonText;\n }\n\n .gk-consent-btn {\n border: 2px solid ButtonText;\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// SVG icons (inline, no external deps)\n// ---------------------------------------------------------------------------\n\nconst ChatIcon = () => (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12z\" />\n <path d=\"M7 9h10v2H7zm0-3h10v2H7z\" />\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n </svg>\n);\n\nconst SendIcon = () => (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\" />\n </svg>\n);\n\nconst MicIcon = () => (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z\" />\n </svg>\n);\n\nconst MicOffIcon = () => (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M19 11h-1.7c0 .74-.16 1.43-.43 2.05l1.23 1.23c.56-.98.9-2.09.9-3.28zm-4.02.17c0-.06.02-.11.02-.17V5c0-1.66-1.34-3-3-3S9 3.34 9 5v.18l5.98 5.99zM4.27 3L3 4.27l6.01 6.01V11c0 1.66 1.33 3 2.99 3 .22 0 .44-.03.65-.08l1.66 1.66c-.71.33-1.5.52-2.31.52-2.76 0-5.3-2.1-5.3-5.1H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c.91-.13 1.77-.45 2.54-.9L19.73 21 21 19.73 4.27 3z\" />\n </svg>\n);\n\nconst SparkleIcon = () => (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M12 2L9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2z\" />\n </svg>\n);\n\n// ---------------------------------------------------------------------------\n// GuideKitWidget (internal) — Shadow DOM isolated chat widget\n// ---------------------------------------------------------------------------\n\ninterface WidgetProps {\n theme?: {\n primaryColor?: string;\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n borderRadius?: string;\n };\n consentRequired?: boolean;\n instanceId?: string;\n}\n\nfunction GuideKitWidget({ theme, consentRequired, instanceId }: WidgetProps) {\n const core = useGuideKitCore();\n const { isReady, agentState } = useGuideKitStatus();\n\n const [isOpen, setIsOpen] = useState(false);\n const [messages, setMessages] = useState<TranscriptMessage[]>([]);\n const [inputValue, setInputValue] = useState('');\n const [isSending, setIsSending] = useState(false);\n const [isVoiceActive, setIsVoiceActive] = useState(false);\n\n // ---- Privacy consent state ----\n\n const consentStorageKey = `guidekit-consent:${instanceId ?? 'default'}`;\n\n const [hasConsent, setHasConsent] = useState<boolean>(() => {\n if (!consentRequired) return true;\n if (typeof window === 'undefined') return false;\n try {\n return localStorage.getItem(consentStorageKey) === 'granted';\n } catch {\n return false;\n }\n });\n\n const [showConsentDialog, setShowConsentDialog] = useState(false);\n\n const shadowHostRef = useRef<HTMLDivElement | null>(null);\n const shadowRootRef = useRef<ShadowRoot | null>(null);\n const shadowContainerRef = useRef<HTMLDivElement | null>(null);\n const transcriptRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLTextAreaElement | null>(null);\n const fabRef = useRef<HTMLButtonElement | null>(null);\n\n // Monotonic ID counter for messages\n const msgIdRef = useRef(0);\n\n // i18n helper — get localized string from core\n const t = useCallback(\n (key: string): string => {\n if (core) {\n return (core.i18n as any).t(key) ?? key;\n }\n return key;\n },\n [core],\n );\n\n // Track whether Shadow DOM has been initialised\n const [shadowReady, setShadowReady] = useState(false);\n\n // ---- Create Shadow DOM on mount ----\n\n useEffect(() => {\n const host = shadowHostRef.current;\n if (!host || shadowRootRef.current) return;\n\n const shadow = host.attachShadow({ mode: 'open' });\n shadowRootRef.current = shadow;\n\n // Inject styles\n const styleEl = document.createElement('style');\n styleEl.textContent = WIDGET_STYLES;\n shadow.appendChild(styleEl);\n\n // Create a container div for React to portal into (we render imperatively)\n const container = document.createElement('div');\n shadow.appendChild(container);\n shadowContainerRef.current = container;\n setShadowReady(true);\n\n return () => {\n shadowRootRef.current = null;\n shadowContainerRef.current = null;\n setShadowReady(false);\n };\n }, []);\n\n // ---- Apply theme CSS custom properties ----\n\n useEffect(() => {\n const container = shadowContainerRef.current;\n if (!container) return;\n const host = shadowHostRef.current;\n if (!host) return;\n\n if (theme?.primaryColor) {\n host.style.setProperty('--gk-primary', theme.primaryColor);\n }\n if (theme?.borderRadius) {\n host.style.setProperty('--gk-radius', theme.borderRadius);\n }\n\n // Position\n const pos = theme?.position ?? 'bottom-right';\n host.style.removeProperty('top');\n host.style.removeProperty('bottom');\n host.style.removeProperty('left');\n host.style.removeProperty('right');\n\n switch (pos) {\n case 'bottom-right':\n host.style.bottom = '24px';\n host.style.right = '24px';\n break;\n case 'bottom-left':\n host.style.bottom = '24px';\n host.style.left = '24px';\n break;\n case 'top-right':\n host.style.top = '24px';\n host.style.right = '24px';\n break;\n case 'top-left':\n host.style.top = '24px';\n host.style.left = '24px';\n break;\n }\n }, [theme, shadowReady]);\n\n // ---- Auto-scroll transcript ----\n\n useEffect(() => {\n const el = transcriptRef.current;\n if (el) {\n el.scrollTop = el.scrollHeight;\n }\n }, [messages, isSending]);\n\n // ---- Focus input when panel opens ----\n\n useEffect(() => {\n if (isOpen && inputRef.current) {\n // Small delay to let the panel animate in\n const timer = setTimeout(() => inputRef.current?.focus(), 100);\n return () => clearTimeout(timer);\n }\n }, [isOpen]);\n\n // ---- Send message handler ----\n\n const handleSend = useCallback(async () => {\n const text = inputValue.trim();\n if (!text || !core || isSending) return;\n\n const userMsg: TranscriptMessage = {\n id: `msg-${++msgIdRef.current}`,\n role: 'user',\n content: text,\n timestamp: Date.now(),\n };\n\n setMessages((prev) => [...prev, userMsg]);\n setInputValue('');\n setIsSending(true);\n\n try {\n const response = await core.sendText(text);\n const assistantMsg: TranscriptMessage = {\n id: `msg-${++msgIdRef.current}`,\n role: 'assistant',\n content: response,\n timestamp: Date.now(),\n };\n setMessages((prev) => [...prev, assistantMsg]);\n } catch (err) {\n const errorContent =\n err instanceof Error ? err.message : 'Something went wrong. Please try again.';\n const errorMsg: TranscriptMessage = {\n id: `msg-${++msgIdRef.current}`,\n role: 'assistant',\n content: `Error: ${errorContent}`,\n timestamp: Date.now(),\n };\n setMessages((prev) => [...prev, errorMsg]);\n } finally {\n setIsSending(false);\n }\n }, [inputValue, core, isSending]);\n\n // ---- Mic toggle handler ----\n\n const handleMicToggle = useCallback(async () => {\n if (!core) return;\n\n if (isVoiceActive) {\n core.stopListening();\n setIsVoiceActive(false);\n } else {\n try {\n await core.startListening();\n setIsVoiceActive(true);\n } catch (err) {\n console.error('[GuideKit] Failed to start voice:', err);\n setIsVoiceActive(false);\n }\n }\n }, [core, isVoiceActive]);\n\n // ---- Keyboard handlers ----\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSend();\n }\n if (e.key === 'Escape') {\n setIsOpen(false);\n // Return focus to FAB\n fabRef.current?.focus();\n }\n },\n [handleSend],\n );\n\n const handlePanelKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n setIsOpen(false);\n fabRef.current?.focus();\n }\n },\n [],\n );\n\n // ---- Consent handlers ----\n\n const handleConsentAccept = useCallback(() => {\n try {\n localStorage.setItem(consentStorageKey, 'granted');\n } catch {\n // localStorage may be unavailable (e.g. private browsing quota)\n }\n setHasConsent(true);\n setShowConsentDialog(false);\n setIsOpen(true);\n }, [consentStorageKey]);\n\n const handleConsentDecline = useCallback(() => {\n setShowConsentDialog(false);\n fabRef.current?.focus();\n }, []);\n\n const handleConsentKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n setShowConsentDialog(false);\n fabRef.current?.focus();\n }\n },\n [],\n );\n\n // ---- Toggle panel ----\n\n const togglePanel = useCallback(() => {\n if (consentRequired && !hasConsent) {\n // First click: show consent dialog instead of opening the panel\n setShowConsentDialog((prev) => !prev);\n return;\n }\n setIsOpen((prev) => !prev);\n }, [consentRequired, hasConsent]);\n\n // ---- Determine processing state ----\n\n const isProcessing = agentState.status === 'processing';\n const hasVoice = core?.hasVoice ?? false;\n const isListeningState = agentState.status === 'listening';\n const isSpeakingState = agentState.status === 'speaking';\n\n // Sync voice active state with agent state\n useEffect(() => {\n if (!isListeningState && isVoiceActive) {\n // Voice state changed externally (e.g. barge-in ended listening)\n // Don't clear if speaking - that's expected in half-duplex\n if (!isSpeakingState && !isProcessing) {\n setIsVoiceActive(false);\n }\n }\n }, [isListeningState, isSpeakingState, isProcessing, isVoiceActive]);\n\n // ---- Derive status label ----\n\n const statusLabel = isReady\n ? isListeningState\n ? t('statusListening')\n : isSpeakingState\n ? t('statusSpeaking')\n : t('statusOnline')\n : t('statusConnecting');\n\n // ---- Render into Shadow DOM imperatively via portal ----\n\n // We cannot use ReactDOM.createPortal into a shadow root container directly\n // in all React versions. Instead we render the widget tree *outside* the\n // Shadow DOM host element and use an effect to clone/sync it in. However,\n // the simplest cross-version approach is to render the UI in the normal\n // React tree and use the shadow host purely for style encapsulation.\n //\n // For maximum compatibility we render our widget markup below and portal\n // it into the shadow container using ReactDOM.createPortal when shadow is\n // ready.\n\n // We need dynamic import of createPortal to avoid SSR issues.\n const createPortalRef = useRef<typeof import('react-dom').createPortal | null>(null);\n const [portalReady, setPortalReady] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n import('react-dom').then((mod) => {\n createPortalRef.current = mod.createPortal;\n setPortalReady(true);\n });\n }, []);\n\n // ---- Widget UI tree ----\n\n const widgetUI = (\n <>\n {/* Panel */}\n <div\n className=\"gk-panel\"\n data-open={isOpen ? 'true' : 'false'}\n role=\"dialog\"\n aria-label={t('widgetTitle')}\n aria-hidden={!isOpen}\n onKeyDown={handlePanelKeyDown}\n >\n {/* Header */}\n <div className=\"gk-header\">\n <div>\n <div className=\"gk-header-title\">{t('widgetTitle')}</div>\n <div className=\"gk-header-status\">\n <span className=\"gk-status-dot\" data-ready={isReady ? 'true' : 'false'} />\n <span>{statusLabel}</span>\n </div>\n </div>\n <button\n className=\"gk-close-btn\"\n onClick={() => {\n setIsOpen(false);\n fabRef.current?.focus();\n }}\n aria-label={t('closePanel')}\n tabIndex={isOpen ? 0 : -1}\n >\n <CloseIcon />\n </button>\n </div>\n\n {/* Transcript */}\n <div\n className=\"gk-transcript\"\n ref={transcriptRef}\n role=\"log\"\n aria-live=\"polite\"\n aria-label=\"Conversation transcript\"\n >\n {messages.length === 0 && !isSending ? (\n <div className=\"gk-empty-state\">\n <div className=\"gk-empty-state-icon\">\n <SparkleIcon />\n </div>\n <p>{t('emptyStateMessage')}</p>\n </div>\n ) : (\n <>\n {messages.map((msg) => (\n <div\n key={msg.id}\n className=\"gk-message\"\n data-role={msg.role}\n role={msg.role === 'assistant' ? 'status' : undefined}\n >\n {msg.content}\n </div>\n ))}\n {isProcessing && (\n <div className=\"gk-processing\" role=\"status\" aria-label=\"Processing\">\n <div className=\"gk-dot\" />\n <div className=\"gk-dot\" />\n <div className=\"gk-dot\" />\n </div>\n )}\n </>\n )}\n </div>\n\n {/* Error banner */}\n {agentState.status === 'error' && (\n <div className=\"gk-error\" role=\"alert\">\n {agentState.error?.message ?? 'An error occurred.'}\n </div>\n )}\n\n {/* Input area */}\n <div className=\"gk-input-area\">\n {hasVoice && (\n <button\n className=\"gk-mic-btn\"\n onClick={handleMicToggle}\n disabled={!isReady || isSending}\n data-active={isVoiceActive || isListeningState ? 'true' : 'false'}\n aria-label={isVoiceActive ? t('stopVoice') : t('startVoice')}\n tabIndex={isOpen ? 0 : -1}\n >\n {isVoiceActive || isListeningState ? <MicOffIcon /> : <MicIcon />}\n </button>\n )}\n <textarea\n className=\"gk-input\"\n ref={inputRef}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={isListeningState ? t('listeningPlaceholder') : t('inputPlaceholder')}\n aria-label={t('sendMessage')}\n rows={1}\n disabled={!isReady || isSending}\n tabIndex={isOpen ? 0 : -1}\n />\n <button\n className=\"gk-send-btn\"\n onClick={handleSend}\n disabled={!isReady || isSending || !inputValue.trim()}\n aria-label={t('sendMessage')}\n tabIndex={isOpen ? 0 : -1}\n >\n <SendIcon />\n </button>\n </div>\n </div>\n\n {/* Privacy Consent Dialog */}\n {consentRequired && !hasConsent && (\n <div\n className=\"gk-consent-dialog\"\n data-open={showConsentDialog ? 'true' : 'false'}\n role=\"dialog\"\n aria-label=\"Privacy consent\"\n aria-hidden={!showConsentDialog}\n onKeyDown={handleConsentKeyDown}\n >\n <p className=\"gk-consent-message\">\n This assistant uses AI to help you navigate this site. Your questions will be processed by an AI service.\n </p>\n <div className=\"gk-consent-actions\">\n <button\n className=\"gk-consent-btn gk-consent-btn--decline\"\n onClick={handleConsentDecline}\n tabIndex={showConsentDialog ? 0 : -1}\n >\n Decline\n </button>\n <button\n className=\"gk-consent-btn gk-consent-btn--accept\"\n onClick={handleConsentAccept}\n tabIndex={showConsentDialog ? 0 : -1}\n >\n Accept\n </button>\n </div>\n </div>\n )}\n\n {/* FAB */}\n <button\n className=\"gk-fab\"\n ref={fabRef}\n onClick={togglePanel}\n aria-label={isOpen ? t('closeAssistant') : t('openAssistant')}\n aria-expanded={isOpen || showConsentDialog}\n aria-haspopup=\"dialog\"\n >\n {isOpen ? <CloseIcon /> : <ChatIcon />}\n </button>\n </>\n );\n\n // ---- SSR guard: render nothing on the server ----\n\n if (typeof window === 'undefined') {\n return null;\n }\n\n return (\n <div\n ref={shadowHostRef}\n id=\"guidekit-widget\"\n style={{\n // The host element itself is positioned via :host in Shadow DOM CSS,\n // but we also set fixed positioning here as a fallback.\n position: 'fixed',\n zIndex: 2147483647,\n bottom: '24px',\n right: '24px',\n // Ensure the host doesn't interfere with page layout\n margin: 0,\n padding: 0,\n border: 'none',\n background: 'none',\n }}\n >\n {shadowReady && portalReady && shadowContainerRef.current && createPortalRef.current\n ? createPortalRef.current(widgetUI, shadowContainerRef.current)\n : null}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Re-exports for convenience\n// ---------------------------------------------------------------------------\n\nexport type {\n GuideKitCoreOptions,\n GuideKitProviderProps,\n AgentState,\n GuideKitStore,\n GuideKitErrorType,\n GuideKitEvent,\n};\n"]}
@@ -0,0 +1,68 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { GuideKitProviderProps, AgentState, GuideKitErrorType } from '@guidekit/core';
3
+ export { AgentState, GuideKitCoreOptions, GuideKitErrorType, GuideKitEvent, GuideKitProviderProps, GuideKitStore } from '@guidekit/core';
4
+ import { ReactNode } from 'react';
5
+
6
+ declare function GuideKitProvider(props: GuideKitProviderProps & {
7
+ children: ReactNode;
8
+ }): react_jsx_runtime.JSX.Element;
9
+ declare function useGuideKitStatus(): {
10
+ isReady: boolean;
11
+ agentState: AgentState;
12
+ error: GuideKitErrorType | null;
13
+ };
14
+ declare function useGuideKitVoice(): {
15
+ isListening: boolean;
16
+ isSpeaking: boolean;
17
+ startListening: () => void;
18
+ stopListening: () => void;
19
+ sendText: (text: string) => Promise<string>;
20
+ };
21
+ declare function useGuideKitActions(): {
22
+ highlight: (sectionId: string, options?: {
23
+ selector?: string;
24
+ tooltip?: string;
25
+ position?: string;
26
+ }) => void;
27
+ dismissHighlight: () => void;
28
+ scrollToSection: (sectionId: string, offset?: number) => void;
29
+ startTour: (sectionIds: string[], mode?: 'auto' | 'manual') => void;
30
+ navigate: (href: string) => void;
31
+ };
32
+ declare function useGuideKitContext(): {
33
+ setPageContext: (context: Record<string, unknown>) => void;
34
+ addContext: (key: string, value: unknown) => void;
35
+ registerAction: (actionId: string, action: {
36
+ description: string;
37
+ parameters: Record<string, unknown>;
38
+ handler: (params: Record<string, unknown>) => Promise<unknown>;
39
+ }) => void;
40
+ };
41
+ declare function useGuideKit(): {
42
+ isReady: boolean;
43
+ agentState: AgentState;
44
+ error: GuideKitErrorType | null;
45
+ isListening: boolean;
46
+ isSpeaking: boolean;
47
+ startListening: () => void;
48
+ stopListening: () => void;
49
+ sendText: (text: string) => Promise<string>;
50
+ highlight: (sectionId: string, options?: {
51
+ selector?: string;
52
+ tooltip?: string;
53
+ position?: string;
54
+ }) => void;
55
+ dismissHighlight: () => void;
56
+ scrollToSection: (sectionId: string, offset?: number) => void;
57
+ startTour: (sectionIds: string[], mode?: 'auto' | 'manual') => void;
58
+ navigate: (href: string) => void;
59
+ setPageContext: (context: Record<string, unknown>) => void;
60
+ addContext: (key: string, value: unknown) => void;
61
+ registerAction: (actionId: string, action: {
62
+ description: string;
63
+ parameters: Record<string, unknown>;
64
+ handler: (params: Record<string, unknown>) => Promise<unknown>;
65
+ }) => void;
66
+ };
67
+
68
+ export { GuideKitProvider, useGuideKit, useGuideKitActions, useGuideKitContext, useGuideKitStatus, useGuideKitVoice };
@@ -0,0 +1,68 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { GuideKitProviderProps, AgentState, GuideKitErrorType } from '@guidekit/core';
3
+ export { AgentState, GuideKitCoreOptions, GuideKitErrorType, GuideKitEvent, GuideKitProviderProps, GuideKitStore } from '@guidekit/core';
4
+ import { ReactNode } from 'react';
5
+
6
+ declare function GuideKitProvider(props: GuideKitProviderProps & {
7
+ children: ReactNode;
8
+ }): react_jsx_runtime.JSX.Element;
9
+ declare function useGuideKitStatus(): {
10
+ isReady: boolean;
11
+ agentState: AgentState;
12
+ error: GuideKitErrorType | null;
13
+ };
14
+ declare function useGuideKitVoice(): {
15
+ isListening: boolean;
16
+ isSpeaking: boolean;
17
+ startListening: () => void;
18
+ stopListening: () => void;
19
+ sendText: (text: string) => Promise<string>;
20
+ };
21
+ declare function useGuideKitActions(): {
22
+ highlight: (sectionId: string, options?: {
23
+ selector?: string;
24
+ tooltip?: string;
25
+ position?: string;
26
+ }) => void;
27
+ dismissHighlight: () => void;
28
+ scrollToSection: (sectionId: string, offset?: number) => void;
29
+ startTour: (sectionIds: string[], mode?: 'auto' | 'manual') => void;
30
+ navigate: (href: string) => void;
31
+ };
32
+ declare function useGuideKitContext(): {
33
+ setPageContext: (context: Record<string, unknown>) => void;
34
+ addContext: (key: string, value: unknown) => void;
35
+ registerAction: (actionId: string, action: {
36
+ description: string;
37
+ parameters: Record<string, unknown>;
38
+ handler: (params: Record<string, unknown>) => Promise<unknown>;
39
+ }) => void;
40
+ };
41
+ declare function useGuideKit(): {
42
+ isReady: boolean;
43
+ agentState: AgentState;
44
+ error: GuideKitErrorType | null;
45
+ isListening: boolean;
46
+ isSpeaking: boolean;
47
+ startListening: () => void;
48
+ stopListening: () => void;
49
+ sendText: (text: string) => Promise<string>;
50
+ highlight: (sectionId: string, options?: {
51
+ selector?: string;
52
+ tooltip?: string;
53
+ position?: string;
54
+ }) => void;
55
+ dismissHighlight: () => void;
56
+ scrollToSection: (sectionId: string, offset?: number) => void;
57
+ startTour: (sectionIds: string[], mode?: 'auto' | 'manual') => void;
58
+ navigate: (href: string) => void;
59
+ setPageContext: (context: Record<string, unknown>) => void;
60
+ addContext: (key: string, value: unknown) => void;
61
+ registerAction: (actionId: string, action: {
62
+ description: string;
63
+ parameters: Record<string, unknown>;
64
+ handler: (params: Record<string, unknown>) => Promise<unknown>;
65
+ }) => void;
66
+ };
67
+
68
+ export { GuideKitProvider, useGuideKit, useGuideKitActions, useGuideKitContext, useGuideKitStatus, useGuideKitVoice };