@speechos/client 0.2.0 → 0.2.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.
Files changed (40) hide show
  1. package/dist/form-detector.d.ts +1 -0
  2. package/dist/form-detector.d.ts.map +1 -0
  3. package/dist/form-detector.test.d.ts +5 -0
  4. package/dist/form-detector.test.d.ts.map +1 -0
  5. package/dist/index.cjs +2785 -314
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +2756 -248
  10. package/dist/index.js.map +1 -1
  11. package/dist/speechos.d.ts +1 -0
  12. package/dist/speechos.d.ts.map +1 -0
  13. package/dist/ui/action-bubbles.d.ts +1 -0
  14. package/dist/ui/action-bubbles.d.ts.map +1 -0
  15. package/dist/ui/icons.d.ts +1 -0
  16. package/dist/ui/icons.d.ts.map +1 -0
  17. package/dist/ui/index.d.ts +1 -0
  18. package/dist/ui/index.d.ts.map +1 -0
  19. package/dist/ui/mic-button.d.ts +1 -0
  20. package/dist/ui/mic-button.d.ts.map +1 -0
  21. package/dist/ui/settings-button.d.ts +1 -0
  22. package/dist/ui/settings-button.d.ts.map +1 -0
  23. package/dist/ui/settings-modal.d.ts +1 -0
  24. package/dist/ui/settings-modal.d.ts.map +1 -0
  25. package/dist/ui/styles/theme.d.ts +1 -0
  26. package/dist/ui/styles/theme.d.ts.map +1 -0
  27. package/dist/ui/widget.d.ts +1 -0
  28. package/dist/ui/widget.d.ts.map +1 -0
  29. package/package.json +4 -6
  30. package/dist/form-detector.d.cts +0 -25
  31. package/dist/index.d.cts +0 -13
  32. package/dist/speechos.d.cts +0 -74
  33. package/dist/ui/action-bubbles.d.cts +0 -17
  34. package/dist/ui/icons.d.cts +0 -88
  35. package/dist/ui/index.d.cts +0 -20
  36. package/dist/ui/mic-button.d.cts +0 -34
  37. package/dist/ui/settings-button.d.cts +0 -16
  38. package/dist/ui/settings-modal.d.cts +0 -34
  39. package/dist/ui/styles/theme.d.cts +0 -17
  40. package/dist/ui/widget.d.cts +0 -64
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["element: Element | null","event: FocusEvent","formDetector: FormDetector","config: SpeechOSConfig","events","userId: string","SpeechOSClass"],"sources":["../src/form-detector.ts","../src/speechos.ts","../src/index.ts"],"sourcesContent":["/**\n * Form field focus detection for SpeechOS Client SDK\n * Detects when users focus on form fields and manages widget visibility\n */\n\nimport { events, state } from \"@speechos/core\";\n\n/**\n * Check if an element is a form field that we should track\n */\nfunction isFormField(element: Element | null): element is HTMLElement {\n if (!element || !(element instanceof HTMLElement)) {\n return false;\n }\n\n const tagName = element.tagName.toLowerCase();\n\n // Check for input, textarea\n if (tagName === \"input\" || tagName === \"textarea\") {\n // Exclude certain input types that don't accept text\n if (tagName === \"input\") {\n const type = (element as HTMLInputElement).type.toLowerCase();\n const excludedTypes = [\n \"checkbox\",\n \"radio\",\n \"submit\",\n \"button\",\n \"reset\",\n \"file\",\n \"hidden\",\n ];\n if (excludedTypes.includes(type)) {\n return false;\n }\n }\n return true;\n }\n\n // Check for contenteditable\n if (\n element.isContentEditable ||\n element.getAttribute(\"contenteditable\") === \"true\"\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Form detector class that manages focus tracking\n */\nexport class FormDetector {\n private isActive = false;\n private focusHandler: ((event: FocusEvent) => void) | null = null;\n private blurHandler: ((event: FocusEvent) => void) | null = null;\n\n /**\n * Start detecting form field focus events\n */\n start(): void {\n if (this.isActive) {\n console.warn(\"FormDetector is already active\");\n return;\n }\n\n // Create event handlers\n this.focusHandler = (event: FocusEvent) => {\n const target = event.target as Element | null;\n\n if (isFormField(target)) {\n state.setFocusedElement(target);\n state.show();\n events.emit(\"form:focus\", { element: target });\n }\n };\n\n this.blurHandler = (event: FocusEvent) => {\n const target = event.target as Element | null;\n\n if (isFormField(target)) {\n // Check relatedTarget (where focus is going) immediately\n const relatedTarget = event.relatedTarget as Element | null;\n const widget = document.querySelector(\"speechos-widget\");\n\n // If focus is going to another form field or the widget, don't hide\n const goingToFormField = isFormField(relatedTarget);\n const goingToWidget =\n widget &&\n (widget.contains(relatedTarget) ||\n widget.shadowRoot?.contains(relatedTarget) ||\n relatedTarget === widget);\n\n if (goingToFormField || goingToWidget) {\n return;\n }\n\n // Delay hiding to allow for any edge cases\n setTimeout(() => {\n // Double-check: verify focus is still not on a form field or widget\n const activeElement = document.activeElement;\n const isWidgetFocused =\n widget &&\n (widget.contains(activeElement) ||\n widget.shadowRoot?.contains(activeElement));\n\n // Only hide if no form field is focused AND widget isn't focused\n if (!isFormField(activeElement) && !isWidgetFocused) {\n state.setFocusedElement(null);\n state.hide();\n events.emit(\"form:blur\", { element: null });\n }\n }, 150);\n }\n };\n\n // Attach listeners to document\n document.addEventListener(\"focusin\", this.focusHandler, true);\n document.addEventListener(\"focusout\", this.blurHandler, true);\n\n this.isActive = true;\n }\n\n /**\n * Stop detecting form field focus events\n */\n stop(): void {\n if (!this.isActive) {\n return;\n }\n\n // Remove event listeners\n if (this.focusHandler) {\n document.removeEventListener(\"focusin\", this.focusHandler, true);\n this.focusHandler = null;\n }\n\n if (this.blurHandler) {\n document.removeEventListener(\"focusout\", this.blurHandler, true);\n this.blurHandler = null;\n }\n\n // Reset state\n state.setFocusedElement(null);\n state.hide();\n\n this.isActive = false;\n }\n\n /**\n * Check if the detector is currently active\n */\n get active(): boolean {\n return this.isActive;\n }\n}\n\n// Export singleton instance\nexport const formDetector: FormDetector = new FormDetector();\n","/**\n * Main SpeechOS Client SDK class\n * Composes core logic with UI components\n */\n\nimport type { SpeechOSConfig, SpeechOSState, SpeechOSEventMap } from \"@speechos/core\";\nimport {\n setConfig,\n getConfig,\n updateUserId,\n state,\n events,\n livekit,\n SpeechOSEventEmitter,\n} from \"@speechos/core\";\nimport { formDetector } from \"./form-detector.js\";\nimport \"./ui/index.js\"; // Auto-registers components\n\n/**\n * Main SpeechOS class for initializing and managing the SDK with UI\n */\nexport class SpeechOS {\n private static instance: SpeechOS | null = null;\n private static widgetElement: HTMLElement | null = null;\n private static isInitialized = false;\n\n /**\n * Initialize the SpeechOS SDK\n * @param config - Configuration options\n * @returns Promise that resolves when initialization is complete\n * @throws Error if configuration is invalid (e.g., missing apiKey)\n */\n static async init(config: SpeechOSConfig = {}): Promise<void> {\n if (this.isInitialized) {\n console.warn(\"SpeechOS is already initialized\");\n return;\n }\n\n try {\n // Validate and set configuration\n setConfig(config);\n } catch (error) {\n // Configuration errors are fatal - log and re-throw\n const errorMessage =\n error instanceof Error ? error.message : \"Invalid configuration\";\n console.error(`[SpeechOS] Error: ${errorMessage} (init_config)`);\n\n // Emit error event before throwing\n events.emit(\"error\", {\n code: \"init_config\",\n message: errorMessage,\n source: \"init\",\n });\n\n throw error;\n }\n\n const finalConfig = getConfig();\n\n // Create singleton instance\n this.instance = new SpeechOS();\n\n // Fetch LiveKit token\n try {\n if (finalConfig.debug) {\n console.log(\"[SpeechOS] Fetching LiveKit token...\");\n }\n await livekit.fetchToken();\n if (finalConfig.debug) {\n console.log(\"[SpeechOS] LiveKit token fetched successfully\");\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Failed to fetch token\";\n console.error(`[SpeechOS] Error: ${errorMessage} (init_token_fetch)`);\n\n // Emit error event for consumers\n events.emit(\"error\", {\n code: \"init_token_fetch\",\n message: errorMessage,\n source: \"init\",\n });\n\n // Continue initialization even if token fetch fails\n // The token will be fetched again when needed\n }\n\n // Start form detection\n formDetector.start();\n\n // Create and mount widget\n this.mountWidget();\n\n this.isInitialized = true;\n\n // Log initialization in debug mode\n if (finalConfig.debug) {\n console.log(\"[SpeechOS] Initialized with config:\", finalConfig);\n }\n }\n\n /**\n * Destroy the SpeechOS SDK and clean up resources\n */\n static async destroy(): Promise<void> {\n if (!this.isInitialized) {\n console.warn(\"SpeechOS is not initialized\");\n return;\n }\n\n // Stop form detection\n formDetector.stop();\n\n // Disconnect from LiveKit (also clears token)\n await livekit.disconnect();\n\n // Remove widget from DOM\n this.unmountWidget();\n\n // Clear all event listeners\n events.clear();\n\n // Reset state\n state.reset();\n\n // Clear instance\n this.instance = null;\n this.isInitialized = false;\n\n const config = getConfig();\n if (config.debug) {\n console.log(\"[SpeechOS] Destroyed and cleaned up\");\n }\n }\n\n /**\n * Check if SpeechOS is initialized\n */\n static get initialized(): boolean {\n return this.isInitialized;\n }\n\n /**\n * Get the current state\n */\n static getState(): SpeechOSState {\n return state.getState();\n }\n\n /**\n * Get the event emitter for external listeners\n */\n static get events(): SpeechOSEventEmitter {\n return events;\n }\n\n /**\n * Mount the widget to the DOM\n */\n private static mountWidget(): void {\n if (this.widgetElement) {\n console.warn(\"Widget is already mounted\");\n return;\n }\n\n // Create widget element\n const widget = document.createElement(\"speechos-widget\");\n this.widgetElement = widget;\n\n // Append to body\n document.body.appendChild(widget);\n }\n\n /**\n * Unmount the widget from the DOM\n */\n private static unmountWidget(): void {\n if (this.widgetElement) {\n this.widgetElement.remove();\n this.widgetElement = null;\n }\n }\n\n /**\n * Show the widget programmatically\n */\n static show(): void {\n state.show();\n }\n\n /**\n * Hide the widget programmatically\n */\n static hide(): void {\n state.hide();\n }\n\n /**\n * Identify the current user\n * Can be called after init() to associate sessions with a user identifier.\n * Clears the cached token so the next voice session uses the new userId.\n *\n * @param userId - User identifier from your system (e.g., user ID, email)\n *\n * @example\n * // Initialize SDK early\n * SpeechOS.init({ apiKey: 'xxx' });\n *\n * // Later, after user logs in\n * SpeechOS.identify('user_123');\n */\n static identify(userId: string): void {\n if (!this.isInitialized) {\n console.warn(\n \"SpeechOS.identify() called before init(). Call init() first.\"\n );\n return;\n }\n\n const config = getConfig();\n\n // Update the userId in config\n updateUserId(userId);\n\n // Clear cached token so next session gets a fresh one with the new userId\n livekit.clearToken();\n\n if (config.debug) {\n console.log(`[SpeechOS] User identified: ${userId}`);\n }\n }\n\n /**\n * Private constructor to prevent direct instantiation\n */\n private constructor() {\n // Singleton pattern - use SpeechOS.init() instead\n }\n}\n\n// Export singleton class as default\nexport default SpeechOS;\n","/**\n * @speechos/client\n *\n * Vanilla JS client SDK for embedding SpeechOS into web applications.\n * Includes Web Components UI and DOM-based form detection.\n */\n\nimport { SpeechOS as SpeechOSClass } from \"./speechos.js\";\n\n// Re-export everything from core\nexport {\n events,\n state,\n getConfig,\n setConfig,\n resetConfig,\n livekit,\n transcriptStore,\n DEFAULT_HOST,\n} from \"@speechos/core\";\n\nexport type {\n SpeechOSConfig,\n SpeechOSState,\n SpeechOSAction,\n SpeechOSEventMap,\n StateChangeCallback,\n UnsubscribeFn,\n RecordingState,\n TranscriptEntry,\n TranscriptAction,\n} from \"@speechos/core\";\n\n// Client-specific exports\nexport { formDetector, FormDetector } from \"./form-detector.js\";\n\n// Version\nexport const VERSION = \"0.1.0\";\n\n// Main SDK class\nexport { SpeechOSClass as SpeechOS };\nexport default SpeechOSClass;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/form-detector.ts","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit-html/lit-html.js","../../../node_modules/lit-element/lit-element.js","../../../node_modules/@lit/reactive-element/decorators/custom-element.js","../../../node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/@lit/reactive-element/decorators/state.js","../src/ui/styles/theme.ts","../../../node_modules/lit-html/directive.js","../../../node_modules/lit-html/directives/unsafe-html.js","../src/ui/icons.ts","../src/ui/mic-button.ts","../src/ui/action-bubbles.ts","../src/ui/settings-button.ts","../src/ui/settings-modal.ts","../src/ui/widget.ts","../src/speechos.ts","../src/index.ts"],"sourcesContent":["/**\n * Form field focus detection for SpeechOS Client SDK\n * Detects when users focus on form fields and manages widget visibility\n */\n\nimport { events, state } from \"@speechos/core\";\n\n/**\n * Check if an element is a form field that we should track\n */\nfunction isFormField(element: Element | null): element is HTMLElement {\n if (!element || !(element instanceof HTMLElement)) {\n return false;\n }\n\n const tagName = element.tagName.toLowerCase();\n\n // Check for input, textarea\n if (tagName === \"input\" || tagName === \"textarea\") {\n // Exclude certain input types that don't accept text\n if (tagName === \"input\") {\n const type = (element as HTMLInputElement).type.toLowerCase();\n const excludedTypes = [\n \"checkbox\",\n \"radio\",\n \"submit\",\n \"button\",\n \"reset\",\n \"file\",\n \"hidden\",\n ];\n if (excludedTypes.includes(type)) {\n return false;\n }\n }\n return true;\n }\n\n // Check for contenteditable\n if (\n element.isContentEditable ||\n element.getAttribute(\"contenteditable\") === \"true\"\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Form detector class that manages focus tracking\n */\nexport class FormDetector {\n private isActive = false;\n private focusHandler: ((event: FocusEvent) => void) | null = null;\n private blurHandler: ((event: FocusEvent) => void) | null = null;\n\n /**\n * Start detecting form field focus events\n */\n start(): void {\n if (this.isActive) {\n console.warn(\"FormDetector is already active\");\n return;\n }\n\n // Create event handlers\n this.focusHandler = (event: FocusEvent) => {\n const target = event.target as Element | null;\n\n if (isFormField(target)) {\n state.setFocusedElement(target);\n state.show();\n events.emit(\"form:focus\", { element: target });\n }\n };\n\n this.blurHandler = (event: FocusEvent) => {\n const target = event.target as Element | null;\n\n if (isFormField(target)) {\n // Check relatedTarget (where focus is going) immediately\n const relatedTarget = event.relatedTarget as Element | null;\n const widget = document.querySelector(\"speechos-widget\");\n\n // If focus is going to another form field or the widget, don't hide\n const goingToFormField = isFormField(relatedTarget);\n const goingToWidget =\n widget &&\n (widget.contains(relatedTarget) ||\n widget.shadowRoot?.contains(relatedTarget) ||\n relatedTarget === widget);\n\n if (goingToFormField || goingToWidget) {\n return;\n }\n\n // Delay hiding to allow for any edge cases\n setTimeout(() => {\n // Double-check: verify focus is still not on a form field or widget\n const activeElement = document.activeElement;\n const isWidgetFocused =\n widget &&\n (widget.contains(activeElement) ||\n widget.shadowRoot?.contains(activeElement));\n\n // Only hide if no form field is focused AND widget isn't focused\n if (!isFormField(activeElement) && !isWidgetFocused) {\n state.setFocusedElement(null);\n state.hide();\n events.emit(\"form:blur\", { element: null });\n }\n }, 150);\n }\n };\n\n // Attach listeners to document\n document.addEventListener(\"focusin\", this.focusHandler, true);\n document.addEventListener(\"focusout\", this.blurHandler, true);\n\n this.isActive = true;\n }\n\n /**\n * Stop detecting form field focus events\n */\n stop(): void {\n if (!this.isActive) {\n return;\n }\n\n // Remove event listeners\n if (this.focusHandler) {\n document.removeEventListener(\"focusin\", this.focusHandler, true);\n this.focusHandler = null;\n }\n\n if (this.blurHandler) {\n document.removeEventListener(\"focusout\", this.blurHandler, true);\n this.blurHandler = null;\n }\n\n // Reset state\n state.setFocusedElement(null);\n state.hide();\n\n this.isActive = false;\n }\n\n /**\n * Check if the detector is currently active\n */\n get active(): boolean {\n return this.isActive;\n }\n}\n\n// Export singleton instance\nexport const formDetector: FormDetector = new FormDetector();\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * Shared styles and CSS variables for SpeechOS UI components\n */\n\nimport { css, type CSSResult } from 'lit';\n\n/**\n * CSS variables and theme tokens\n * These can be customized by the host application\n */\nexport const themeStyles: CSSResult = css`\n :host {\n /* Color tokens */\n --speechos-primary: #10B981;\n --speechos-primary-hover: #059669;\n --speechos-primary-active: #047857;\n\n --speechos-bg: #ffffff;\n --speechos-bg-hover: #f9fafb;\n --speechos-surface: #f3f4f6;\n\n --speechos-text: #111827;\n --speechos-text-secondary: #6b7280;\n\n --speechos-border: #e5e7eb;\n --speechos-shadow: rgba(0, 0, 0, 0.1);\n --speechos-shadow-lg: rgba(0, 0, 0, 0.15);\n\n /* Spacing */\n --speechos-spacing-xs: 4px;\n --speechos-spacing-sm: 8px;\n --speechos-spacing-md: 12px;\n --speechos-spacing-lg: 16px;\n --speechos-spacing-xl: 24px;\n\n /* Border radius */\n --speechos-radius-sm: 6px;\n --speechos-radius-md: 8px;\n --speechos-radius-lg: 12px;\n --speechos-radius-full: 9999px;\n\n /* Transitions */\n --speechos-transition-fast: 150ms ease;\n --speechos-transition-base: 200ms ease;\n --speechos-transition-slow: 300ms ease;\n\n /* Z-index */\n --speechos-z-base: 999999;\n --speechos-z-popup: 1000000;\n }\n`;\n\n/**\n * Common animation keyframes\n */\nexport const animations: CSSResult = css`\n @keyframes speechos-fadeIn {\n from {\n opacity: 0;\n transform: translateY(8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes speechos-fadeOut {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(8px);\n }\n }\n\n @keyframes speechos-pulse {\n 0%, 100% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.8;\n transform: scale(0.95);\n }\n }\n\n @keyframes speechos-slideUp {\n from {\n opacity: 0;\n transform: translateY(12px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n }\n\n @keyframes speechos-scaleIn {\n from {\n opacity: 0;\n transform: scale(0.9);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n`;\n\n/**\n * Utility styles for common patterns\n */\nexport const utilityStyles: CSSResult = css`\n .speechos-hidden {\n display: none !important;\n }\n\n .speechos-visible {\n display: block;\n }\n\n .speechos-fade-in {\n animation: speechos-fadeIn var(--speechos-transition-base) forwards;\n }\n\n .speechos-fade-out {\n animation: speechos-fadeOut var(--speechos-transition-base) forwards;\n }\n\n .speechos-pulse {\n animation: speechos-pulse 2s ease-in-out infinite;\n }\n`;\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{directive as r,Directive as s,PartType as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends s{constructor(i){if(super(i),this.it=t,i.type!==n.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=r(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","/**\n * Icon imports and templates using inline SVG\n */\n\nimport { html, type TemplateResult } from \"lit\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\n\n/**\n * Helper to create an SVG icon template\n */\nfunction createIcon(paths: string, size = 20): TemplateResult {\n const svgString = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"${size}\"\n height=\"${size}\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n style=\"display: block;\"\n >\n ${paths}\n </svg>\n `;\n\n return html`${unsafeHTML(svgString)}`;\n}\n\n/**\n * Microphone icon for the main button\n * Lucide Mic icon paths\n */\nexport const micIcon = (size = 20): TemplateResult =>\n createIcon(\n '<path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\"/><path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"/><line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\"/>',\n size\n );\n\n/**\n * Message square icon for dictate action\n * Lucide MessageSquare icon paths\n */\nexport const dictateIcon = (size = 18): TemplateResult =>\n createIcon(\n '<path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/>',\n size\n );\n\n/**\n * Pencil icon for edit action\n * Lucide Pencil icon paths\n */\nexport const editIcon = (size = 18): TemplateResult =>\n createIcon(\n '<path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\"/><path d=\"m15 5 4 4\"/>',\n size\n );\n\n/**\n * Stop/Square icon for stopping recording\n * Lucide Square icon (filled)\n */\nexport const stopIcon = (size = 18): TemplateResult => {\n const svgString = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"${size}\"\n height=\"${size}\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n stroke=\"none\"\n style=\"display: block;\"\n >\n <rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\" />\n </svg>\n `;\n return html`${unsafeHTML(svgString)}`;\n};\n\n/**\n * Loader/spinner icon for connecting state\n */\nexport const loaderIcon = (size = 20): TemplateResult => {\n const svgString = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"${size}\"\n height=\"${size}\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n style=\"display: block; animation: spin 1s linear infinite;\"\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\"/>\n </svg>\n `;\n return html`${unsafeHTML(svgString)}`;\n};\n\n/**\n * Check icon for \"Keep\" action\n * Lucide Check icon paths\n */\nexport const checkIcon = (size = 18): TemplateResult =>\n createIcon('<path d=\"M20 6 9 17l-5-5\"/>', size);\n\n/**\n * Undo icon for \"Undo\" action\n * Lucide Undo2 icon paths\n */\nexport const undoIcon = (size = 18): TemplateResult =>\n createIcon(\n '<path d=\"M9 14 4 9l5-5\"/><path d=\"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11\"/>',\n size\n );\n\n/**\n * Refresh icon for \"Continue editing\" action\n * Lucide RefreshCw icon paths\n */\nexport const refreshIcon = (size = 18): TemplateResult =>\n createIcon(\n '<path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\"/><path d=\"M21 3v5h-5\"/><path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\"/><path d=\"M8 16H3v5\"/>',\n size\n );\n\n/**\n * X icon for cancel action\n * Lucide X icon paths\n */\nexport const xIcon = (size = 14): TemplateResult =>\n createIcon('<path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/>', size);\n\n/**\n * More vertical (three dots) icon for settings button\n * Lucide MoreVertical icon paths\n */\nexport const moreVerticalIcon = (size = 16): TemplateResult =>\n createIcon(\n '<circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"12\" cy=\"5\" r=\"1\"/><circle cx=\"12\" cy=\"19\" r=\"1\"/>',\n size\n );\n\n/**\n * Clipboard/list icon for transcripts tab\n * Lucide ClipboardList icon paths\n */\nexport const clipboardIcon = (size = 16): TemplateResult =>\n createIcon(\n '<rect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\"/><path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"/><path d=\"M12 11h4\"/><path d=\"M12 16h4\"/><path d=\"M8 11h.01\"/><path d=\"M8 16h.01\"/>',\n size\n );\n\n/**\n * Help circle icon for help tab\n * Lucide HelpCircle icon paths\n */\nexport const helpCircleIcon = (size = 16): TemplateResult =>\n createIcon(\n '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"/><path d=\"M12 17h.01\"/>',\n size\n );\n\n/**\n * Info icon for about tab\n * Lucide Info icon paths\n */\nexport const infoIcon = (size = 16): TemplateResult =>\n createIcon(\n '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/>',\n size\n );\n\n/**\n * Settings/cog icon for settings tab\n * Lucide Settings icon paths\n */\nexport const settingsIcon = (size = 16): TemplateResult =>\n createIcon(\n '<path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>',\n size\n );\n\n/**\n * Trash icon for delete action\n * Lucide Trash2 icon paths\n */\nexport const trashIcon = (size = 14): TemplateResult =>\n createIcon(\n '<path d=\"M3 6h18\"/><path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\"/><path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\"/><line x1=\"10\" x2=\"10\" y1=\"11\" y2=\"17\"/><line x1=\"14\" x2=\"14\" y1=\"11\" y2=\"17\"/>',\n size\n );\n\n/**\n * External link icon\n * Lucide ExternalLink icon paths\n */\nexport const externalLinkIcon = (size = 14): TemplateResult =>\n createIcon(\n '<path d=\"M15 3h6v6\"/><path d=\"M10 14 21 3\"/><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/>',\n size\n );\n\n/**\n * Copy icon\n * Lucide Copy icon paths\n */\nexport const copyIcon = (size = 14): TemplateResult =>\n createIcon(\n '<rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/>',\n size\n );\n","/**\n * Microphone button component\n * A circular button that toggles the action bubbles and handles recording states\n */\n\nimport {\n LitElement,\n html,\n css,\n type CSSResultGroup,\n type TemplateResult,\n} from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { themeStyles, animations } from \"./styles/theme.js\";\nimport { micIcon, stopIcon, loaderIcon, xIcon } from \"./icons.js\";\nimport type { RecordingState, SpeechOSAction } from \"@speechos/core\";\n\n@customElement(\"speechos-mic-button\")\nexport class SpeechOSMicButton extends LitElement {\n static styles: CSSResultGroup = [\n themeStyles,\n animations,\n css`\n :host {\n display: inline-block;\n }\n\n .button-wrapper {\n position: relative;\n }\n\n .mic-button {\n width: 56px;\n height: 56px;\n border-radius: var(--speechos-radius-full);\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n overflow: hidden;\n }\n\n .mic-button:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 20px rgba(16, 185, 129, 0.5);\n }\n\n .mic-button:active {\n transform: scale(0.98);\n }\n\n /* Expanded state - bubbles visible */\n .mic-button.expanded {\n background: linear-gradient(135deg, #059669 0%, #047857 100%);\n }\n\n /* Connecting state */\n .mic-button.connecting {\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n cursor: wait;\n }\n\n .mic-button.connecting .button-icon {\n animation: spin 1s linear infinite;\n }\n\n /* Recording state - red with pulse */\n .mic-button.recording {\n background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n box-shadow: 0 4px 12px rgba(239, 68, 68, 0.4);\n }\n\n .mic-button.recording:hover {\n background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);\n box-shadow: 0 6px 16px rgba(239, 68, 68, 0.5);\n }\n\n /* Pulse ring animation for recording */\n .pulse-ring {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n }\n\n .pulse-ring::before,\n .pulse-ring::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background: rgba(239, 68, 68, 0.4);\n animation: pulse-ring 1.5s ease-out infinite;\n }\n\n .pulse-ring::after {\n animation-delay: 0.5s;\n }\n\n @keyframes pulse-ring {\n 0% {\n transform: scale(1);\n opacity: 0.6;\n }\n 100% {\n transform: scale(1.8);\n opacity: 0;\n }\n }\n\n /* Processing state (transcribing) */\n .mic-button.processing {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n cursor: wait;\n }\n\n .mic-button.processing .button-icon {\n animation: pulse-scale 1s ease-in-out infinite;\n }\n\n /* Processing state (editing) - purple */\n .mic-button.processing.editing {\n background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);\n box-shadow: 0 4px 12px rgba(139, 92, 246, 0.4);\n }\n\n @keyframes pulse-scale {\n 0%,\n 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(0.85);\n }\n }\n\n /* Error state */\n .mic-button.error {\n background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n box-shadow: 0 4px 12px rgba(239, 68, 68, 0.4);\n cursor: pointer;\n }\n\n .mic-button.error:hover {\n background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);\n box-shadow: 0 6px 20px rgba(239, 68, 68, 0.5);\n }\n\n @keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n\n .button-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n z-index: 1;\n transition: transform 0.2s ease;\n }\n\n /* Status label bubble below button - always centered */\n .status-label {\n position: absolute;\n bottom: -32px;\n left: 50%;\n transform: translateX(-50%) scale(0.8);\n font-size: 11px;\n font-weight: 600;\n color: white;\n white-space: nowrap;\n opacity: 0;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 6px 12px;\n border-radius: 20px;\n background: #374151;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transition: all 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);\n pointer-events: none;\n }\n\n /* Pop-in animation when visible */\n .status-label.visible {\n opacity: 1;\n transform: translateX(-50%) scale(1);\n }\n\n /* Recording state - red bubble with dot indicator */\n .status-label.recording {\n background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);\n padding-left: 20px; /* Make room for the pulsing dot */\n }\n\n /* Processing state - amber bubble (for dictate/transcribing) */\n .status-label.processing {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3);\n }\n\n /* Editing state - purple bubble */\n .status-label.editing {\n background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);\n box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3);\n }\n\n /* Connecting state - emerald bubble */\n .status-label.connecting {\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);\n }\n\n /* Subtle pulse animation for the label */\n .status-label.recording::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 8px;\n width: 6px;\n height: 6px;\n background: white;\n border-radius: 50%;\n transform: translateY(-50%);\n animation: label-pulse 1s ease-in-out infinite;\n }\n\n @keyframes label-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.4;\n }\n }\n\n /* Cancel button - positioned to the right of the main mic button */\n .cancel-button {\n position: absolute;\n top: 50%;\n right: -36px;\n transform: translateY(-50%) scale(0.6);\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: rgba(24, 24, 27, 0.8);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n border: 1px solid rgba(63, 63, 70, 0.5);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: rgba(161, 161, 170, 1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n transition: all 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);\n pointer-events: none;\n opacity: 0;\n }\n\n .cancel-button.visible {\n opacity: 1;\n transform: translateY(-50%) scale(1);\n pointer-events: auto;\n }\n\n .cancel-button:hover {\n transform: translateY(-50%) scale(1.15);\n background: rgba(39, 39, 42, 0.9);\n border-color: rgba(63, 63, 70, 0.8);\n color: rgba(250, 250, 250, 1);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);\n }\n\n .cancel-button:active {\n transform: translateY(-50%) scale(0.95);\n }\n\n .cancel-button svg {\n stroke-width: 2.5;\n }\n\n /* Close/dismiss button - positioned to the right of the main mic button */\n .close-button {\n position: absolute;\n top: 50%;\n right: -36px;\n transform: translateY(-50%) scale(0.6);\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: rgba(24, 24, 27, 0.8);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n border: 1px solid rgba(63, 63, 70, 0.5);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: rgba(161, 161, 170, 1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n transition: all 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);\n pointer-events: none;\n opacity: 0;\n }\n\n .close-button.visible {\n opacity: 1;\n transform: translateY(-50%) scale(1);\n pointer-events: auto;\n }\n\n .close-button:hover {\n transform: translateY(-50%) scale(1.15);\n background: rgba(39, 39, 42, 0.9);\n border-color: rgba(63, 63, 70, 0.8);\n color: rgba(250, 250, 250, 1);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);\n }\n\n .close-button:active {\n transform: translateY(-50%) scale(0.95);\n }\n\n .close-button svg {\n stroke-width: 2.5;\n }\n\n /* Error message display */\n .error-message {\n position: absolute;\n bottom: 72px; /* Above button */\n left: 50%;\n transform: translateX(-50%) translateY(8px);\n max-width: 280px;\n font-size: 13px;\n color: white;\n white-space: normal;\n text-align: center;\n padding: 12px 16px;\n border-radius: 12px;\n background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);\n transition: all 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);\n pointer-events: none;\n opacity: 0;\n line-height: 1.4;\n }\n\n .error-message.visible {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n\n /* Retry button */\n .retry-button {\n display: block;\n margin: 8px auto 0;\n padding: 6px 12px;\n background: rgba(255, 255, 255, 0.2);\n border: 1px solid rgba(255, 255, 255, 0.3);\n border-radius: 6px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s;\n pointer-events: auto;\n }\n\n .retry-button:hover {\n background: rgba(255, 255, 255, 0.3);\n border-color: rgba(255, 255, 255, 0.5);\n }\n `,\n ];\n\n @property({ type: Boolean })\n expanded = false;\n\n @property({ type: String })\n recordingState: RecordingState = \"idle\";\n\n @property({ type: String })\n activeAction: SpeechOSAction | null = null;\n\n @property({ type: String })\n editPreviewText: string = \"\";\n\n @property({ type: String })\n errorMessage: string | null = null;\n\n private handleClick(e: Event): void {\n e.stopPropagation();\n e.preventDefault();\n\n // Different behavior based on recording state\n if (this.recordingState === \"recording\") {\n // Stop recording\n this.dispatchEvent(\n new CustomEvent(\"stop-recording\", {\n bubbles: true,\n composed: true,\n })\n );\n } else if (this.recordingState === \"idle\") {\n // Toggle bubbles menu\n this.dispatchEvent(\n new CustomEvent(\"mic-click\", {\n bubbles: true,\n composed: true,\n })\n );\n } else if (this.recordingState === \"error\") {\n // Clear error on click\n this.dispatchEvent(\n new CustomEvent(\"cancel-operation\", {\n bubbles: true,\n composed: true,\n })\n );\n }\n // Do nothing during connecting or processing states\n }\n\n private handleCancel(e: Event): void {\n e.stopPropagation();\n e.preventDefault();\n\n this.dispatchEvent(\n new CustomEvent(\"cancel-operation\", {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private stopEvent(e: Event): void {\n e.stopPropagation();\n }\n\n private handleClose(e: Event): void {\n e.stopPropagation();\n e.preventDefault();\n\n this.dispatchEvent(\n new CustomEvent(\"close-widget\", {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleRetry(e: Event): void {\n e.stopPropagation();\n e.preventDefault();\n\n this.dispatchEvent(\n new CustomEvent(\"retry-connection\", {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private getButtonClass(): string {\n const classes = [\"mic-button\"];\n\n if (this.expanded && this.recordingState === \"idle\") {\n classes.push(\"expanded\");\n }\n\n if (this.recordingState !== \"idle\") {\n classes.push(this.recordingState);\n // Add editing class for purple styling during edit processing\n if (\n this.recordingState === \"processing\" &&\n this.activeAction === \"edit\"\n ) {\n classes.push(\"editing\");\n }\n }\n\n return classes.join(\" \");\n }\n\n private renderIcon(): TemplateResult {\n switch (this.recordingState) {\n case \"connecting\":\n return loaderIcon(24);\n case \"recording\":\n return stopIcon(20);\n case \"processing\":\n return loaderIcon(24);\n case \"error\":\n return xIcon(20);\n default:\n return micIcon(24);\n }\n }\n\n private getAriaLabel(): string {\n switch (this.recordingState) {\n case \"connecting\":\n return \"Connecting...\";\n case \"recording\":\n return \"Stop recording\";\n case \"processing\":\n return \"Processing...\";\n case \"error\":\n return \"Connection error - click to dismiss\";\n default:\n return \"Open voice commands\";\n }\n }\n\n /**\n * Truncate and format preview text for display\n */\n private formatPreviewText(text: string, maxLength: number = 10): string {\n // Trim whitespace and collapse multiple spaces\n const trimmed = text.trim().replace(/\\s+/g, \" \");\n if (!trimmed) return \"\";\n\n if (trimmed.length <= maxLength) {\n return `\"${trimmed}\"`;\n }\n return `\"${trimmed.substring(0, maxLength)}…\"`;\n }\n\n private getStatusLabel(): string {\n switch (this.recordingState) {\n case \"connecting\":\n return \"Connecting...\";\n case \"recording\":\n if (this.activeAction === \"edit\" && this.editPreviewText) {\n const preview = this.formatPreviewText(this.editPreviewText);\n return `Editing ${preview}...`;\n }\n return \"Listening\";\n case \"processing\":\n if (this.activeAction === \"edit\") {\n if (this.editPreviewText) {\n const preview = this.formatPreviewText(this.editPreviewText);\n return `Editing ${preview}...`;\n }\n return \"Editing...\";\n }\n return \"Transcribing...\";\n default:\n return \"\";\n }\n }\n\n private getStatusClass(): string {\n if (this.recordingState === \"processing\" && this.activeAction === \"edit\") {\n return \"editing\";\n }\n return this.recordingState;\n }\n\n render(): TemplateResult {\n const showPulse = this.recordingState === \"recording\";\n const statusLabel = this.getStatusLabel();\n const showStatus = this.recordingState !== \"idle\";\n const showCancel =\n this.recordingState === \"connecting\" ||\n this.recordingState === \"recording\" ||\n this.recordingState === \"processing\";\n const showError = this.recordingState === \"error\" && this.errorMessage;\n // Show close button in idle state (both solo mic and expanded)\n const showClose = this.recordingState === \"idle\";\n\n return html`\n <div class=\"button-wrapper\">\n ${showPulse ? html`<div class=\"pulse-ring\"></div>` : \"\"}\n ${showError\n ? html`\n <div class=\"error-message ${showError ? \"visible\" : \"\"}\">\n ${this.errorMessage}\n <button class=\"retry-button\" @click=\"${this.handleRetry}\">\n Retry Connection\n </button>\n </div>\n `\n : \"\"}\n\n <button\n class=\"${this.getButtonClass()}\"\n @click=\"${this.handleClick}\"\n aria-label=\"${this.getAriaLabel()}\"\n title=\"${this.getAriaLabel()}\"\n ?disabled=\"${this.recordingState === \"connecting\" ||\n this.recordingState === \"processing\"}\"\n >\n <span class=\"button-icon\">${this.renderIcon()}</span>\n </button>\n\n <span\n class=\"status-label ${showStatus\n ? \"visible\"\n : \"\"} ${this.getStatusClass()}\"\n >\n ${statusLabel}\n </span>\n\n <button\n class=\"close-button ${showClose ? \"visible\" : \"\"}\"\n @click=\"${this.handleClose}\"\n @mousedown=\"${this.stopEvent}\"\n aria-label=\"Close\"\n title=\"Close\"\n >\n ${xIcon(12)}\n </button>\n\n <button\n class=\"cancel-button ${showCancel ? \"visible\" : \"\"}\"\n @click=\"${this.handleCancel}\"\n @mousedown=\"${this.stopEvent}\"\n aria-label=\"Cancel\"\n title=\"Cancel\"\n >\n ${xIcon(12)}\n </button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"speechos-mic-button\": SpeechOSMicButton;\n }\n}\n","/**\n * Action bubbles component\n * Displays available actions (Dictate, Edit) above the mic button\n */\n\nimport { LitElement, html, css, type CSSResultGroup } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { themeStyles, animations } from \"./styles/theme.js\";\nimport { dictateIcon, editIcon } from \"./icons.js\";\nimport { events, type SpeechOSAction } from \"@speechos/core\";\n\ninterface ActionButton {\n id: SpeechOSAction;\n label: string;\n icon: ReturnType<typeof dictateIcon>;\n}\n\n@customElement(\"speechos-action-bubbles\")\nexport class SpeechOSActionBubbles extends LitElement {\n static styles: CSSResultGroup = [\n themeStyles,\n animations,\n css`\n :host {\n display: block;\n }\n\n .bubbles-container {\n display: flex;\n gap: var(--speechos-spacing-sm);\n margin-bottom: var(--speechos-spacing-md);\n justify-content: center;\n }\n\n .action-button {\n display: flex;\n align-items: center;\n gap: var(--speechos-spacing-xs);\n padding: var(--speechos-spacing-sm) var(--speechos-spacing-md);\n border: none;\n border-radius: var(--speechos-radius-full);\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n color: white;\n transition: all var(--speechos-transition-fast);\n animation: speechos-slideUp var(--speechos-transition-base) ease-out;\n white-space: nowrap;\n }\n\n /* Dictate button - Emerald (matches connecting state) */\n .action-button.dictate {\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);\n }\n\n .action-button.dictate:hover {\n background: linear-gradient(135deg, #34d399 0%, #10b981 100%);\n transform: translateY(-2px);\n box-shadow: 0 6px 16px rgba(16, 185, 129, 0.4);\n }\n\n /* Edit button - Purple (matches editing state) */\n .action-button.edit {\n background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);\n box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3);\n }\n\n .action-button.edit:hover {\n background: linear-gradient(135deg, #a78bfa 0%, #8b5cf6 100%);\n transform: translateY(-2px);\n box-shadow: 0 6px 16px rgba(139, 92, 246, 0.4);\n }\n\n .action-button:active {\n transform: translateY(0);\n }\n\n .action-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n }\n\n /* Staggered animation delay */\n .action-button:nth-child(1) {\n animation-delay: 0ms;\n }\n\n .action-button:nth-child(2) {\n animation-delay: 50ms;\n }\n\n .action-button:nth-child(3) {\n animation-delay: 100ms;\n }\n\n .action-button:nth-child(4) {\n animation-delay: 150ms;\n }\n `,\n ];\n\n @property({ type: Boolean })\n visible = false;\n\n private actions: ActionButton[] = [\n {\n id: \"dictate\",\n label: \"Dictate\",\n icon: dictateIcon(),\n },\n {\n id: \"edit\",\n label: \"Edit\",\n icon: editIcon(),\n },\n ];\n\n private handleActionClick(e: Event, action: SpeechOSAction): void {\n // Stop propagation to prevent bubbling issues\n e.stopPropagation();\n e.preventDefault();\n\n events.emit(\"action:select\", { action });\n\n this.dispatchEvent(\n new CustomEvent(\"action-select\", {\n bubbles: true,\n composed: true,\n detail: { action },\n })\n );\n }\n\n render(): import(\"lit\").TemplateResult | string {\n if (!this.visible) {\n return html``;\n }\n\n return html`\n <div class=\"bubbles-container\">\n ${this.actions.map(\n (action) => html`\n <button\n class=\"action-button ${action.id}\"\n @click=\"${(e: Event) => this.handleActionClick(e, action.id)}\"\n aria-label=\"${action.label}\"\n title=\"${action.label}\"\n >\n <span class=\"action-icon\">${action.icon}</span>\n <span>${action.label}</span>\n </button>\n `\n )}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"speechos-action-bubbles\": SpeechOSActionBubbles;\n }\n}\n","/**\n * Settings button component\n * A small gear icon button that opens the settings modal\n */\n\nimport { LitElement, html, css, type CSSResultGroup } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { themeStyles } from \"./styles/theme.js\";\nimport { settingsIcon } from \"./icons.js\";\n\n@customElement(\"speechos-settings-button\")\nexport class SpeechOSSettingsButton extends LitElement {\n static styles: CSSResultGroup = [\n themeStyles,\n css`\n :host {\n display: block;\n }\n\n .settings-button {\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: rgba(24, 24, 27, 0.8);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n border: 1px solid rgba(63, 63, 70, 0.5);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: rgba(161, 161, 170, 1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n transition: all 0.2s ease;\n opacity: 0;\n transform: scale(0.8);\n pointer-events: none;\n }\n\n .settings-button.visible {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n }\n\n .settings-button:hover {\n background: rgba(39, 39, 42, 0.9);\n border-color: rgba(63, 63, 70, 0.8);\n color: rgba(250, 250, 250, 1);\n transform: scale(1.05);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);\n }\n\n .settings-button:active {\n transform: scale(0.95);\n }\n `,\n ];\n\n @property({ type: Boolean })\n visible = false;\n\n private handleClick(e: Event): void {\n e.stopPropagation();\n e.preventDefault();\n\n this.dispatchEvent(\n new CustomEvent(\"settings-click\", {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n render(): import(\"lit\").TemplateResult {\n return html`\n <button\n class=\"settings-button ${this.visible ? \"visible\" : \"\"}\"\n @click=\"${this.handleClick}\"\n aria-label=\"Settings\"\n title=\"Settings\"\n >\n ${settingsIcon(14)}\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"speechos-settings-button\": SpeechOSSettingsButton;\n }\n}\n","/**\n * Settings modal component\n * Displays transcript history, help, about, and settings in a tabbed interface\n */\n\nimport { LitElement, html, css, type CSSResultGroup } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { themeStyles } from \"./styles/theme.js\";\nimport {\n xIcon,\n clipboardIcon,\n helpCircleIcon,\n infoIcon,\n settingsIcon,\n trashIcon,\n externalLinkIcon,\n dictateIcon,\n editIcon,\n copyIcon,\n} from \"./icons.js\";\nimport {\n transcriptStore,\n type TranscriptEntry,\n} from \"@speechos/core\";\n\ntype TabId = \"transcripts\" | \"help\" | \"about\" | \"settings\";\n\ninterface Tab {\n id: TabId;\n label: string;\n icon: ReturnType<typeof clipboardIcon>;\n}\n\n@customElement(\"speechos-settings-modal\")\nexport class SpeechOSSettingsModal extends LitElement {\n static styles: CSSResultGroup = [\n themeStyles,\n css`\n :host {\n /* Position at viewport level to escape widget positioning */\n position: fixed;\n inset: 0;\n pointer-events: none;\n z-index: calc(var(--speechos-z-base) + 100);\n }\n\n /* Overlay */\n .modal-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: calc(var(--speechos-z-base) + 100);\n opacity: 0;\n visibility: hidden;\n transition: all 0.2s ease;\n pointer-events: none;\n }\n\n .modal-overlay.open {\n opacity: 1;\n visibility: visible;\n pointer-events: auto;\n }\n\n /* Modal container */\n .modal {\n background: #1f2937;\n border-radius: 12px;\n width: 90%;\n min-width: 360px;\n max-width: 500px;\n min-height: 450px;\n max-height: 85vh;\n display: flex;\n flex-direction: column;\n box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);\n transform: scale(0.95);\n transition: transform 0.2s ease;\n pointer-events: auto;\n }\n\n .modal-overlay.open .modal {\n transform: scale(1);\n }\n\n /* Header */\n .modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n }\n\n .modal-title {\n font-size: 16px;\n font-weight: 600;\n color: white;\n margin: 0;\n }\n\n .close-button {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n background: transparent;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: rgba(255, 255, 255, 0.6);\n transition: all 0.15s ease;\n }\n\n .close-button:hover {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n }\n\n /* Tabs */\n .tabs {\n display: flex;\n gap: 2px;\n padding: 8px 12px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n background: rgba(0, 0, 0, 0.2);\n }\n\n .tab {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n padding: 8px 4px;\n border: none;\n border-radius: 6px;\n background: transparent;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.5);\n transition: all 0.15s ease;\n }\n\n .tab:hover {\n background: rgba(255, 255, 255, 0.05);\n color: rgba(255, 255, 255, 0.8);\n }\n\n .tab.active {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n }\n\n .tab-label {\n font-size: 12px;\n font-weight: 500;\n }\n\n /* Content */\n .modal-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 200px;\n }\n\n /* Transcripts tab */\n .transcripts-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .transcript-item {\n background: rgba(255, 255, 255, 0.05);\n border-radius: 8px;\n padding: 10px 12px;\n }\n\n .transcript-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 6px;\n }\n\n .transcript-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n padding: 3px 8px;\n border-radius: 4px;\n }\n\n .transcript-badge.dictate {\n background: rgba(16, 185, 129, 0.2);\n color: #34d399;\n }\n\n .transcript-badge.edit {\n background: rgba(139, 92, 246, 0.2);\n color: #a78bfa;\n }\n\n .transcript-time {\n font-size: 13px;\n color: rgba(255, 255, 255, 0.4);\n }\n\n .transcript-text {\n font-size: 15px;\n color: rgba(255, 255, 255, 0.9);\n line-height: 1.5;\n word-break: break-word;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .transcript-actions {\n display: flex;\n gap: 8px;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid rgba(255, 255, 255, 0.05);\n }\n\n .transcript-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px;\n border-radius: 4px;\n background: rgba(255, 255, 255, 0.05);\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.6);\n transition: all 0.15s ease;\n }\n\n .transcript-action-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.9);\n }\n\n .transcript-action-btn.copied {\n background: rgba(16, 185, 129, 0.2);\n color: #34d399;\n transform: scale(1.05);\n }\n\n .transcript-action-btn.delete:hover {\n background: rgba(239, 68, 68, 0.15);\n color: #f87171;\n }\n\n .empty-state {\n text-align: center;\n padding: 32px 16px;\n color: rgba(255, 255, 255, 0.5);\n }\n\n .empty-state-icon {\n margin-bottom: 12px;\n opacity: 0.5;\n }\n\n .empty-state-title {\n font-size: 16px;\n font-weight: 500;\n margin-bottom: 6px;\n color: rgba(255, 255, 255, 0.7);\n }\n\n .empty-state-text {\n font-size: 14px;\n }\n\n .clear-all-button {\n display: block;\n width: 100%;\n margin-top: 16px;\n padding: 10px;\n background: rgba(239, 68, 68, 0.1);\n border: 1px solid rgba(239, 68, 68, 0.2);\n border-radius: 6px;\n color: #f87171;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .clear-all-button:hover {\n background: rgba(239, 68, 68, 0.2);\n border-color: rgba(239, 68, 68, 0.3);\n }\n\n /* Help tab */\n .help-section {\n margin-bottom: 20px;\n }\n\n .help-section:last-child {\n margin-bottom: 0;\n }\n\n .help-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 600;\n color: white;\n margin-bottom: 10px;\n }\n\n .help-title.dictate {\n color: #34d399;\n }\n\n .help-title.edit {\n color: #a78bfa;\n }\n\n .help-text {\n font-size: 15px;\n color: rgba(255, 255, 255, 0.7);\n line-height: 1.5;\n margin-bottom: 10px;\n }\n\n .help-example {\n background: rgba(255, 255, 255, 0.05);\n border-radius: 6px;\n padding: 12px 14px;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.6);\n font-style: italic;\n }\n\n /* About tab */\n .about-logo {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n }\n\n .about-logo-text {\n font-size: 20px;\n font-weight: 700;\n color: white;\n }\n\n .about-description {\n font-size: 15px;\n color: rgba(255, 255, 255, 0.7);\n line-height: 1.6;\n margin-bottom: 20px;\n }\n\n .about-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 14px;\n background: var(--speechos-primary);\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n text-decoration: none;\n transition: all 0.15s ease;\n }\n\n .about-link:hover {\n background: var(--speechos-primary-active);\n }\n\n .about-version {\n margin-top: 20px;\n font-size: 13px;\n color: rgba(255, 255, 255, 0.4);\n }\n\n /* Settings tab */\n .settings-placeholder {\n text-align: center;\n padding: 32px 16px;\n color: rgba(255, 255, 255, 0.5);\n }\n\n .settings-placeholder-icon {\n margin-bottom: 12px;\n opacity: 0.5;\n }\n\n .settings-placeholder-text {\n font-size: 15px;\n }\n `,\n ];\n\n @property({ type: Boolean })\n open = false;\n\n @state()\n private activeTab: TabId = \"transcripts\";\n\n @state()\n private transcripts: TranscriptEntry[] = [];\n\n private tabs: Tab[] = [\n { id: \"transcripts\", label: \"History\", icon: clipboardIcon(16) },\n { id: \"help\", label: \"Help\", icon: helpCircleIcon(16) },\n { id: \"about\", label: \"About\", icon: infoIcon(16) },\n { id: \"settings\", label: \"Settings\", icon: settingsIcon(16) },\n ];\n\n connectedCallback(): void {\n super.connectedCallback();\n this.loadTranscripts();\n }\n\n updated(changedProperties: Map<string, unknown>): void {\n if (changedProperties.has(\"open\") && this.open) {\n this.loadTranscripts();\n }\n }\n\n private loadTranscripts(): void {\n this.transcripts = transcriptStore.getTranscripts();\n }\n\n private handleOverlayClick(e: Event): void {\n if (e.target === e.currentTarget) {\n this.close();\n }\n }\n\n private handleClose(): void {\n this.close();\n }\n\n private close(): void {\n this.dispatchEvent(\n new CustomEvent(\"modal-close\", {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleTabClick(tabId: TabId): void {\n this.activeTab = tabId;\n if (tabId === \"transcripts\") {\n this.loadTranscripts();\n }\n }\n\n private handleDeleteTranscript(id: string): void {\n transcriptStore.deleteTranscript(id);\n this.loadTranscripts();\n }\n\n private handleClearAll(): void {\n transcriptStore.clearTranscripts();\n this.loadTranscripts();\n }\n\n private async handleCopyTranscript(\n text: string,\n event: Event\n ): Promise<void> {\n const button = event.currentTarget as HTMLButtonElement;\n\n try {\n await navigator.clipboard.writeText(text);\n } catch {\n // Fallback for older browsers\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textarea);\n }\n\n // Show copied feedback\n button.classList.add(\"copied\");\n button.textContent = \"Copied!\";\n setTimeout(() => {\n button.classList.remove(\"copied\");\n this.requestUpdate(); // Re-render to restore button content\n }, 1000);\n }\n\n private formatTime(timestamp: number): string {\n const date = new Date(timestamp);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n const diffDays = Math.floor(diffMs / 86400000);\n\n if (diffMins < 1) return \"Just now\";\n if (diffMins < 60) return `${diffMins}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n if (diffDays < 7) return `${diffDays}d ago`;\n\n return date.toLocaleDateString();\n }\n\n private renderTranscriptsTab() {\n if (this.transcripts.length === 0) {\n return html`\n <div class=\"empty-state\">\n <div class=\"empty-state-icon\">${clipboardIcon(40)}</div>\n <div class=\"empty-state-title\">No transcripts yet</div>\n <div class=\"empty-state-text\">\n Your dictation and edit history will appear here.\n </div>\n </div>\n `;\n }\n\n return html`\n <div class=\"transcripts-list\">\n ${this.transcripts.map(\n (t) => html`\n <div class=\"transcript-item\">\n <div class=\"transcript-header\">\n <span class=\"transcript-badge ${t.action}\">\n ${t.action === \"dictate\" ? dictateIcon(14) : editIcon(14)}\n ${t.action}\n </span>\n <span class=\"transcript-time\"\n >${this.formatTime(t.timestamp)}</span\n >\n </div>\n <div class=\"transcript-text\">${t.text}</div>\n <div class=\"transcript-actions\">\n <button\n class=\"transcript-action-btn copy\"\n @click=\"${(e: Event) => this.handleCopyTranscript(t.text, e)}\"\n >\n ${copyIcon(14)} Copy\n </button>\n <button\n class=\"transcript-action-btn delete\"\n @click=\"${() => this.handleDeleteTranscript(t.id)}\"\n >\n ${trashIcon(14)} Delete\n </button>\n </div>\n </div>\n `\n )}\n </div>\n <button class=\"clear-all-button\" @click=\"${this.handleClearAll}\">\n Clear All History\n </button>\n `;\n }\n\n private renderHelpTab() {\n return html`\n <div class=\"help-section\">\n <div class=\"help-title dictate\">${dictateIcon(18)} Dictate</div>\n <div class=\"help-text\">\n Speak naturally and your words will be transcribed into text. Perfect\n for notes, messages, and documents.\n </div>\n <div class=\"help-example\">\n \"Hello, this is a test of the dictation feature.\"\n </div>\n </div>\n\n <div class=\"help-section\">\n <div class=\"help-title edit\">${editIcon(18)} Edit</div>\n <div class=\"help-text\">\n Select text first, then use your voice to describe how to change it.\n Great for rewriting, formatting, or fixing text.\n </div>\n <div class=\"help-example\">\n \"Make this more formal\" or \"Fix the grammar\"\n </div>\n </div>\n `;\n }\n\n private renderAboutTab() {\n return html`\n <div class=\"about-logo\">\n <div class=\"about-logo-text\">SpeechOS</div>\n </div>\n <div class=\"about-description\">\n SpeechOS is a voice-to-text SDK that enables voice input for web\n applications. Speak instead of type to save time on text entry and\n editing tasks.\n </div>\n <a\n href=\"https://speechos.io\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"about-link\"\n >\n Visit SpeechOS ${externalLinkIcon(14)}\n </a>\n <div class=\"about-version\">Version 0.1.0</div>\n `;\n }\n\n private renderSettingsTab() {\n return html`\n <div class=\"settings-placeholder\">\n <div class=\"settings-placeholder-icon\">${settingsIcon(40)}</div>\n <div class=\"settings-placeholder-text\">Settings coming soon</div>\n </div>\n `;\n }\n\n private renderTabContent() {\n switch (this.activeTab) {\n case \"transcripts\":\n return this.renderTranscriptsTab();\n case \"help\":\n return this.renderHelpTab();\n case \"about\":\n return this.renderAboutTab();\n case \"settings\":\n return this.renderSettingsTab();\n }\n }\n\n render(): import(\"lit\").TemplateResult {\n return html`\n <div\n class=\"modal-overlay ${this.open ? \"open\" : \"\"}\"\n @click=\"${this.handleOverlayClick}\"\n >\n <div class=\"modal\">\n <div class=\"modal-header\">\n <h2 class=\"modal-title\">SpeechOS</h2>\n <button\n class=\"close-button\"\n @click=\"${this.handleClose}\"\n aria-label=\"Close\"\n >\n ${xIcon(16)}\n </button>\n </div>\n\n <div class=\"tabs\">\n ${this.tabs.map(\n (tab) => html`\n <button\n class=\"tab ${this.activeTab === tab.id ? \"active\" : \"\"}\"\n @click=\"${() => this.handleTabClick(tab.id)}\"\n >\n ${tab.icon}\n <span class=\"tab-label\">${tab.label}</span>\n </button>\n `\n )}\n </div>\n\n <div class=\"modal-content\">${this.renderTabContent()}</div>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"speechos-settings-modal\": SpeechOSSettingsModal;\n }\n}\n","/**\n * Main widget container component\n * Composes mic button and action bubbles with state management\n */\n\nimport {\n LitElement,\n html,\n css,\n type CSSResultGroup,\n type TemplateResult,\n} from \"lit\";\nimport { customElement, state as litState } from \"lit/decorators.js\";\nimport { themeStyles, animations } from \"./styles/theme.js\";\nimport {\n state,\n events,\n getConfig,\n livekit,\n transcriptStore,\n type SpeechOSState,\n type UnsubscribeFn,\n} from \"@speechos/core\";\n\n// Import child components\nimport \"./mic-button.js\";\nimport \"./action-bubbles.js\";\nimport \"./settings-button.js\";\nimport \"./settings-modal.js\";\n\n@customElement(\"speechos-widget\")\nexport class SpeechOSWidget extends LitElement {\n static styles: CSSResultGroup = [\n themeStyles,\n animations,\n css`\n :host {\n position: fixed;\n bottom: 8px;\n z-index: var(--speechos-z-base);\n pointer-events: none;\n }\n\n :host([position=\"bottom-center\"]) {\n left: 50%;\n transform: translateX(-50%);\n }\n\n :host([position=\"bottom-right\"]) {\n right: var(--speechos-spacing-xl);\n }\n\n :host([position=\"bottom-left\"]) {\n left: var(--speechos-spacing-xl);\n }\n\n :host(.custom-position) {\n right: unset;\n transform: translateX(-50%);\n }\n\n :host([hidden]) {\n display: none;\n }\n\n .widget-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n pointer-events: auto;\n animation: speechos-fadeIn var(--speechos-transition-base);\n cursor: grab;\n }\n\n .widget-container:active {\n cursor: grabbing;\n }\n\n .widget-container.hiding {\n animation: speechos-fadeOut var(--speechos-transition-base);\n }\n\n .settings-button-container {\n margin-top: var(--speechos-spacing-md);\n }\n `,\n ];\n\n @litState()\n private widgetState: SpeechOSState = state.getState();\n\n @litState()\n private settingsOpen = false;\n\n private stateUnsubscribe?: UnsubscribeFn;\n private errorEventUnsubscribe?: UnsubscribeFn;\n private dictationTargetElement: HTMLElement | null = null;\n private editTargetElement: HTMLElement | null = null;\n private dictationCursorStart: number | null = null;\n private dictationCursorEnd: number | null = null;\n private editSelectionStart: number | null = null;\n private editSelectionEnd: number | null = null;\n private editSelectedText: string = \"\";\n private boundClickOutsideHandler: ((event: MouseEvent) => void) | null = null;\n private modalElement: HTMLElement | null = null;\n private customPosition: { x: number; y: number } | null = null;\n private isDragging = false;\n private dragStartPos: { x: number; y: number } | null = null;\n private dragOffset = { x: 0, y: 0 };\n private boundDragMove: ((e: MouseEvent) => void) | null = null;\n private boundDragEnd: (() => void) | null = null;\n private static readonly DRAG_THRESHOLD = 5;\n private suppressNextClick = false;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.modalElement = document.createElement(\"speechos-settings-modal\");\n this.modalElement.addEventListener(\"modal-close\", () => {\n this.settingsOpen = false;\n });\n document.body.appendChild(this.modalElement);\n\n this.stateUnsubscribe = state.subscribe((newState) => {\n if (!newState.isVisible || !newState.isExpanded) {\n this.settingsOpen = false;\n }\n this.widgetState = newState;\n this.updatePosition();\n });\n\n this.errorEventUnsubscribe = events.on(\"error\", (payload) => {\n if (\n this.widgetState.recordingState !== \"idle\" &&\n this.widgetState.recordingState !== \"error\"\n ) {\n state.setError(payload.message);\n livekit.disconnect().catch(() => {});\n }\n });\n\n this.updatePosition();\n this.boundClickOutsideHandler = this.handleClickOutside.bind(this);\n document.addEventListener(\"click\", this.boundClickOutsideHandler, true);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.modalElement) {\n this.modalElement.remove();\n this.modalElement = null;\n }\n if (this.stateUnsubscribe) {\n this.stateUnsubscribe();\n }\n if (this.errorEventUnsubscribe) {\n this.errorEventUnsubscribe();\n }\n if (this.boundClickOutsideHandler) {\n document.removeEventListener(\"click\", this.boundClickOutsideHandler, true);\n this.boundClickOutsideHandler = null;\n }\n if (this.boundDragMove) {\n document.removeEventListener(\"mousemove\", this.boundDragMove);\n this.boundDragMove = null;\n }\n if (this.boundDragEnd) {\n document.removeEventListener(\"mouseup\", this.boundDragEnd);\n this.boundDragEnd = null;\n }\n }\n\n updated(changedProperties: Map<string, unknown>): void {\n if (changedProperties.has(\"settingsOpen\") && this.modalElement) {\n (this.modalElement as any).open = this.settingsOpen;\n }\n }\n\n private handleClickOutside(event: MouseEvent): void {\n if (!this.widgetState.isExpanded || this.widgetState.recordingState !== \"idle\") {\n return;\n }\n const target = event.target as Node;\n const composedPath = event.composedPath ? event.composedPath() : [];\n const clickedInWidget = this.contains(target) || composedPath.includes(this);\n const clickedInModal = this.modalElement && (this.modalElement.contains(target) || composedPath.includes(this.modalElement));\n if (this.settingsOpen && clickedInModal) {\n return;\n }\n if (this.settingsOpen && !clickedInModal) {\n this.settingsOpen = false;\n return;\n }\n if (!clickedInWidget && this.isFormField(target as Element)) {\n state.setFocusedElement(target as HTMLElement);\n return;\n }\n if (!clickedInWidget) {\n state.hide();\n }\n }\n\n private isFormField(element: Element | null): element is HTMLElement {\n if (!element || !(element instanceof HTMLElement)) {\n return false;\n }\n const tagName = element.tagName.toLowerCase();\n if (tagName === \"input\" || tagName === \"textarea\") {\n if (tagName === \"input\") {\n const type = (element as HTMLInputElement).type.toLowerCase();\n const excludedTypes = [\"checkbox\", \"radio\", \"submit\", \"button\", \"reset\", \"file\", \"hidden\"];\n if (excludedTypes.includes(type)) {\n return false;\n }\n }\n return true;\n }\n if (element.isContentEditable || element.getAttribute(\"contenteditable\") === \"true\") {\n return true;\n }\n return false;\n }\n\n private updatePosition(): void {\n const config = getConfig();\n this.setAttribute(\"position\", config.position);\n this.style.zIndex = String(config.zIndex);\n }\n\n private handleMicClick(): void {\n if (this.suppressNextClick) {\n this.suppressNextClick = false;\n return;\n }\n if (this.widgetState.recordingState === \"idle\") {\n const wasExpanded = this.widgetState.isExpanded;\n state.toggleExpanded();\n if (!wasExpanded) {\n livekit.preWarm().catch(() => {});\n }\n }\n }\n\n private async handleStopRecording(): Promise<void> {\n if (this.widgetState.activeAction === \"edit\") {\n await this.handleStopEdit();\n } else {\n state.stopRecording();\n const config = getConfig();\n try {\n const transcription = await this.withMinDisplayTime(livekit.stopVoiceSession(), 300);\n if (transcription) {\n this.insertTranscription(transcription);\n transcriptStore.saveTranscript(transcription, \"dictate\");\n }\n state.completeRecording();\n events.emit(\"action:select\", { action: \"dictate\" });\n livekit.disconnect().catch(() => {});\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : \"Failed to transcribe audio\";\n if (errorMessage !== \"Disconnected\") {\n state.setError(errorMessage);\n livekit.disconnect().catch(() => {});\n }\n }\n }\n }\n\n private async handleCancelOperation(): Promise<void> {\n await livekit.disconnect();\n if (this.widgetState.recordingState === \"error\") {\n state.clearError();\n } else {\n state.cancelRecording();\n }\n this.dictationTargetElement = null;\n this.editTargetElement = null;\n this.dictationCursorStart = null;\n this.dictationCursorEnd = null;\n this.editSelectionStart = null;\n this.editSelectionEnd = null;\n this.editSelectedText = \"\";\n }\n\n private async handleRetryConnection(): Promise<void> {\n const action = this.widgetState.activeAction;\n state.clearError();\n if (action === \"edit\") {\n await this.startEdit();\n } else {\n await this.startDictation();\n }\n }\n\n private handleCloseWidget(): void {\n state.hide();\n }\n\n private handleSettingsClick(): void {\n this.settingsOpen = true;\n }\n\n private handleDragStart(e: MouseEvent): void {\n if (e.button !== 0) return;\n const composedPath = e.composedPath();\n const isInteractiveElement = composedPath.some((el) => {\n if (!(el instanceof HTMLElement)) return false;\n const tagName = el.tagName.toLowerCase();\n if (tagName === \"speechos-action-bubbles\" || tagName === \"speechos-settings-button\") {\n return true;\n }\n if (tagName === \"button\") {\n const className = el.className || \"\";\n if (!className.includes(\"mic-button\")) {\n return true;\n }\n }\n return false;\n });\n if (isInteractiveElement) return;\n this.dragStartPos = { x: e.clientX, y: e.clientY };\n this.isDragging = false;\n const rect = this.getBoundingClientRect();\n this.dragOffset = {\n x: e.clientX - rect.left - rect.width / 2,\n y: rect.bottom - e.clientY,\n };\n this.boundDragMove = this.handleDragMove.bind(this);\n this.boundDragEnd = this.handleDragEnd.bind(this);\n document.addEventListener(\"mousemove\", this.boundDragMove);\n document.addEventListener(\"mouseup\", this.boundDragEnd);\n }\n\n private handleDragMove(e: MouseEvent): void {\n if (!this.isDragging && this.dragStartPos) {\n const dx = e.clientX - this.dragStartPos.x;\n const dy = e.clientY - this.dragStartPos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= SpeechOSWidget.DRAG_THRESHOLD) {\n this.isDragging = true;\n e.preventDefault();\n } else {\n return;\n }\n }\n if (!this.isDragging) return;\n e.preventDefault();\n this.customPosition = {\n x: e.clientX - this.dragOffset.x,\n y: window.innerHeight - e.clientY - this.dragOffset.y,\n };\n this.applyCustomPosition();\n }\n\n private handleDragEnd(): void {\n if (this.isDragging) {\n this.suppressNextClick = true;\n }\n this.isDragging = false;\n this.dragStartPos = null;\n if (this.boundDragMove) {\n document.removeEventListener(\"mousemove\", this.boundDragMove);\n this.boundDragMove = null;\n }\n if (this.boundDragEnd) {\n document.removeEventListener(\"mouseup\", this.boundDragEnd);\n this.boundDragEnd = null;\n }\n }\n\n private applyCustomPosition(): void {\n if (this.customPosition) {\n this.classList.add(\"custom-position\");\n this.style.left = `${this.customPosition.x}px`;\n this.style.bottom = `${this.customPosition.y}px`;\n }\n }\n\n private insertTranscription(text: string): void {\n const target = this.dictationTargetElement;\n if (!target) {\n return;\n }\n const tagName = target.tagName.toLowerCase();\n if (tagName === \"input\" || tagName === \"textarea\") {\n const inputEl = target as HTMLInputElement | HTMLTextAreaElement;\n const start = this.dictationCursorStart ?? inputEl.value.length;\n const end = this.dictationCursorEnd ?? inputEl.value.length;\n const before = inputEl.value.substring(0, start);\n const after = inputEl.value.substring(end);\n inputEl.value = before + text + after;\n if (this.supportsSelection(inputEl)) {\n const newCursorPos = start + text.length;\n inputEl.setSelectionRange(newCursorPos, newCursorPos);\n }\n inputEl.dispatchEvent(new Event(\"input\", { bubbles: true }));\n inputEl.focus();\n state.setFocusedElement(inputEl);\n } else if (target.isContentEditable) {\n target.focus();\n state.setFocusedElement(target);\n const textNode = document.createTextNode(text);\n target.appendChild(textNode);\n const selection = window.getSelection();\n if (selection) {\n const range = document.createRange();\n range.selectNodeContents(textNode);\n range.collapse(false);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n target.dispatchEvent(new Event(\"input\", { bubbles: true }));\n }\n events.emit(\"transcription:inserted\", { text, element: target });\n this.dictationTargetElement = null;\n this.dictationCursorStart = null;\n this.dictationCursorEnd = null;\n }\n\n private handleActionSelect(event: CustomEvent): void {\n const { action } = event.detail;\n state.setActiveAction(action);\n if (action === \"dictate\") {\n this.startDictation();\n } else if (action === \"edit\") {\n this.startEdit();\n } else {\n setTimeout(() => {\n state.setState({ isExpanded: false, activeAction: null });\n }, 300);\n }\n }\n\n private async withMinDisplayTime<T>(operation: Promise<T>, minTime: number): Promise<T> {\n const [result] = await Promise.all([operation, new Promise((resolve) => setTimeout(resolve, minTime))]);\n return result;\n }\n\n private async startDictation(): Promise<void> {\n this.dictationTargetElement = this.widgetState.focusedElement;\n this.dictationCursorStart = null;\n this.dictationCursorEnd = null;\n if (this.dictationTargetElement) {\n const tagName = this.dictationTargetElement.tagName.toLowerCase();\n if (tagName === \"input\" || tagName === \"textarea\") {\n const inputEl = this.dictationTargetElement as HTMLInputElement | HTMLTextAreaElement;\n if (this.supportsSelection(inputEl)) {\n this.dictationCursorStart = inputEl.selectionStart;\n this.dictationCursorEnd = inputEl.selectionEnd;\n } else {\n this.dictationCursorStart = inputEl.value.length;\n this.dictationCursorEnd = inputEl.value.length;\n }\n }\n }\n state.startRecording();\n try {\n await livekit.startVoiceSession();\n state.setRecordingState(\"recording\");\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : \"Connection failed\";\n if (errorMessage !== \"Disconnected\") {\n state.setError(`Failed to connect: ${errorMessage}`);\n await livekit.disconnect();\n }\n }\n }\n\n private async startEdit(): Promise<void> {\n this.editTargetElement = this.widgetState.focusedElement;\n this.editSelectionStart = null;\n this.editSelectionEnd = null;\n this.editSelectedText = \"\";\n if (this.editTargetElement) {\n const tagName = this.editTargetElement.tagName.toLowerCase();\n if (tagName === \"input\" || tagName === \"textarea\") {\n const inputEl = this.editTargetElement as HTMLInputElement | HTMLTextAreaElement;\n if (this.supportsSelection(inputEl)) {\n this.editSelectionStart = inputEl.selectionStart;\n this.editSelectionEnd = inputEl.selectionEnd;\n const start = this.editSelectionStart ?? 0;\n const end = this.editSelectionEnd ?? 0;\n if (start !== end) {\n this.editSelectedText = inputEl.value.substring(start, end);\n }\n } else {\n this.editSelectionStart = 0;\n this.editSelectionEnd = 0;\n }\n } else if (this.editTargetElement.isContentEditable) {\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const selectedText = selection.toString();\n this.editSelectionStart = 0;\n this.editSelectionEnd = selectedText.length;\n this.editSelectedText = selectedText;\n }\n }\n }\n state.startRecording();\n try {\n await livekit.startVoiceSession();\n state.setRecordingState(\"recording\");\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : \"Connection failed\";\n if (errorMessage !== \"Disconnected\") {\n state.setError(`Failed to connect: ${errorMessage}`);\n await livekit.disconnect();\n }\n }\n }\n\n private async handleStopEdit(): Promise<void> {\n state.stopRecording();\n const originalContent = this.getElementContent(this.editTargetElement);\n try {\n const editedText = await this.withMinDisplayTime(livekit.requestEditText(originalContent), 300);\n this.applyEdit(editedText);\n livekit.disconnect().catch(() => {});\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : \"Failed to apply edit\";\n if (errorMessage !== \"Disconnected\") {\n state.setError(errorMessage);\n livekit.disconnect().catch(() => {});\n }\n }\n }\n\n private supportsSelection(element: HTMLInputElement | HTMLTextAreaElement): boolean {\n if (element.tagName.toLowerCase() === \"textarea\") {\n return true;\n }\n const supportedTypes = [\"text\", \"search\", \"url\", \"tel\", \"password\"];\n return supportedTypes.includes((element as HTMLInputElement).type || \"text\");\n }\n\n private getElementContent(element: HTMLElement | null): string {\n if (!element) {\n return \"\";\n }\n const tagName = element.tagName.toLowerCase();\n if (tagName === \"input\" || tagName === \"textarea\") {\n const inputEl = element as HTMLInputElement | HTMLTextAreaElement;\n const fullContent = inputEl.value;\n const start = this.editSelectionStart ?? 0;\n const end = this.editSelectionEnd ?? fullContent.length;\n const hasSelection = start !== end;\n if (hasSelection) {\n return fullContent.substring(start, end);\n }\n return fullContent;\n } else if (element.isContentEditable) {\n const selection = window.getSelection();\n if (selection && selection.toString().length > 0) {\n return selection.toString();\n }\n return element.textContent || \"\";\n }\n return \"\";\n }\n\n private applyEdit(editedText: string): void {\n const target = this.editTargetElement;\n if (!target) {\n state.completeRecording();\n return;\n }\n const tagName = target.tagName.toLowerCase();\n let originalContent = \"\";\n if (tagName === \"input\" || tagName === \"textarea\") {\n const inputEl = target as HTMLInputElement | HTMLTextAreaElement;\n originalContent = inputEl.value;\n inputEl.focus();\n if (this.supportsSelection(inputEl)) {\n const selectionStart = this.editSelectionStart ?? 0;\n const selectionEnd = this.editSelectionEnd ?? inputEl.value.length;\n const hasSelection = selectionStart !== selectionEnd;\n if (hasSelection) {\n inputEl.setSelectionRange(selectionStart, selectionEnd);\n } else {\n inputEl.setSelectionRange(0, inputEl.value.length);\n }\n document.execCommand(\"insertText\", false, editedText);\n } else {\n inputEl.value = editedText;\n inputEl.dispatchEvent(new Event(\"input\", { bubbles: true }));\n }\n state.setFocusedElement(inputEl);\n } else if (target.isContentEditable) {\n originalContent = target.textContent || \"\";\n target.focus();\n state.setFocusedElement(target);\n const hasSelection = this.editSelectionStart !== null && this.editSelectionEnd !== null && this.editSelectionStart !== this.editSelectionEnd;\n if (!hasSelection) {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(target);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n document.execCommand(\"insertText\", false, editedText);\n }\n transcriptStore.saveTranscript(editedText, \"edit\", originalContent);\n events.emit(\"edit:applied\", { originalContent, editedContent: editedText, element: target });\n state.completeRecording();\n this.editTargetElement = null;\n this.editSelectionStart = null;\n this.editSelectionEnd = null;\n this.editSelectedText = \"\";\n }\n\n render(): TemplateResult | string {\n if (!this.widgetState.isVisible) {\n this.setAttribute(\"hidden\", \"\");\n return html``;\n }\n this.removeAttribute(\"hidden\");\n const showBubbles = this.widgetState.isExpanded && this.widgetState.recordingState === \"idle\";\n return html`\n <div class=\"widget-container\" @mousedown=\"${this.handleDragStart}\">\n <speechos-action-bubbles ?visible=\"${showBubbles}\" @action-select=\"${this.handleActionSelect}\"></speechos-action-bubbles>\n <speechos-mic-button\n ?expanded=\"${this.widgetState.isExpanded}\"\n recordingState=\"${this.widgetState.recordingState}\"\n activeAction=\"${this.widgetState.activeAction || \"\"}\"\n editPreviewText=\"${this.editSelectedText}\"\n errorMessage=\"${this.widgetState.errorMessage || \"\"}\"\n @mic-click=\"${this.handleMicClick}\"\n @stop-recording=\"${this.handleStopRecording}\"\n @cancel-operation=\"${this.handleCancelOperation}\"\n @retry-connection=\"${this.handleRetryConnection}\"\n @close-widget=\"${this.handleCloseWidget}\"\n ></speechos-mic-button>\n <div class=\"settings-button-container\">\n <speechos-settings-button ?visible=\"${showBubbles}\" @settings-click=\"${this.handleSettingsClick}\"></speechos-settings-button>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"speechos-widget\": SpeechOSWidget;\n }\n}\n","/**\n * Main SpeechOS Client SDK class\n * Composes core logic with UI components\n */\n\nimport type { SpeechOSConfig, SpeechOSState, SpeechOSEventMap } from \"@speechos/core\";\nimport {\n setConfig,\n getConfig,\n updateUserId,\n state,\n events,\n livekit,\n SpeechOSEventEmitter,\n} from \"@speechos/core\";\nimport { formDetector } from \"./form-detector.js\";\nimport \"./ui/index.js\"; // Auto-registers components\n\n/**\n * Main SpeechOS class for initializing and managing the SDK with UI\n */\nexport class SpeechOS {\n private static instance: SpeechOS | null = null;\n private static widgetElement: HTMLElement | null = null;\n private static isInitialized = false;\n\n /**\n * Initialize the SpeechOS SDK\n * @param config - Configuration options\n * @returns Promise that resolves when initialization is complete\n * @throws Error if configuration is invalid (e.g., missing apiKey)\n */\n static async init(config: SpeechOSConfig = {}): Promise<void> {\n if (this.isInitialized) {\n console.warn(\"SpeechOS is already initialized\");\n return;\n }\n\n try {\n // Validate and set configuration\n setConfig(config);\n } catch (error) {\n // Configuration errors are fatal - log and re-throw\n const errorMessage =\n error instanceof Error ? error.message : \"Invalid configuration\";\n console.error(`[SpeechOS] Error: ${errorMessage} (init_config)`);\n\n // Emit error event before throwing\n events.emit(\"error\", {\n code: \"init_config\",\n message: errorMessage,\n source: \"init\",\n });\n\n throw error;\n }\n\n const finalConfig = getConfig();\n\n // Create singleton instance\n this.instance = new SpeechOS();\n\n // Fetch LiveKit token\n try {\n if (finalConfig.debug) {\n console.log(\"[SpeechOS] Fetching LiveKit token...\");\n }\n await livekit.fetchToken();\n if (finalConfig.debug) {\n console.log(\"[SpeechOS] LiveKit token fetched successfully\");\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Failed to fetch token\";\n console.error(`[SpeechOS] Error: ${errorMessage} (init_token_fetch)`);\n\n // Emit error event for consumers\n events.emit(\"error\", {\n code: \"init_token_fetch\",\n message: errorMessage,\n source: \"init\",\n });\n\n // Continue initialization even if token fetch fails\n // The token will be fetched again when needed\n }\n\n // Start form detection\n formDetector.start();\n\n // Create and mount widget\n this.mountWidget();\n\n this.isInitialized = true;\n\n // Log initialization in debug mode\n if (finalConfig.debug) {\n console.log(\"[SpeechOS] Initialized with config:\", finalConfig);\n }\n }\n\n /**\n * Destroy the SpeechOS SDK and clean up resources\n */\n static async destroy(): Promise<void> {\n if (!this.isInitialized) {\n console.warn(\"SpeechOS is not initialized\");\n return;\n }\n\n // Stop form detection\n formDetector.stop();\n\n // Disconnect from LiveKit (also clears token)\n await livekit.disconnect();\n\n // Remove widget from DOM\n this.unmountWidget();\n\n // Clear all event listeners\n events.clear();\n\n // Reset state\n state.reset();\n\n // Clear instance\n this.instance = null;\n this.isInitialized = false;\n\n const config = getConfig();\n if (config.debug) {\n console.log(\"[SpeechOS] Destroyed and cleaned up\");\n }\n }\n\n /**\n * Check if SpeechOS is initialized\n */\n static get initialized(): boolean {\n return this.isInitialized;\n }\n\n /**\n * Get the current state\n */\n static getState(): SpeechOSState {\n return state.getState();\n }\n\n /**\n * Get the event emitter for external listeners\n */\n static get events(): SpeechOSEventEmitter {\n return events;\n }\n\n /**\n * Mount the widget to the DOM\n */\n private static mountWidget(): void {\n if (this.widgetElement) {\n console.warn(\"Widget is already mounted\");\n return;\n }\n\n // Create widget element\n const widget = document.createElement(\"speechos-widget\");\n this.widgetElement = widget;\n\n // Append to body\n document.body.appendChild(widget);\n }\n\n /**\n * Unmount the widget from the DOM\n */\n private static unmountWidget(): void {\n if (this.widgetElement) {\n this.widgetElement.remove();\n this.widgetElement = null;\n }\n }\n\n /**\n * Show the widget programmatically\n */\n static show(): void {\n state.show();\n }\n\n /**\n * Hide the widget programmatically\n */\n static hide(): void {\n state.hide();\n }\n\n /**\n * Identify the current user\n * Can be called after init() to associate sessions with a user identifier.\n * Clears the cached token so the next voice session uses the new userId.\n *\n * @param userId - User identifier from your system (e.g., user ID, email)\n *\n * @example\n * // Initialize SDK early\n * SpeechOS.init({ apiKey: 'xxx' });\n *\n * // Later, after user logs in\n * SpeechOS.identify('user_123');\n */\n static identify(userId: string): void {\n if (!this.isInitialized) {\n console.warn(\n \"SpeechOS.identify() called before init(). Call init() first.\"\n );\n return;\n }\n\n const config = getConfig();\n\n // Update the userId in config\n updateUserId(userId);\n\n // Clear cached token so next session gets a fresh one with the new userId\n livekit.clearToken();\n\n if (config.debug) {\n console.log(`[SpeechOS] User identified: ${userId}`);\n }\n }\n\n /**\n * Private constructor to prevent direct instantiation\n */\n private constructor() {\n // Singleton pattern - use SpeechOS.init() instead\n }\n}\n\n// Export singleton class as default\nexport default SpeechOS;\n","/**\n * @speechos/client\n *\n * Vanilla JS client SDK for embedding SpeechOS into web applications.\n * Includes Web Components UI and DOM-based form detection.\n */\n\nimport { SpeechOS as SpeechOSClass } from \"./speechos.js\";\n\n// Re-export everything from core\nexport {\n events,\n state,\n getConfig,\n setConfig,\n resetConfig,\n livekit,\n transcriptStore,\n DEFAULT_HOST,\n} from \"@speechos/core\";\n\nexport type {\n SpeechOSConfig,\n SpeechOSState,\n SpeechOSAction,\n SpeechOSEventMap,\n StateChangeCallback,\n UnsubscribeFn,\n RecordingState,\n TranscriptEntry,\n TranscriptAction,\n} from \"@speechos/core\";\n\n// Client-specific exports\nexport { formDetector, FormDetector } from \"./form-detector.js\";\n\n// Version\nexport const VERSION = \"0.1.0\";\n\n// Main SDK class\nexport { SpeechOSClass as SpeechOS };\nexport default SpeechOSClass;\n"],"names":["t","e","s","o","r","n","i","S","c","h","a","l","p","d","u","f","b","y","css","html","unsafeHTML","LitElement","property","customElement","state","litState"],"mappings":"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AAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAACG,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Q,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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","x_google_ignoreList":[1,2,3,4,5,6,7,8,10,11]}
@@ -72,3 +72,4 @@ export declare class SpeechOS {
72
72
  private constructor();
73
73
  }
