@stacksjs/desktop 0.2.113 → 0.2.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +6 -0
- package/dist/index.js +89 -35
- package/dist/index.js.map +5 -4
- package/dist/packaging.d.ts +23 -0
- package/dist/types.d.ts +3 -0
- package/dist/window.d.ts +13 -5
- package/package.json +3 -8
package/dist/index.js.map
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/alerts.ts", "../src/components.ts", "../src/modals.ts", "../src/system-tray.ts", "../src/dialogs.ts", "../src/window.ts", "../src/power.ts", "../src/preferences.ts", "../src/autolaunch.ts", "../src/hotkeys.ts", "../src/timer.ts", "../src/_bridge.ts", "../src/clipboard.ts", "../src/notifications.ts", "../src/fs.ts", "../src/shell.ts", "../src/global-shortcuts.ts", "../src/theme.ts", "../src/drag-out.ts", "../src/deep-link.ts", "../src/battery.ts", "../src/network.ts", "../src/updater.ts", "../src/window-events.ts", "../src/app-info.ts", "../src/menu.ts", "../src/system.ts", "../src/screen.ts", "../src/keychain.ts", "../src/permissions.ts", "../src/printing.ts", "../src/native-autolaunch.ts", "../src/touchbar.ts", "../src/bluetooth.ts", "../src/speech.ts", "../src/crash-reporter.ts", "../src/iap.ts", "../src/handoff.ts", "../src/live-activities.ts", "../src/location.ts", "../src/screen-capture.ts", "../src/local-server.ts", "../src/biometric.ts", "../src/audio.ts", "../src/apple-script.ts", "../src/file-associations.ts", "../src/tags.ts", "../src/pdf.ts", "../src/log.ts", "../src/bonjour.ts", "../src/spotlight.ts", "../src/speech-recognition.ts", "../src/vision.ts", "../src/midi.ts", "../src/coreml.ts", "../src/continuity-camera.ts", "../src/service-menu.ts", "../src/serial.ts", "../src/capabilities.ts"],
|
|
3
|
+
"sources": ["../src/alerts.ts", "../src/components.ts", "../src/modals.ts", "../src/system-tray.ts", "../src/dialogs.ts", "../src/window.ts", "../src/packaging.ts", "../src/power.ts", "../src/preferences.ts", "../src/autolaunch.ts", "../src/hotkeys.ts", "../src/timer.ts", "../src/_bridge.ts", "../src/clipboard.ts", "../src/notifications.ts", "../src/fs.ts", "../src/shell.ts", "../src/global-shortcuts.ts", "../src/theme.ts", "../src/drag-out.ts", "../src/deep-link.ts", "../src/battery.ts", "../src/network.ts", "../src/updater.ts", "../src/window-events.ts", "../src/app-info.ts", "../src/menu.ts", "../src/system.ts", "../src/screen.ts", "../src/keychain.ts", "../src/permissions.ts", "../src/printing.ts", "../src/native-autolaunch.ts", "../src/touchbar.ts", "../src/bluetooth.ts", "../src/speech.ts", "../src/crash-reporter.ts", "../src/iap.ts", "../src/handoff.ts", "../src/live-activities.ts", "../src/location.ts", "../src/screen-capture.ts", "../src/local-server.ts", "../src/biometric.ts", "../src/audio.ts", "../src/apple-script.ts", "../src/file-associations.ts", "../src/tags.ts", "../src/pdf.ts", "../src/log.ts", "../src/bonjour.ts", "../src/spotlight.ts", "../src/speech-recognition.ts", "../src/vision.ts", "../src/midi.ts", "../src/coreml.ts", "../src/continuity-camera.ts", "../src/service-menu.ts", "../src/serial.ts", "../src/capabilities.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { AlertOptions, ToastOptions } from './types'\n\n/**\n * Alert / Toast Notification Implementation\n *\n * Provides cross-platform notification functionality.\n * Uses native notifications when available, falls back to web-based toasts.\n *\n * Features:\n * - Multiple notification types (info, success, warning, error)\n * - Configurable position and duration\n * - Auto-dismiss with optional manual close\n * - Queue management for multiple notifications\n * - Click handlers\n */\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface AlertState {\n id: string\n options: AlertOptions\n element?: HTMLElement\n timeout?: ReturnType<typeof setTimeout>\n}\n\n// =============================================================================\n// Platform Detection\n// =============================================================================\n\n/**\n * Check if native notifications are available\n */\nfunction hasNativeNotificationSupport(): boolean {\n // Check for browser Notification API\n if (typeof Notification !== 'undefined' && Notification.permission === 'granted') {\n return true\n }\n // Future: Check for @stacksjs/zyte bindings for desktop notifications\n return false\n}\n\n/**\n * Check if running in browser environment\n */\nfunction isBrowser(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined'\n}\n\n/**\n * Request notification permission (browser)\n */\nexport async function requestNotificationPermission(): Promise<boolean> {\n if (typeof Notification === 'undefined') {\n return false\n }\n\n if (Notification.permission === 'granted') {\n return true\n }\n\n if (Notification.permission === 'denied') {\n return false\n }\n\n const permission = await Notification.requestPermission()\n return permission === 'granted'\n}\n\n// =============================================================================\n// Alert Manager\n// =============================================================================\n\n// Active alerts\nconst activeAlerts = new Map<string, AlertState>()\n\n// Toast container element\nconst _toastContainer: HTMLElement | null = null\n\n/**\n * Generate a unique alert ID\n */\nfunction generateAlertId(): string {\n return `alert-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n}\n\n/**\n * Get icon for alert type\n */\nfunction getAlertIcon(type: AlertOptions['type']): string {\n switch (type) {\n case 'info':\n return 'ℹ'\n case 'success':\n return '✔'\n case 'warning':\n return '⚠'\n case 'error':\n return '✖'\n default:\n return 'ℹ'\n }\n}\n\n/**\n * Get or create the toast container element\n */\nfunction getToastContainer(position: AlertOptions['position'] = 'top-right'): HTMLElement {\n if (!isBrowser()) {\n throw new Error('Toast container requires browser environment')\n }\n\n // Check if container already exists with correct position\n try {\n const existingContainer = document.querySelector(`.stx-toast-container[data-position=\"${position}\"]`)\n if (existingContainer) {\n return existingContainer as HTMLElement\n }\n }\n catch {\n // Ignore querySelector errors in very-happy-dom\n }\n\n // Create new container\n const container = document.createElement('div')\n container.className = `stx-toast-container ${position}`\n container.dataset.position = position\n\n // Safely append to body\n try {\n if (document.body) {\n document.body.appendChild(container)\n }\n }\n catch {\n // Ignore appendChild errors in very-happy-dom\n }\n\n return container\n}\n\n/**\n * Create toast HTML\n */\nfunction createToastHTML(state: AlertState): string {\n const { options } = state\n const icon = getAlertIcon(options.type)\n const typeClass = options.type || 'info'\n const hasClose = options.duration !== 0\n\n return `\n <div class=\"stx-toast ${typeClass}\" data-alert-id=\"${state.id}\" role=\"alert\" aria-live=\"polite\">\n <div class=\"stx-toast-icon\">${icon}</div>\n <div class=\"stx-toast-content\">\n ${options.title ? `<div class=\"stx-toast-title\">${escapeHtml(options.title)}</div>` : ''}\n <div class=\"stx-toast-message\">${escapeHtml(options.message)}</div>\n </div>\n ${hasClose ? '<button class=\"stx-toast-close\" aria-label=\"Close\">×</button>' : ''}\n </div>\n `\n}\n\n/**\n * Escape HTML to prevent XSS\n */\nfunction escapeHtml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\n/**\n * Dismiss an alert\n */\nfunction dismissAlert(state: AlertState): void {\n // Clear timeout if exists\n if (state.timeout) {\n clearTimeout(state.timeout)\n }\n\n // Remove from active alerts\n activeAlerts.delete(state.id)\n\n // Animate out and remove element\n if (state.element && isBrowser()) {\n state.element.classList.add('dismissing')\n setTimeout(() => {\n state.element?.remove()\n }, 200)\n }\n}\n\n/**\n * Show an alert/notification\n *\n * @param options - Alert configuration options\n *\n * @example\n * ```typescript\n * await showAlert({\n * title: 'Success',\n * message: 'Your changes have been saved',\n * type: 'success',\n * duration: 3000,\n * position: 'top-right',\n * })\n * ```\n */\nexport async function showAlert(options: AlertOptions): Promise<void> {\n const id = generateAlertId()\n const hasNative = hasNativeNotificationSupport()\n const duration = options.duration ?? 5000\n\n const state: AlertState = {\n id,\n options,\n }\n\n activeAlerts.set(id, state)\n\n if (hasNative && options.type !== 'error') {\n // Use native Notification API for non-error alerts\n try {\n const notification = new Notification(options.title || 'Notification', {\n body: options.message,\n icon: options.type === 'success' ? '✓' : options.type === 'warning' ? '⚠' : 'ℹ',\n tag: id,\n })\n\n notification.onclick = () => {\n if (options.onClick) {\n options.onClick()\n }\n notification.close()\n }\n\n if (duration > 0) {\n state.timeout = setTimeout(() => {\n notification.close()\n activeAlerts.delete(id)\n }, duration)\n }\n\n return\n }\n catch {\n // Fall through to web-based implementation\n }\n }\n\n if (isBrowser()) {\n // Web-based toast implementation\n try {\n const container = getToastContainer(options.position)\n const wrapper = document.createElement('div')\n wrapper.innerHTML = createToastHTML(state)\n const toast = wrapper.firstElementChild as HTMLElement\n\n if (!toast) {\n // Fallback to console if DOM manipulation fails\n const typeLabel = (options.type || 'info').toUpperCase()\n console.log(`[stx-alert] ${typeLabel}: ${options.title || ''}`)\n console.log(`[stx-alert] ${options.message}`)\n return\n }\n\n state.element = toast\n\n // Add to container\n try {\n container.appendChild(toast)\n }\n catch {\n // Fallback to console if appendChild fails (e.g., in very-happy-dom)\n const typeLabel = (options.type || 'info').toUpperCase()\n console.log(`[stx-alert] ${typeLabel}: ${options.title || ''}`)\n console.log(`[stx-alert] ${options.message}`)\n return\n }\n\n // Trigger animation\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => {\n try {\n toast.classList.add('visible')\n }\n catch {\n // Ignore classList errors\n }\n })\n }\n\n // Handle click\n try {\n toast.addEventListener('click', (e) => {\n if ((e.target as HTMLElement).classList?.contains('stx-toast-close')) {\n dismissAlert(state)\n return\n }\n\n if (options.onClick) {\n options.onClick()\n }\n })\n }\n catch {\n // Ignore addEventListener errors\n }\n\n // Auto-dismiss\n if (duration > 0) {\n state.timeout = setTimeout(() => {\n dismissAlert(state)\n }, duration)\n }\n }\n catch {\n // Fallback to console if any DOM operation fails\n const typeLabel = (options.type || 'info').toUpperCase()\n console.log(`[stx-alert] ${typeLabel}: ${options.title || ''}`)\n console.log(`[stx-alert] ${options.message}`)\n }\n }\n else {\n // Node.js environment - console fallback\n const typeLabel = (options.type || 'info').toUpperCase()\n console.log(`[stx-alert] ${typeLabel}: ${options.title || ''}`)\n console.log(`[stx-alert] ${options.message}`)\n\n // Auto-dismiss from tracking\n if (duration > 0) {\n state.timeout = setTimeout(() => {\n activeAlerts.delete(id)\n }, duration)\n }\n }\n}\n\n/**\n * Show a toast notification (alias for showAlert with toast-friendly defaults)\n */\nexport async function showToast(options: ToastOptions): Promise<void> {\n return showAlert({\n ...options,\n position: options.position || 'top-right',\n })\n}\n\n/**\n * Show an info toast\n */\nexport async function showInfoToast(message: string, duration = 3000): Promise<void> {\n return showToast({ message, type: 'info', duration })\n}\n\n/**\n * Show a success toast\n */\nexport async function showSuccessToast(message: string, duration = 3000): Promise<void> {\n return showToast({ message, type: 'success', duration })\n}\n\n/**\n * Show a warning toast\n */\nexport async function showWarningToast(message: string, duration = 3000): Promise<void> {\n return showToast({ message, type: 'warning', duration })\n}\n\n/**\n * Show an error toast\n */\nexport async function showErrorToast(message: string, duration = 5000): Promise<void> {\n return showToast({ message, type: 'error', duration })\n}\n\n/**\n * Show a notification with title\n */\nexport async function notify(title: string, message: string, type: AlertOptions['type'] = 'info'): Promise<void> {\n return showAlert({ title, message, type })\n}\n\n/**\n * Dismiss a specific alert by ID\n */\nexport function dismissAlertById(id: string): void {\n const state = activeAlerts.get(id)\n if (state) {\n dismissAlert(state)\n }\n}\n\n/**\n * Dismiss all active alerts\n */\nexport function dismissAllAlerts(): void {\n for (const state of activeAlerts.values()) {\n dismissAlert(state)\n }\n}\n\n/**\n * Get count of active alerts\n */\nexport function getActiveAlertCount(): number {\n return activeAlerts.size\n}\n\n/**\n * CSS styles for web-based toasts\n */\nexport const TOAST_STYLES = `\n.stx-toast-container {\n position: fixed;\n z-index: 10001;\n display: flex;\n flex-direction: column;\n gap: 8px;\n max-width: 400px;\n pointer-events: none;\n}\n\n.stx-toast-container.top-left { top: 16px; left: 16px; }\n.stx-toast-container.top-center { top: 16px; left: 50%; transform: translateX(-50%); }\n.stx-toast-container.top-right { top: 16px; right: 16px; }\n.stx-toast-container.bottom-left { bottom: 16px; left: 16px; }\n.stx-toast-container.bottom-center { bottom: 16px; left: 50%; transform: translateX(-50%); }\n.stx-toast-container.bottom-right { bottom: 16px; right: 16px; }\n\n.stx-toast {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 12px 16px;\n background: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n pointer-events: auto;\n cursor: pointer;\n opacity: 0;\n transform: translateY(-10px);\n transition: opacity 0.2s, transform 0.2s;\n}\n\n.stx-toast.visible {\n opacity: 1;\n transform: translateY(0);\n}\n\n.stx-toast.dismissing {\n opacity: 0;\n transform: translateX(100%);\n}\n\n@media (prefers-color-scheme: dark) {\n .stx-toast {\n background: #2d2d2d;\n color: #fff;\n }\n}\n\n.stx-toast-icon {\n font-size: 20px;\n flex-shrink: 0;\n margin-top: 2px;\n}\n\n.stx-toast.info .stx-toast-icon { color: #3498db; }\n.stx-toast.success .stx-toast-icon { color: #27ae60; }\n.stx-toast.warning .stx-toast-icon { color: #f39c12; }\n.stx-toast.error .stx-toast-icon { color: #e74c3c; }\n\n.stx-toast-content {\n flex: 1;\n min-width: 0;\n}\n\n.stx-toast-title {\n font-weight: 600;\n margin-bottom: 4px;\n}\n\n.stx-toast-message {\n color: #666;\n font-size: 14px;\n line-height: 1.4;\n}\n\n@media (prefers-color-scheme: dark) {\n .stx-toast-message { color: #aaa; }\n}\n\n.stx-toast-close {\n background: none;\n border: none;\n font-size: 20px;\n cursor: pointer;\n opacity: 0.5;\n padding: 0;\n line-height: 1;\n color: inherit;\n transition: opacity 0.15s;\n}\n\n.stx-toast-close:hover {\n opacity: 1;\n}\n\n/* Border accent for different types */\n.stx-toast.info { border-left: 4px solid #3498db; }\n.stx-toast.success { border-left: 4px solid #27ae60; }\n.stx-toast.warning { border-left: 4px solid #f39c12; }\n.stx-toast.error { border-left: 4px solid #e74c3c; }\n`\n",
|
|
6
6
|
"/* eslint-disable style/max-statements-per-line, indent */\nimport type { ComponentProps } from './types'\n\n/**\n * Native Components for Desktop Applications\n *\n * This module provides TypeScript wrappers for native UI components.\n * Components work in both browser (web-based) and desktop (native) environments.\n *\n * Categories:\n * - Input: Button, TextInput, Checkbox, RadioButton, Slider, ColorPicker, DatePicker, TimePicker, Autocomplete\n * - Display: Label, ImageView, ProgressBar, Avatar, Badge, Chip, Card, Tooltip, Toast\n * - Layout: ScrollView, SplitView, Accordion, Stepper, Modal, Tabs, Dropdown\n * - Data: ListView, Table, TreeView, DataGrid, Chart\n * - Advanced: Rating, CodeEditor, MediaPlayer, FileExplorer, WebView\n */\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Button component properties\n */\nexport interface ButtonProps extends ComponentProps {\n text: string\n onClick?: () => void\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive'\n size?: 'small' | 'medium' | 'large'\n disabled?: boolean\n loading?: boolean\n icon?: string\n iconPosition?: 'left' | 'right'\n}\n\n/**\n * TextInput component properties\n */\nexport interface TextInputProps extends ComponentProps {\n value?: string\n placeholder?: string\n onChange?: (value: string) => void\n onSubmit?: (value: string) => void\n type?: 'text' | 'password' | 'email' | 'number' | 'search' | 'url' | 'tel'\n disabled?: boolean\n readonly?: boolean\n maxLength?: number\n minLength?: number\n pattern?: string\n required?: boolean\n autocomplete?: string\n label?: string\n error?: string\n hint?: string\n}\n\n/**\n * Checkbox component properties\n */\nexport interface CheckboxProps extends ComponentProps {\n checked?: boolean\n onChange?: (checked: boolean) => void\n label?: string\n disabled?: boolean\n indeterminate?: boolean\n}\n\n/**\n * RadioButton component properties\n */\nexport interface RadioButtonProps extends ComponentProps {\n value: string\n name: string\n checked?: boolean\n onChange?: (value: string) => void\n label?: string\n disabled?: boolean\n}\n\n/**\n * Slider component properties\n */\nexport interface SliderProps extends ComponentProps {\n value?: number\n min?: number\n max?: number\n step?: number\n onChange?: (value: number) => void\n disabled?: boolean\n label?: string\n showValue?: boolean\n}\n\n/**\n * ProgressBar component properties\n */\nexport interface ProgressBarProps extends ComponentProps {\n value: number\n max?: number\n variant?: 'default' | 'success' | 'warning' | 'error'\n size?: 'small' | 'medium' | 'large'\n showLabel?: boolean\n indeterminate?: boolean\n}\n\n/**\n * Card component properties\n */\nexport interface CardProps extends ComponentProps {\n title?: string\n subtitle?: string\n content?: string\n image?: string\n footer?: string\n onClick?: () => void\n variant?: 'default' | 'outlined' | 'elevated'\n}\n\n/**\n * Badge component properties\n */\nexport interface BadgeProps extends ComponentProps {\n text: string\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'error'\n size?: 'small' | 'medium' | 'large'\n}\n\n/**\n * Avatar component properties\n */\nexport interface AvatarProps extends ComponentProps {\n src?: string\n alt?: string\n name?: string\n size?: 'small' | 'medium' | 'large' | number\n shape?: 'circle' | 'square' | 'rounded'\n}\n\n/**\n * Tabs component properties\n */\nexport interface TabsProps extends ComponentProps {\n tabs: Array<{ label: string, value: string, disabled?: boolean }>\n activeTab?: string\n onChange?: (value: string) => void\n variant?: 'default' | 'pills' | 'underline'\n}\n\n/**\n * Dropdown component properties\n */\nexport interface DropdownProps extends ComponentProps {\n options: Array<{ label: string, value: string, disabled?: boolean }>\n value?: string\n placeholder?: string\n onChange?: (value: string) => void\n disabled?: boolean\n searchable?: boolean\n multiple?: boolean\n}\n\n/**\n * Rating component properties\n */\nexport interface RatingProps extends ComponentProps {\n value?: number\n max?: number\n onChange?: (value: number) => void\n readonly?: boolean\n size?: 'small' | 'medium' | 'large'\n allowHalf?: boolean\n}\n\n/**\n * ColorPicker component properties\n */\nexport interface ColorPickerProps extends ComponentProps {\n value?: string\n onChange?: (color: string) => void\n disabled?: boolean\n label?: string\n format?: 'hex' | 'rgb' | 'hsl'\n showAlpha?: boolean\n presetColors?: string[]\n}\n\n/**\n * DatePicker component properties\n */\nexport interface DatePickerProps extends ComponentProps {\n value?: string | Date\n onChange?: (date: Date | null) => void\n min?: string | Date\n max?: string | Date\n disabled?: boolean\n label?: string\n placeholder?: string\n format?: string\n showClear?: boolean\n}\n\n/**\n * TimePicker component properties\n */\nexport interface TimePickerProps extends ComponentProps {\n value?: string\n onChange?: (time: string) => void\n disabled?: boolean\n label?: string\n format?: '12h' | '24h'\n step?: number\n min?: string\n max?: string\n}\n\n/**\n * Autocomplete component properties\n */\nexport interface AutocompleteProps extends ComponentProps {\n options: Array<{ label: string, value: string }>\n value?: string\n placeholder?: string\n onChange?: (value: string) => void\n onSearch?: (query: string) => void\n disabled?: boolean\n label?: string\n loading?: boolean\n minChars?: number\n maxResults?: number\n}\n\n/**\n * Label component properties\n */\nexport interface LabelProps extends ComponentProps {\n text: string\n htmlFor?: string\n required?: boolean\n size?: 'small' | 'medium' | 'large'\n}\n\n/**\n * ImageView component properties\n */\nexport interface ImageViewProps extends ComponentProps {\n src: string\n alt?: string\n width?: number | string\n height?: number | string\n objectFit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'\n fallback?: string\n loading?: 'eager' | 'lazy'\n onClick?: () => void\n}\n\n/**\n * Chip component properties\n */\nexport interface ChipProps extends ComponentProps {\n text: string\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'error'\n size?: 'small' | 'medium' | 'large'\n removable?: boolean\n onRemove?: () => void\n icon?: string\n onClick?: () => void\n}\n\n/**\n * Tooltip component properties\n */\nexport interface TooltipProps extends ComponentProps {\n text: string\n position?: 'top' | 'right' | 'bottom' | 'left'\n trigger?: 'hover' | 'click' | 'focus'\n delay?: number\n children: string\n}\n\n/**\n * ScrollView component properties\n */\nexport interface ScrollViewProps extends ComponentProps {\n direction?: 'vertical' | 'horizontal' | 'both'\n showScrollbar?: boolean\n smooth?: boolean\n height?: string | number\n width?: string | number\n children: string\n}\n\n/**\n * SplitView component properties\n */\nexport interface SplitViewProps extends ComponentProps {\n direction?: 'horizontal' | 'vertical'\n sizes?: [number, number]\n minSizes?: [number, number]\n resizable?: boolean\n children: [string, string]\n}\n\n/**\n * Accordion component properties\n */\nexport interface AccordionProps extends ComponentProps {\n items: Array<{ title: string, content: string, disabled?: boolean }>\n multiple?: boolean\n defaultOpen?: number[]\n}\n\n/**\n * Stepper component properties\n */\nexport interface StepperProps extends ComponentProps {\n steps: Array<{ label: string, description?: string }>\n currentStep: number\n orientation?: 'horizontal' | 'vertical'\n onStepClick?: (step: number) => void\n}\n\n/**\n * ModalComponent properties (different from modals.ts dialog)\n */\nexport interface ModalComponentProps extends ComponentProps {\n open?: boolean\n title?: string\n size?: 'small' | 'medium' | 'large' | 'fullscreen'\n closable?: boolean\n onClose?: () => void\n children: string\n footer?: string\n}\n\n/**\n * ListView component properties\n */\nexport interface ListViewProps extends ComponentProps {\n items: Array<{ id: string, content: string, selected?: boolean }>\n selectable?: boolean\n multiSelect?: boolean\n onSelect?: (ids: string[]) => void\n emptyMessage?: string\n}\n\n/**\n * Table component properties\n */\nexport interface TableProps extends ComponentProps {\n columns: Array<{ key: string, label: string, width?: string, sortable?: boolean }>\n data: Array<Record<string, unknown>>\n striped?: boolean\n bordered?: boolean\n hoverable?: boolean\n sortBy?: string\n sortOrder?: 'asc' | 'desc'\n onSort?: (column: string) => void\n}\n\n/**\n * TreeView component properties\n */\nexport interface TreeViewProps extends ComponentProps {\n nodes: TreeNode[]\n expandedKeys?: string[]\n selectedKeys?: string[]\n checkable?: boolean\n onExpand?: (keys: string[]) => void\n onSelect?: (keys: string[]) => void\n}\n\nexport interface TreeNode {\n key: string\n label: string\n children?: TreeNode[]\n icon?: string\n disabled?: boolean\n}\n\n/**\n * DataGrid component properties\n */\nexport interface DataGridProps extends ComponentProps {\n columns: Array<{ key: string, label: string, width?: string, sortable?: boolean, filterable?: boolean }>\n data: Array<Record<string, unknown>>\n pagination?: { page: number, pageSize: number, total: number }\n selectable?: boolean\n onPageChange?: (page: number) => void\n onSort?: (column: string, order: 'asc' | 'desc') => void\n}\n\n/**\n * Chart component properties\n */\nexport interface ChartProps extends ComponentProps {\n type: 'line' | 'bar' | 'pie' | 'doughnut' | 'area'\n data: ChartData\n options?: ChartOptions\n width?: number | string\n height?: number | string\n}\n\nexport interface ChartData {\n labels: string[]\n datasets: Array<{\n label: string\n data: number[]\n backgroundColor?: string | string[]\n borderColor?: string\n }>\n}\n\nexport interface ChartOptions {\n title?: string\n legend?: boolean\n animation?: boolean\n}\n\n/**\n * CodeEditor component properties\n */\nexport interface CodeEditorProps extends ComponentProps {\n value?: string\n language?: string\n theme?: 'light' | 'dark'\n lineNumbers?: boolean\n readOnly?: boolean\n onChange?: (value: string) => void\n height?: string | number\n tabSize?: number\n wordWrap?: boolean\n}\n\n/**\n * MediaPlayer component properties\n */\nexport interface MediaPlayerProps extends ComponentProps {\n src: string\n type?: 'video' | 'audio'\n poster?: string\n autoplay?: boolean\n loop?: boolean\n muted?: boolean\n controls?: boolean\n width?: string | number\n height?: string | number\n onPlay?: () => void\n onPause?: () => void\n onEnded?: () => void\n}\n\n/**\n * FileExplorer component properties\n */\nexport interface FileExplorerProps extends ComponentProps {\n files: FileNode[]\n viewMode?: 'list' | 'grid'\n showHidden?: boolean\n selectable?: boolean\n onSelect?: (path: string) => void\n onOpen?: (path: string) => void\n}\n\nexport interface FileNode {\n name: string\n path: string\n type: 'file' | 'folder'\n size?: number\n modified?: Date\n icon?: string\n}\n\n/**\n * WebView component properties\n */\nexport interface WebViewProps extends ComponentProps {\n url: string\n width?: string | number\n height?: string | number\n sandbox?: boolean\n allowScripts?: boolean\n onLoad?: () => void\n onError?: (error: Error) => void\n}\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\n/**\n * Generate unique ID for components\n */\nfunction generateId(prefix: string = 'stx'): string {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n}\n\n/**\n * Escape HTML to prevent XSS\n */\nfunction escapeHtml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\n/**\n * Build class string from props\n */\nfunction buildClasses(...classes: (string | undefined | false)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n\n/**\n * Build style string from object\n */\nfunction buildStyles(styles: Record<string, string> | undefined): string {\n if (!styles)\n return ''\n return Object.entries(styles)\n .map(([key, value]) => `${key.replace(/([A-Z])/g, '-$1').toLowerCase()}: ${value}`)\n .join('; ')\n}\n\n// =============================================================================\n// Input Components\n// =============================================================================\n\n/**\n * Create a Button component\n */\nexport function createButton(props: ButtonProps): string {\n const {\n text,\n variant = 'primary',\n size = 'medium',\n disabled = false,\n loading = false,\n icon,\n iconPosition = 'left',\n id = generateId('btn'),\n className,\n style,\n } = props\n\n const classes = buildClasses(\n 'stx-button',\n `stx-button--${variant}`,\n `stx-button--${size}`,\n disabled && 'stx-button--disabled',\n loading && 'stx-button--loading',\n className,\n )\n\n const styleStr = buildStyles(style)\n const iconHtml = icon ? `<span class=\"stx-button-icon\">${icon}</span>` : ''\n const loadingHtml = loading ? '<span class=\"stx-button-spinner\"></span>' : ''\n\n const content = iconPosition === 'left'\n ? `${iconHtml}${loadingHtml}<span class=\"stx-button-text\">${escapeHtml(text)}</span>`\n : `<span class=\"stx-button-text\">${escapeHtml(text)}</span>${iconHtml}${loadingHtml}`\n\n return `<button id=\"${id}\" class=\"${classes}\" ${disabled || loading ? 'disabled' : ''} ${styleStr ? `style='${styleStr}'` : ''}>${content}</button>`\n}\n\n/**\n * Create a TextInput component\n */\nexport function createTextInput(props: TextInputProps): string {\n const {\n value = '',\n placeholder = '',\n type = 'text',\n disabled = false,\n readonly = false,\n maxLength,\n minLength,\n pattern,\n required = false,\n autocomplete,\n label,\n error,\n hint,\n id = generateId('input'),\n className,\n style,\n } = props\n\n const classes = buildClasses(\n 'stx-input',\n error && 'stx-input--error',\n disabled && 'stx-input--disabled',\n className,\n )\n\n const styleStr = buildStyles(style)\n const attrs = [\n `type=\"${type}\"`,\n `id=\"${id}\"`,\n `class=\"${classes}\"`,\n value && `value=\"${escapeHtml(value)}\"`,\n placeholder && `placeholder=\"${escapeHtml(placeholder)}\"`,\n disabled && 'disabled',\n readonly && 'readonly',\n required && 'required',\n maxLength && `maxlength=\"${maxLength}\"`,\n minLength && `minlength=\"${minLength}\"`,\n pattern && `pattern=\"${escapeHtml(pattern)}\"`,\n autocomplete && `autocomplete=\"${autocomplete}\"`,\n styleStr && `style=\"${styleStr}\"`,\n ].filter(Boolean).join(' ')\n\n let html = ''\n if (label) {\n html += `<label class=\"stx-input-label\" for=\"${id}\">${escapeHtml(label)}</label>`\n }\n html += `<input ${attrs} />`\n if (error) {\n html += `<div class=\"stx-input-error\">${escapeHtml(error)}</div>`\n }\n else if (hint) {\n html += `<div class=\"stx-input-hint\">${escapeHtml(hint)}</div>`\n }\n\n return `<div class=\"stx-input-wrapper\">${html}</div>`\n}\n\n/**\n * Create a Checkbox component\n */\nexport function createCheckbox(props: CheckboxProps): string {\n const {\n checked = false,\n label,\n disabled = false,\n indeterminate = false,\n id = generateId('checkbox'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-checkbox', disabled && 'stx-checkbox--disabled', className)\n const styleStr = buildStyles(style)\n\n const inputAttrs = [\n 'type=\"checkbox\"',\n `id=\"${id}\"`,\n checked && 'checked',\n disabled && 'disabled',\n indeterminate && 'data-indeterminate=\"true\"',\n ].filter(Boolean).join(' ')\n\n return `\n <label class=\"${classes}\" ${styleStr ? `style=\"${styleStr}\"` : ''}>\n <input ${inputAttrs} />\n <span class=\"stx-checkbox-box\"></span>\n ${label ? `<span class=\"stx-checkbox-label\">${escapeHtml(label)}</span>` : ''}\n </label>\n `\n}\n\n/**\n * Create a Slider component\n */\nexport function createSlider(props: SliderProps): string {\n const {\n value = 50,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n label,\n showValue = true,\n id = generateId('slider'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-slider', disabled && 'stx-slider--disabled', className)\n const styleStr = buildStyles(style)\n\n const inputAttrs = [\n 'type=\"range\"',\n `id=\"${id}\"`,\n `value=\"${value}\"`,\n `min=\"${min}\"`,\n `max=\"${max}\"`,\n `step=\"${step}\"`,\n disabled && 'disabled',\n ].filter(Boolean).join(' ')\n\n let html = ''\n if (label) {\n html += `<label class=\"stx-slider-label\" for=\"${id}\">${escapeHtml(label)}</label>`\n }\n html += `<div class=\"stx-slider-track\"><input ${inputAttrs} /></div>`\n if (showValue) {\n html += `<span class=\"stx-slider-value\">${value}</span>`\n }\n\n return `<div class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n// =============================================================================\n// Display Components\n// =============================================================================\n\n/**\n * Create a ProgressBar component\n */\nexport function createProgressBar(props: ProgressBarProps): string {\n const {\n value,\n max = 100,\n variant = 'default',\n size = 'medium',\n showLabel = false,\n indeterminate = false,\n id = generateId('progress'),\n className,\n style,\n } = props\n\n const percentage = Math.min(100, Math.max(0, (value / max) * 100))\n const classes = buildClasses(\n 'stx-progress',\n `stx-progress--${variant}`,\n `stx-progress--${size}`,\n indeterminate && 'stx-progress--indeterminate',\n className,\n )\n const styleStr = buildStyles(style)\n\n return `\n <div id=\"${id}\" class=\"${classes}\" role=\"progressbar\" aria-valuenow=\"${value}\" aria-valuemin=\"0\" aria-valuemax=\"${max}\" ${styleStr ? `style=\"${styleStr}\"` : ''}>\n <div class=\"stx-progress-bar\" style=\"width: ${indeterminate ? '100%' : `${percentage}%`}\"></div>\n ${showLabel ? `<span class=\"stx-progress-label\">${Math.round(percentage)}%</span>` : ''}\n </div>\n `\n}\n\n/**\n * Create a Badge component\n */\nexport function createBadge(props: BadgeProps): string {\n const {\n text,\n variant = 'default',\n size = 'medium',\n id = generateId('badge'),\n className,\n style,\n } = props\n\n const classes = buildClasses(\n 'stx-badge',\n `stx-badge--${variant}`,\n `stx-badge--${size}`,\n className,\n )\n const styleStr = buildStyles(style)\n\n return `<span id=\"${id}\" class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${escapeHtml(text)}</span>`\n}\n\n/**\n * Create an Avatar component\n */\nexport function createAvatar(props: AvatarProps): string {\n const {\n src,\n alt = '',\n name,\n size = 'medium',\n shape = 'circle',\n id = generateId('avatar'),\n className,\n style,\n } = props\n\n const sizeClass = typeof size === 'number' ? '' : `stx-avatar--${size}`\n const sizeStyle = typeof size === 'number' ? `width: ${size}px; height: ${size}px;` : ''\n\n const classes = buildClasses('stx-avatar', sizeClass, `stx-avatar--${shape}`, className)\n const combinedStyle = [sizeStyle, buildStyles(style)].filter(Boolean).join(' ')\n\n // Generate initials from name\n const initials = name\n ? name.split(' ').map(n => n[0]).join('').toUpperCase().slice(0, 2)\n : ''\n\n if (src) {\n return `<div id=\"${id}\" class=\"${classes}\" ${combinedStyle ? `style=\"${combinedStyle}\"` : ''}>\n <img src=\"${escapeHtml(src)}\" alt=\"${escapeHtml(alt)}\" class=\"stx-avatar-img\" />\n </div>`\n }\n\n return `<div id=\"${id}\" class=\"${classes}\" ${combinedStyle ? `style=\"${combinedStyle}\"` : ''}>\n <span class=\"stx-avatar-initials\">${initials}</span>\n </div>`\n}\n\n/**\n * Create a Card component\n */\nexport function createCard(props: CardProps): string {\n const {\n title,\n subtitle,\n content,\n image,\n footer,\n variant = 'default',\n id = generateId('card'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-card', `stx-card--${variant}`, className)\n const styleStr = buildStyles(style)\n\n let html = ''\n if (image) {\n html += `<div class=\"stx-card-image\"><img src=\"${escapeHtml(image)}\" alt=\"\" /></div>`\n }\n html += '<div class=\"stx-card-body\">'\n if (title) {\n html += `<h3 class=\"stx-card-title\">${escapeHtml(title)}</h3>`\n }\n if (subtitle) {\n html += `<p class=\"stx-card-subtitle\">${escapeHtml(subtitle)}</p>`\n }\n if (content) {\n html += `<div class=\"stx-card-content\">${escapeHtml(content)}</div>`\n }\n html += '</div>'\n if (footer) {\n html += `<div class=\"stx-card-footer\">${escapeHtml(footer)}</div>`\n }\n\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n// =============================================================================\n// Layout Components\n// =============================================================================\n\n/**\n * Create a Tabs component\n */\nexport function createTabs(props: TabsProps): string {\n const {\n tabs,\n activeTab,\n variant = 'default',\n id = generateId('tabs'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-tabs', `stx-tabs--${variant}`, className)\n const styleStr = buildStyles(style)\n\n const tabsHtml = tabs.map((tab, index) => {\n const isActive = activeTab ? tab.value === activeTab : index === 0\n const tabClasses = buildClasses(\n 'stx-tab',\n isActive && 'stx-tab--active',\n tab.disabled && 'stx-tab--disabled',\n )\n return `<button class=\"${tabClasses}\" data-value=\"${escapeHtml(tab.value)}\" ${tab.disabled ? 'disabled' : ''} role=\"tab\" aria-selected=\"${isActive}\">${escapeHtml(tab.label)}</button>`\n }).join('')\n\n return `<div id=\"${id}\" class=\"${classes}\" role=\"tablist\" ${styleStr ? `style='${styleStr}'` : ''}>${tabsHtml}</div>`\n}\n\n/**\n * Create a Dropdown/Select component\n */\nexport function createDropdown(props: DropdownProps): string {\n const {\n options,\n value,\n placeholder = 'Select...',\n disabled = false,\n id = generateId('dropdown'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-dropdown', disabled && 'stx-dropdown--disabled', className)\n const styleStr = buildStyles(style)\n\n const optionsHtml = options.map((opt) => {\n const selected = opt.value === value ? 'selected' : ''\n const disabledAttr = opt.disabled ? 'disabled' : ''\n return `<option value=\"${escapeHtml(opt.value)}\" ${selected} ${disabledAttr}>${escapeHtml(opt.label)}</option>`\n }).join('')\n\n const placeholderOption = value ? '' : `<option value=\"\" disabled selected>${escapeHtml(placeholder)}</option>`\n\n return `<select id=\"${id}\" class=\"${classes}\" ${disabled ? 'disabled' : ''} ${styleStr ? `style='${styleStr}'` : ''}>${placeholderOption}${optionsHtml}</select>`\n}\n\n// =============================================================================\n// Advanced Components\n// =============================================================================\n\n/**\n * Create a Rating component\n */\nexport function createRating(props: RatingProps): string {\n const {\n value = 0,\n max = 5,\n readonly = false,\n size = 'medium',\n allowHalf = false,\n id = generateId('rating'),\n className,\n style,\n } = props\n\n const classes = buildClasses(\n 'stx-rating',\n `stx-rating--${size}`,\n readonly && 'stx-rating--readonly',\n className,\n )\n const styleStr = buildStyles(style)\n\n let starsHtml = ''\n for (let i = 1; i <= max; i++) {\n const filled = i <= value\n const halfFilled = allowHalf && i - 0.5 === value\n const starClass = filled ? 'stx-star--filled' : halfFilled ? 'stx-star--half' : ''\n starsHtml += `<span class=\"stx-star ${starClass}\" data-value=\"${i}\">★</span>`\n }\n\n return `<div id=\"${id}\" class=\"${classes}\" role=\"slider\" aria-valuenow=\"${value}\" aria-valuemin=\"0\" aria-valuemax=\"${max}\" ${styleStr ? `style='${styleStr}'` : ''}>${starsHtml}</div>`\n}\n\n/**\n * Create a RadioButton component\n */\nexport function createRadioButton(props: RadioButtonProps): string {\n const {\n value,\n name,\n checked = false,\n label,\n disabled = false,\n id = generateId('radio'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-radio', disabled && 'stx-radio--disabled', className)\n const styleStr = buildStyles(style)\n\n const inputAttrs = [\n 'type=\"radio\"',\n `id=\"${id}\"`,\n `name=\"${escapeHtml(name)}\"`,\n `value=\"${escapeHtml(value)}\"`,\n checked && 'checked',\n disabled && 'disabled',\n ].filter(Boolean).join(' ')\n\n return `\n <label class=\"${classes}\" ${styleStr ? `style=\"${styleStr}\"` : ''}>\n <input ${inputAttrs} />\n <span class=\"stx-radio-circle\"></span>\n ${label ? `<span class=\"stx-radio-label\">${escapeHtml(label)}</span>` : ''}\n </label>\n `\n}\n\n/**\n * Create a ColorPicker component\n */\nexport function createColorPicker(props: ColorPickerProps): string {\n const {\n value = '#3498db',\n disabled = false,\n label,\n presetColors = ['#e74c3c', '#f39c12', '#27ae60', '#3498db', '#9b59b6', '#1abc9c', '#34495e', '#000000'],\n id = generateId('color'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-color-picker', disabled && 'stx-color-picker--disabled', className)\n const styleStr = buildStyles(style)\n\n let html = ''\n if (label) {\n html += `<label class=\"stx-color-picker-label\" for=\"${id}\">${escapeHtml(label)}</label>`\n }\n html += `<div class=\"stx-color-picker-input\">\n <input type=\"color\" id=\"${id}\" value=\"${escapeHtml(value)}\" ${disabled ? 'disabled' : ''} />\n <span class=\"stx-color-picker-value\">${escapeHtml(value)}</span>\n </div>`\n\n if (presetColors.length > 0) {\n html += '<div class=\"stx-color-picker-presets\">'\n for (const color of presetColors) {\n html += `<button class=\"stx-color-preset\" style=\"background: ${escapeHtml(color)}\" data-color=\"${escapeHtml(color)}\" ${disabled ? 'disabled' : ''}></button>`\n }\n html += '</div>'\n }\n\n return `<div class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create a DatePicker component\n */\nexport function createDatePicker(props: DatePickerProps): string {\n const {\n value,\n min,\n max,\n disabled = false,\n label,\n placeholder = 'Select date',\n showClear = true,\n id = generateId('date'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-date-picker', disabled && 'stx-date-picker--disabled', className)\n const styleStr = buildStyles(style)\n\n const dateValue = value instanceof Date ? value.toISOString().split('T')[0] : value || ''\n const minValue = min instanceof Date ? min.toISOString().split('T')[0] : min\n const maxValue = max instanceof Date ? max.toISOString().split('T')[0] : max\n\n const inputAttrs = [\n 'type=\"date\"',\n `id=\"${id}\"`,\n dateValue && `value=\"${dateValue}\"`,\n minValue && `min=\"${minValue}\"`,\n maxValue && `max=\"${maxValue}\"`,\n disabled && 'disabled',\n `placeholder=\"${escapeHtml(placeholder)}\"`,\n ].filter(Boolean).join(' ')\n\n let html = ''\n if (label) {\n html += `<label class=\"stx-date-picker-label\" for=\"${id}\">${escapeHtml(label)}</label>`\n }\n html += `<div class=\"stx-date-picker-input\">\n <input ${inputAttrs} />\n ${showClear && dateValue ? '<button class=\"stx-date-picker-clear\" type=\"button\">×</button>' : ''}\n </div>`\n\n return `<div class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create a TimePicker component\n */\nexport function createTimePicker(props: TimePickerProps): string {\n const {\n value = '',\n disabled = false,\n label,\n step = 60,\n min,\n max,\n id = generateId('time'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-time-picker', disabled && 'stx-time-picker--disabled', className)\n const styleStr = buildStyles(style)\n\n const inputAttrs = [\n 'type=\"time\"',\n `id=\"${id}\"`,\n value && `value=\"${escapeHtml(value)}\"`,\n `step=\"${step}\"`,\n min && `min=\"${escapeHtml(min)}\"`,\n max && `max=\"${escapeHtml(max)}\"`,\n disabled && 'disabled',\n ].filter(Boolean).join(' ')\n\n let html = ''\n if (label) {\n html += `<label class=\"stx-time-picker-label\" for=\"${id}\">${escapeHtml(label)}</label>`\n }\n html += `<input ${inputAttrs} class=\"stx-time-picker-input\" />`\n\n return `<div class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create an Autocomplete component\n */\nexport function createAutocomplete(props: AutocompleteProps): string {\n const {\n options,\n value = '',\n placeholder = 'Search...',\n disabled = false,\n label,\n loading = false,\n id = generateId('autocomplete'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-autocomplete', disabled && 'stx-autocomplete--disabled', className)\n const styleStr = buildStyles(style)\n\n const selectedOption = options.find(opt => opt.value === value)\n const displayValue = selectedOption ? selectedOption.label : value\n\n let html = ''\n if (label) {\n html += `<label class=\"stx-autocomplete-label\" for=\"${id}\">${escapeHtml(label)}</label>`\n }\n html += `<div class=\"stx-autocomplete-input-wrapper\">\n <input type=\"text\" id=\"${id}\" value=\"${escapeHtml(displayValue)}\" placeholder=\"${escapeHtml(placeholder)}\" ${disabled ? 'disabled' : ''} autocomplete=\"off\" class=\"stx-autocomplete-input\" />\n ${loading ? '<span class=\"stx-autocomplete-spinner\"></span>' : ''}\n </div>`\n html += '<ul class=\"stx-autocomplete-list\">'\n for (const opt of options) {\n html += `<li class=\"stx-autocomplete-item ${opt.value === value ? 'stx-autocomplete-item--selected' : ''}\" data-value=\"${escapeHtml(opt.value)}\">${escapeHtml(opt.label)}</li>`\n }\n html += '</ul>'\n\n return `<div class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create a Label component\n */\nexport function createLabel(props: LabelProps): string {\n const {\n text,\n htmlFor,\n required = false,\n size = 'medium',\n id = generateId('label'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-label', `stx-label--${size}`, className)\n const styleStr = buildStyles(style)\n\n return `<label id=\"${id}\" class=\"${classes}\" ${htmlFor ? `for='${escapeHtml(htmlFor)}'` : ''} ${styleStr ? `style='${styleStr}'` : ''}>${escapeHtml(text)}${required ? '<span class=\"stx-label-required\">*</span>' : ''}</label>`\n}\n\n/**\n * Create an ImageView component\n */\nexport function createImageView(props: ImageViewProps): string {\n const {\n src,\n alt = '',\n width,\n height,\n objectFit = 'cover',\n fallback,\n loading = 'lazy',\n id = generateId('image'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-image', className)\n const imageStyles: Record<string, string> = { objectFit }\n if (width)\n imageStyles.width = typeof width === 'number' ? `${width}px` : width\n if (height)\n imageStyles.height = typeof height === 'number' ? `${height}px` : height\n\n const combinedStyle = [buildStyles(imageStyles), buildStyles(style)].filter(Boolean).join('; ')\n const fallbackAttr = fallback ? `onerror=\"this.src='${escapeHtml(fallback)}'\"` : ''\n\n return `<img id=\"${id}\" class=\"${classes}\" src=\"${escapeHtml(src)}\" alt=\"${escapeHtml(alt)}\" loading=\"${loading}\" ${combinedStyle ? `style='${combinedStyle}'` : ''} ${fallbackAttr} />`\n}\n\n/**\n * Create a Chip component\n */\nexport function createChip(props: ChipProps): string {\n const {\n text,\n variant = 'default',\n size = 'medium',\n removable = false,\n icon,\n id = generateId('chip'),\n className,\n style,\n } = props\n\n const classes = buildClasses(\n 'stx-chip',\n `stx-chip--${variant}`,\n `stx-chip--${size}`,\n className,\n )\n const styleStr = buildStyles(style)\n\n let html = ''\n if (icon) {\n html += `<span class=\"stx-chip-icon\">${icon}</span>`\n }\n html += `<span class=\"stx-chip-text\">${escapeHtml(text)}</span>`\n if (removable) {\n html += '<button class=\"stx-chip-remove\" type=\"button\">×</button>'\n }\n\n return `<span id=\"${id}\" class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</span>`\n}\n\n/**\n * Create a Tooltip component\n */\nexport function createTooltip(props: TooltipProps): string {\n const {\n text,\n position = 'top',\n delay = 200,\n children,\n id = generateId('tooltip'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-tooltip-wrapper', className)\n const styleStr = buildStyles(style)\n\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style=\"${styleStr}\"` : ''} data-tooltip=\"${escapeHtml(text)}\" data-position=\"${position}\" data-delay=\"${delay}\">\n ${children}\n <span class=\"stx-tooltip stx-tooltip--${position}\">${escapeHtml(text)}</span>\n </div>`\n}\n\n/**\n * Create a ScrollView component\n */\nexport function createScrollView(props: ScrollViewProps): string {\n const {\n direction = 'vertical',\n showScrollbar = true,\n smooth = true,\n height,\n width,\n children,\n id = generateId('scroll'),\n className,\n style,\n } = props\n\n const classes = buildClasses(\n 'stx-scroll-view',\n `stx-scroll-view--${direction}`,\n !showScrollbar && 'stx-scroll-view--hide-scrollbar',\n smooth && 'stx-scroll-view--smooth',\n className,\n )\n\n const scrollStyles: Record<string, string> = {}\n if (height)\n scrollStyles.height = typeof height === 'number' ? `${height}px` : height\n if (width)\n scrollStyles.width = typeof width === 'number' ? `${width}px` : width\n\n const combinedStyle = [buildStyles(scrollStyles), buildStyles(style)].filter(Boolean).join('; ')\n\n return `<div id=\"${id}\" class=\"${classes}\" ${combinedStyle ? `style='${combinedStyle}'` : ''}>${children}</div>`\n}\n\n/**\n * Create a SplitView component\n */\nexport function createSplitView(props: SplitViewProps): string {\n const {\n direction = 'horizontal',\n sizes = [50, 50],\n resizable = true,\n children,\n id = generateId('split'),\n className,\n style,\n } = props\n\n const classes = buildClasses(\n 'stx-split-view',\n `stx-split-view--${direction}`,\n resizable && 'stx-split-view--resizable',\n className,\n )\n const styleStr = buildStyles(style)\n\n const sizeUnit = direction === 'horizontal' ? 'width' : 'height'\n\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style=\"${styleStr}\"` : ''}>\n <div class=\"stx-split-pane\" style=\"${sizeUnit}: ${sizes[0]}%\">${children[0]}</div>\n ${resizable ? '<div class=\"stx-split-divider\"></div>' : ''}\n <div class=\"stx-split-pane\" style=\"${sizeUnit}: ${sizes[1]}%\">${children[1]}</div>\n </div>`\n}\n\n/**\n * Create an Accordion component\n */\nexport function createAccordion(props: AccordionProps): string {\n const {\n items,\n multiple = false,\n defaultOpen = [],\n id = generateId('accordion'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-accordion', className)\n const styleStr = buildStyles(style)\n\n let html = ''\n items.forEach((item, index) => {\n const isOpen = defaultOpen.includes(index)\n const itemClasses = buildClasses(\n 'stx-accordion-item',\n isOpen && 'stx-accordion-item--open',\n item.disabled && 'stx-accordion-item--disabled',\n )\n html += `<div class=\"${itemClasses}\" data-index=\"${index}\">\n <button class=\"stx-accordion-header\" ${item.disabled ? 'disabled' : ''} aria-expanded=\"${isOpen}\" data-multiple=\"${multiple}\">\n <span class=\"stx-accordion-title\">${escapeHtml(item.title)}</span>\n <span class=\"stx-accordion-icon\">▼</span>\n </button>\n <div class=\"stx-accordion-content\" ${isOpen ? '' : 'hidden'}>\n ${escapeHtml(item.content)}\n </div>\n </div>`\n })\n\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create a Stepper component\n */\nexport function createStepper(props: StepperProps): string {\n const {\n steps,\n currentStep,\n orientation = 'horizontal',\n id = generateId('stepper'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-stepper', `stx-stepper--${orientation}`, className)\n const styleStr = buildStyles(style)\n\n let html = ''\n steps.forEach((step, index) => {\n const stepClasses = buildClasses(\n 'stx-step',\n index < currentStep && 'stx-step--completed',\n index === currentStep && 'stx-step--active',\n )\n html += `<div class=\"${stepClasses}\" data-step=\"${index}\">\n <div class=\"stx-step-indicator\">\n ${index < currentStep ? '✓' : index + 1}\n </div>\n <div class=\"stx-step-content\">\n <div class=\"stx-step-label\">${escapeHtml(step.label)}</div>\n ${step.description ? `<div class=\"stx-step-description\">${escapeHtml(step.description)}</div>` : ''}\n </div>\n </div>`\n if (index < steps.length - 1) {\n html += '<div class=\"stx-step-connector\"></div>'\n }\n })\n\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create a Modal component (as a component, not a dialog function)\n */\nexport function createModalComponent(props: ModalComponentProps): string {\n const {\n open = false,\n title,\n size = 'medium',\n closable = true,\n children,\n footer,\n id = generateId('modal'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-modal-component', `stx-modal-component--${size}`, className)\n const styleStr = buildStyles(style)\n\n if (!open) {\n return `<div id=\"${id}\" class=\"${classes} stx-modal-component--hidden\" ${styleStr ? `style='${styleStr}'` : ''}></div>`\n }\n\n let html = '<div class=\"stx-modal-component-overlay\">'\n html += '<div class=\"stx-modal-component-dialog\">'\n\n if (title || closable) {\n html += '<div class=\"stx-modal-component-header\">'\n if (title) {\n html += `<h3 class=\"stx-modal-component-title\">${escapeHtml(title)}</h3>`\n }\n if (closable) {\n html += '<button class=\"stx-modal-component-close\">×</button>'\n }\n html += '</div>'\n }\n\n html += `<div class=\"stx-modal-component-body\">${children}</div>`\n\n if (footer) {\n html += `<div class=\"stx-modal-component-footer\">${footer}</div>`\n }\n\n html += '</div></div>'\n\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create a ListView component\n */\nexport function createListView(props: ListViewProps): string {\n const {\n items,\n selectable = false,\n multiSelect = false,\n emptyMessage = 'No items',\n id = generateId('list'),\n className,\n style,\n } = props\n\n const classes = buildClasses(\n 'stx-list-view',\n selectable && 'stx-list-view--selectable',\n multiSelect && 'stx-list-view--multi',\n className,\n )\n const styleStr = buildStyles(style)\n\n if (items.length === 0) {\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style=\"${styleStr}\"` : ''}>\n <div class=\"stx-list-view-empty\">${escapeHtml(emptyMessage)}</div>\n </div>`\n }\n\n let html = '<ul class=\"stx-list-view-items\">'\n for (const item of items) {\n const itemClasses = buildClasses(\n 'stx-list-view-item',\n item.selected && 'stx-list-view-item--selected',\n )\n html += `<li class=\"${itemClasses}\" data-id=\"${escapeHtml(item.id)}\" ${selectable ? 'tabindex=\"0\"' : ''}>${item.content}</li>`\n }\n html += '</ul>'\n\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create a Table component\n */\nexport function createTable(props: TableProps): string {\n const {\n columns,\n data,\n striped = false,\n bordered = false,\n hoverable = true,\n sortBy,\n sortOrder,\n id = generateId('table'),\n className,\n style,\n } = props\n\n const classes = buildClasses(\n 'stx-table',\n striped && 'stx-table--striped',\n bordered && 'stx-table--bordered',\n hoverable && 'stx-table--hoverable',\n className,\n )\n const styleStr = buildStyles(style)\n\n let html = '<table>'\n html += '<thead><tr>'\n for (const col of columns) {\n const isSorted = col.key === sortBy\n const sortClass = isSorted ? `stx-table-sorted stx-table-sorted--${sortOrder}` : ''\n const sortable = col.sortable ? 'data-sortable=\"true\"' : ''\n const widthStyle = col.width ? `style=\"width: ${col.width}\"` : ''\n html += `<th class=\"${sortClass}\" ${sortable} ${widthStyle} data-key=\"${escapeHtml(col.key)}\">${escapeHtml(col.label)}${col.sortable ? '<span class=\"stx-table-sort-icon\"></span>' : ''}</th>`\n }\n html += '</tr></thead>'\n\n html += '<tbody>'\n for (const row of data) {\n html += '<tr>'\n for (const col of columns) {\n const cellValue = row[col.key]\n html += `<td>${cellValue != null ? escapeHtml(String(cellValue)) : ''}</td>`\n }\n html += '</tr>'\n }\n html += '</tbody></table>'\n\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Render a tree node recursively\n */\nfunction renderTreeNode(node: TreeNode, expandedKeys: string[], selectedKeys: string[], checkable: boolean): string {\n const isExpanded = expandedKeys.includes(node.key)\n const isSelected = selectedKeys.includes(node.key)\n const hasChildren = node.children && node.children.length > 0\n\n const nodeClasses = buildClasses(\n 'stx-tree-node',\n isSelected && 'stx-tree-node--selected',\n node.disabled && 'stx-tree-node--disabled',\n )\n\n let html = `<div class=\"${nodeClasses}\" data-key=\"${escapeHtml(node.key)}\">`\n html += '<div class=\"stx-tree-node-content\">'\n\n if (hasChildren) {\n html += `<span class=\"stx-tree-toggle ${isExpanded ? 'stx-tree-toggle--expanded' : ''}\">▶</span>`\n }\n else {\n html += '<span class=\"stx-tree-toggle-placeholder\"></span>'\n }\n\n if (checkable) {\n html += `<input type=\"checkbox\" class=\"stx-tree-checkbox\" ${isSelected ? 'checked' : ''} ${node.disabled ? 'disabled' : ''} />`\n }\n\n if (node.icon) {\n html += `<span class=\"stx-tree-icon\">${node.icon}</span>`\n }\n\n html += `<span class=\"stx-tree-label\">${escapeHtml(node.label)}</span>`\n html += '</div>'\n\n if (hasChildren && isExpanded) {\n html += '<div class=\"stx-tree-children\">'\n for (const child of node.children!) {\n html += renderTreeNode(child, expandedKeys, selectedKeys, checkable)\n }\n html += '</div>'\n }\n\n html += '</div>'\n return html\n}\n\n/**\n * Create a TreeView component\n */\nexport function createTreeView(props: TreeViewProps): string {\n const {\n nodes,\n expandedKeys = [],\n selectedKeys = [],\n checkable = false,\n id = generateId('tree'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-tree-view', checkable && 'stx-tree-view--checkable', className)\n const styleStr = buildStyles(style)\n\n let html = ''\n for (const node of nodes) {\n html += renderTreeNode(node, expandedKeys, selectedKeys, checkable)\n }\n\n return `<div id=\"${id}\" class=\"${classes}\" role=\"tree\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create a DataGrid component\n */\nexport function createDataGrid(props: DataGridProps): string {\n const {\n columns,\n data,\n pagination,\n selectable = false,\n id = generateId('datagrid'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-data-grid', selectable && 'stx-data-grid--selectable', className)\n const styleStr = buildStyles(style)\n\n let html = '<div class=\"stx-data-grid-table-wrapper\">'\n html += '<table class=\"stx-data-grid-table\">'\n html += '<thead><tr>'\n\n if (selectable) {\n html += '<th class=\"stx-data-grid-select-all\"><input type=\"checkbox\" /></th>'\n }\n\n for (const col of columns) {\n const widthStyle = col.width ? `style=\"width: ${col.width}\"` : ''\n html += `<th ${widthStyle}>\n <div class=\"stx-data-grid-header-cell\">\n <span>${escapeHtml(col.label)}</span>\n ${col.sortable ? '<button class=\"stx-data-grid-sort\">⇅</button>' : ''}\n ${col.filterable ? '<button class=\"stx-data-grid-filter\">⊻</button>' : ''}\n </div>\n </th>`\n }\n html += '</tr></thead>'\n\n html += '<tbody>'\n for (const row of data) {\n html += '<tr>'\n if (selectable) {\n html += '<td class=\"stx-data-grid-select\"><input type=\"checkbox\" /></td>'\n }\n for (const col of columns) {\n const cellValue = row[col.key]\n html += `<td>${cellValue != null ? escapeHtml(String(cellValue)) : ''}</td>`\n }\n html += '</tr>'\n }\n html += '</tbody></table></div>'\n\n if (pagination) {\n const totalPages = Math.ceil(pagination.total / pagination.pageSize)\n html += `<div class=\"stx-data-grid-pagination\">\n <span class=\"stx-data-grid-page-info\">Page ${pagination.page} of ${totalPages} (${pagination.total} items)</span>\n <div class=\"stx-data-grid-page-buttons\">\n <button class=\"stx-data-grid-page-btn\" ${pagination.page <= 1 ? 'disabled' : ''}>◀</button>\n <button class=\"stx-data-grid-page-btn\" ${pagination.page >= totalPages ? 'disabled' : ''}>▶</button>\n </div>\n </div>`\n }\n\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create a Chart component (placeholder for integration with charting library)\n */\nexport function createChart(props: ChartProps): string {\n const {\n type,\n data,\n options = {},\n width = '100%',\n height = 300,\n id = generateId('chart'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-chart', `stx-chart--${type}`, className)\n const chartStyles: Record<string, string> = {\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n }\n const combinedStyle = [buildStyles(chartStyles), buildStyles(style)].filter(Boolean).join('; ')\n\n // Store data as JSON for JavaScript charting library to consume\n const chartData = JSON.stringify({ type, data, options })\n\n return `<div id=\"${id}\" class=\"${classes}\" style=\"${combinedStyle}\" data-chart='${escapeHtml(chartData)}'>\n <div class=\"stx-chart-placeholder\">\n ${options.title ? `<div class=\"stx-chart-title\">${escapeHtml(options.title)}</div>` : ''}\n <div class=\"stx-chart-type\">${type.charAt(0).toUpperCase() + type.slice(1)} Chart</div>\n <div class=\"stx-chart-info\">${data.datasets.length} dataset(s), ${data.labels.length} labels</div>\n </div>\n </div>`\n}\n\n/**\n * Create a CodeEditor component\n */\nexport function createCodeEditor(props: CodeEditorProps): string {\n const {\n value = '',\n language = 'plaintext',\n theme = 'dark',\n lineNumbers = true,\n readOnly = false,\n height = 300,\n tabSize = 2,\n wordWrap = false,\n id = generateId('code'),\n className,\n style,\n } = props\n\n const classes = buildClasses(\n 'stx-code-editor',\n `stx-code-editor--${theme}`,\n lineNumbers && 'stx-code-editor--line-numbers',\n readOnly && 'stx-code-editor--readonly',\n wordWrap && 'stx-code-editor--wrap',\n className,\n )\n\n const editorStyles: Record<string, string> = {\n height: typeof height === 'number' ? `${height}px` : height,\n }\n const combinedStyle = [buildStyles(editorStyles), buildStyles(style)].filter(Boolean).join('; ')\n\n const lines = value.split('\\n')\n let codeHtml = ''\n\n if (lineNumbers) {\n codeHtml += '<div class=\"stx-code-editor-gutter\">'\n for (let i = 1; i <= lines.length; i++) {\n codeHtml += `<div class=\"stx-code-editor-line-number\">${i}</div>`\n }\n codeHtml += '</div>'\n }\n\n codeHtml += `<pre class=\"stx-code-editor-content\"><code class=\"language-${escapeHtml(language)}\">${escapeHtml(value)}</code></pre>`\n\n return `<div id=\"${id}\" class=\"${classes}\" style=\"${combinedStyle}\" data-language=\"${escapeHtml(language)}\" data-tab-size=\"${tabSize}\">${codeHtml}</div>`\n}\n\n/**\n * Create a MediaPlayer component\n */\nexport function createMediaPlayer(props: MediaPlayerProps): string {\n const {\n src,\n type = 'video',\n poster,\n autoplay = false,\n loop = false,\n muted = false,\n controls = true,\n width,\n height,\n id = generateId('media'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-media-player', `stx-media-player--${type}`, className)\n const mediaStyles: Record<string, string> = {}\n if (width)\n mediaStyles.width = typeof width === 'number' ? `${width}px` : width\n if (height)\n mediaStyles.height = typeof height === 'number' ? `${height}px` : height\n\n const combinedStyle = [buildStyles(mediaStyles), buildStyles(style)].filter(Boolean).join('; ')\n\n const mediaAttrs = [\n `id=\"${id}-media\"`,\n `src=\"${escapeHtml(src)}\"`,\n controls && 'controls',\n autoplay && 'autoplay',\n loop && 'loop',\n muted && 'muted',\n type === 'video' && poster && `poster=\"${escapeHtml(poster)}\"`,\n ].filter(Boolean).join(' ')\n\n const mediaElement = type === 'video'\n ? `<video ${mediaAttrs}>Your browser does not support the video tag.</video>`\n : `<audio ${mediaAttrs}>Your browser does not support the audio tag.</audio>`\n\n return `<div id=\"${id}\" class=\"${classes}\" ${combinedStyle ? `style='${combinedStyle}'` : ''}>${mediaElement}</div>`\n}\n\n/**\n * Format file size for display\n */\nfunction formatFileSize(bytes?: number): string {\n if (bytes === undefined)\n return ''\n const units = ['B', 'KB', 'MB', 'GB']\n let size = bytes\n let unitIndex = 0\n while (size >= 1024 && unitIndex < units.length - 1) {\n size /= 1024\n unitIndex++\n }\n return `${size.toFixed(1)} ${units[unitIndex]}`\n}\n\n/**\n * Create a FileExplorer component\n */\nexport function createFileExplorer(props: FileExplorerProps): string {\n const {\n files,\n viewMode = 'list',\n showHidden = false,\n selectable = true,\n id = generateId('files'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-file-explorer', `stx-file-explorer--${viewMode}`, className)\n const styleStr = buildStyles(style)\n\n const filteredFiles = showHidden ? files : files.filter(f => !f.name.startsWith('.'))\n\n let html = ''\n if (viewMode === 'list') {\n html = '<table class=\"stx-file-explorer-list\"><thead><tr><th>Name</th><th>Size</th><th>Modified</th></tr></thead><tbody>'\n for (const file of filteredFiles) {\n const icon = file.icon || (file.type === 'folder' ? '📁' : '📄')\n const size = file.type === 'file' ? formatFileSize(file.size) : ''\n const modified = file.modified ? file.modified.toLocaleDateString() : ''\n html += `<tr class=\"stx-file-explorer-item ${selectable ? 'stx-file-explorer-item--selectable' : ''}\" data-path=\"${escapeHtml(file.path)}\" data-type=\"${file.type}\">\n <td><span class=\"stx-file-explorer-icon\">${icon}</span>${escapeHtml(file.name)}</td>\n <td>${size}</td>\n <td>${modified}</td>\n </tr>`\n }\n html += '</tbody></table>'\n }\n else {\n html = '<div class=\"stx-file-explorer-grid\">'\n for (const file of filteredFiles) {\n const icon = file.icon || (file.type === 'folder' ? '📁' : '📄')\n html += `<div class=\"stx-file-explorer-item ${selectable ? 'stx-file-explorer-item--selectable' : ''}\" data-path=\"${escapeHtml(file.path)}\" data-type=\"${file.type}\">\n <div class=\"stx-file-explorer-icon\">${icon}</div>\n <div class=\"stx-file-explorer-name\">${escapeHtml(file.name)}</div>\n </div>`\n }\n html += '</div>'\n }\n\n return `<div id=\"${id}\" class=\"${classes}\" ${styleStr ? `style='${styleStr}'` : ''}>${html}</div>`\n}\n\n/**\n * Create a WebView component\n */\nexport function createWebView(props: WebViewProps): string {\n const {\n url,\n width = '100%',\n height = 400,\n sandbox = true,\n allowScripts = true,\n id = generateId('webview'),\n className,\n style,\n } = props\n\n const classes = buildClasses('stx-webview', className)\n const webviewStyles: Record<string, string> = {\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n }\n const combinedStyle = [buildStyles(webviewStyles), buildStyles(style)].filter(Boolean).join('; ')\n\n const sandboxAttrs: string[] = []\n if (sandbox) {\n sandboxAttrs.push('allow-same-origin')\n if (allowScripts) {\n sandboxAttrs.push('allow-scripts')\n }\n }\n const sandboxAttr = sandbox ? `sandbox=\"${sandboxAttrs.join(' ')}\"` : ''\n\n return `<iframe id=\"${id}\" class=\"${classes}\" src=\"${escapeHtml(url)}\" style=\"${combinedStyle}\" ${sandboxAttr} loading=\"lazy\" frameborder=\"0\"></iframe>`\n}\n\n// =============================================================================\n// Component List\n// =============================================================================\n\n/**\n * List of all 35 available components\n */\nexport const AVAILABLE_COMPONENTS = [\n // Input Components (9)\n 'Button',\n 'TextInput',\n 'Checkbox',\n 'RadioButton',\n 'Slider',\n 'ColorPicker',\n 'DatePicker',\n 'TimePicker',\n 'Autocomplete',\n\n // Display Components (9)\n 'Label',\n 'ImageView',\n 'ProgressBar',\n 'Avatar',\n 'Badge',\n 'Chip',\n 'Card',\n 'Tooltip',\n 'Toast',\n\n // Layout Components (7)\n 'ScrollView',\n 'SplitView',\n 'Accordion',\n 'Stepper',\n 'Modal',\n 'Tabs',\n 'Dropdown',\n\n // Data Components (5)\n 'ListView',\n 'Table',\n 'TreeView',\n 'DataGrid',\n 'Chart',\n\n // Advanced Components (5)\n 'Rating',\n 'CodeEditor',\n 'MediaPlayer',\n 'FileExplorer',\n 'WebView',\n] as const\n\nexport type ComponentName = typeof AVAILABLE_COMPONENTS[number]\n\n/**\n * CSS styles for all components\n */\nexport const COMPONENT_STYLES = `\n/* Button */\n.stx-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 16px;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n.stx-button--primary { background: #3498db; color: #fff; }\n.stx-button--primary:hover { background: #2980b9; }\n.stx-button--secondary { background: #6c757d; color: #fff; }\n.stx-button--outline { background: transparent; border: 1px solid #3498db; color: #3498db; }\n.stx-button--ghost { background: transparent; color: #3498db; }\n.stx-button--destructive { background: #e74c3c; color: #fff; }\n.stx-button--small { padding: 4px 8px; font-size: 12px; }\n.stx-button--large { padding: 12px 24px; font-size: 16px; }\n.stx-button--disabled { opacity: 0.5; cursor: not-allowed; }\n.stx-button--loading { pointer-events: none; }\n.stx-button-spinner { width: 16px; height: 16px; border: 2px solid transparent; border-top-color: currentColor; border-radius: 50%; animation: spin 0.6s linear infinite; }\n@keyframes spin { to { transform: rotate(360deg); } }\n\n/* Input */\n.stx-input-wrapper { display: flex; flex-direction: column; gap: 4px; }\n.stx-input-label { font-size: 14px; font-weight: 500; color: #333; }\n.stx-input { padding: 8px 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 14px; transition: border-color 0.15s; }\n.stx-input:focus { outline: none; border-color: #3498db; }\n.stx-input--error { border-color: #e74c3c; }\n.stx-input-error { font-size: 12px; color: #e74c3c; }\n.stx-input-hint { font-size: 12px; color: #666; }\n\n/* Checkbox */\n.stx-checkbox { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; }\n.stx-checkbox input { display: none; }\n.stx-checkbox-box { width: 18px; height: 18px; border: 2px solid #ddd; border-radius: 4px; transition: all 0.15s; }\n.stx-checkbox input:checked + .stx-checkbox-box { background: #3498db; border-color: #3498db; }\n.stx-checkbox--disabled { opacity: 0.5; cursor: not-allowed; }\n\n/* Progress */\n.stx-progress { height: 8px; background: #e0e0e0; border-radius: 4px; overflow: hidden; position: relative; }\n.stx-progress-bar { height: 100%; background: #3498db; transition: width 0.3s; }\n.stx-progress--success .stx-progress-bar { background: #27ae60; }\n.stx-progress--warning .stx-progress-bar { background: #f39c12; }\n.stx-progress--error .stx-progress-bar { background: #e74c3c; }\n.stx-progress--indeterminate .stx-progress-bar { animation: progress-indeterminate 1.5s infinite; }\n@keyframes progress-indeterminate { 0% { transform: translateX(-100%); } 100% { transform: translateX(200%); } }\n\n/* Badge */\n.stx-badge { display: inline-flex; padding: 2px 8px; border-radius: 12px; font-size: 12px; font-weight: 500; }\n.stx-badge--default { background: #e0e0e0; color: #333; }\n.stx-badge--primary { background: #3498db; color: #fff; }\n.stx-badge--success { background: #27ae60; color: #fff; }\n.stx-badge--warning { background: #f39c12; color: #fff; }\n.stx-badge--error { background: #e74c3c; color: #fff; }\n\n/* Avatar */\n.stx-avatar { display: inline-flex; align-items: center; justify-content: center; background: #3498db; color: #fff; overflow: hidden; }\n.stx-avatar--circle { border-radius: 50%; }\n.stx-avatar--square { border-radius: 0; }\n.stx-avatar--rounded { border-radius: 8px; }\n.stx-avatar--small { width: 32px; height: 32px; font-size: 12px; }\n.stx-avatar--medium { width: 40px; height: 40px; font-size: 14px; }\n.stx-avatar--large { width: 56px; height: 56px; font-size: 18px; }\n.stx-avatar-img { width: 100%; height: 100%; object-fit: cover; }\n\n/* Card */\n.stx-card { background: #fff; border-radius: 8px; overflow: hidden; }\n.stx-card--outlined { border: 1px solid #e0e0e0; }\n.stx-card--elevated { box-shadow: 0 4px 12px rgba(0,0,0,0.1); }\n.stx-card-image img { width: 100%; display: block; }\n.stx-card-body { padding: 16px; }\n.stx-card-title { margin: 0 0 4px; font-size: 18px; }\n.stx-card-subtitle { margin: 0 0 8px; color: #666; font-size: 14px; }\n.stx-card-footer { padding: 12px 16px; border-top: 1px solid #e0e0e0; }\n\n/* Tabs */\n.stx-tabs { display: flex; gap: 4px; border-bottom: 1px solid #e0e0e0; }\n.stx-tab { padding: 8px 16px; border: none; background: none; cursor: pointer; color: #666; border-bottom: 2px solid transparent; transition: all 0.15s; }\n.stx-tab:hover { color: #333; }\n.stx-tab--active { color: #3498db; border-bottom-color: #3498db; }\n.stx-tab--disabled { opacity: 0.5; cursor: not-allowed; }\n.stx-tabs--pills { border-bottom: none; }\n.stx-tabs--pills .stx-tab { border-radius: 20px; border-bottom: none; }\n.stx-tabs--pills .stx-tab--active { background: #3498db; color: #fff; }\n\n/* Dropdown */\n.stx-dropdown { padding: 8px 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 14px; background: #fff; cursor: pointer; min-width: 150px; }\n.stx-dropdown:focus { outline: none; border-color: #3498db; }\n.stx-dropdown--disabled { opacity: 0.5; cursor: not-allowed; }\n\n/* Rating */\n.stx-rating { display: inline-flex; gap: 4px; }\n.stx-star { color: #ddd; cursor: pointer; transition: color 0.15s; }\n.stx-star--filled { color: #f1c40f; }\n.stx-star--half { background: linear-gradient(90deg, #f1c40f 50%, #ddd 50%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }\n.stx-rating--readonly .stx-star { cursor: default; }\n.stx-rating--small .stx-star { font-size: 16px; }\n.stx-rating--medium .stx-star { font-size: 24px; }\n.stx-rating--large .stx-star { font-size: 32px; }\n\n/* Slider */\n.stx-slider { display: flex; align-items: center; gap: 12px; }\n.stx-slider-track { flex: 1; }\n.stx-slider input[type=\"range\"] { width: 100%; }\n.stx-slider-value { min-width: 40px; text-align: right; font-size: 14px; }\n\n/* Radio Button */\n.stx-radio { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; }\n.stx-radio input { display: none; }\n.stx-radio-circle { width: 18px; height: 18px; border: 2px solid #ddd; border-radius: 50%; position: relative; transition: all 0.15s; }\n.stx-radio input:checked + .stx-radio-circle { border-color: #3498db; }\n.stx-radio input:checked + .stx-radio-circle::after { content: ''; position: absolute; top: 3px; left: 3px; width: 8px; height: 8px; background: #3498db; border-radius: 50%; }\n.stx-radio--disabled { opacity: 0.5; cursor: not-allowed; }\n\n/* Color Picker */\n.stx-color-picker { display: flex; flex-direction: column; gap: 8px; }\n.stx-color-picker-input { display: flex; align-items: center; gap: 8px; }\n.stx-color-picker-input input[type=\"color\"] { width: 40px; height: 40px; border: none; cursor: pointer; }\n.stx-color-picker-value { font-family: monospace; }\n.stx-color-picker-presets { display: flex; gap: 4px; flex-wrap: wrap; }\n.stx-color-preset { width: 24px; height: 24px; border: 2px solid transparent; border-radius: 4px; cursor: pointer; }\n.stx-color-preset:hover { border-color: #333; }\n\n/* Date/Time Picker */\n.stx-date-picker, .stx-time-picker { display: flex; flex-direction: column; gap: 4px; }\n.stx-date-picker-input, .stx-time-picker-input { display: flex; align-items: center; gap: 4px; }\n.stx-date-picker-input input, .stx-time-picker-input { padding: 8px 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 14px; }\n.stx-date-picker-clear { background: none; border: none; cursor: pointer; font-size: 16px; }\n\n/* Autocomplete */\n.stx-autocomplete { position: relative; }\n.stx-autocomplete-input-wrapper { position: relative; }\n.stx-autocomplete-input { width: 100%; padding: 8px 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 14px; }\n.stx-autocomplete-spinner { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; border: 2px solid #ddd; border-top-color: #3498db; border-radius: 50%; animation: spin 0.6s linear infinite; }\n.stx-autocomplete-list { position: absolute; top: 100%; left: 0; right: 0; background: #fff; border: 1px solid #ddd; border-radius: 6px; max-height: 200px; overflow-y: auto; display: none; z-index: 10; }\n.stx-autocomplete:focus-within .stx-autocomplete-list { display: block; }\n.stx-autocomplete-item { padding: 8px 12px; cursor: pointer; }\n.stx-autocomplete-item:hover { background: #f5f5f5; }\n.stx-autocomplete-item--selected { background: #e8f4fc; }\n\n/* Label */\n.stx-label { display: inline-block; font-weight: 500; }\n.stx-label--small { font-size: 12px; }\n.stx-label--medium { font-size: 14px; }\n.stx-label--large { font-size: 16px; }\n.stx-label-required { color: #e74c3c; margin-left: 2px; }\n\n/* Image */\n.stx-image { display: block; max-width: 100%; }\n\n/* Chip */\n.stx-chip { display: inline-flex; align-items: center; gap: 4px; padding: 4px 12px; border-radius: 16px; font-size: 13px; }\n.stx-chip--default { background: #e0e0e0; color: #333; }\n.stx-chip--primary { background: #e8f4fc; color: #3498db; }\n.stx-chip--success { background: #e8f8f0; color: #27ae60; }\n.stx-chip--warning { background: #fef5e7; color: #f39c12; }\n.stx-chip--error { background: #fdebeb; color: #e74c3c; }\n.stx-chip--small { padding: 2px 8px; font-size: 11px; }\n.stx-chip--large { padding: 6px 16px; font-size: 15px; }\n.stx-chip-remove { background: none; border: none; cursor: pointer; opacity: 0.6; padding: 0 2px; }\n.stx-chip-remove:hover { opacity: 1; }\n\n/* Tooltip */\n.stx-tooltip-wrapper { position: relative; display: inline-block; }\n.stx-tooltip { position: absolute; background: #333; color: #fff; padding: 4px 8px; border-radius: 4px; font-size: 12px; white-space: nowrap; opacity: 0; visibility: hidden; transition: opacity 0.2s, visibility 0.2s; z-index: 1000; }\n.stx-tooltip-wrapper:hover .stx-tooltip { opacity: 1; visibility: visible; }\n.stx-tooltip--top { bottom: 100%; left: 50%; transform: translateX(-50%); margin-bottom: 8px; }\n.stx-tooltip--bottom { top: 100%; left: 50%; transform: translateX(-50%); margin-top: 8px; }\n.stx-tooltip--left { right: 100%; top: 50%; transform: translateY(-50%); margin-right: 8px; }\n.stx-tooltip--right { left: 100%; top: 50%; transform: translateY(-50%); margin-left: 8px; }\n\n/* Scroll View */\n.stx-scroll-view { overflow: auto; }\n.stx-scroll-view--vertical { overflow-x: hidden; overflow-y: auto; }\n.stx-scroll-view--horizontal { overflow-x: auto; overflow-y: hidden; }\n.stx-scroll-view--hide-scrollbar::-webkit-scrollbar { display: none; }\n.stx-scroll-view--hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }\n.stx-scroll-view--smooth { scroll-behavior: smooth; }\n\n/* Split View */\n.stx-split-view { display: flex; }\n.stx-split-view--horizontal { flex-direction: row; }\n.stx-split-view--vertical { flex-direction: column; }\n.stx-split-pane { overflow: auto; }\n.stx-split-divider { background: #e0e0e0; flex-shrink: 0; }\n.stx-split-view--horizontal .stx-split-divider { width: 4px; cursor: col-resize; }\n.stx-split-view--vertical .stx-split-divider { height: 4px; cursor: row-resize; }\n.stx-split-divider:hover { background: #3498db; }\n\n/* Accordion */\n.stx-accordion { border: 1px solid #e0e0e0; border-radius: 8px; overflow: hidden; }\n.stx-accordion-item { border-bottom: 1px solid #e0e0e0; }\n.stx-accordion-item:last-child { border-bottom: none; }\n.stx-accordion-header { width: 100%; display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; background: none; border: none; cursor: pointer; font-size: 14px; }\n.stx-accordion-header:hover { background: #f5f5f5; }\n.stx-accordion-icon { transition: transform 0.2s; }\n.stx-accordion-item--open .stx-accordion-icon { transform: rotate(180deg); }\n.stx-accordion-content { padding: 0 16px 16px; }\n.stx-accordion-item--disabled { opacity: 0.5; }\n.stx-accordion-item--disabled .stx-accordion-header { cursor: not-allowed; }\n\n/* Stepper */\n.stx-stepper { display: flex; }\n.stx-stepper--horizontal { flex-direction: row; align-items: flex-start; }\n.stx-stepper--vertical { flex-direction: column; }\n.stx-step { display: flex; align-items: center; }\n.stx-stepper--vertical .stx-step { flex-direction: row; }\n.stx-step-indicator { width: 32px; height: 32px; border-radius: 50%; background: #e0e0e0; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 500; flex-shrink: 0; }\n.stx-step--completed .stx-step-indicator { background: #27ae60; color: #fff; }\n.stx-step--active .stx-step-indicator { background: #3498db; color: #fff; }\n.stx-step-content { margin-left: 12px; }\n.stx-step-label { font-size: 14px; font-weight: 500; }\n.stx-step-description { font-size: 12px; color: #666; }\n.stx-step-connector { flex: 1; height: 2px; background: #e0e0e0; margin: 0 8px; min-width: 20px; }\n.stx-stepper--vertical .stx-step-connector { width: 2px; height: 20px; margin: 8px 0 8px 15px; }\n\n/* Modal Component */\n.stx-modal-component--hidden { display: none; }\n.stx-modal-component-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 10000; }\n.stx-modal-component-dialog { background: #fff; border-radius: 12px; max-height: 90vh; overflow: hidden; display: flex; flex-direction: column; }\n.stx-modal-component--small .stx-modal-component-dialog { width: 300px; }\n.stx-modal-component--medium .stx-modal-component-dialog { width: 500px; }\n.stx-modal-component--large .stx-modal-component-dialog { width: 800px; }\n.stx-modal-component--fullscreen .stx-modal-component-dialog { width: 100%; height: 100%; border-radius: 0; }\n.stx-modal-component-header { display: flex; justify-content: space-between; align-items: center; padding: 16px; border-bottom: 1px solid #e0e0e0; }\n.stx-modal-component-title { margin: 0; font-size: 18px; }\n.stx-modal-component-close { background: none; border: none; font-size: 24px; cursor: pointer; opacity: 0.6; }\n.stx-modal-component-close:hover { opacity: 1; }\n.stx-modal-component-body { padding: 16px; overflow-y: auto; flex: 1; }\n.stx-modal-component-footer { padding: 16px; border-top: 1px solid #e0e0e0; display: flex; justify-content: flex-end; gap: 8px; }\n\n/* List View */\n.stx-list-view { border: 1px solid #e0e0e0; border-radius: 8px; overflow: hidden; }\n.stx-list-view-items { list-style: none; margin: 0; padding: 0; }\n.stx-list-view-item { padding: 12px 16px; border-bottom: 1px solid #e0e0e0; }\n.stx-list-view-item:last-child { border-bottom: none; }\n.stx-list-view--selectable .stx-list-view-item { cursor: pointer; }\n.stx-list-view--selectable .stx-list-view-item:hover { background: #f5f5f5; }\n.stx-list-view-item--selected { background: #e8f4fc; }\n.stx-list-view-empty { padding: 24px; text-align: center; color: #666; }\n\n/* Table */\n.stx-table { overflow-x: auto; }\n.stx-table table { width: 100%; border-collapse: collapse; }\n.stx-table th, .stx-table td { padding: 12px; text-align: left; }\n.stx-table th { font-weight: 600; background: #f5f5f5; }\n.stx-table--bordered th, .stx-table--bordered td { border: 1px solid #e0e0e0; }\n.stx-table--striped tbody tr:nth-child(even) { background: #f9f9f9; }\n.stx-table--hoverable tbody tr:hover { background: #f5f5f5; }\n.stx-table th[data-sortable] { cursor: pointer; }\n.stx-table-sort-icon::after { content: '⇅'; margin-left: 4px; opacity: 0.3; }\n.stx-table-sorted .stx-table-sort-icon::after { opacity: 1; }\n.stx-table-sorted--asc .stx-table-sort-icon::after { content: '↑'; }\n.stx-table-sorted--desc .stx-table-sort-icon::after { content: '↓'; }\n\n/* Tree View */\n.stx-tree-view { font-size: 14px; }\n.stx-tree-node { padding-left: 20px; }\n.stx-tree-node-content { display: flex; align-items: center; gap: 4px; padding: 4px; cursor: pointer; border-radius: 4px; }\n.stx-tree-node-content:hover { background: #f5f5f5; }\n.stx-tree-node--selected > .stx-tree-node-content { background: #e8f4fc; }\n.stx-tree-node--disabled { opacity: 0.5; }\n.stx-tree-toggle { width: 16px; cursor: pointer; transition: transform 0.2s; }\n.stx-tree-toggle--expanded { transform: rotate(90deg); }\n.stx-tree-toggle-placeholder { width: 16px; }\n.stx-tree-children { padding-left: 8px; }\n\n/* Data Grid */\n.stx-data-grid { border: 1px solid #e0e0e0; border-radius: 8px; overflow: hidden; }\n.stx-data-grid-table-wrapper { overflow-x: auto; }\n.stx-data-grid-table { width: 100%; border-collapse: collapse; }\n.stx-data-grid-table th, .stx-data-grid-table td { padding: 12px; text-align: left; border-bottom: 1px solid #e0e0e0; }\n.stx-data-grid-table th { background: #f5f5f5; }\n.stx-data-grid-header-cell { display: flex; align-items: center; gap: 8px; }\n.stx-data-grid-sort, .stx-data-grid-filter { background: none; border: none; cursor: pointer; opacity: 0.5; }\n.stx-data-grid-sort:hover, .stx-data-grid-filter:hover { opacity: 1; }\n.stx-data-grid-pagination { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border-top: 1px solid #e0e0e0; }\n.stx-data-grid-page-buttons { display: flex; gap: 4px; }\n.stx-data-grid-page-btn { padding: 4px 8px; border: 1px solid #e0e0e0; background: #fff; cursor: pointer; border-radius: 4px; }\n.stx-data-grid-page-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n\n/* Chart */\n.stx-chart { background: #f9f9f9; border-radius: 8px; display: flex; align-items: center; justify-content: center; }\n.stx-chart-placeholder { text-align: center; padding: 20px; }\n.stx-chart-title { font-size: 16px; font-weight: 600; margin-bottom: 8px; }\n.stx-chart-type { font-size: 14px; color: #666; }\n.stx-chart-info { font-size: 12px; color: #999; margin-top: 4px; }\n\n/* Code Editor */\n.stx-code-editor { display: flex; font-family: 'Monaco', 'Menlo', monospace; font-size: 13px; line-height: 1.5; overflow: hidden; border-radius: 8px; }\n.stx-code-editor--dark { background: #1e1e1e; color: #d4d4d4; }\n.stx-code-editor--light { background: #fff; color: #333; border: 1px solid #e0e0e0; }\n.stx-code-editor-gutter { padding: 12px 8px; background: rgba(0,0,0,0.1); text-align: right; user-select: none; }\n.stx-code-editor-line-number { color: #858585; }\n.stx-code-editor-content { flex: 1; padding: 12px; overflow: auto; }\n.stx-code-editor-content pre { margin: 0; }\n.stx-code-editor--wrap .stx-code-editor-content { white-space: pre-wrap; word-wrap: break-word; }\n\n/* Media Player */\n.stx-media-player video, .stx-media-player audio { width: 100%; display: block; }\n.stx-media-player--video { background: #000; }\n\n/* File Explorer */\n.stx-file-explorer { border: 1px solid #e0e0e0; border-radius: 8px; overflow: hidden; }\n.stx-file-explorer-list { width: 100%; border-collapse: collapse; }\n.stx-file-explorer-list th { text-align: left; padding: 8px 12px; background: #f5f5f5; font-weight: 500; }\n.stx-file-explorer-list td { padding: 8px 12px; border-top: 1px solid #e0e0e0; }\n.stx-file-explorer-item--selectable { cursor: pointer; }\n.stx-file-explorer-item--selectable:hover { background: #f5f5f5; }\n.stx-file-explorer-icon { margin-right: 8px; }\n.stx-file-explorer-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 16px; padding: 16px; }\n.stx-file-explorer--grid .stx-file-explorer-item { text-align: center; padding: 12px; border-radius: 8px; }\n.stx-file-explorer--grid .stx-file-explorer-icon { font-size: 32px; display: block; margin-bottom: 8px; }\n.stx-file-explorer--grid .stx-file-explorer-name { font-size: 12px; word-break: break-all; }\n\n/* WebView */\n.stx-webview { border: none; display: block; }\n\n/* Dark mode support */\n@media (prefers-color-scheme: dark) {\n .stx-input-label { color: #eee; }\n .stx-input { background: #333; border-color: #555; color: #fff; }\n .stx-card { background: #2d2d2d; color: #fff; }\n .stx-card-subtitle { color: #aaa; }\n .stx-progress { background: #444; }\n .stx-dropdown { background: #333; border-color: #555; color: #fff; }\n .stx-accordion { border-color: #444; }\n .stx-accordion-item { border-color: #444; }\n .stx-accordion-header:hover { background: #333; }\n .stx-list-view { border-color: #444; }\n .stx-list-view-item { border-color: #444; }\n .stx-list-view--selectable .stx-list-view-item:hover { background: #333; }\n .stx-table th { background: #333; }\n .stx-table--bordered th, .stx-table--bordered td { border-color: #444; }\n .stx-tree-node-content:hover { background: #333; }\n .stx-data-grid { border-color: #444; }\n .stx-data-grid-table th, .stx-data-grid-table td { border-color: #444; }\n .stx-data-grid-table th { background: #333; }\n .stx-modal-component-dialog { background: #2d2d2d; color: #fff; }\n .stx-modal-component-header, .stx-modal-component-footer { border-color: #444; }\n .stx-file-explorer { border-color: #444; }\n .stx-file-explorer-list th { background: #333; }\n .stx-file-explorer-list td { border-color: #444; }\n .stx-autocomplete-list { background: #333; border-color: #444; }\n .stx-autocomplete-item:hover { background: #444; }\n .stx-chip--default { background: #444; color: #eee; }\n .stx-chip--primary { background: #1a3a52; }\n .stx-chip--success { background: #1a3a2a; }\n .stx-chip--warning { background: #3a2a1a; }\n .stx-chip--error { background: #3a1a1a; }\n}\n`\n",
|
|
7
7
|
"import type { ModalButton, ModalOptions, ModalResult } from './types'\n\n/**\n * Modal Dialog Implementation\n *\n * Provides cross-platform modal dialog functionality.\n * Uses native dialogs when available, falls back to web-based modals.\n *\n * Features:\n * - Multiple dialog types (info, warning, error, success, question)\n * - Custom buttons with actions\n * - Promise-based API\n * - Keyboard support (Enter/Escape)\n * - Accessible by default\n */\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface ModalState {\n id: string\n options: ModalOptions\n resolve: (result: ModalResult) => void\n element?: HTMLElement\n}\n\n// =============================================================================\n// Platform Detection\n// =============================================================================\n\n/**\n * Check if native dialog APIs are available\n */\nfunction hasNativeDialogSupport(): boolean {\n // Future: Check for @stacksjs/zyte bindings\n return false\n}\n\n/**\n * Check if running in browser environment\n */\nfunction isBrowser(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined'\n}\n\n// =============================================================================\n// Modal Manager\n// =============================================================================\n\n// Active modal stack\nconst activeModals: ModalState[] = []\n\n/**\n * Generate a unique modal ID\n */\nfunction generateModalId(): string {\n return `modal-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n}\n\n/**\n * Get icon for modal type\n */\nfunction getModalIcon(type: ModalOptions['type']): string {\n switch (type) {\n case 'info':\n return 'ℹ'\n case 'warning':\n return '⚠'\n case 'error':\n return '✖'\n case 'success':\n return '✔'\n case 'question':\n return '❓'\n default:\n return 'ℹ'\n }\n}\n\n/**\n * Get default buttons for modal type\n */\nfunction getDefaultButtons(type: ModalOptions['type']): ModalButton[] {\n if (type === 'question') {\n return [\n { label: 'No', style: 'default' },\n { label: 'Yes', style: 'primary' },\n ]\n }\n return [{ label: 'OK', style: 'primary' }]\n}\n\n/**\n * Create modal HTML for web-based implementation\n */\nfunction createModalHTML(state: ModalState): string {\n const { options } = state\n const icon = getModalIcon(options.type)\n const buttons = options.buttons || getDefaultButtons(options.type)\n const typeClass = options.type || 'info'\n\n let buttonsHtml = ''\n buttons.forEach((btn, index) => {\n const styleClass = btn.style === 'destructive' ? 'destructive' : btn.style === 'primary' ? 'primary' : 'default'\n const autoFocus = index === (options.defaultButton ?? buttons.length - 1) ? 'autofocus' : ''\n buttonsHtml += `<button class=\"stx-modal-btn ${styleClass}\" data-index=\"${index}\" ${autoFocus}>${btn.label}</button>`\n })\n\n return `\n <div class=\"stx-modal-overlay\" data-modal-id=\"${state.id}\">\n <div class=\"stx-modal ${typeClass}\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"${state.id}-title\">\n <div class=\"stx-modal-icon\">${icon}</div>\n <div class=\"stx-modal-content\">\n ${options.title ? `<h2 id=\"${state.id}-title\" class=\"stx-modal-title\">${escapeHtml(options.title)}</h2>` : ''}\n <p class=\"stx-modal-message\">${escapeHtml(options.message)}</p>\n </div>\n <div class=\"stx-modal-buttons\">${buttonsHtml}</div>\n </div>\n </div>\n `\n}\n\n/**\n * Escape HTML to prevent XSS\n */\nfunction escapeHtml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\n/**\n * Close a modal and resolve with result\n */\nfunction closeModal(state: ModalState, buttonIndex: number, cancelled: boolean = false): void {\n // Remove from active modals\n const index = activeModals.indexOf(state)\n if (index > -1) {\n activeModals.splice(index, 1)\n }\n\n // Remove DOM element if exists\n if (state.element && isBrowser()) {\n state.element.remove()\n }\n\n // Call button action if provided\n const buttons = state.options.buttons || getDefaultButtons(state.options.type)\n const button = buttons[buttonIndex]\n if (button?.action) {\n button.action()\n }\n\n // Resolve promise\n state.resolve({ buttonIndex, cancelled })\n}\n\n/**\n * Show a native modal dialog\n *\n * @param options - Modal configuration options\n * @returns Promise resolving to the modal result\n *\n * @example\n * ```typescript\n * const result = await showModal({\n * title: 'Confirm Action',\n * message: 'Are you sure you want to proceed?',\n * type: 'question',\n * buttons: [\n * { label: 'Cancel', style: 'default' },\n * { label: 'Confirm', style: 'primary' },\n * ],\n * })\n *\n * if (result.buttonIndex === 1) {\n * // User clicked Confirm\n * }\n * ```\n */\nexport async function showModal(options: ModalOptions): Promise<ModalResult> {\n const hasNative = hasNativeDialogSupport()\n const id = generateModalId()\n\n return new Promise((resolve) => {\n const state: ModalState = {\n id,\n options,\n resolve,\n }\n\n activeModals.push(state)\n\n if (hasNative) {\n // Future: Use native dialog\n console.log(`[stx-modal] Showing native modal: ${options.title || 'Modal'}`)\n // For now, immediately resolve\n setTimeout(() => {\n closeModal(state, options.defaultButton ?? 0, false)\n }, 0)\n }\n else if (isBrowser()) {\n // Web-based implementation\n try {\n const container = document.createElement('div')\n container.innerHTML = createModalHTML(state)\n const overlay = container.firstElementChild as HTMLElement\n\n if (!overlay) {\n // Fallback to console if DOM manipulation fails\n console.log(`[stx-modal] ${options.type?.toUpperCase() || 'INFO'}: ${options.title || 'Modal'}`)\n console.log(`[stx-modal] ${options.message}`)\n setTimeout(() => {\n closeModal(state, options.defaultButton ?? 0, false)\n }, 0)\n return\n }\n\n state.element = overlay\n\n try {\n document.body.appendChild(overlay)\n }\n catch {\n // Fallback to console if appendChild fails (e.g., in very-happy-dom)\n console.log(`[stx-modal] ${options.type?.toUpperCase() || 'INFO'}: ${options.title || 'Modal'}`)\n console.log(`[stx-modal] ${options.message}`)\n setTimeout(() => {\n closeModal(state, options.defaultButton ?? 0, false)\n }, 0)\n return\n }\n\n // Handle button clicks\n try {\n overlay.querySelectorAll('.stx-modal-btn').forEach((btn) => {\n btn.addEventListener('click', () => {\n const index = Number.parseInt((btn as HTMLElement).dataset.index || '0', 10)\n closeModal(state, index, false)\n })\n })\n }\n catch {\n // Ignore querySelectorAll errors in very-happy-dom\n }\n\n // Handle overlay click (close on backdrop click)\n try {\n overlay.addEventListener('click', (e) => {\n if (e.target === overlay) {\n const cancelIndex = options.cancelButton ?? 0\n closeModal(state, cancelIndex, true)\n }\n })\n }\n catch {\n // Ignore addEventListener errors\n }\n\n // Handle keyboard\n try {\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n const cancelIndex = options.cancelButton ?? 0\n closeModal(state, cancelIndex, true)\n document.removeEventListener('keydown', handleKeydown)\n }\n else if (e.key === 'Enter') {\n const defaultIndex = options.defaultButton ?? ((options.buttons || getDefaultButtons(options.type)).length - 1)\n closeModal(state, defaultIndex, false)\n document.removeEventListener('keydown', handleKeydown)\n }\n }\n document.addEventListener('keydown', handleKeydown)\n }\n catch {\n // Ignore keyboard event errors\n }\n\n // Focus first button\n try {\n const firstButton = overlay.querySelector('.stx-modal-btn[autofocus]') as HTMLElement\n if (firstButton) {\n firstButton.focus()\n }\n }\n catch {\n // Ignore focus errors\n }\n\n // In test environments (no real user to click) auto-resolve with the\n // default button so tests asserting ModalResult shape don't hang.\n if (typeof process !== 'undefined' && (process.env.NODE_ENV === 'test' || process.env.BUN_TEST)) {\n setTimeout(() => {\n closeModal(state, options.defaultButton ?? 0, false)\n }, 0)\n }\n }\n catch {\n // Fallback to console if any DOM operation fails\n console.log(`[stx-modal] ${options.type?.toUpperCase() || 'INFO'}: ${options.title || 'Modal'}`)\n console.log(`[stx-modal] ${options.message}`)\n setTimeout(() => {\n closeModal(state, options.defaultButton ?? 0, false)\n }, 0)\n }\n }\n else {\n // Node.js environment - console fallback\n console.log(`[stx-modal] ${options.type?.toUpperCase() || 'INFO'}: ${options.title || 'Modal'}`)\n console.log(`[stx-modal] ${options.message}`)\n const buttons = options.buttons || getDefaultButtons(options.type)\n console.log(`[stx-modal] Buttons: ${buttons.map(b => b.label).join(', ')}`)\n\n // Auto-resolve with default button\n setTimeout(() => {\n closeModal(state, options.defaultButton ?? 0, false)\n }, 0)\n }\n })\n}\n\n/**\n * Show an info modal\n */\nexport async function showInfoModal(title: string, message: string): Promise<ModalResult> {\n return showModal({ title, message, type: 'info' })\n}\n\n/**\n * Show a warning modal\n */\nexport async function showWarningModal(title: string, message: string): Promise<ModalResult> {\n return showModal({ title, message, type: 'warning' })\n}\n\n/**\n * Show an error modal\n */\nexport async function showErrorModal(title: string, message: string): Promise<ModalResult> {\n return showModal({ title, message, type: 'error' })\n}\n\n/**\n * Show a success modal\n */\nexport async function showSuccessModal(title: string, message: string): Promise<ModalResult> {\n return showModal({ title, message, type: 'success' })\n}\n\n/**\n * Show a question/confirmation modal\n */\nexport async function showQuestionModal(title: string, message: string): Promise<ModalResult> {\n return showModal({\n title,\n message,\n type: 'question',\n buttons: [\n { label: 'No', style: 'default' },\n { label: 'Yes', style: 'primary' },\n ],\n defaultButton: 1,\n cancelButton: 0,\n })\n}\n\n/**\n * Show a confirm dialog (alias for showQuestionModal)\n */\nexport async function confirm(message: string, title: string = 'Confirm'): Promise<boolean> {\n const result = await showQuestionModal(title, message)\n return result.buttonIndex === 1\n}\n\n/**\n * Show an alert dialog (single OK button)\n */\nexport async function alert(message: string, title: string = 'Alert'): Promise<void> {\n await showInfoModal(title, message)\n}\n\n/**\n * Show a prompt dialog with input field\n */\nexport async function prompt(message: string, defaultValue: string = '', title: string = 'Input'): Promise<string | null> {\n // This would need custom implementation for input field\n // For now, use console in Node.js or native prompt in browser\n if (isBrowser() && typeof window.prompt === 'function') {\n return window.prompt(message, defaultValue)\n }\n\n console.log(`[stx-modal] PROMPT: ${title}`)\n console.log(`[stx-modal] ${message}`)\n console.log(`[stx-modal] Default: ${defaultValue}`)\n\n // In Node.js, would need readline or similar\n return defaultValue\n}\n\n/**\n * Get number of active modals\n */\nexport function getActiveModalCount(): number {\n return activeModals.length\n}\n\n/**\n * Close all active modals\n */\nexport function closeAllModals(): void {\n // Close in reverse order (top-most first)\n while (activeModals.length > 0) {\n const state = activeModals[activeModals.length - 1]\n closeModal(state, 0, true)\n }\n}\n\n/**\n * CSS styles for web-based modals\n */\nexport const MODAL_STYLES = `\n.stx-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: 10000;\n animation: stx-modal-fade-in 0.15s ease-out;\n}\n\n@keyframes stx-modal-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.stx-modal {\n background: #fff;\n border-radius: 12px;\n padding: 24px;\n max-width: 400px;\n width: 90%;\n box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);\n animation: stx-modal-slide-up 0.2s ease-out;\n}\n\n@keyframes stx-modal-slide-up {\n from { transform: translateY(20px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n\n@media (prefers-color-scheme: dark) {\n .stx-modal {\n background: #2d2d2d;\n color: #fff;\n }\n}\n\n.stx-modal-icon {\n font-size: 48px;\n text-align: center;\n margin-bottom: 16px;\n}\n\n.stx-modal.info .stx-modal-icon { color: #3498db; }\n.stx-modal.warning .stx-modal-icon { color: #f39c12; }\n.stx-modal.error .stx-modal-icon { color: #e74c3c; }\n.stx-modal.success .stx-modal-icon { color: #27ae60; }\n.stx-modal.question .stx-modal-icon { color: #9b59b6; }\n\n.stx-modal-content {\n text-align: center;\n margin-bottom: 24px;\n}\n\n.stx-modal-title {\n margin: 0 0 8px;\n font-size: 20px;\n font-weight: 600;\n}\n\n.stx-modal-message {\n margin: 0;\n color: #666;\n line-height: 1.5;\n}\n\n@media (prefers-color-scheme: dark) {\n .stx-modal-message { color: #aaa; }\n}\n\n.stx-modal-buttons {\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n\n.stx-modal-btn {\n padding: 10px 24px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n border: none;\n transition: background 0.15s, transform 0.1s;\n}\n\n.stx-modal-btn:hover {\n transform: translateY(-1px);\n}\n\n.stx-modal-btn:active {\n transform: translateY(0);\n}\n\n.stx-modal-btn.default {\n background: #e0e0e0;\n color: #333;\n}\n\n.stx-modal-btn.default:hover {\n background: #d0d0d0;\n}\n\n.stx-modal-btn.primary {\n background: #3498db;\n color: #fff;\n}\n\n.stx-modal-btn.primary:hover {\n background: #2980b9;\n}\n\n.stx-modal-btn.destructive {\n background: #e74c3c;\n color: #fff;\n}\n\n.stx-modal-btn.destructive:hover {\n background: #c0392b;\n}\n\n@media (prefers-color-scheme: dark) {\n .stx-modal-btn.default {\n background: #444;\n color: #fff;\n }\n .stx-modal-btn.default:hover {\n background: #555;\n }\n}\n`\n",
|
|
8
8
|
"// @ts-nocheck - Skip type checking due to menu item type constraints\nimport type { SystemTrayInstance, SystemTrayMenuItem, SystemTrayOptions } from './types'\nimport process from 'node:process'\n\n/**\n * System Tray / Menubar Implementation\n *\n * Provides cross-platform system tray functionality using Craft's native APIs.\n *\n * ## Architecture\n *\n * When running inside a Craft native window, tray operations use the\n * `window.craft.tray` bridge to communicate with the native process.\n *\n * When running outside Craft (e.g., in browser or Node.js), provides a\n * web-based simulation for development and testing.\n *\n * ## Usage in Craft\n *\n * The tray is automatically enabled when you pass `systemTray: true` to\n * the window options in Craft. This module provides additional TypeScript\n * APIs for programmatic control.\n *\n * ```typescript\n * // Create tray via @stacksjs/desktop\n * const tray = await createSystemTray({\n * tooltip: 'My App',\n * menu: [\n * { label: 'Show Window', onClick: () => window.craft.window.show() },\n * { type: 'separator' },\n * { label: 'Quit', onClick: () => window.craft.app.quit() },\n * ],\n * })\n *\n * // Or use Craft's bridge directly in your HTML/JS:\n * window.craft.tray.setTitle('My App')\n * window.craft.tray.setMenu([...])\n * ```\n */\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface TrayState {\n icon: string\n tooltip: string\n menu: SystemTrayMenuItem[]\n visible: boolean\n}\n\n/**\n * Menu item format expected by Craft's tray bridge\n */\ninterface CraftMenuItemDefinition {\n id: string\n label: string\n type?: 'normal' | 'separator' | 'checkbox' | 'radio'\n checked?: boolean\n enabled?: boolean\n action?: string\n shortcut?: string\n submenu?: CraftMenuItemDefinition[]\n}\n\n// =============================================================================\n// Platform Detection\n// =============================================================================\n\n/**\n * Detect the current platform\n */\nfunction getPlatform(): 'darwin' | 'linux' | 'win32' | 'unknown' {\n if (process.platform) {\n return process.platform as 'darwin' | 'linux' | 'win32' | 'unknown'\n }\n return 'unknown'\n}\n\n/**\n * Check if running inside a Craft native window\n */\nfunction isInCraftWindow(): boolean {\n if (typeof window !== 'undefined' && (window as any).craft?.tray) {\n return true\n }\n return false\n}\n\n// =============================================================================\n// Menu Conversion\n// =============================================================================\n\n/**\n * Convert SystemTrayMenuItem to Craft's menu format\n */\nfunction convertMenuItem(item: SystemTrayMenuItem, index: number): CraftMenuItemDefinition {\n if (item.type === 'separator') {\n return {\n id: `sep-${index}`,\n label: '',\n type: 'separator',\n }\n }\n\n const menuItem: CraftMenuItemDefinition = {\n id: `item-${index}-${item.label.replace(/\\s+/g, '-').toLowerCase()}`,\n label: item.label,\n type: item.type || 'normal',\n enabled: item.enabled !== false,\n }\n\n if (item.accelerator) {\n menuItem.shortcut = item.accelerator\n }\n\n if (item.type === 'checkbox') {\n menuItem.checked = item.checked || false\n }\n\n if (item.type === 'submenu' && item.submenu) {\n menuItem.submenu = item.submenu.map((subItem, subIndex) =>\n convertMenuItem(subItem, subIndex),\n )\n}\n\nreturn menuItem\n}\n\n/**\n * Convert array of SystemTrayMenuItems to Craft format\n */\nfunction convertMenuItems(items: SystemTrayMenuItem[]): CraftMenuItemDefinition[] {\n return items.map((item, index) => convertMenuItem(item, index))\n}\n\n// =============================================================================\n// Menu Rendering (Web Simulation)\n// =============================================================================\n\n/**\n * Render a menu item to HTML (for web-based simulation)\n */\nfunction renderMenuItem(item: SystemTrayMenuItem, level: number = 0): string {\n if (item.type === 'separator') {\n return '<hr class=\"stx-tray-separator\" />'\n }\n\n const indent = ' '.repeat(level)\n const disabled = item.enabled === false ? 'disabled' : ''\n const checked = item.checked ? '✓ ' : ''\n const accelerator = item.accelerator ? `<span class=\"accelerator\">${item.accelerator}</span>` : ''\n\n let html = `${indent}<div class=\"stx-tray-item ${disabled}\" data-action=\"${item.label}\">`\n html += `<span class=\"label\">${checked}${item.label}</span>${accelerator}`\n\n if (item.type === 'submenu' && item.submenu) {\n html += '<span class=\"arrow\">▸</span>'\n html += '<div class=\"stx-tray-submenu\">'\n for (const subItem of item.submenu) {\n html += renderMenuItem(subItem, level + 1)\n }\n html += '</div>'\n }\n\n html += '</div>'\n return html\n}\n\n/**\n * Render the full tray menu to HTML\n */\nfunction renderTrayMenu(menu: SystemTrayMenuItem[]): string {\n let html = '<div class=\"stx-tray-menu\">'\n for (const item of menu) {\n html += renderMenuItem(item)\n }\n html += '</div>'\n return html\n}\n\n// =============================================================================\n// Tray Manager\n// =============================================================================\n\n// Active tray instances\nconst activeTrayInstances = new Map<string, { state: TrayState, handlers: Map<string, () => void> }>()\n\n/**\n * Generate a unique tray ID\n */\nfunction generateTrayId(): string {\n return `tray-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n}\n\n/**\n * Set up event listener for tray menu actions (Craft bridge)\n */\nlet craftTrayListenerSetup = false\n\nfunction setupCraftTrayListener(): void {\n if (craftTrayListenerSetup || typeof window === 'undefined') return\n\n window.addEventListener('craft:tray:menu', ((event: CustomEvent) => {\n const { action } = event.detail\n // Find the handler for this action\n for (const instance of activeTrayInstances.values()) {\n const handler = instance.handlers.get(action)\n if (handler) {\n handler()\n break\n }\n }\n }) as EventListener)\n\n craftTrayListenerSetup = true\n}\n\n/**\n * Create a system tray/menubar application\n *\n * When running inside a Craft native window, this creates a real native tray.\n * Otherwise, it creates a simulated tray for development purposes.\n *\n * @param options - Tray configuration options\n * @returns System tray instance\n *\n * @example\n * ```typescript\n * const tray = await createSystemTray({\n * icon: './icon.png',\n * tooltip: 'My App',\n * menu: [\n * { label: 'Show Window', onClick: () => stxWindow.show() },\n * { type: 'separator' },\n * { label: 'Quit', onClick: () => stxWindow.quit() },\n * ],\n * })\n * ```\n */\nexport async function createSystemTray(options: SystemTrayOptions = {}): Promise<SystemTrayInstance> {\n const id = generateTrayId()\n const platform = getPlatform()\n const inCraft = isInCraftWindow()\n\n // Initialize state\n const state: TrayState = {\n icon: options.icon || '',\n tooltip: options.tooltip || 'stx Application',\n menu: options.menu || [],\n visible: true,\n }\n\n // Store click handlers\n const handlers = new Map<string, () => void>()\n for (const item of options.menu || []) {\n if (item.type !== 'separator' && item.onClick) {\n handlers.set(item.label, item.onClick)\n }\n // Handle submenu items\n if (item.type === 'submenu' && item.submenu) {\n for (const subItem of item.submenu) {\n if (subItem.type !== 'separator' && subItem.onClick) {\n handlers.set(subItem.label, subItem.onClick)\n }\n }\n }\n }\n\n // Store instance\n activeTrayInstances.set(id, { state, handlers })\n\n // Platform-specific implementation\n if (inCraft) {\n setupCraftTrayListener()\n\n // Use Craft's native tray APIs\n const craftWindow = window as any\n try {\n // Set the tray title/tooltip\n if (state.tooltip) {\n await craftWindow.craft.tray.setTitle({ title: state.tooltip })\n await craftWindow.craft.tray.setTooltip({ tooltip: state.tooltip })\n }\n\n // Set the icon if provided\n if (state.icon) {\n await craftWindow.craft.tray.setIcon({ icon: state.icon })\n }\n\n // Set the menu\n const craftMenu = convertMenuItems(state.menu)\n await craftWindow.craft.tray.setMenu({ items: craftMenu })\n\n console.log(`[stx-tray] Native tray created for ${platform}`)\n }\n catch (error) {\n console.warn('[stx-tray] Failed to create native tray:', error)\n }\n }\n else {\n // Web-based simulation for development\n console.log(`[stx-tray] Created simulated tray (not in Craft window)`)\n console.log(`[stx-tray] ID: ${id}`)\n console.log(`[stx-tray] Tooltip: ${state.tooltip}`)\n console.log(`[stx-tray] Menu items: ${state.menu.length}`)\n }\n\n // Create instance methods\n const instance: SystemTrayInstance = {\n id,\n\n setIcon: (icon: string) => {\n state.icon = icon\n if (inCraft) {\n const craftWindow = window as any\n craftWindow.craft.tray.setIcon({ icon }).catch((e: Error) => {\n console.warn('[stx-tray] Failed to set icon:', e)\n })\n }\n console.log(`[stx-tray:${id}] Icon updated`)\n },\n\n setTooltip: (tooltip: string) => {\n state.tooltip = tooltip\n if (inCraft) {\n const craftWindow = window as any\n craftWindow.craft.tray.setTooltip({ tooltip }).catch((e: Error) => {\n console.warn('[stx-tray] Failed to set tooltip:', e)\n })\n }\n console.log(`[stx-tray:${id}] Tooltip: ${tooltip}`)\n },\n\n setMenu: (menu: SystemTrayMenuItem[]) => {\n state.menu = menu\n // Update handlers\n handlers.clear()\n for (const item of menu) {\n if (item.type !== 'separator' && item.onClick) {\n handlers.set(item.label, item.onClick)\n }\n if (item.type === 'submenu' && item.submenu) {\n for (const subItem of item.submenu) {\n if (subItem.type !== 'separator' && subItem.onClick) {\n handlers.set(subItem.label, subItem.onClick)\n }\n }\n }\n }\n\n if (inCraft) {\n const craftWindow = window as any\n const craftMenu = convertMenuItems(menu)\n craftWindow.craft.tray.setMenu({ items: craftMenu }).catch((e: Error) => {\n console.warn('[stx-tray] Failed to set menu:', e)\n })\n }\n console.log(`[stx-tray:${id}] Menu updated (${menu.length} items)`)\n },\n\n destroy: () => {\n state.visible = false\n activeTrayInstances.delete(id)\n if (inCraft) {\n const craftWindow = window as any\n craftWindow.craft.tray.destroy?.().catch((e: Error) => {\n console.warn('[stx-tray] Failed to destroy tray:', e)\n })\n }\n console.log(`[stx-tray:${id}] Destroyed`)\n },\n }\n\n return instance\n}\n\n/**\n * Create a menubar application (alias for createSystemTray)\n */\nexport const createMenubar: typeof createSystemTray = createSystemTray\n\n/**\n * Get all active tray instances\n */\nexport function getActiveTrayInstances(): string[] {\n return Array.from(activeTrayInstances.keys())\n}\n\n/**\n * Get a tray instance by ID\n */\nexport function getTrayInstance(id: string): SystemTrayInstance | null {\n const instance = activeTrayInstances.get(id)\n if (!instance)\n return null\n\n const inCraft = isInCraftWindow()\n\n return {\n id,\n setIcon: (icon: string) => {\n instance.state.icon = icon\n if (inCraft) {\n const craftWindow = window as any\n craftWindow.craft.tray.setIcon({ icon }).catch(() => {})\n }\n },\n setTooltip: (tooltip: string) => {\n instance.state.tooltip = tooltip\n if (inCraft) {\n const craftWindow = window as any\n craftWindow.craft.tray.setTooltip({ tooltip }).catch(() => {})\n }\n },\n setMenu: (menu: SystemTrayMenuItem[]) => {\n instance.state.menu = menu\n if (inCraft) {\n const craftWindow = window as any\n const craftMenu = convertMenuItems(menu)\n craftWindow.craft.tray.setMenu({ items: craftMenu }).catch(() => {})\n }\n },\n destroy: () => {\n activeTrayInstances.delete(id)\n if (inCraft) {\n const craftWindow = window as any\n craftWindow.craft.tray.destroy?.().catch(() => {})\n }\n },\n }\n}\n\n/**\n * Trigger a menu item action by label\n * Useful for testing and programmatic control\n */\nexport function triggerTrayAction(trayId: string, actionLabel: string): boolean {\n const instance = activeTrayInstances.get(trayId)\n if (!instance)\n return false\n\n const handler = instance.handlers.get(actionLabel)\n if (handler) {\n handler()\n return true\n }\n return false\n}\n\n/**\n * Get the HTML for a simulated tray menu\n * Useful for web-based testing and development\n */\nexport function getSimulatedTrayHTML(trayId: string): string | null {\n const instance = activeTrayInstances.get(trayId)\n if (!instance)\n return null\n\n return renderTrayMenu(instance.state.menu)\n}\n\n// =============================================================================\n// Bridge Script Generator\n// =============================================================================\n\n/**\n * Generate a JavaScript snippet for tray control from inside a webview.\n * This provides convenient wrappers around the Craft tray bridge.\n */\nexport function getTrayBridgeScript(): string {\n return `\n// STX Desktop Tray Bridge\n// Provides convenient wrappers around window.craft.tray APIs\nwindow.stxTray = {\n setTitle: (title) => window.craft?.tray?.setTitle({ title }),\n setTooltip: (tooltip) => window.craft?.tray?.setTooltip({ tooltip }),\n setIcon: (icon) => window.craft?.tray?.setIcon({ icon }),\n setMenu: (items) => window.craft?.tray?.setMenu({ items }),\n destroy: () => window.craft?.tray?.destroy(),\n\n // Check if tray is available\n isAvailable: () => typeof window.craft?.tray !== 'undefined',\n};\n`\n}\n\n// =============================================================================\n// CSS Styles\n// =============================================================================\n\n/**\n * CSS styles for the simulated tray menu\n */\nexport const TRAY_MENU_STYLES = `\n.stx-tray-menu {\n background: #2d2d2d;\n border-radius: 8px;\n padding: 4px 0;\n min-width: 200px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n font-size: 13px;\n color: #fff;\n}\n\n.stx-tray-item {\n padding: 6px 12px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n position: relative;\n}\n\n.stx-tray-item:hover {\n background: #3d3d3d;\n}\n\n.stx-tray-item.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.stx-tray-item .label {\n flex: 1;\n}\n\n.stx-tray-item .accelerator {\n margin-left: 20px;\n opacity: 0.6;\n font-size: 12px;\n}\n\n.stx-tray-item .arrow {\n margin-left: 8px;\n font-size: 10px;\n}\n\n.stx-tray-separator {\n margin: 4px 0;\n border: none;\n border-top: 1px solid #444;\n}\n\n.stx-tray-submenu {\n position: absolute;\n left: 100%;\n top: 0;\n background: #2d2d2d;\n border-radius: 8px;\n padding: 4px 0;\n min-width: 150px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n display: none;\n}\n\n.stx-tray-item:hover > .stx-tray-submenu {\n display: block;\n}\n`\n",
|
|
9
9
|
"/**\n * Native Dialog Integration\n *\n * Provides native file dialogs, message boxes, and other system dialogs\n * using Craft's Dialog Bridge APIs.\n *\n * When running inside a Craft native window, these dialogs use the native\n * OS dialogs (NSOpenPanel on macOS, etc.). When running in a browser,\n * they fall back to web alternatives where possible.\n */\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Options for opening a file dialog\n */\nexport interface OpenDialogOptions {\n /** Dialog title */\n title?: string\n /** Default path to open */\n defaultPath?: string\n /** Button label (e.g., \"Open\", \"Select\") */\n buttonLabel?: string\n /** File type filters */\n filters?: FileFilter[]\n /** Allow selecting multiple files */\n multiSelections?: boolean\n /** Show hidden files */\n showHiddenFiles?: boolean\n /** Allow selecting directories */\n canChooseDirectories?: boolean\n /** Allow selecting files */\n canChooseFiles?: boolean\n /** Allow creating new directories */\n canCreateDirectories?: boolean\n}\n\n/**\n * Options for saving a file dialog\n */\nexport interface SaveDialogOptions {\n /** Dialog title */\n title?: string\n /** Default path/filename */\n defaultPath?: string\n /** Button label (e.g., \"Save\") */\n buttonLabel?: string\n /** File type filters */\n filters?: FileFilter[]\n /** Show hidden files */\n showHiddenFiles?: boolean\n /** Allow creating new directories */\n canCreateDirectories?: boolean\n}\n\n/**\n * File type filter\n */\nexport interface FileFilter {\n /** Filter name (e.g., \"Images\") */\n name: string\n /** File extensions (e.g., [\"png\", \"jpg\", \"gif\"]) */\n extensions: string[]\n}\n\n/**\n * Result from open dialog\n */\nexport interface OpenDialogResult {\n /** Whether the dialog was cancelled */\n canceled: boolean\n /** Selected file paths */\n filePaths: string[]\n}\n\n/**\n * Result from save dialog\n */\nexport interface SaveDialogResult {\n /** Whether the dialog was cancelled */\n canceled: boolean\n /** Selected file path */\n filePath?: string\n}\n\n/**\n * Options for message box dialog\n */\nexport interface MessageBoxOptions {\n /** Message box type */\n type?: 'none' | 'info' | 'warning' | 'error' | 'question'\n /** Dialog title */\n title?: string\n /** Main message */\n message: string\n /** Secondary detail text */\n detail?: string\n /** Button labels */\n buttons?: string[]\n /** Index of default button */\n defaultButton?: number\n /** Index of cancel button */\n cancelButton?: number\n}\n\n/**\n * Result from message box\n */\nexport interface MessageBoxResult {\n /** Index of button clicked */\n response: number\n}\n\n/**\n * Options for color picker dialog\n */\nexport interface ColorPickerOptions {\n /** Initial color (hex format) */\n color?: string\n /** Show alpha/opacity control */\n showAlpha?: boolean\n}\n\n/**\n * Result from color picker\n */\nexport interface ColorPickerResult {\n /** Whether the dialog was cancelled */\n canceled: boolean\n /** Selected color in hex format */\n color?: string\n}\n\n// =============================================================================\n// Platform Detection\n// =============================================================================\n\n/**\n * Check if running inside a Craft native window\n */\nfunction isInCraftWindow(): boolean {\n if (typeof window !== 'undefined' && (window as any).craft?.dialog) {\n return true\n }\n return false\n}\n\n// =============================================================================\n// Native Dialog Functions\n// =============================================================================\n\n/**\n * Show a native file open dialog\n *\n * When running in Craft, uses the native OS file picker.\n * In browser, falls back to HTML file input.\n *\n * @param options - Dialog options\n * @returns Promise resolving to selected files or cancellation\n *\n * @example\n * ```typescript\n * const result = await showOpenDialog({\n * title: 'Select an image',\n * filters: [{ name: 'Images', extensions: ['png', 'jpg', 'gif'] }],\n * multiSelections: true,\n * })\n *\n * if (!result.canceled) {\n * console.log('Selected:', result.filePaths)\n * }\n * ```\n */\nexport async function showOpenDialog(options: OpenDialogOptions = {}): Promise<OpenDialogResult> {\n if (isInCraftWindow()) {\n // Use Craft's native dialog\n const craftWindow = window as any\n try {\n return await craftWindow.craft.dialog.showOpenDialog(options)\n }\n catch (error) {\n console.warn('[stx-dialog] Failed to show native open dialog:', error)\n // Fall through to web fallback\n }\n }\n\n // Web fallback: use file input\n return new Promise((resolve) => {\n if (typeof document === 'undefined') {\n resolve({ canceled: true, filePaths: [] })\n return\n }\n\n const input = document.createElement('input')\n input.type = 'file'\n input.multiple = options.multiSelections ?? false\n\n // Set accept types from filters\n if (options.filters?.length) {\n const extensions = options.filters.flatMap(f => f.extensions.map(e => `.${e}`))\n input.accept = extensions.join(',')\n }\n\n // Directory selection (limited browser support)\n if (options.canChooseDirectories && !options.canChooseFiles) {\n (input as any).webkitdirectory = true\n }\n\n input.onchange = () => {\n const files = Array.from(input.files || [])\n if (files.length === 0) {\n resolve({ canceled: true, filePaths: [] })\n }\n else {\n // Note: In browsers, we can only get file names, not full paths\n const filePaths = files.map(f => f.name)\n resolve({ canceled: false, filePaths })\n }\n }\n\n input.oncancel = () => {\n resolve({ canceled: true, filePaths: [] })\n }\n\n input.click()\n })\n}\n\n/**\n * Show a native file save dialog\n *\n * When running in Craft, uses the native OS save dialog.\n * In browser, this is limited to triggering downloads.\n *\n * @param options - Dialog options\n * @returns Promise resolving to selected path or cancellation\n *\n * @example\n * ```typescript\n * const result = await showSaveDialog({\n * title: 'Save document',\n * defaultPath: 'document.txt',\n * filters: [{ name: 'Text Files', extensions: ['txt'] }],\n * })\n *\n * if (!result.canceled && result.filePath) {\n * console.log('Save to:', result.filePath)\n * }\n * ```\n */\nexport async function showSaveDialog(options: SaveDialogOptions = {}): Promise<SaveDialogResult> {\n if (isInCraftWindow()) {\n // Use Craft's native dialog\n const craftWindow = window as any\n try {\n return await craftWindow.craft.dialog.showSaveDialog(options)\n }\n catch (error) {\n console.warn('[stx-dialog] Failed to show native save dialog:', error)\n }\n }\n\n // Web fallback: use showSaveFilePicker if available (modern browsers)\n if (typeof window !== 'undefined' && 'showSaveFilePicker' in window) {\n try {\n const fileTypes = options.filters?.map(f => ({\n description: f.name,\n accept: {\n '*/*': f.extensions.map(e => `.${e}`),\n },\n }))\n\n const handle = await (window as any).showSaveFilePicker({\n suggestedName: options.defaultPath,\n types: fileTypes,\n })\n\n return { canceled: false, filePath: handle.name }\n }\n catch (error) {\n // User cancelled or API not supported\n return { canceled: true }\n }\n }\n\n // Fallback: prompt for filename\n console.warn('[stx-dialog] Save dialog not available, using prompt fallback')\n const filename = prompt('Enter filename:', options.defaultPath || 'file.txt')\n if (filename) {\n return { canceled: false, filePath: filename }\n }\n return { canceled: true }\n}\n\n/**\n * Show a native message box dialog\n *\n * When running in Craft, uses the native OS message box.\n * In browser, falls back to confirm/alert dialogs.\n *\n * @param options - Message box options\n * @returns Promise resolving to button index clicked\n *\n * @example\n * ```typescript\n * const result = await showMessageBox({\n * type: 'question',\n * title: 'Confirm',\n * message: 'Are you sure you want to delete this file?',\n * buttons: ['Cancel', 'Delete'],\n * defaultButton: 0,\n * cancelButton: 0,\n * })\n *\n * if (result.response === 1) {\n * // User clicked \"Delete\"\n * }\n * ```\n */\nexport async function showMessageBox(options: MessageBoxOptions): Promise<MessageBoxResult> {\n if (isInCraftWindow()) {\n // Use Craft's native dialog\n const craftWindow = window as any\n try {\n return await craftWindow.craft.dialog.showMessageBox(options)\n }\n catch (error) {\n console.warn('[stx-dialog] Failed to show native message box:', error)\n }\n }\n\n // Web fallback\n const buttons = options.buttons || ['OK']\n\n if (buttons.length === 1) {\n // Simple alert\n alert(options.message)\n return { response: 0 }\n }\n\n if (buttons.length === 2 && options.type === 'question') {\n // Use confirm for simple yes/no\n const confirmed = confirm(options.message)\n return { response: confirmed ? 1 : 0 }\n }\n\n // For more complex dialogs, we'd need a custom modal\n // For now, fall back to confirm\n console.warn('[stx-dialog] Complex message box not fully supported in browser, using confirm')\n const confirmed = confirm(`${options.message}\\n\\n${buttons.join(' / ')}`)\n return { response: confirmed ? (buttons.length - 1) : 0 }\n}\n\n/**\n * Show a native color picker dialog\n *\n * @param options - Color picker options\n * @returns Promise resolving to selected color or cancellation\n *\n * @example\n * ```typescript\n * const result = await showColorPicker({\n * color: '#ff0000',\n * showAlpha: true,\n * })\n *\n * if (!result.canceled && result.color) {\n * document.body.style.backgroundColor = result.color\n * }\n * ```\n */\nexport async function showColorPicker(options: ColorPickerOptions = {}): Promise<ColorPickerResult> {\n if (isInCraftWindow()) {\n // Use Craft's native dialog\n const craftWindow = window as any\n try {\n return await craftWindow.craft.dialog.showColorPicker(options)\n }\n catch (error) {\n console.warn('[stx-dialog] Failed to show native color picker:', error)\n }\n }\n\n // Web fallback: use color input\n return new Promise((resolve) => {\n if (typeof document === 'undefined') {\n resolve({ canceled: true })\n return\n }\n\n const input = document.createElement('input')\n input.type = 'color'\n input.value = options.color || '#000000'\n\n input.onchange = () => {\n resolve({ canceled: false, color: input.value })\n }\n\n input.oncancel = () => {\n resolve({ canceled: true })\n }\n\n input.click()\n })\n}\n\n// =============================================================================\n// Convenience Functions\n// =============================================================================\n\n/**\n * Show a simple alert message dialog (native)\n *\n * @param message - Message to display\n * @param title - Optional dialog title\n */\nexport async function showAlertDialog(message: string, title?: string): Promise<void> {\n await showMessageBox({\n type: 'info',\n title: title || 'Alert',\n message,\n buttons: ['OK'],\n })\n}\n\n/**\n * Show a confirmation dialog (native)\n *\n * @param message - Message to display\n * @param title - Optional dialog title\n * @returns True if confirmed, false if cancelled\n */\nexport async function showConfirmDialog(message: string, title?: string): Promise<boolean> {\n const result = await showMessageBox({\n type: 'question',\n title: title || 'Confirm',\n message,\n buttons: ['Cancel', 'OK'],\n defaultButton: 1,\n cancelButton: 0,\n })\n return result.response === 1\n}\n\n/**\n * Show an error dialog (native)\n *\n * @param message - Error message\n * @param title - Optional dialog title\n */\nexport async function showErrorDialog(message: string, title?: string): Promise<void> {\n await showMessageBox({\n type: 'error',\n title: title || 'Error',\n message,\n buttons: ['OK'],\n })\n}\n\n/**\n * Show a warning dialog (native)\n *\n * @param message - Warning message\n * @param title - Optional dialog title\n */\nexport async function showWarningDialog(message: string, title?: string): Promise<void> {\n await showMessageBox({\n type: 'warning',\n title: title || 'Warning',\n message,\n buttons: ['OK'],\n })\n}\n\n// =============================================================================\n// Bridge Script Generator\n// =============================================================================\n\n/**\n * Generate a JavaScript snippet for dialog control from inside a webview.\n * This provides convenient wrappers around the Craft dialog bridge.\n */\nexport function getDialogBridgeScript(): string {\n return `\n// STX Desktop Dialog Bridge\n// Provides convenient wrappers around window.craft.dialog APIs\nwindow.stxDialog = {\n // File dialogs\n showOpenDialog: (options) => window.craft?.dialog?.showOpenDialog(options),\n showSaveDialog: (options) => window.craft?.dialog?.showSaveDialog(options),\n\n // Message dialogs\n showMessageBox: (options) => window.craft?.dialog?.showMessageBox(options),\n\n // Color picker\n showColorPicker: (options) => window.craft?.dialog?.showColorPicker(options),\n\n // Font picker\n showFontPicker: (options) => window.craft?.dialog?.showFontPicker(options),\n\n // Convenience functions\n alert: async (message, title) => {\n return window.craft?.dialog?.showMessageBox({\n type: 'info',\n title: title || 'Alert',\n message,\n buttons: ['OK'],\n });\n },\n\n confirm: async (message, title) => {\n const result = await window.craft?.dialog?.showMessageBox({\n type: 'question',\n title: title || 'Confirm',\n message,\n buttons: ['Cancel', 'OK'],\n });\n return result?.response === 1;\n },\n\n error: async (message, title) => {\n return window.craft?.dialog?.showMessageBox({\n type: 'error',\n title: title || 'Error',\n message,\n buttons: ['OK'],\n });\n },\n\n // Check if dialog is available\n isAvailable: () => typeof window.craft?.dialog !== 'undefined',\n};\n`\n}\n",
|
|
10
|
-
"/* eslint-disable no-console */\nimport type { SidebarConfig, WindowInstance, WindowOptions } from './types'\nimport process from 'node:process'\nimport { existsSync } from 'node:fs'\nimport { join } from 'node:path'\n\n// =============================================================================\n// Configuration\n// =============================================================================\n\n/**\n * Desktop window configuration.\n * Can be set via environment variables or setDesktopConfig().\n */\nexport interface DesktopConfig {\n /**\n * Custom path to craft binary.\n * Set via CRAFT_BINARY_PATH env var or setDesktopConfig().\n */\n craftBinaryPath?: string\n /**\n * Additional search paths for craft binary.\n * Searched after craftBinaryPath if set.\n */\n additionalSearchPaths?: string[]\n /**\n * Maximum retries when opening native window fails.\n * Default: 1 (no retries)\n */\n maxRetries?: number\n /**\n * Delay between retries in milliseconds.\n * Default: 1000\n */\n retryDelay?: number\n}\n\n/**\n * Current desktop configuration\n */\nlet currentConfig: DesktopConfig = {}\n\n/**\n * Configure desktop window settings\n *\n * @example\n * ```typescript\n * setDesktopConfig({\n * craftBinaryPath: '/custom/path/to/craft',\n * maxRetries: 3,\n * retryDelay: 2000\n * })\n * ```\n */\nexport function setDesktopConfig(config: Partial<DesktopConfig>): void {\n currentConfig = { ...currentConfig, ...config }\n}\n\n/**\n * Get current desktop configuration\n */\nexport function getDesktopConfig(): DesktopConfig {\n return { ...currentConfig }\n}\n\n/**\n * Reset desktop configuration to defaults\n */\nexport function resetDesktopConfig(): void {\n currentConfig = {}\n}\n\nfunction prepareSidebarConfig(options: WindowOptions): SidebarConfig | undefined {\n if (!options.sidebarConfig) return undefined\n\n const config: SidebarConfig = { ...options.sidebarConfig }\n if (config.variant === 'desktop') {\n config.material = config.material ?? 'sidebar'\n config.backgroundEffect = config.backgroundEffect ?? 'shimmer'\n config.allowsVibrancy = config.allowsVibrancy ?? true\n }\n\n return config\n}\n\n// =============================================================================\n// Binary Resolution\n// =============================================================================\n\n/**\n * Default paths to search for craft binary.\n * Used when CRAFT_BINARY_PATH is not set.\n */\nconst DEFAULT_SEARCH_PATHS = [\n // Global bun installation\n join(process.env.HOME || '', '.bun/bin/craft'),\n // Absolute path to craft in standard location\n join(process.env.HOME || '', 'Code/Tools/craft/packages/zig/zig-out/bin/craft'),\n join(process.env.HOME || '', 'Code/craft/packages/zig/zig-out/bin/craft'),\n // From linked ts-craft in monorepo (both craft and craft-minimal)\n join(process.cwd(), '../../craft/packages/zig/zig-out/bin/craft'),\n join(process.cwd(), '../../craft/packages/zig/zig-out/bin/craft-minimal'),\n join(process.cwd(), '../../../craft/packages/zig/zig-out/bin/craft'),\n join(process.cwd(), '../../../craft/packages/zig/zig-out/bin/craft-minimal'),\n // If running from stx repo root\n join(process.cwd(), '../craft/packages/zig/zig-out/bin/craft'),\n join(process.cwd(), '../craft/packages/zig/zig-out/bin/craft-minimal'),\n // Local craft installation\n join(process.cwd(), 'node_modules/.bin/craft'),\n]\n\n/**\n * Find craft binary in configured locations.\n *\n * Resolution order:\n * 1. CRAFT_BINARY_PATH environment variable\n * 2. config.craftBinaryPath (set via setDesktopConfig)\n * 3. config.additionalSearchPaths\n * 4. DEFAULT_SEARCH_PATHS (monorepo locations)\n *\n * @returns Path to craft binary or undefined if not found\n */\nfunction getCraftBinaryPath(): string | undefined {\n // 1. Check environment variable first (highest priority)\n const envPath = process.env.CRAFT_BINARY_PATH\n if (envPath && existsSync(envPath)) {\n return envPath\n }\n\n // 2. Check configured path\n if (currentConfig.craftBinaryPath && existsSync(currentConfig.craftBinaryPath)) {\n return currentConfig.craftBinaryPath\n }\n\n // 3. Check additional configured paths\n const additionalPaths = currentConfig.additionalSearchPaths || []\n for (const searchPath of additionalPaths) {\n if (existsSync(searchPath)) {\n return searchPath\n }\n }\n\n // 4. Check default paths\n for (const searchPath of DEFAULT_SEARCH_PATHS) {\n if (existsSync(searchPath)) {\n return searchPath\n }\n }\n\n return undefined\n}\n\n// =============================================================================\n// Window Instance Management\n// =============================================================================\n\n/**\n * Active window instances managed by this module\n */\nconst activeWindows = new Map<string, {\n app: any\n url: string\n options: WindowOptions\n}>()\n\n/**\n * Get all active window IDs\n */\nexport function getActiveWindowIds(): string[] {\n return Array.from(activeWindows.keys())\n}\n\n/**\n * Get a window by ID\n */\nexport function getWindow(id: string): WindowInstance | null {\n const windowData = activeWindows.get(id)\n if (!windowData) return null\n return createWindowInstance(id, windowData.app)\n}\n\n/**\n * Close all active windows\n */\nexport function closeAllWindows(): void {\n for (const [id, windowData] of activeWindows) {\n try {\n windowData.app?.close?.()\n }\n catch (e) {\n console.warn(`Failed to close window ${id}:`, e)\n }\n }\n activeWindows.clear()\n}\n\n/**\n * Create a WindowInstance object with control methods\n */\nfunction createWindowInstance(id: string, app: any): WindowInstance {\n return {\n id,\n\n show: () => {\n // The window is shown when created via app.show()\n // This is a no-op since ts-craft auto-shows windows\n console.log(`[stx/desktop] Window ${id} shown`)\n },\n\n hide: () => {\n // ts-craft doesn't expose hide directly from the process side\n // This would need to be called from inside the webview via window.craft.window.hide()\n console.log(`[stx/desktop] To hide window, use window.craft.window.hide() from inside the webview`)\n },\n\n close: () => {\n const windowData = activeWindows.get(id)\n if (windowData?.app) {\n windowData.app.close()\n activeWindows.delete(id)\n console.log(`[stx/desktop] Window ${id} closed`)\n }\n },\n\n focus: () => {\n console.log(`[stx/desktop] To focus window, use window.craft.window.focus() from inside the webview`)\n },\n\n minimize: () => {\n console.log(`[stx/desktop] To minimize window, use window.craft.window.minimize() from inside the webview`)\n },\n\n maximize: () => {\n console.log(`[stx/desktop] To maximize window, use window.craft.window.maximize() from inside the webview`)\n },\n\n restore: () => {\n console.log(`[stx/desktop] To restore window, use window.craft.window.show() from inside the webview`)\n },\n\n setTitle: (title: string) => {\n console.log(`[stx/desktop] To set title, use window.craft.window.setTitle({ title: \"${title}\" }) from inside the webview`)\n },\n\n loadURL: (url: string) => {\n // Re-create the window with the new URL\n console.log(`[stx/desktop] To navigate, use window.location.href = \"${url}\" from inside the webview`)\n },\n\n reload: () => {\n console.log(`[stx/desktop] To reload, use window.craft.window.reload() from inside the webview`)\n },\n }\n}\n\n// =============================================================================\n// Window Creation\n// =============================================================================\n\n/**\n * Create a native window with URL\n *\n * Uses ts-craft to create native desktop windows. Falls back to returning null\n * if ts-craft is not available.\n *\n * ## Window Control\n *\n * The CraftApp spawns a native webview process. Window control methods like\n * hide(), minimize(), setTitle() etc. are available via the `window.craft`\n * bridge **inside** the webview context:\n *\n * ```javascript\n * // Inside your HTML/JS running in the webview:\n * window.craft.window.hide()\n * window.craft.window.minimize()\n * window.craft.window.setTitle({ title: 'New Title' })\n * window.craft.window.center()\n * ```\n *\n * The returned WindowInstance provides the `close()` method which terminates\n * the native process from the Node.js side.\n *\n * @param url - URL to load in the window\n * @param options - Window configuration options\n * @returns WindowInstance if successful, null if ts-craft unavailable\n */\nexport async function createWindow(url: string, options: WindowOptions = {}): Promise<WindowInstance | null> {\n const {\n title = 'stx Desktop',\n width = 1200,\n height = 800,\n darkMode = false,\n hotReload = false,\n resizable = true,\n frameless = false,\n alwaysOnTop = false,\n } = options\n\n try {\n // Dynamically import ts-craft\n const { createApp } = await import('ts-craft')\n\n const craftPath = getCraftBinaryPath()\n\n const app = createApp({\n url,\n craftPath,\n window: {\n title,\n width,\n height,\n darkMode,\n hotReload,\n resizable,\n frameless,\n alwaysOnTop,\n },\n })\n\n // Generate unique ID\n const id = `craft-window-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`\n\n // Store the window instance\n activeWindows.set(id, { app, url, options })\n\n // Show the window\n await app.show()\n\n return createWindowInstance(id, app)\n }\n catch (error) {\n console.error('Failed to create native window:', error)\n console.warn('Falling back to browser...')\n return null\n }\n}\n\n/**\n * Open a development server window\n * This is specifically for the stx dev server --native flag\n *\n * Uses ts-craft to create a native window, falls back to browser if unavailable.\n */\nexport async function openDevWindow(port: number, options: WindowOptions = {}): Promise<boolean> {\n const url = `http://localhost:${port}/`\n\n // Bail out of native paths under bun:test to avoid spawning real\n // webview processes from unit tests. Tests assert that the function\n // returns false in this environment.\n const isTestEnv = process.env.NODE_ENV === 'test' || process.env.BUN_TEST\n if (isTestEnv) {\n console.warn('⚠ Skipping native window in test environment')\n console.log('(Skipping browser fallback in test environment)')\n return false\n }\n\n // Path 1 — `ts-craft` package, when it's actually installed in the host\n // workspace. This is the original path; we keep it for projects that\n // depend on `ts-craft` for richer typings / sidebar config.\n try {\n const { createApp } = await import('ts-craft')\n\n console.log('⚡ Opening native window via ts-craft…')\n const useSystemTray = !options.nativeSidebar\n const sidebarConfig = prepareSidebarConfig(options)\n const app = createApp({\n url,\n craftPath: getCraftBinaryPath(),\n // ts-craft's WindowOptions doesn't type `titlebarHidden` yet, but the\n // Craft binary honors it (see the `--titlebar-hidden` arg on the binary\n // fallback path below). Cast to ts-craft's own window type so this\n // forward-compat field passes through without a fresh-literal excess error.\n window: {\n title: options.title || 'stx Development',\n width: options.width || 1400,\n height: options.height || 900,\n resizable: true,\n systemTray: useSystemTray,\n darkMode: options.darkMode ?? true,\n hotReload: options.hotReload ?? true,\n devTools: true,\n titlebarHidden: options.titlebarHidden ?? false,\n nativeSidebar: options.nativeSidebar ?? false,\n sidebarWidth: options.sidebarWidth ?? 260,\n sidebarConfig: sidebarConfig as Record<string, unknown> | undefined,\n } as NonNullable<Parameters<typeof createApp>[0]>['window'],\n })\n\n const id = `dev-window-${port}`\n activeWindows.set(id, { app, url, options })\n await app.show()\n console.log(`✓ Native window opened at ${url}`)\n return true\n }\n catch (tsCraftErr) {\n // Path 2 — native binary spawned directly. ts-craft is just a thin\n // wrapper around this; if it isn't installed we can still drive Craft\n // via `craft --url … --title … --width … --height …`. In practice this\n // is the path most monorepo users hit, since they have the `craft`\n // binary in `~/.bun/bin` but no JS package.\n const craftPath = getCraftBinaryPath()\n if (craftPath) {\n try {\n console.log(`⚡ Opening native window via craft binary (${craftPath})…`)\n const { spawn } = await import('node:child_process')\n const args: string[] = [\n '--url', url,\n '--title', options.title || 'stx Development',\n '--width', String(options.width || 1400),\n '--height', String(options.height || 900),\n ]\n if (options.darkMode) args.push('--dark')\n if (options.hotReload ?? true) args.push('--hot-reload')\n if (options.titlebarHidden) args.push('--titlebar-hidden')\n\n const child = spawn(craftPath, args, { stdio: 'inherit' })\n\n // Bridge the child's lifetime to the host process so closing the\n // window cleanly exits the dev server (matches `bun --bun … --native`\n // expectations).\n child.on('exit', () => process.exit(0))\n child.on('error', err => console.warn('craft child error:', err.message))\n\n const id = `dev-window-${port}`\n activeWindows.set(id, { app: { close: () => child.kill() }, url, options })\n console.log(`✓ Native window opened at ${url}`)\n return true\n }\n catch (binaryErr) {\n console.warn('⚠ Could not spawn craft binary:', (binaryErr as Error).message)\n }\n }\n else {\n console.warn('⚠ ts-craft not installed and no craft binary found')\n console.warn(` (ts-craft error: ${(tsCraftErr as Error).message})`)\n }\n\n // Path 3 — give up on native, open the system browser. Skipped in test.\n if (process.env.NODE_ENV === 'test' || process.env.BUN_TEST) {\n console.log('(Skipping browser fallback in test environment)')\n return false\n }\n console.log('📱 Opening in browser instead…')\n try {\n const { spawn } = await import('node:child_process')\n const platform = process.platform\n const command = platform === 'darwin' ? 'open' : platform === 'win32' ? 'cmd' : 'xdg-open'\n const args = platform === 'win32' ? ['/c', 'start', url] : [url]\n spawn(command, args, { detached: true, stdio: 'ignore' }).unref()\n console.log(`✓ Browser opened at ${url}`)\n return true\n }\n catch (browserError) {\n console.error('Could not open browser:', browserError)\n console.log(`Please open manually: ${url}`)\n return false\n }\n }\n}\n\n/**\n * Create a window with HTML content\n *\n * Uses ts-craft to display HTML content in a native window.\n */\nexport async function createWindowWithHTML(html: string, options: WindowOptions = {}): Promise<WindowInstance | null> {\n const {\n title = 'stx Desktop',\n width = 1200,\n height = 800,\n darkMode = false,\n hotReload = false,\n resizable = true,\n frameless = false,\n alwaysOnTop = false,\n } = options\n\n try {\n // Dynamically import ts-craft\n const { createApp } = await import('ts-craft')\n\n const craftPath = getCraftBinaryPath()\n\n const app = createApp({\n html,\n craftPath,\n window: {\n title,\n width,\n height,\n darkMode,\n hotReload,\n resizable,\n frameless,\n alwaysOnTop,\n },\n })\n\n const id = `craft-window-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`\n activeWindows.set(id, { app, url: 'html-content', options })\n\n await app.show()\n\n return createWindowInstance(id, app)\n }\n catch (error) {\n console.error('Failed to create window with HTML:', error)\n return null\n }\n}\n\n/**\n * Helper to check if webview implementation is available\n */\nexport function isWebviewAvailable(): boolean {\n try {\n // Try to require ts-craft to check if it's available\n require.resolve('ts-craft')\n return true\n }\n catch {\n return false\n }\n}\n\n// =============================================================================\n// Bridge Script Generator\n// =============================================================================\n\n/**\n * Generate a JavaScript snippet to inject into HTML that provides\n * helper functions for common window operations.\n *\n * This can be injected into your HTML to provide easier access to Craft APIs.\n *\n * @example\n * ```typescript\n * const html = `\n * <html>\n * <head>\n * <script>${getWindowBridgeScript()}</script>\n * </head>\n * <body>\n * <button onclick=\"stxWindow.minimize()\">Minimize</button>\n * </body>\n * </html>\n * `\n * await createWindowWithHTML(html)\n * ```\n */\nexport function getWindowBridgeScript(): string {\n return `\n// STX Desktop Window Bridge\n// Provides convenient wrappers around window.craft APIs\nwindow.stxWindow = {\n // Window control\n hide: () => window.craft?.window?.hide(),\n show: () => window.craft?.window?.show(),\n toggle: () => window.craft?.window?.toggle(),\n close: () => window.craft?.window?.close(),\n minimize: () => window.craft?.window?.minimize(),\n maximize: () => window.craft?.window?.maximize(),\n focus: () => window.craft?.window?.focus(),\n center: () => window.craft?.window?.center(),\n reload: () => window.craft?.window?.reload(),\n toggleFullscreen: () => window.craft?.window?.toggleFullscreen(),\n\n // Window properties\n setTitle: (title) => window.craft?.window?.setTitle({ title }),\n setSize: (width, height) => window.craft?.window?.setSize({ width, height }),\n setPosition: (x, y) => window.craft?.window?.setPosition({ x, y }),\n setAlwaysOnTop: (alwaysOnTop) => window.craft?.window?.setAlwaysOnTop({ alwaysOnTop }),\n setResizable: (resizable) => window.craft?.window?.setResizable({ resizable }),\n setOpacity: (opacity) => window.craft?.window?.setOpacity({ opacity }),\n\n // macOS-specific\n setVibrancy: (vibrancy) => window.craft?.window?.setVibrancy({ vibrancy }),\n\n // App control\n quit: () => window.craft?.app?.quit(),\n isDarkMode: () => window.craft?.app?.isDarkMode(),\n getLocale: () => window.craft?.app?.getLocale(),\n\n // Notifications\n notify: (options) => window.craft?.app?.notify(options),\n\n // Check if running in Craft\n isCraftAvailable: () => typeof window.craft !== 'undefined',\n};\n\n// Expose as global for backwards compatibility\nwindow.desktop = window.stxWindow;\n`\n}\n",
|
|
10
|
+
"/* eslint-disable no-console */\nimport type { SidebarConfig, WindowInstance, WindowOptions } from './types'\nimport process from 'node:process'\nimport { existsSync } from 'node:fs'\nimport { dirname, join } from 'node:path'\n\n// =============================================================================\n// Configuration\n// =============================================================================\n\n/**\n * Desktop window configuration.\n * Can be set via environment variables or setDesktopConfig().\n */\nexport interface DesktopConfig {\n /**\n * Custom path to craft binary.\n * Set via CRAFT_BINARY_PATH env var or setDesktopConfig().\n */\n craftBinaryPath?: string\n /**\n * Additional search paths for craft binary.\n * Searched after craftBinaryPath if set.\n */\n additionalSearchPaths?: string[]\n /**\n * Maximum retries when opening native window fails.\n * Default: 1 (no retries)\n */\n maxRetries?: number\n /**\n * Delay between retries in milliseconds.\n * Default: 1000\n */\n retryDelay?: number\n}\n\n/**\n * Current desktop configuration\n */\nlet currentConfig: DesktopConfig = {}\n\n/**\n * Configure desktop window settings\n *\n * @example\n * ```typescript\n * setDesktopConfig({\n * craftBinaryPath: '/custom/path/to/craft',\n * maxRetries: 3,\n * retryDelay: 2000\n * })\n * ```\n */\nexport function setDesktopConfig(config: Partial<DesktopConfig>): void {\n currentConfig = { ...currentConfig, ...config }\n}\n\n/**\n * Get current desktop configuration\n */\nexport function getDesktopConfig(): DesktopConfig {\n return { ...currentConfig }\n}\n\n/**\n * Reset desktop configuration to defaults\n */\nexport function resetDesktopConfig(): void {\n currentConfig = {}\n}\n\nfunction prepareSidebarConfig(options: WindowOptions): SidebarConfig | undefined {\n if (!options.sidebarConfig) return undefined\n\n const config: SidebarConfig = { ...options.sidebarConfig }\n if (config.variant === 'desktop') {\n config.material = config.material ?? 'sidebar'\n config.backgroundEffect = config.backgroundEffect ?? 'shimmer'\n config.allowsVibrancy = config.allowsVibrancy ?? true\n }\n\n return config\n}\n\n// =============================================================================\n// Binary Resolution\n// =============================================================================\n\n/**\n * Default paths to search for craft binary.\n * Used when CRAFT_BINARY_PATH is not set.\n */\nconst DEFAULT_SEARCH_PATHS = [\n // Beside the running executable — a packaged .app bundles the craft binary\n // into Contents/MacOS/ next to its own binary (see packageApp's\n // macos.additionalExecutables), so a shipped app resolves it first.\n join(dirname(process.execPath), 'craft'),\n // Global bun installation\n join(process.env.HOME || '', '.bun/bin/craft'),\n // Absolute path to craft in standard location\n join(process.env.HOME || '', 'Code/Tools/craft/packages/zig/zig-out/bin/craft'),\n join(process.env.HOME || '', 'Code/craft/packages/zig/zig-out/bin/craft'),\n // From linked craft in monorepo (both craft and craft-minimal)\n join(process.cwd(), '../../craft/packages/zig/zig-out/bin/craft'),\n join(process.cwd(), '../../craft/packages/zig/zig-out/bin/craft-minimal'),\n join(process.cwd(), '../../../craft/packages/zig/zig-out/bin/craft'),\n join(process.cwd(), '../../../craft/packages/zig/zig-out/bin/craft-minimal'),\n // If running from stx repo root\n join(process.cwd(), '../craft/packages/zig/zig-out/bin/craft'),\n join(process.cwd(), '../craft/packages/zig/zig-out/bin/craft-minimal'),\n // Local craft installation\n join(process.cwd(), 'node_modules/.bin/craft'),\n]\n\n/**\n * Find craft binary in configured locations.\n *\n * Resolution order:\n * 1. CRAFT_BINARY_PATH environment variable\n * 2. config.craftBinaryPath (set via setDesktopConfig)\n * 3. config.additionalSearchPaths\n * 4. DEFAULT_SEARCH_PATHS (monorepo locations)\n *\n * @returns Path to craft binary or undefined if not found\n */\nfunction getCraftBinaryPath(): string | undefined {\n // 1. Check environment variable first (highest priority)\n const envPath = process.env.CRAFT_BINARY_PATH\n if (envPath && existsSync(envPath)) {\n return envPath\n }\n\n // 2. Check configured path\n if (currentConfig.craftBinaryPath && existsSync(currentConfig.craftBinaryPath)) {\n return currentConfig.craftBinaryPath\n }\n\n // 3. Check additional configured paths\n const additionalPaths = currentConfig.additionalSearchPaths || []\n for (const searchPath of additionalPaths) {\n if (existsSync(searchPath)) {\n return searchPath\n }\n }\n\n // 4. Check default paths\n for (const searchPath of DEFAULT_SEARCH_PATHS) {\n if (existsSync(searchPath)) {\n return searchPath\n }\n }\n\n return undefined\n}\n\n// =============================================================================\n// Window Instance Management\n// =============================================================================\n\n/**\n * Active window instances managed by this module\n */\nconst activeWindows = new Map<string, {\n app: any\n url: string\n options: WindowOptions\n}>()\n\n/**\n * Get all active window IDs\n */\nexport function getActiveWindowIds(): string[] {\n return Array.from(activeWindows.keys())\n}\n\n/**\n * Get a window by ID\n */\nexport function getWindow(id: string): WindowInstance | null {\n const windowData = activeWindows.get(id)\n if (!windowData) return null\n return createWindowInstance(id, windowData.app)\n}\n\n/**\n * Close all active windows\n */\nexport function closeAllWindows(): void {\n for (const [id, windowData] of activeWindows) {\n try {\n windowData.app?.close?.()\n }\n catch (e) {\n console.warn(`Failed to close window ${id}:`, e)\n }\n }\n activeWindows.clear()\n}\n\n/**\n * Create a WindowInstance object with control methods\n */\nfunction createWindowInstance(id: string, app: any): WindowInstance {\n return {\n id,\n\n show: () => {\n // The window is shown when created via app.show()\n // This is a no-op since craft-native auto-shows windows\n console.log(`[stx/desktop] Window ${id} shown`)\n },\n\n hide: () => {\n // craft-native doesn't expose hide directly from the process side\n // This would need to be called from inside the webview via window.craft.window.hide()\n console.log(`[stx/desktop] To hide window, use window.craft.window.hide() from inside the webview`)\n },\n\n close: () => {\n const windowData = activeWindows.get(id)\n if (windowData?.app) {\n windowData.app.close()\n activeWindows.delete(id)\n console.log(`[stx/desktop] Window ${id} closed`)\n }\n },\n\n focus: () => {\n console.log(`[stx/desktop] To focus window, use window.craft.window.focus() from inside the webview`)\n },\n\n minimize: () => {\n console.log(`[stx/desktop] To minimize window, use window.craft.window.minimize() from inside the webview`)\n },\n\n maximize: () => {\n console.log(`[stx/desktop] To maximize window, use window.craft.window.maximize() from inside the webview`)\n },\n\n restore: () => {\n console.log(`[stx/desktop] To restore window, use window.craft.window.show() from inside the webview`)\n },\n\n setTitle: (title: string) => {\n console.log(`[stx/desktop] To set title, use window.craft.window.setTitle({ title: \"${title}\" }) from inside the webview`)\n },\n\n loadURL: (url: string) => {\n // Re-create the window with the new URL\n console.log(`[stx/desktop] To navigate, use window.location.href = \"${url}\" from inside the webview`)\n },\n\n reload: () => {\n console.log(`[stx/desktop] To reload, use window.craft.window.reload() from inside the webview`)\n },\n }\n}\n\n// =============================================================================\n// Window Creation\n// =============================================================================\n\n/**\n * Translate window options into Craft binary arguments.\n *\n * craft-native is a thin wrapper around this command line, so the same options\n * describe a window whether the JS package is installed or not.\n */\nexport function craftWindowArguments(url: string, options: WindowOptions = {}): string[] {\n const args = [\n '--url', url,\n '--title', options.title || 'stx Desktop',\n '--width', String(options.width ?? 1200),\n '--height', String(options.height ?? 800),\n ]\n\n if (options.darkMode) args.push('--dark')\n if (options.hotReload) args.push('--hot-reload')\n if (options.resizable === false) args.push('--no-resize')\n if (options.frameless) args.push('--frameless')\n if (options.alwaysOnTop) args.push('--always-on-top')\n if (options.titlebarHidden) args.push('--titlebar-hidden')\n if (options.systemTray) args.push('--system-tray')\n if (options.hideDockIcon) args.push('--hide-dock-icon')\n if (options.devTools === false) args.push('--no-devtools')\n if (options.nativeSidebar) args.push('--native-sidebar')\n if (options.sidebarWidth !== undefined) args.push('--sidebar-width', String(options.sidebarWidth))\n\n const sidebarConfig = prepareSidebarConfig(options)\n if (sidebarConfig) args.push('--sidebar-config', JSON.stringify(sidebarConfig))\n\n return args\n}\n\n/**\n * Create a native window with URL\n *\n * Prefers the craft-native package for its richer typings, and falls back to\n * spawning the Craft binary directly when it isn't installed — the binary is\n * what craft-native drives anyway, so an app needs only one of the two.\n *\n * ## Window Control\n *\n * The CraftApp spawns a native webview process. Window control methods like\n * hide(), minimize(), setTitle() etc. are available via the `window.craft`\n * bridge **inside** the webview context:\n *\n * ```javascript\n * // Inside your HTML/JS running in the webview:\n * window.craft.window.hide()\n * window.craft.window.minimize()\n * window.craft.window.setTitle({ title: 'New Title' })\n * window.craft.window.center()\n * ```\n *\n * The returned WindowInstance provides the `close()` method which terminates\n * the native process from the Node.js side.\n *\n * @param url - URL to load in the window\n * @param options - Window configuration options\n * @returns WindowInstance if successful, null if no Craft runtime is available\n */\nexport async function createWindow(url: string, options: WindowOptions = {}): Promise<WindowInstance | null> {\n const id = `craft-window-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`\n const craftPath = getCraftBinaryPath()\n\n try {\n const { createApp } = await import('craft-native')\n\n const app = createApp({\n url,\n craftPath,\n // craft-native's WindowOptions doesn't type every field the binary honors\n // (titlebarHidden, hideDockIcon, sidebar config), so cast to its own\n // window type to pass them through.\n window: {\n title: options.title || 'stx Desktop',\n width: options.width ?? 1200,\n height: options.height ?? 800,\n darkMode: options.darkMode ?? false,\n hotReload: options.hotReload ?? false,\n resizable: options.resizable ?? true,\n frameless: options.frameless ?? false,\n alwaysOnTop: options.alwaysOnTop ?? false,\n titlebarHidden: options.titlebarHidden ?? false,\n systemTray: options.systemTray ?? false,\n hideDockIcon: options.hideDockIcon ?? false,\n devTools: options.devTools ?? false,\n nativeSidebar: options.nativeSidebar ?? false,\n sidebarWidth: options.sidebarWidth,\n sidebarConfig: prepareSidebarConfig(options) as Record<string, unknown> | undefined,\n } as NonNullable<Parameters<typeof createApp>[0]>['window'],\n })\n\n activeWindows.set(id, { app, url, options })\n await app.show()\n\n return createWindowInstance(id, app)\n }\n catch (tsCraftError) {\n if (!craftPath) {\n console.error('Failed to create native window: no craft binary found and craft-native is not installed')\n console.error(` (craft-native error: ${(tsCraftError as Error).message})`)\n return null\n }\n\n try {\n const { spawn } = await import('node:child_process')\n const child = spawn(craftPath, craftWindowArguments(url, options), { stdio: 'inherit' })\n child.on('error', err => console.warn('craft child error:', err.message))\n\n const app = { close: () => child.kill() }\n activeWindows.set(id, { app, url, options })\n\n return createWindowInstance(id, app)\n }\n catch (binaryError) {\n console.error('Failed to spawn craft binary:', (binaryError as Error).message)\n return null\n }\n }\n}\n\n/**\n * Open a development server window\n * This is specifically for the stx dev server --native flag\n *\n * Uses craft-native to create a native window, falls back to browser if unavailable.\n */\nexport async function openDevWindow(port: number, options: WindowOptions = {}): Promise<boolean> {\n const url = `http://localhost:${port}/`\n\n // Bail out of native paths under bun:test to avoid spawning real\n // webview processes from unit tests. Tests assert that the function\n // returns false in this environment.\n const isTestEnv = process.env.NODE_ENV === 'test' || process.env.BUN_TEST\n if (isTestEnv) {\n console.warn('⚠ Skipping native window in test environment')\n console.log('(Skipping browser fallback in test environment)')\n return false\n }\n\n // Path 1 — `craft-native` package, when it's actually installed in the host\n // workspace. This is the original path; we keep it for projects that\n // depend on `craft-native` for richer typings / sidebar config.\n try {\n const { createApp } = await import('craft-native')\n\n console.log('⚡ Opening native window via craft-native…')\n const useSystemTray = !options.nativeSidebar\n const sidebarConfig = prepareSidebarConfig(options)\n const app = createApp({\n url,\n craftPath: getCraftBinaryPath(),\n // craft-native's WindowOptions doesn't type `titlebarHidden` yet, but the\n // Craft binary honors it (see the `--titlebar-hidden` arg on the binary\n // fallback path below). Cast to craft-native's own window type so this\n // forward-compat field passes through without a fresh-literal excess error.\n window: {\n title: options.title || 'stx Development',\n width: options.width || 1400,\n height: options.height || 900,\n resizable: true,\n systemTray: useSystemTray,\n darkMode: options.darkMode ?? true,\n hotReload: options.hotReload ?? true,\n devTools: true,\n titlebarHidden: options.titlebarHidden ?? false,\n nativeSidebar: options.nativeSidebar ?? false,\n sidebarWidth: options.sidebarWidth ?? 260,\n sidebarConfig: sidebarConfig as Record<string, unknown> | undefined,\n } as NonNullable<Parameters<typeof createApp>[0]>['window'],\n })\n\n const id = `dev-window-${port}`\n activeWindows.set(id, { app, url, options })\n await app.show()\n console.log(`✓ Native window opened at ${url}`)\n return true\n }\n catch (tsCraftErr) {\n // Path 2 — native binary spawned directly. craft-native is just a thin\n // wrapper around this; if it isn't installed we can still drive Craft\n // via `craft --url … --title … --width … --height …`. In practice this\n // is the path most monorepo users hit, since they have the `craft`\n // binary in `~/.bun/bin` but no JS package.\n const craftPath = getCraftBinaryPath()\n if (craftPath) {\n try {\n console.log(`⚡ Opening native window via craft binary (${craftPath})…`)\n const { spawn } = await import('node:child_process')\n const args: string[] = [\n '--url', url,\n '--title', options.title || 'stx Development',\n '--width', String(options.width || 1400),\n '--height', String(options.height || 900),\n ]\n if (options.darkMode) args.push('--dark')\n if (options.hotReload ?? true) args.push('--hot-reload')\n if (options.titlebarHidden) args.push('--titlebar-hidden')\n\n const child = spawn(craftPath, args, { stdio: 'inherit' })\n\n // Bridge the child's lifetime to the host process so closing the\n // window cleanly exits the dev server (matches `bun --bun … --native`\n // expectations).\n child.on('exit', () => process.exit(0))\n child.on('error', err => console.warn('craft child error:', err.message))\n\n const id = `dev-window-${port}`\n activeWindows.set(id, { app: { close: () => child.kill() }, url, options })\n console.log(`✓ Native window opened at ${url}`)\n return true\n }\n catch (binaryErr) {\n console.warn('⚠ Could not spawn craft binary:', (binaryErr as Error).message)\n }\n }\n else {\n console.warn('⚠ craft-native not installed and no craft binary found')\n console.warn(` (craft-native error: ${(tsCraftErr as Error).message})`)\n }\n\n // Path 3 — give up on native, open the system browser. Skipped in test.\n if (process.env.NODE_ENV === 'test' || process.env.BUN_TEST) {\n console.log('(Skipping browser fallback in test environment)')\n return false\n }\n console.log('📱 Opening in browser instead…')\n try {\n const { spawn } = await import('node:child_process')\n const platform = process.platform\n const command = platform === 'darwin' ? 'open' : platform === 'win32' ? 'cmd' : 'xdg-open'\n const args = platform === 'win32' ? ['/c', 'start', url] : [url]\n spawn(command, args, { detached: true, stdio: 'ignore' }).unref()\n console.log(`✓ Browser opened at ${url}`)\n return true\n }\n catch (browserError) {\n console.error('Could not open browser:', browserError)\n console.log(`Please open manually: ${url}`)\n return false\n }\n }\n}\n\n/**\n * Create a window with HTML content\n *\n * Uses craft-native to display HTML content in a native window.\n */\nexport async function createWindowWithHTML(html: string, options: WindowOptions = {}): Promise<WindowInstance | null> {\n const {\n title = 'stx Desktop',\n width = 1200,\n height = 800,\n darkMode = false,\n hotReload = false,\n resizable = true,\n frameless = false,\n alwaysOnTop = false,\n } = options\n\n try {\n // Dynamically import craft-native\n const { createApp } = await import('craft-native')\n\n const craftPath = getCraftBinaryPath()\n\n const app = createApp({\n html,\n craftPath,\n window: {\n title,\n width,\n height,\n darkMode,\n hotReload,\n resizable,\n frameless,\n alwaysOnTop,\n },\n })\n\n const id = `craft-window-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`\n activeWindows.set(id, { app, url: 'html-content', options })\n\n await app.show()\n\n return createWindowInstance(id, app)\n }\n catch (error) {\n console.error('Failed to create window with HTML:', error)\n return null\n }\n}\n\n/**\n * Helper to check if webview implementation is available\n */\nexport function isWebviewAvailable(): boolean {\n try {\n // Try to require craft-native to check if it's available\n require.resolve('craft-native')\n return true\n }\n catch {\n return false\n }\n}\n\n// =============================================================================\n// Bridge Script Generator\n// =============================================================================\n\n/**\n * Generate a JavaScript snippet to inject into HTML that provides\n * helper functions for common window operations.\n *\n * This can be injected into your HTML to provide easier access to Craft APIs.\n *\n * @example\n * ```typescript\n * const html = `\n * <html>\n * <head>\n * <script>${getWindowBridgeScript()}</script>\n * </head>\n * <body>\n * <button onclick=\"stxWindow.minimize()\">Minimize</button>\n * </body>\n * </html>\n * `\n * await createWindowWithHTML(html)\n * ```\n */\nexport function getWindowBridgeScript(): string {\n return `\n// STX Desktop Window Bridge\n// Provides convenient wrappers around window.craft APIs\nwindow.stxWindow = {\n // Window control\n hide: () => window.craft?.window?.hide(),\n show: () => window.craft?.window?.show(),\n toggle: () => window.craft?.window?.toggle(),\n close: () => window.craft?.window?.close(),\n minimize: () => window.craft?.window?.minimize(),\n maximize: () => window.craft?.window?.maximize(),\n focus: () => window.craft?.window?.focus(),\n center: () => window.craft?.window?.center(),\n reload: () => window.craft?.window?.reload(),\n toggleFullscreen: () => window.craft?.window?.toggleFullscreen(),\n\n // Window properties\n setTitle: (title) => window.craft?.window?.setTitle({ title }),\n setSize: (width, height) => window.craft?.window?.setSize({ width, height }),\n setPosition: (x, y) => window.craft?.window?.setPosition({ x, y }),\n setAlwaysOnTop: (alwaysOnTop) => window.craft?.window?.setAlwaysOnTop({ alwaysOnTop }),\n setResizable: (resizable) => window.craft?.window?.setResizable({ resizable }),\n setOpacity: (opacity) => window.craft?.window?.setOpacity({ opacity }),\n\n // macOS-specific\n setVibrancy: (vibrancy) => window.craft?.window?.setVibrancy({ vibrancy }),\n\n // App control\n quit: () => window.craft?.app?.quit(),\n isDarkMode: () => window.craft?.app?.isDarkMode(),\n getLocale: () => window.craft?.app?.getLocale(),\n\n // Notifications\n notify: (options) => window.craft?.app?.notify(options),\n\n // Check if running in Craft\n isCraftAvailable: () => typeof window.craft !== 'undefined',\n};\n\n// Expose as global for backwards compatibility\nwindow.desktop = window.stxWindow;\n`\n}\n",
|
|
11
|
+
"/**\n * Packaging and code signing.\n *\n * Craft owns the native side of this — building the `.app`, the DMG, the MSI,\n * the Linux packages, and the signed `.pkg` the Mac App Store accepts. This\n * module re-exports it so an app reaches packaging through the same import as\n * the rest of the desktop API, rather than depending on Craft directly.\n *\n * @example\n * ```typescript\n * import { packageApp } from '@stacksjs/stx/desktop'\n *\n * await packageApp({\n * name: 'Barista',\n * version: '0.1.0',\n * binaryPath: './dist/barista',\n * bundleId: 'org.stacksjs.barista',\n * macos: { menuBarOnly: true, dmg: true },\n * })\n * ```\n */\nexport { pack, packageApp } from 'craft-native'\n\nexport type { PackageConfig, PackageResult } from 'craft-native'\n",
|
|
11
12
|
"/**\n * Power Management API\n *\n * Provides control over system sleep behavior using macOS caffeinate.\n * Spawns and manages /usr/bin/caffeinate processes.\n *\n * @example\n * ```typescript\n * import { caffeinate, decaffeinate, isCaffeinated, getCaffeinateStatus } from '@stacksjs/desktop'\n *\n * // Prevent sleep indefinitely\n * const instance = caffeinate()\n *\n * // Prevent sleep for 30 minutes\n * const instance = caffeinate({ duration: 30 })\n *\n * // Prevent only display sleep for 1 hour\n * const instance = caffeinate({\n * duration: 60,\n * preventDisplaySleep: true,\n * preventIdleSleep: false,\n * preventSystemSleep: false,\n * })\n *\n * // Check status\n * console.log(isCaffeinated()) // true\n * console.log(getCaffeinateStatus())\n *\n * // Stop\n * decaffeinate()\n * ```\n */\nimport type { Subprocess } from 'bun'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface CaffeinateOptions {\n /** Duration in minutes. -1 or undefined = indefinite */\n duration?: number\n /** Prevent display from sleeping (-d flag). Default: true */\n preventDisplaySleep?: boolean\n /** Prevent system from idle sleeping (-i flag). Default: true */\n preventIdleSleep?: boolean\n /** Prevent system from sleeping (-s flag). Default: true */\n preventSystemSleep?: boolean\n /** Prevent disk from sleeping (-m flag). Default: false */\n preventDiskSleep?: boolean\n /** Create an assertion to prevent sleep on behalf of user (-u flag). Default: true */\n assertUserActivity?: boolean\n}\n\nexport interface CaffeinateInstance {\n /** Process ID of the caffeinate process */\n readonly pid: number\n /** When caffeinate was started */\n readonly startedAt: Date\n /** When caffeinate will end (null = indefinite) */\n readonly endsAt: Date | null\n /** Options used to create this instance */\n readonly options: CaffeinateOptions\n /** Whether this instance is still active */\n readonly isActive: boolean\n /** Remaining milliseconds (null = indefinite, 0 = expired) */\n readonly remainingMs: number | null\n /** Elapsed milliseconds since start */\n readonly elapsedMs: number\n /** Stop this caffeinate instance */\n stop(): void\n /** Register a callback for when this instance expires (duration-based only) */\n onExpire(handler: () => void): void\n}\n\nexport interface CaffeinateStatus {\n /** Whether caffeinate is currently active */\n active: boolean\n /** The current caffeinate instance, if any */\n instance: CaffeinateInstance | null\n /** When the current session started */\n startedAt: Date | null\n /** When the current session will end */\n endsAt: Date | null\n /** Duration in minutes (-1 = indefinite, null = not active) */\n durationMinutes: number | null\n}\n\n// ============================================================================\n// Internal State\n// ============================================================================\n\nlet currentProcess: Subprocess | null = null\nlet currentInstance: CaffeinateInstanceImpl | null = null\n\nclass CaffeinateInstanceImpl implements CaffeinateInstance {\n private _process: Subprocess\n private _startedAt: Date\n private _endsAt: Date | null\n private _options: CaffeinateOptions\n private _expireHandlers: Array<() => void> = []\n private _expireTimer: ReturnType<typeof setTimeout> | null = null\n private _stopped = false\n\n constructor(process: Subprocess, options: CaffeinateOptions) {\n this._process = process\n this._options = options\n this._startedAt = new Date()\n\n const duration = options.duration\n if (duration && duration > 0) {\n const durationMs = duration * 60 * 1000\n this._endsAt = new Date(this._startedAt.getTime() + durationMs)\n\n this._expireTimer = setTimeout(() => {\n this._stopped = true\n for (const handler of this._expireHandlers) {\n try {\n handler()\n }\n catch {}\n }\n }, durationMs)\n }\n else {\n this._endsAt = null\n }\n }\n\n get pid(): number {\n return this._process.pid\n }\n\n get startedAt(): Date {\n return this._startedAt\n }\n\n get endsAt(): Date | null {\n return this._endsAt\n }\n\n get options(): CaffeinateOptions {\n return { ...this._options }\n }\n\n get isActive(): boolean {\n if (this._stopped)\n return false\n // Check if process is still running\n return this._process.exitCode === null\n }\n\n get remainingMs(): number | null {\n if (!this._endsAt)\n return null\n const remaining = this._endsAt.getTime() - Date.now()\n return Math.max(0, remaining)\n }\n\n get elapsedMs(): number {\n return Date.now() - this._startedAt.getTime()\n }\n\n stop(): void {\n if (this._stopped)\n return\n this._stopped = true\n\n if (this._expireTimer) {\n clearTimeout(this._expireTimer)\n this._expireTimer = null\n }\n\n try {\n this._process.kill()\n }\n catch {\n // Process may have already exited\n }\n }\n\n onExpire(handler: () => void): void {\n this._expireHandlers.push(handler)\n }\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/**\n * Start preventing the system from sleeping.\n *\n * Spawns a `/usr/bin/caffeinate` process with the specified options.\n * If caffeinate is already active, the previous instance is stopped first.\n *\n * @param options - Caffeinate configuration\n * @returns A CaffeinateInstance for monitoring and controlling the session\n */\nexport function caffeinate(options: CaffeinateOptions = {}): CaffeinateInstance {\n // Stop any existing instance\n decaffeinate()\n\n const {\n duration,\n preventDisplaySleep = true,\n preventIdleSleep = true,\n preventSystemSleep = true,\n preventDiskSleep = false,\n assertUserActivity = true,\n } = options\n\n // Build flags\n const flags: string[] = []\n if (preventDisplaySleep)\n flags.push('-d')\n if (preventIdleSleep)\n flags.push('-i')\n if (preventSystemSleep)\n flags.push('-s')\n if (preventDiskSleep)\n flags.push('-m')\n if (assertUserActivity)\n flags.push('-u')\n\n // Build args\n const args: string[] = [...flags]\n\n // Add duration if specified (in seconds)\n if (duration && duration > 0) {\n args.push('-t', String(duration * 60))\n }\n\n // Spawn caffeinate\n const proc = Bun.spawn(['/usr/bin/caffeinate', ...args], {\n stdio: ['ignore', 'ignore', 'ignore'],\n })\n\n const instance = new CaffeinateInstanceImpl(proc, options)\n currentProcess = proc\n currentInstance = instance\n\n return instance\n}\n\n/**\n * Stop caffeinate and allow the system to sleep normally.\n *\n * @param instance - Specific instance to stop. If omitted, stops the current active instance.\n */\nexport function decaffeinate(instance?: CaffeinateInstance): void {\n if (instance) {\n instance.stop()\n if (currentInstance === instance) {\n currentProcess = null\n currentInstance = null\n }\n return\n }\n\n if (currentInstance) {\n currentInstance.stop()\n }\n currentProcess = null\n currentInstance = null\n}\n\n/**\n * Check if caffeinate is currently active.\n */\nexport function isCaffeinated(): boolean {\n return currentInstance !== null && currentInstance.isActive\n}\n\n/**\n * Get the current caffeinate status.\n */\nexport function getCaffeinateStatus(): CaffeinateStatus {\n if (!currentInstance || !currentInstance.isActive) {\n return {\n active: false,\n instance: null,\n startedAt: null,\n endsAt: null,\n durationMinutes: null,\n }\n }\n\n const opts = currentInstance.options\n const duration = opts.duration\n\n return {\n active: true,\n instance: currentInstance,\n startedAt: currentInstance.startedAt,\n endsAt: currentInstance.endsAt,\n durationMinutes: (duration && duration > 0) ? duration : -1,\n }\n}\n\n/**\n * Format remaining caffeinate time as a human-readable string.\n *\n * @example\n * ```typescript\n * formatRemainingTime(instance) // \"25:30\" or \"∞\"\n * ```\n */\nexport function formatRemainingTime(instance?: CaffeinateInstance | null): string {\n const inst = instance || currentInstance\n if (!inst || !inst.isActive)\n return '0:00'\n\n const remaining = inst.remainingMs\n if (remaining === null)\n return '∞'\n\n const totalSeconds = Math.ceil(remaining / 1000)\n const hours = Math.floor(totalSeconds / 3600)\n const minutes = Math.floor((totalSeconds % 3600) / 60)\n const seconds = totalSeconds % 60\n\n if (hours > 0)\n return `${hours}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`\n return `${minutes}:${String(seconds).padStart(2, '0')}`\n}\n\n/**\n * Get a formatted description of the caffeinate duration.\n */\nexport function formatDuration(minutes: number): string {\n if (minutes <= 0 || minutes === -1)\n return 'Indefinitely'\n if (minutes < 60)\n return `${minutes} minutes`\n if (minutes === 60)\n return '1 hour'\n if (minutes % 60 === 0)\n return `${minutes / 60} hours`\n const h = Math.floor(minutes / 60)\n const m = minutes % 60\n return `${h}h ${m}m`\n}\n",
|
|
12
13
|
"/**\n * Preferences / Settings Storage API\n *\n * Simple JSON-based preferences storage for desktop applications.\n * Stores data in platform-appropriate locations with file watching\n * and change notification support.\n *\n * @example\n * ```typescript\n * import { createPreferences } from '@stacksjs/desktop'\n *\n * const prefs = createPreferences({\n * name: 'my-app',\n * defaults: {\n * theme: 'dark',\n * fontSize: 14,\n * autoSave: true,\n * },\n * })\n *\n * // Get a value\n * const theme = prefs.get('theme') // 'dark'\n *\n * // Set a value\n * prefs.set('theme', 'light')\n *\n * // Listen for changes\n * prefs.onChange('theme', (newVal, oldVal) => {\n * console.log(`Theme changed from ${oldVal} to ${newVal}`)\n * })\n *\n * // Get all values\n * const all = prefs.getAll()\n *\n * // Reset to defaults\n * prefs.reset()\n * ```\n */\nimport { existsSync, mkdirSync, readFileSync, watch, writeFileSync } from 'node:fs'\nimport { homedir, platform } from 'node:os'\nimport { dirname, join } from 'node:path'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface PreferencesOptions<T extends Record<string, unknown>> {\n /** Application name (used for file path) */\n name: string\n /** Default preference values */\n defaults: T\n /** Custom storage path (overrides platform default) */\n path?: string\n /** Watch for external file changes. Default: true */\n watch?: boolean\n}\n\nexport interface Preferences<T extends Record<string, unknown>> {\n /** Get a preference value */\n get<K extends keyof T>(key: K): T[K]\n /** Set a preference value */\n set<K extends keyof T>(key: K, value: T[K]): void\n /** Get all preference values */\n getAll(): T\n /** Check if a preference has been set (non-default) */\n has(key: keyof T): boolean\n /** Delete a preference (revert to default) */\n delete(key: keyof T): void\n /** Reset all preferences to defaults */\n reset(): void\n /** Listen for changes to a specific preference */\n onChange<K extends keyof T>(key: K, handler: (value: T[K], oldValue: T[K]) => void): () => void\n /** Listen for any preference change */\n onAnyChange(handler: (key: keyof T, value: unknown, oldValue: unknown) => void): () => void\n /** The file path where preferences are stored */\n readonly path: string\n /** Close the preferences (stop file watching) */\n close(): void\n}\n\n// eslint-disable-next-line pickier/no-unused-vars\ntype ChangeHandler = (key: string, value: unknown, oldValue: unknown) => void\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nfunction getDefaultPrefsDir(appName: string): string {\n const os = platform()\n const home = homedir()\n\n switch (os) {\n case 'darwin':\n return join(home, 'Library', 'Application Support', appName)\n case 'win32':\n return join(process.env.APPDATA || join(home, 'AppData', 'Roaming'), appName)\n default:\n return join(home, '.config', appName)\n }\n}\n\n// ============================================================================\n// Implementation\n// ============================================================================\n\nclass PreferencesImpl<T extends Record<string, unknown>> implements Preferences<T> {\n private _defaults: T\n private _data: Record<string, unknown>\n private _path: string\n private _changeHandlers: Map<string, Set<(value: unknown, oldValue: unknown) => void>> = new Map()\n private _anyChangeHandlers: Set<ChangeHandler> = new Set()\n private _watcher: ReturnType<typeof watch> | null = null\n private _writeTimer: ReturnType<typeof setTimeout> | null = null\n private _writing = false\n\n constructor(options: PreferencesOptions<T>) {\n this._defaults = { ...options.defaults }\n\n const dir = options.path\n ? dirname(options.path)\n : getDefaultPrefsDir(options.name)\n\n this._path = options.path || join(dir, 'preferences.json')\n\n // Ensure directory exists\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n }\n\n // Load existing preferences or create with defaults\n this._data = this._load()\n\n // Set up file watcher\n if (options.watch !== false) {\n this._setupWatcher()\n }\n }\n\n get path(): string {\n return this._path\n }\n\n get<K extends keyof T>(key: K): T[K] {\n if (key in this._data) {\n return this._data[key as string] as T[K]\n }\n return this._defaults[key]\n }\n\n set<K extends keyof T>(key: K, value: T[K]): void {\n const oldValue = this.get(key)\n if (JSON.stringify(oldValue) === JSON.stringify(value))\n return\n\n this._data[key as string] = value\n this._scheduleSave()\n this._notifyChange(key as string, value, oldValue)\n }\n\n getAll(): T {\n return { ...this._defaults, ...this._data } as T\n }\n\n has(key: keyof T): boolean {\n return key in this._data\n }\n\n delete(key: keyof T): void {\n if (!(key in this._data))\n return\n const oldValue = this._data[key as string]\n delete this._data[key as string]\n this._scheduleSave()\n this._notifyChange(key as string, this._defaults[key], oldValue)\n }\n\n reset(): void {\n const oldData = { ...this._data }\n this._data = {}\n this._save()\n\n // Notify all changed keys\n for (const key of Object.keys(oldData)) {\n const defaultVal = (this._defaults as Record<string, unknown>)[key]\n this._notifyChange(key, defaultVal, oldData[key])\n }\n }\n\n onChange<K extends keyof T>(key: K, handler: (value: T[K], oldValue: T[K]) => void): () => void {\n const keyStr = key as string\n if (!this._changeHandlers.has(keyStr)) {\n this._changeHandlers.set(keyStr, new Set())\n }\n // eslint-disable-next-line pickier/no-unused-vars\n this._changeHandlers.get(keyStr)!.add(handler as (value: unknown, oldValue: unknown) => void)\n\n return () => {\n // eslint-disable-next-line pickier/no-unused-vars\n this._changeHandlers.get(keyStr)?.delete(handler as (value: unknown, oldValue: unknown) => void)\n }\n }\n\n onAnyChange(handler: ChangeHandler): () => void {\n this._anyChangeHandlers.add(handler)\n return () => {\n this._anyChangeHandlers.delete(handler)\n }\n }\n\n close(): void {\n if (this._watcher) {\n this._watcher.close()\n this._watcher = null\n }\n if (this._writeTimer) {\n clearTimeout(this._writeTimer)\n this._writeTimer = null\n // Flush pending writes\n this._save()\n }\n }\n\n // --------------------------------------------------------------------------\n // Private\n // --------------------------------------------------------------------------\n\n private _load(): Record<string, unknown> {\n try {\n if (existsSync(this._path)) {\n const content = readFileSync(this._path, 'utf-8')\n return JSON.parse(content)\n }\n }\n catch {\n // File doesn't exist or is corrupt, start fresh\n }\n return {}\n }\n\n private _save(): void {\n this._writing = true\n try {\n const json = JSON.stringify({ ...this._defaults, ...this._data }, null, 2)\n writeFileSync(this._path, json, 'utf-8')\n }\n catch (err) {\n console.error(`Failed to save preferences to ${this._path}:`, err)\n }\n finally {\n // Small delay before re-enabling watcher to avoid self-trigger\n setTimeout(() => {\n this._writing = false\n }, 100)\n }\n }\n\n private _scheduleSave(): void {\n if (this._writeTimer) {\n clearTimeout(this._writeTimer)\n }\n // Debounce writes by 50ms\n this._writeTimer = setTimeout(() => {\n this._writeTimer = null\n this._save()\n }, 50)\n }\n\n private _setupWatcher(): void {\n try {\n if (!existsSync(this._path)) {\n // Create the file first so we can watch it\n this._save()\n }\n\n this._watcher = watch(this._path, () => {\n if (this._writing)\n return\n\n // Reload and diff\n const newData = this._load()\n const oldData = { ...this._data }\n this._data = newData\n\n // Find changed keys\n const allKeys = new Set([...Object.keys(oldData), ...Object.keys(newData)])\n for (const key of allKeys) {\n const oldVal = key in oldData ? oldData[key] : (this._defaults as Record<string, unknown>)[key]\n const newVal = key in newData ? newData[key] : (this._defaults as Record<string, unknown>)[key]\n if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) {\n this._notifyChange(key, newVal, oldVal)\n }\n }\n })\n }\n catch {\n // Watcher setup failed, preferences still work without watching\n }\n }\n\n private _notifyChange(key: string, value: unknown, oldValue: unknown): void {\n // Key-specific handlers\n const handlers = this._changeHandlers.get(key)\n if (handlers) {\n for (const handler of handlers) {\n try {\n handler(value, oldValue)\n }\n catch {}\n }\n }\n\n // Any-change handlers\n for (const handler of this._anyChangeHandlers) {\n try {\n handler(key, value, oldValue)\n }\n catch {}\n }\n }\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/**\n * Create a preferences store for your application.\n *\n * Preferences are stored as JSON in a platform-appropriate location:\n * - macOS: ~/Library/Application Support/{name}/preferences.json\n * - Windows: %APPDATA%/{name}/preferences.json\n * - Linux: ~/.config/{name}/preferences.json\n */\nexport function createPreferences<T extends Record<string, unknown>>(\n options: PreferencesOptions<T>,\n): Preferences<T> {\n return new PreferencesImpl(options)\n}\n",
|
|
13
14
|
"/**\n * Auto-Launch / Login Items (subprocess-based)\n *\n * Manages auto-start by writing platform-specific config files:\n * - macOS: LaunchAgents plist files\n * - Linux: XDG autostart .desktop files\n * - Windows: Registry entries\n *\n * **Choosing between this and `nativeAutoLaunch`:** prefer\n * `nativeAutoLaunch` when running inside a Craft window — it uses\n * `SMAppService` (the modern Apple-recommended API) and doesn't write\n * any files of its own. This module exists for environments without a\n * Craft bridge, or apps that need the LaunchAgent file as a side\n * effect (some launchers honour those even when SMAppService doesn't).\n *\n * @example\n * ```typescript\n * import { setAutoLaunch, isAutoLaunchEnabled } from '@stacksjs/desktop'\n *\n * // Enable auto-launch\n * await setAutoLaunch(true, { appName: 'Barista' })\n *\n * // Check status\n * const enabled = await isAutoLaunchEnabled('Barista')\n *\n * // Disable\n * await setAutoLaunch(false, { appName: 'Barista' })\n * ```\n */\nimport { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs'\nimport { homedir, platform } from 'node:os'\nimport { join } from 'node:path'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface AutoLaunchOptions {\n /** Application name for the login item */\n appName?: string\n /** Path to the application executable. Defaults to process.execPath */\n appPath?: string\n /** Arguments to pass when launching */\n args?: string[]\n /** Start the app hidden/minimized */\n isHidden?: boolean\n}\n\n// ============================================================================\n// Platform Implementations\n// ============================================================================\n\nfunction getLaunchAgentPath(appName: string): string {\n const identifier = appName.toLowerCase().replace(/[^a-z0-9]/g, '-')\n return join(homedir(), 'Library', 'LaunchAgents', `com.${identifier}.plist`)\n}\n\nfunction getLinuxAutostartPath(appName: string): string {\n const configDir = process.env.XDG_CONFIG_HOME || join(homedir(), '.config')\n return join(configDir, 'autostart', `${appName.toLowerCase()}.desktop`)\n}\n\nasync function setAutoLaunchMacOS(enabled: boolean, options: AutoLaunchOptions): Promise<void> {\n const appName = options.appName || 'StxApp'\n const plistPath = getLaunchAgentPath(appName)\n const launchAgentsDir = join(homedir(), 'Library', 'LaunchAgents')\n\n if (enabled) {\n const appPath = options.appPath || process.execPath\n const args = options.args || []\n const programArgs = [appPath, ...args]\n\n const plist = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>Label</key>\n <string>com.${appName.toLowerCase().replace(/[^a-z0-9]/g, '-')}</string>\n <key>ProgramArguments</key>\n <array>\n${programArgs.map(arg => ` <string>${escapeXml(arg)}</string>`).join('\\n')}\n </array>\n <key>RunAtLoad</key>\n <true/>\n <key>KeepAlive</key>\n <false/>\n${options.isHidden ? ` <key>ProcessType</key>\n <string>Background</string>` : ''}\n</dict>\n</plist>`\n\n if (!existsSync(launchAgentsDir)) {\n mkdirSync(launchAgentsDir, { recursive: true })\n }\n\n writeFileSync(plistPath, plist, 'utf-8')\n }\n else {\n if (existsSync(plistPath)) {\n unlinkSync(plistPath)\n }\n }\n}\n\nasync function setAutoLaunchLinux(enabled: boolean, options: AutoLaunchOptions): Promise<void> {\n const appName = options.appName || 'StxApp'\n const desktopPath = getLinuxAutostartPath(appName)\n const autostartDir = join(process.env.XDG_CONFIG_HOME || join(homedir(), '.config'), 'autostart')\n\n if (enabled) {\n const appPath = options.appPath || process.execPath\n const args = options.args || []\n const exec = [appPath, ...args].join(' ')\n\n const desktopEntry = `[Desktop Entry]\nType=Application\nName=${appName}\nExec=${exec}\nTerminal=false\nStartupNotify=false\n${options.isHidden ? 'X-GNOME-Autostart-enabled=true\\nNoDisplay=true' : ''}\n`\n\n if (!existsSync(autostartDir)) {\n mkdirSync(autostartDir, { recursive: true })\n }\n\n writeFileSync(desktopPath, desktopEntry, 'utf-8')\n }\n else {\n if (existsSync(desktopPath)) {\n unlinkSync(desktopPath)\n }\n }\n}\n\nasync function isAutoLaunchEnabledMacOS(appName: string): Promise<boolean> {\n return existsSync(getLaunchAgentPath(appName))\n}\n\nasync function isAutoLaunchEnabledLinux(appName: string): Promise<boolean> {\n const path = getLinuxAutostartPath(appName)\n if (!existsSync(path))\n return false\n\n try {\n const content = readFileSync(path, 'utf-8')\n // Check for explicit disable\n if (content.includes('X-GNOME-Autostart-enabled=false'))\n return false\n if (content.includes('Hidden=true'))\n return false\n return true\n }\n catch {\n return false\n }\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nfunction escapeXml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/**\n * Enable or disable auto-launch on system login.\n *\n * On macOS, creates/removes a LaunchAgent plist.\n * On Linux, creates/removes an XDG autostart .desktop file.\n */\nexport async function setAutoLaunch(enabled: boolean, options: AutoLaunchOptions = {}): Promise<void> {\n const os = platform()\n\n switch (os) {\n case 'darwin':\n return setAutoLaunchMacOS(enabled, options)\n case 'linux':\n return setAutoLaunchLinux(enabled, options)\n default:\n throw new Error(`Auto-launch is not yet supported on ${os}`)\n }\n}\n\n/**\n * Check if auto-launch is enabled for the given app.\n */\nexport async function isAutoLaunchEnabled(appName?: string): Promise<boolean> {\n const name = appName || 'StxApp'\n const os = platform()\n\n switch (os) {\n case 'darwin':\n return isAutoLaunchEnabledMacOS(name)\n case 'linux':\n return isAutoLaunchEnabledLinux(name)\n default:\n return false\n }\n}\n",
|
|
@@ -62,7 +63,7 @@
|
|
|
62
63
|
"/**\n * Serial-port I/O — for IoT, Arduino, label printers, etc.\n *\n * `list()` enumerates `/dev/cu.*` + `/dev/tty.*` (macOS) or\n * `/dev/ttyUSB*` / `/dev/ttyACM*` / `/dev/ttyS*` (Linux). Apps use\n * the resulting paths to populate \"choose device\" UIs.\n *\n * Open + read + write needs platform-specific termios setup; the\n * native side stubs those today and returns `ok:false` with a\n * reason. The list is the part most apps need first (the \"which\n * device\" UI).\n */\nimport { hasBridge, onCraftEvent } from './_bridge'\n\nexport interface SerialPort {\n /** Absolute device path (e.g. `/dev/cu.usbmodem14101`). */\n path: string\n}\n\nexport interface SerialDataEvent {\n /** Open-handle id returned from `open()`. */\n id: string\n /** Raw bytes received since the last event. */\n data: number[]\n}\n\nexport interface SerialAPI {\n list: () => Promise<SerialPort[]>\n open: (path: string, baud?: number) => Promise<{ id?: string, ok: boolean, reason?: string }>\n write: (id: string, data: string) => Promise<{ ok: boolean, reason?: string }>\n close: (id: string) => Promise<void>\n onData: (cb: (event: SerialDataEvent) => void) => () => void\n}\n\nexport const serial: SerialAPI = {\n async list() {\n if (!hasBridge('serial')) return []\n return await window.craft!.serial.list()\n },\n async open(path, baud = 9600) {\n if (!path) throw new Error('serial.open: path is required')\n if (!hasBridge('serial')) return { ok: false, reason: 'bridge unavailable' }\n return await window.craft!.serial.open(path, baud)\n },\n async write(id, data) {\n if (!id) throw new Error('serial.write: id is required')\n if (!hasBridge('serial')) return { ok: false, reason: 'bridge unavailable' }\n return await window.craft!.serial.write(id, data)\n },\n async close(id) {\n if (!hasBridge('serial')) return\n await window.craft!.serial.close(id)\n },\n onData(cb) { return onCraftEvent<SerialDataEvent>('craft:serial:data', cb) },\n}\n",
|
|
63
64
|
"/**\n * Capabilities — single place to ask \"is this bridge usable on the\n * current host?\" rather than scattering `hasBridge('xxx')` checks.\n *\n * The TypeScript SDK is largely cross-platform — every module has a\n * sensible fallback when the bridge is missing — but a number of\n * macOS-specific APIs (Vision, AppleScript, Spotlight, Continuity,\n * etc.) only return real data inside a Craft window on macOS.\n *\n * `getCapabilities()` returns a snapshot of which bridges respond. App\n * code can use this to enable or hide UI rather than relying on calls\n * that fail silently.\n */\nimport { hasBridge } from './_bridge'\n\n/**\n * The set of bridges the SDK knows about, plus the platforms each is\n * implemented on. Used to power the `capabilities` map and to drive\n * docs / tooling.\n *\n * `'all'` means the bridge has a working web/non-bridge fallback too;\n * `'macos'` means it requires a Craft macOS host; `'native'` means it\n * needs *some* Craft host (mac/linux/windows) but has no web fallback.\n */\nexport type BridgePlatformSupport = 'all' | 'native' | 'macos'\n\nexport interface BridgeCapability {\n /** Bridge namespace as it appears under `window.craft`. */\n name: string\n /** Where the bridge is implemented today. */\n support: BridgePlatformSupport\n /** True when the bridge is reachable from the current host. */\n available: boolean\n}\n\n/**\n * Authoritative list. Keep in sync with the TS modules + native side.\n * When a new bridge ships, add a row here; the public capabilities\n * surface picks it up automatically.\n */\nconst BRIDGE_INDEX: Array<{ name: string, support: BridgePlatformSupport }> = [\n // Cross-platform with sensible web fallback\n { name: 'fs', support: 'native' },\n { name: 'shell', support: 'native' },\n { name: 'system', support: 'all' },\n { name: 'clipboard', support: 'all' },\n { name: 'dialog', support: 'all' },\n { name: 'window', support: 'native' },\n { name: 'tray', support: 'native' },\n { name: 'menu', support: 'native' },\n { name: 'theme', support: 'all' },\n { name: 'screen', support: 'all' },\n { name: 'network', support: 'all' },\n { name: 'power', support: 'all' },\n { name: 'battery', support: 'all' },\n { name: 'notifications', support: 'all' },\n { name: 'globalShortcuts', support: 'native' },\n { name: 'autolaunch', support: 'native' },\n { name: 'appInfo', support: 'all' },\n { name: 'localServer', support: 'native' },\n { name: 'bluetooth', support: 'native' },\n { name: 'crashReporter', support: 'all' },\n { name: 'updater', support: 'native' },\n { name: 'iap', support: 'macos' },\n { name: 'keychain', support: 'native' },\n { name: 'log', support: 'all' },\n\n // macOS-specific\n { name: 'biometric', support: 'macos' },\n { name: 'location', support: 'macos' },\n { name: 'audio', support: 'macos' },\n { name: 'deepLink', support: 'native' },\n { name: 'handoff', support: 'macos' },\n { name: 'liveActivities', support: 'macos' },\n { name: 'touchbar', support: 'macos' },\n { name: 'dragOut', support: 'macos' },\n { name: 'appleScript', support: 'macos' },\n { name: 'fileAssociations', support: 'native' },\n { name: 'tags', support: 'macos' },\n { name: 'pdf', support: 'macos' },\n { name: 'bonjour', support: 'macos' },\n { name: 'spotlight', support: 'macos' },\n { name: 'speechRecognition', support: 'macos' },\n { name: 'vision', support: 'macos' },\n { name: 'midi', support: 'macos' },\n { name: 'coreml', support: 'macos' },\n { name: 'continuityCamera', support: 'macos' },\n { name: 'serviceMenu', support: 'macos' },\n { name: 'serial', support: 'native' },\n]\n\n/**\n * Snapshot of every known bridge's availability on the current host.\n * Re-call after the bridge IIFE loads (e.g. `DOMContentLoaded`) — the\n * `available` field is computed against `window.craft` at call time.\n */\nexport function getCapabilities(): BridgeCapability[] {\n return BRIDGE_INDEX.map(({ name, support }) => ({\n name,\n support,\n available: hasBridge(name),\n }))\n}\n\n/**\n * Lookup a single capability by name. Returns `undefined` for bridges\n * the SDK doesn't know about.\n */\nexport function getCapability(name: string): BridgeCapability | undefined {\n const entry = BRIDGE_INDEX.find(b => b.name === name)\n if (!entry) return undefined\n return { ...entry, available: hasBridge(name) }\n}\n\n/**\n * Convenience predicate — `true` when a bridge is *both* known to the\n * SDK and currently reachable.\n */\nexport function isAvailable(name: string): boolean {\n const cap = getCapability(name)\n return !!cap && cap.available\n}\n"
|
|
64
65
|
],
|
|
65
|
-
"mappings": "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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
|
|
66
|
-
"debugId": "
|
|
66
|
+
"mappings": "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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
|
|
67
|
+
"debugId": "0C8F609A264ADF9064756E2164756E21",
|
|
67
68
|
"names": []
|
|
68
69
|
}
|