74
74
  export default SpeechOS;
75
+ //# sourceMappingURL=speechos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speechos.d.ts","sourceRoot":"","sources":["../src/speechos.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAoB,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAOL,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,eAAe,CAAC;AAEvB;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyB;IAChD,OAAO,CAAC,MAAM,CAAC,aAAa,CAA4B;IACxD,OAAO,CAAC,MAAM,CAAC,aAAa,CAAS;IAErC;;;;;OAKG;WACU,IAAI,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqE7D;;OAEG;WACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BrC;;OAEG;IACH,MAAM,KAAK,WAAW,IAAI,OAAO,CAEhC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,IAAI,aAAa;IAIhC;;OAEG;IACH,MAAM,KAAK,MAAM,IAAI,oBAAoB,CAExC;IAED;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAc1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,IAAI;IAInB;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,IAAI;IAInB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAqBrC;;OAEG;IACH,OAAO;CAGR;AAGD,eAAe,QAAQ,CAAC"}
@@ -15,3 +15,4 @@ declare global {
15
15
  "speechos-action-bubbles": SpeechOSActionBubbles;
16
16
  }
17
17
  }
18
+ //# sourceMappingURL=action-bubbles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-bubbles.d.ts","sourceRoot":"","sources":["../../src/ui/action-bubbles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAYjE,qBACa,qBAAsB,SAAQ,UAAU;IACnD,MAAM,CAAC,MAAM,EAAE,cAAc,CAmF3B;IAGF,OAAO,UAAS;IAEhB,OAAO,CAAC,OAAO,CAWb;IAEF,OAAO,CAAC,iBAAiB;IAgBzB,MAAM,IAAI,OAAO,KAAK,EAAE,cAAc,GAAG,MAAM;CAuBhD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,yBAAyB,EAAE,qBAAqB,CAAC;KAClD;CACF"}
@@ -86,3 +86,4 @@ export declare const externalLinkIcon: (size?: number) => TemplateResult;
86
86
  * Lucide Copy icon paths
87
87
  */
88
88
  export declare const copyIcon: (size?: number) => TemplateResult;
89
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/ui/icons.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AA2BhD;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,aAAS,KAAG,cAIjC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,aAAS,KAAG,cAIrC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,aAAS,KAAG,cAIlC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,aAAS,KAAG,cAepC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,aAAS,KAAG,cAkBtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,aAAS,KAAG,cACW,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,aAAS,KAAG,cAIlC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,aAAS,KAAG,cAIrC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,aAAS,KAAG,cACgC,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,aAAS,KAAG,cAI1C,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,aAAS,KAAG,cAIvC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,aAAS,KAAG,cAIxC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,aAAS,KAAG,cAIlC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,aAAS,KAAG,cAItC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,aAAS,KAAG,cAInC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,aAAS,KAAG,cAI1C,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,aAAS,KAAG,cAIlC,CAAC"}
@@ -18,3 +18,4 @@ export { SpeechOSSettingsModal } from "./settings-modal.js";
18
18
  * but can be called explicitly if needed
19
19
  */
20
20
  export declare function registerComponents(): void;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,aAAa,CAAC;AACrB,OAAO,iBAAiB,CAAC;AACzB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,qBAAqB,CAAC;AAG7B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC"}
@@ -32,3 +32,4 @@ declare global {
32
32
  "speechos-mic-button": SpeechOSMicButton;
33
33
  }
34
34
  }
35
+ //# sourceMappingURL=mic-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mic-button.d.ts","sourceRoot":"","sources":["../../src/ui/mic-button.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EAGV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAIb,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErE,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,MAAM,CAAC,MAAM,EAAE,cAAc,CAwX3B;IAGF,QAAQ,UAAS;IAGjB,cAAc,EAAE,cAAc,CAAU;IAGxC,YAAY,EAAE,cAAc,GAAG,IAAI,CAAQ;IAG3C,eAAe,EAAE,MAAM,CAAM;IAG7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEnC,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,cAAc;IAOtB,MAAM,IAAI,cAAc;CAmEzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}