{"version":3,"sources":["#style-inject:#style-inject","../src/styles/devtools-theme.css","../src/components/DevContainer.tsx","../src/utils/createMockData.ts","../src/types/index.ts","../src/index.ts"],"names":["React","jsxs","jsx","useMemo","useState","useEffect","SetGlobalsEvent"],"mappings":"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","file":"index.cjs","sourcesContent":["\n          export default function styleInject(css, { insertAt } = {}) {\n            if (!css || typeof document === 'undefined') return\n          \n            const head = document.head || document.getElementsByTagName('head')[0]\n            const style = document.createElement('style')\n            style.type = 'text/css'\n          \n            if (insertAt === 'top') {\n              if (head.firstChild) {\n                head.insertBefore(style, head.firstChild)\n              } else {\n                head.appendChild(style)\n              }\n            } else {\n              head.appendChild(style)\n            }\n          \n            if (style.styleSheet) {\n              style.styleSheet.cssText = css\n            } else {\n              style.appendChild(document.createTextNode(css))\n            }\n          }\n          ","import styleInject from '#style-inject';styleInject(\":root {\\n  --ai-color-bg-primary: #ffffff;\\n  --ai-color-bg-secondary: #e8e8e8;\\n  --ai-color-bg-tertiary: #f3f3f3;\\n  --ai-color-text-primary: #0d0d0d;\\n  --ai-color-text-secondary: #5d5d5d;\\n  --ai-color-text-tertiary: #8f8f8f;\\n  --ai-color-icon-primary: #0d0d0d;\\n  --ai-color-icon-secondary: #5d5d5d;\\n  --ai-color-icon-tertiary: #8f8f8f;\\n  --ai-color-border-light: rgba(13, 13, 13, 0.05);\\n  --ai-color-border-default: rgba(13, 13, 13, 0.1);\\n  --ai-color-border-heavy: rgba(13, 13, 13, 0.15);\\n  --ai-color-border-primary: rgba(13, 13, 13, 0.1);\\n  --ai-color-brand-primary: #0285ff;\\n  --ai-color-brand-primary-hover: color-mix(in srgb, #0285ff 85%, black);\\n  --ai-color-brand-primary-active: color-mix(in srgb, #0285ff 75%, black);\\n  --ai-color-brand-on-primary: #ffffff;\\n  --ai-color-accent-blue: #0285ff;\\n  --ai-color-accent-red: #e02e2a;\\n  --ai-color-accent-orange: #e25507;\\n  --ai-color-accent-green: #008635;\\n  --ai-state-hover-background: rgba(13, 13, 13, 0.08);\\n  --ai-state-hover-opacity: 0.9;\\n  --ai-state-focus-outline: #0285ff;\\n  --ai-font-family:\\n    -apple-system,\\n    BlinkMacSystemFont,\\n    \\\"Segoe UI\\\",\\n    Roboto,\\n    \\\"Helvetica Neue\\\",\\n    Arial,\\n    sans-serif;\\n  --ai-font-weight-normal: 400;\\n  --ai-font-weight-medium: 500;\\n  --ai-font-weight-semibold: 600;\\n  --ai-font-size-caption: 12px;\\n  --ai-line-height-caption: 16px;\\n  --ai-spacing-2: 4px;\\n  --ai-spacing-4: 8px;\\n  --ai-spacing-6: 12px;\\n  --ai-spacing-8: 16px;\\n  --ai-spacing-12: 24px;\\n  --ai-radius-sm: 4px;\\n  --ai-radius-md: 8px;\\n  --ai-radius-base: 12px;\\n  --ai-radius-full: 9999px;\\n}\\n[data-theme=dark] {\\n  --ai-color-bg-primary: #212121;\\n  --ai-color-bg-secondary: #303030;\\n  --ai-color-bg-tertiary: #414141;\\n  --ai-color-text-primary: #ffffff;\\n  --ai-color-text-secondary: #cdcdcd;\\n  --ai-color-text-tertiary: #afafaf;\\n  --ai-color-icon-primary: #ffffff;\\n  --ai-color-icon-secondary: #cdcdcd;\\n  --ai-color-icon-tertiary: #afafaf;\\n  --ai-color-border-light: rgba(255, 255, 255, 0.08);\\n  --ai-color-border-default: rgba(255, 255, 255, 0.12);\\n  --ai-color-border-heavy: rgba(255, 255, 255, 0.16);\\n  --ai-color-border-primary: rgba(255, 255, 255, 0.12);\\n  --ai-color-brand-primary: #0285ff;\\n  --ai-color-brand-primary-hover: color-mix(in srgb, #0285ff 85%, white);\\n  --ai-color-brand-primary-active: color-mix(in srgb, #0285ff 90%, white);\\n  --ai-color-accent-red: #ff8583;\\n  --ai-color-accent-orange: #ff9e6c;\\n  --ai-color-accent-green: #40c977;\\n  --ai-state-hover-background: rgba(255, 255, 255, 0.08);\\n}\\n\")","import React, { useEffect, useState, useMemo } from 'react';\nimport { SetGlobalsEvent, type OpenAiGlobals, type Theme } from '@ainativekit/ui';\nimport type { DevContainerProps, Widget } from '../types';\nimport '../styles/devtools-theme.css';\n\n/**\n * DevContainer - Development environment for ChatGPT Apps\n *\n * Simulates the ChatGPT production environment for local development.\n * Supports both single widget and multi-widget development with automatic\n * detection and appropriate UI.\n *\n * @example\n * // Single widget\n * <DevContainer dataLoader={() => mockData}>\n *   <MyWidget />\n * </DevContainer>\n *\n * @example\n * // Multiple widgets\n * <DevContainer\n *   widgets={[\n *     { id: 'widget1', name: 'Widget 1', component: Widget1 },\n *     { id: 'widget2', name: 'Widget 2', component: Widget2 }\n *   ]}\n *   dataLoaders={{ data1: () => mockData1, data2: () => mockData2 }}\n * />\n */\n\n/**\n * Error Boundary to catch and display widget errors gracefully\n */\nclass ErrorBoundary extends React.Component<\n  { children: React.ReactNode },\n  { hasError: boolean; error?: Error }\n> {\n  constructor(props: { children: React.ReactNode }) {\n    super(props);\n    this.state = { hasError: false };\n  }\n\n  static getDerivedStateFromError(error: Error) {\n    return { hasError: true, error };\n  }\n\n  componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n    console.error('🚨 [@ainativekit/devtools] Widget crashed:', error, errorInfo);\n  }\n\n  render() {\n    if (this.state.hasError) {\n      return (\n        <div style={{\n          padding: '20px',\n          background: '#fee',\n          border: '1px solid #fcc',\n          borderRadius: '4px',\n          color: '#c00',\n          fontFamily: 'monospace',\n          fontSize: '14px'\n        }}>\n          <strong>⚠️ Widget Error</strong>\n          <p style={{ margin: '10px 0' }}>\n            The widget crashed. Check the console for details.\n          </p>\n          {this.state.error && (\n            <details style={{ marginTop: '10px' }}>\n              <summary style={{ cursor: 'pointer' }}>Error details</summary>\n              <pre style={{\n                marginTop: '10px',\n                padding: '10px',\n                background: '#fff',\n                overflow: 'auto'\n              }}>\n                {this.state.error.toString()}\n              </pre>\n            </details>\n          )}\n          <button\n            onClick={() => this.setState({ hasError: false, error: undefined })}\n            style={{\n              marginTop: '10px',\n              padding: '5px 10px',\n              background: '#fff',\n              border: '1px solid #ccc',\n              borderRadius: '3px',\n              cursor: 'pointer'\n            }}\n          >\n            Reset\n          </button>\n        </div>\n      );\n    }\n\n    return this.props.children;\n  }\n}\n\nexport function DevContainer({\n  // Single widget props (simple case)\n  children,\n  dataLoader,\n  emptyDataLoader,\n\n  // Multi-widget props\n  widgets,\n  dataLoaders,\n  emptyDataLoaders,\n  defaultDataLoader,\n  defaultWidget,\n\n  // Common props\n  loadingDelay = 2000,\n  theme: initialTheme = 'light',\n  autoLoad = true,\n  toolbarPosition = 'top',\n}: DevContainerProps) {\n  // Normalize to multi-widget structure for consistent handling\n  const normalizedWidgets = useMemo((): Widget[] => {\n    if (widgets && widgets.length > 0) {\n      return widgets;\n    }\n    if (children) {\n      return [{ id: 'default', name: 'App', component: () => children as React.ReactElement }];\n    }\n    return [];\n  }, [widgets, children]);\n\n  const normalizedDataLoaders = useMemo(() => {\n    if (dataLoaders) return dataLoaders;\n    if (dataLoader) return { default: dataLoader };\n    return {};\n  }, [dataLoaders, dataLoader]);\n\n  const normalizedEmptyLoaders = useMemo(() => {\n    if (emptyDataLoaders) return emptyDataLoaders;\n    if (emptyDataLoader) return { default: emptyDataLoader };\n    return {};\n  }, [emptyDataLoaders, emptyDataLoader]);\n\n  // State\n  const [isInitialized, setIsInitialized] = useState(false);\n  const [widgetState, setWidgetState] = useState<'loading' | 'data' | 'error' | 'empty'>('loading');\n  const [isLoading, setIsLoading] = useState(false);\n  const [showDevTools] = useState(true);\n  const [showAdvancedSettings, setShowAdvancedSettings] = useState(false);\n  const [activeWidgetId, setActiveWidgetId] = useState(defaultWidget || normalizedWidgets[0]?.id || '');\n  const [activeDataLoader, setActiveDataLoader] = useState(defaultDataLoader || Object.keys(normalizedDataLoaders)[0] || '');\n\n  // Interactive controls state\n  const [mockTheme, setMockTheme] = useState<Theme>(initialTheme);\n  const [deviceType, setDeviceType] = useState<'desktop' | 'tablet' | 'mobile'>('desktop');\n  const [viewportWidth, setViewportWidth] = useState<number>(768);\n  const [debugMode, setDebugMode] = useState<'none' | 'border'>('none');\n\n  // Show widget selector only if there are multiple widgets\n  const showWidgetSelector = normalizedWidgets.length > 1;\n\n  // Sync URL with active widget\n  useEffect(() => {\n    if (!showWidgetSelector) return;\n\n    const handlePopState = () => {\n      const params = new URLSearchParams(window.location.search);\n      const widgetId = params.get('widget');\n      if (widgetId && normalizedWidgets.some(w => w.id === widgetId)) {\n        setActiveWidgetId(widgetId);\n      }\n    };\n\n    window.addEventListener('popstate', handlePopState);\n    handlePopState();\n\n    return () => window.removeEventListener('popstate', handlePopState);\n  }, [showWidgetSelector, normalizedWidgets]);\n\n  // Update URL when widget changes\n  useEffect(() => {\n    if (!showWidgetSelector) return;\n\n    const params = new URLSearchParams(window.location.search);\n    if (activeWidgetId && activeWidgetId !== 'default') {\n      params.set('widget', activeWidgetId);\n    } else {\n      params.delete('widget');\n    }\n    const newUrl = params.toString() ? `?${params.toString()}` : window.location.pathname;\n    if (window.location.search !== newUrl.slice(window.location.pathname.length)) {\n      window.history.pushState(null, '', newUrl);\n    }\n\n    // Persist to localStorage\n    if (activeWidgetId) {\n      localStorage.setItem('devtools.activeWidget', activeWidgetId);\n    }\n  }, [activeWidgetId, showWidgetSelector]);\n\n  // Restore from localStorage\n  useEffect(() => {\n    if (!showWidgetSelector) return;\n\n    const params = new URLSearchParams(window.location.search);\n    const urlWidget = params.get('widget');\n    const savedWidget = localStorage.getItem('devtools.activeWidget');\n\n    if (urlWidget && normalizedWidgets.some(w => w.id === urlWidget)) {\n      setActiveWidgetId(urlWidget);\n    } else if (savedWidget && normalizedWidgets.some(w => w.id === savedWidget)) {\n      setActiveWidgetId(savedWidget);\n    }\n  }, [showWidgetSelector, normalizedWidgets]);\n\n  // Sync theme to document\n  useEffect(() => {\n    document.documentElement.setAttribute('data-theme', mockTheme);\n\n    // Also set body background color\n    const bgColor = mockTheme === 'dark' ? '#1e1e1e' : '#ffffff';\n    document.body.style.backgroundColor = bgColor;\n  }, [mockTheme]);\n\n  // Set globals helper\n  const setGlobals = (globals: Partial<OpenAiGlobals>) => {\n    if (!window.openai) {\n      (window as any).openai = {};\n    }\n    Object.assign(window.openai as any, globals);\n    const event = new SetGlobalsEvent({ globals });\n    window.dispatchEvent(event);\n  };\n\n  // Get userAgent based on device type\n  const getUserAgent = (device: 'desktop' | 'tablet' | 'mobile') => ({\n    device: { type: device },\n    capabilities: {\n      hover: device === 'desktop',\n      touch: device !== 'desktop'\n    }\n  });\n\n  // Initialize window.openai\n  useEffect(() => {\n    console.log('🔧 [@ainativekit/devtools] Initializing dev environment...');\n\n    // Create mock window.openai\n    (window as any).openai = {\n      callTool: async (name: string, args: any) => {\n        console.log('🔨 Mock callTool:', { name, args });\n        return { success: true, data: 'Mock response' };\n      },\n      sendFollowUpMessage: async ({ prompt }: { prompt: string }) => {\n        console.log('💬 Mock sendFollowUpMessage:', prompt);\n        return { success: true };\n      },\n      openExternal: ({ href }: { href: string }) => {\n        console.log('🌐 Mock openExternal:', href);\n        window.open(href, '_blank');\n      },\n      setWidgetState: (state: any) => {\n        console.log('💾 Mock setWidgetState:', state);\n      },\n      theme: mockTheme,\n      toolOutput: null,\n      locale: 'en-US',\n      maxHeight: 600,\n      userAgent: getUserAgent(deviceType)\n    };\n\n    setIsInitialized(true);\n    console.log('✅ [@ainativekit/devtools] Dev environment ready');\n\n    // Auto-load data if configured\n    if (autoLoad) {\n      handleDelayedData();\n    }\n  }, []);\n\n  // Update theme\n  useEffect(() => {\n    setGlobals({ theme: mockTheme });\n  }, [mockTheme]);\n\n  // Update device type\n  useEffect(() => {\n    const widths = { desktop: 768, tablet: 640, mobile: 375 };\n    setViewportWidth(widths[deviceType]);\n    setGlobals({ userAgent: getUserAgent(deviceType) });\n  }, [deviceType]);\n\n  // Data handlers\n  const handleInstantData = async () => {\n    console.log('📦 Loading data instantly...');\n    setWidgetState('loading');\n    setIsLoading(false);\n\n    try {\n      const loader = normalizedDataLoaders[activeDataLoader];\n      if (!loader) {\n        console.warn('⚠️ No data loader found for key:', activeDataLoader);\n        setGlobals({ toolOutput: {} });\n      } else {\n        const data = await loader();\n        setGlobals({ toolOutput: data });\n        console.log('✅ Data loaded:', data);\n      }\n      setWidgetState('data');\n    } catch (error) {\n      console.error('❌ Error loading data:', error);\n      setWidgetState('error');\n      setGlobals({ toolOutput: { error: error instanceof Error ? error.message : 'Unknown error' } });\n    }\n  };\n\n  const handleDelayedData = async () => {\n    console.log(`⏳ Loading data with ${loadingDelay}ms delay...`);\n    setWidgetState('loading');\n    setIsLoading(true);\n    setGlobals({ toolOutput: null });\n\n    await new Promise(resolve => setTimeout(resolve, loadingDelay));\n\n    // Load the data after delay\n    try {\n      const loader = normalizedDataLoaders[activeDataLoader];\n      if (!loader) {\n        console.warn('⚠️ No data loader found for key:', activeDataLoader);\n        setGlobals({ toolOutput: {} });\n      } else {\n        const data = await loader();\n        setGlobals({ toolOutput: data });\n        console.log('✅ Data loaded:', data);\n      }\n      setWidgetState('data');\n    } catch (error) {\n      console.error('❌ Error loading data:', error);\n      setWidgetState('error');\n      setGlobals({ toolOutput: { error: error instanceof Error ? error.message : 'Unknown error' } });\n    }\n\n    setIsLoading(false);\n  };\n\n  const handleShowEmpty = async () => {\n    console.log('📭 Showing empty state...');\n    setWidgetState('empty');\n    setIsLoading(false);\n\n    const loader = normalizedEmptyLoaders[activeDataLoader];\n    if (!loader) {\n      setGlobals({ toolOutput: {} });\n    } else {\n      try {\n        const emptyData = await loader();\n        setGlobals({ toolOutput: emptyData });\n        console.log('✅ Empty state loaded:', emptyData);\n      } catch (error) {\n        console.error('❌ Error loading empty state:', error);\n        setGlobals({ toolOutput: {} });\n      }\n    }\n  };\n\n  const handleShowError = () => {\n    console.log('❌ Showing error state...');\n    setWidgetState('error');\n    setIsLoading(false);\n    setGlobals({\n      toolOutput: {\n        error: 'Something went wrong',\n        message: 'This is a simulated error for testing error states'\n      }\n    });\n  };\n\n  const handleShowLoading = () => {\n    console.log('⏳ Showing loading state...');\n    setWidgetState('loading');\n    setIsLoading(false);\n    setGlobals({ toolOutput: null });\n  };\n\n  if (!isInitialized) {\n    return <div>Initializing dev environment...</div>;\n  }\n\n  const activeWidget = normalizedWidgets.find(w => w.id === activeWidgetId) || normalizedWidgets[0];\n  if (!activeWidget) {\n    return <div>No widget configured. Pass children or widgets prop to DevContainer.</div>;\n  }\n\n  const ActiveComponent = activeWidget.component;\n\n  return (\n    <div style={{ width: '100%', minHeight: '100vh', position: 'relative' }}>\n      {/* Dev Toolbar */}\n      {showDevTools && (\n        <div style={{\n          position: 'fixed',\n          [toolbarPosition]: 0,\n          left: 0,\n          right: 0,\n          background: mockTheme === 'dark'\n            ? 'linear-gradient(to bottom, rgba(30,30,30,0.98), rgba(20,20,20,0.98))'\n            : 'linear-gradient(to bottom, rgba(255,255,255,0.98), rgba(250,250,250,0.98))',\n          backdropFilter: 'blur(10px)',\n          borderBottom: toolbarPosition === 'top'\n            ? mockTheme === 'dark' ? '1px solid rgba(255,255,255,0.1)' : '1px solid rgba(0,0,0,0.08)'\n            : 'none',\n          borderTop: toolbarPosition === 'bottom'\n            ? mockTheme === 'dark' ? '1px solid rgba(255,255,255,0.1)' : '1px solid rgba(0,0,0,0.08)'\n            : 'none',\n          padding: '12px 16px',\n          zIndex: 9999,\n          display: 'flex',\n          flexDirection: 'column',\n          gap: '10px',\n          boxShadow: toolbarPosition === 'top'\n            ? mockTheme === 'dark'\n              ? '0 4px 12px rgba(0,0,0,0.3), 0 1px 3px rgba(0,0,0,0.4)'\n              : '0 4px 12px rgba(0,0,0,0.05), 0 1px 3px rgba(0,0,0,0.08)'\n            : mockTheme === 'dark'\n              ? '0 -4px 12px rgba(0,0,0,0.3), 0 -1px 3px rgba(0,0,0,0.4)'\n              : '0 -4px 12px rgba(0,0,0,0.05), 0 -1px 3px rgba(0,0,0,0.08)',\n        }}>\n          {/* Main Controls */}\n          <div style={{\n            display: 'flex',\n            alignItems: 'center',\n            gap: '8px',\n            flexWrap: 'wrap',\n          }}>\n            {/* Logo and Title */}\n            <div style={{\n              display: 'flex',\n              alignItems: 'center',\n              gap: '6px',\n              paddingRight: '12px',\n              borderRight: mockTheme === 'dark' ? '1px solid rgba(255,255,255,0.1)' : '1px solid rgba(0,0,0,0.1)',\n              marginRight: '4px',\n            }}>\n              <span style={{ fontSize: '16px' }}>⚡</span>\n              <span style={{\n                fontWeight: '600',\n                fontSize: '13px',\n                color: mockTheme === 'dark' ? '#e5e5e5' : '#333',\n                letterSpacing: '-0.01em',\n              }}>\n                Dev Tools\n              </span>\n            </div>\n\n            {/* Widget Selector (only shown for multiple widgets) */}\n            {showWidgetSelector && (\n              <div style={{ position: 'relative', display: 'inline-block' }}>\n                <select\n                  value={activeWidgetId}\n                  onChange={(e) => setActiveWidgetId(e.target.value)}\n                  style={{\n                    padding: '5px 10px',\n                    paddingRight: '28px',\n                    borderRadius: '6px',\n                    border: mockTheme === 'dark' ? '1px solid rgba(255,255,255,0.15)' : '1px solid rgba(0,0,0,0.12)',\n                    background: mockTheme === 'dark' ? '#2a2a2a' : 'white',\n                    color: mockTheme === 'dark' ? '#e5e5e5' : '#333',\n                    fontSize: '13px',\n                    fontWeight: '500',\n                    cursor: 'pointer',\n                    minWidth: '140px',\n                    WebkitAppearance: 'none',\n                    MozAppearance: 'none',\n                    appearance: 'none',\n                    transition: 'border-color 0.15s, box-shadow 0.15s',\n                    outline: 'none',\n                  }}\n                  onFocus={(e) => {\n                    e.target.style.borderColor = '#3b82f6';\n                    e.target.style.boxShadow = '0 0 0 3px rgba(59,130,246,0.1)';\n                  }}\n                  onBlur={(e) => {\n                    e.target.style.borderColor = mockTheme === 'dark' ? 'rgba(255,255,255,0.15)' : 'rgba(0,0,0,0.12)';\n                    e.target.style.boxShadow = 'none';\n                  }}\n                >\n                  {normalizedWidgets.map(widget => (\n                    <option key={widget.id} value={widget.id}>\n                      {widget.name}\n                    </option>\n                  ))}\n                </select>\n                <span style={{\n                  position: 'absolute',\n                  right: '10px',\n                  top: '50%',\n                  transform: 'translateY(-50%)',\n                  pointerEvents: 'none',\n                  color: mockTheme === 'dark' ? '#aaa' : '#666',\n                  fontSize: '10px',\n                }}>▼</span>\n              </div>\n            )}\n\n            {/* Data Loader Selector (if multiple) */}\n            {Object.keys(normalizedDataLoaders).length > 1 && (\n              <div style={{ position: 'relative', display: 'inline-block' }}>\n                <select\n                  value={activeDataLoader}\n                  onChange={(e) => setActiveDataLoader(e.target.value)}\n                  title=\"Select data source\"\n                  style={{\n                    padding: '5px 10px',\n                    paddingRight: '28px',\n                    borderRadius: '6px',\n                    border: mockTheme === 'dark' ? '1px solid rgba(255,255,255,0.15)' : '1px solid rgba(0,0,0,0.12)',\n                    background: mockTheme === 'dark' ? '#2a2a2a' : 'white',\n                    color: mockTheme === 'dark' ? '#e5e5e5' : '#333',\n                    fontSize: '13px',\n                    fontWeight: '500',\n                    cursor: 'pointer',\n                    minWidth: '110px',\n                    WebkitAppearance: 'none',\n                    MozAppearance: 'none',\n                    appearance: 'none',\n                    transition: 'border-color 0.15s, box-shadow 0.15s',\n                    outline: 'none',\n                  }}\n                  onFocus={(e) => {\n                    e.target.style.borderColor = '#3b82f6';\n                    e.target.style.boxShadow = '0 0 0 3px rgba(59,130,246,0.1)';\n                  }}\n                  onBlur={(e) => {\n                    e.target.style.borderColor = mockTheme === 'dark' ? 'rgba(255,255,255,0.15)' : 'rgba(0,0,0,0.12)';\n                    e.target.style.boxShadow = 'none';\n                  }}\n                >\n                  {Object.keys(normalizedDataLoaders).map(key => (\n                    <option key={key} value={key}>\n                      📊 {key}\n                    </option>\n                  ))}\n                </select>\n                <span style={{\n                  position: 'absolute',\n                  right: '10px',\n                  top: '50%',\n                  transform: 'translateY(-50%)',\n                  pointerEvents: 'none',\n                  color: mockTheme === 'dark' ? '#aaa' : '#666',\n                  fontSize: '10px',\n                }}>▼</span>\n              </div>\n            )}\n\n            {/* Separator */}\n            <div style={{\n              width: '1px',\n              height: '20px',\n              background: mockTheme === 'dark' ? 'rgba(255,255,255,0.1)' : 'rgba(0,0,0,0.1)',\n              margin: '0 4px',\n            }} />\n\n            {/* State Controls */}\n            <div style={{\n              display: 'flex',\n              gap: '4px',\n              background: mockTheme === 'dark' ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.03)',\n              padding: '3px',\n              borderRadius: '8px',\n            }}>\n              <button\n                onClick={handleShowLoading}\n                disabled={widgetState === 'loading' && !isLoading}\n                style={{\n                  padding: '5px 12px',\n                  borderRadius: '5px',\n                  border: 'none',\n                  background: widgetState === 'loading' ? '#3b82f6' : 'transparent',\n                  color: widgetState === 'loading' ? 'white' : (mockTheme === 'dark' ? '#aaa' : '#555'),\n                  fontSize: '12px',\n                  fontWeight: '500',\n                  cursor: widgetState === 'loading' && !isLoading ? 'default' : 'pointer',\n                  transition: 'all 0.15s',\n                  opacity: (widgetState === 'loading' && !isLoading) ? 0.5 : 1,\n                }}\n                onMouseEnter={(e) => {\n                  if (widgetState !== 'loading' && !e.currentTarget.disabled) {\n                    e.currentTarget.style.background = 'rgba(59,130,246,0.1)';\n                    e.currentTarget.style.color = '#3b82f6';\n                  }\n                }}\n                onMouseLeave={(e) => {\n                  if (widgetState !== 'loading') {\n                    e.currentTarget.style.background = 'transparent';\n                    e.currentTarget.style.color = mockTheme === 'dark' ? '#aaa' : '#555';\n                  }\n                }}\n              >\n                ⏳ Loading\n              </button>\n              <button\n                onClick={handleInstantData}\n                disabled={isLoading}\n                style={{\n                  padding: '5px 12px',\n                  borderRadius: '5px',\n                  border: 'none',\n                  background: widgetState === 'data' && !isLoading ? '#10b981' : 'transparent',\n                  color: widgetState === 'data' && !isLoading ? 'white' : (mockTheme === 'dark' ? '#aaa' : '#555'),\n                  fontSize: '12px',\n                  fontWeight: '500',\n                  cursor: isLoading ? 'default' : 'pointer',\n                  transition: 'all 0.15s',\n                  opacity: isLoading ? 0.5 : 1,\n                }}\n                onMouseEnter={(e) => {\n                  if (widgetState !== 'data' && !e.currentTarget.disabled) {\n                    e.currentTarget.style.background = 'rgba(16,185,129,0.1)';\n                    e.currentTarget.style.color = '#10b981';\n                  }\n                }}\n                onMouseLeave={(e) => {\n                  if (widgetState !== 'data' || isLoading) {\n                    e.currentTarget.style.background = 'transparent';\n                    e.currentTarget.style.color = mockTheme === 'dark' ? '#aaa' : '#555';\n                  }\n                }}\n              >\n                ⚡ Instant\n              </button>\n              <button\n                onClick={handleDelayedData}\n                disabled={isLoading}\n                style={{\n                  padding: '5px 12px',\n                  borderRadius: '5px',\n                  border: 'none',\n                  background: 'transparent',\n                  color: mockTheme === 'dark' ? '#aaa' : '#555',\n                  fontSize: '12px',\n                  fontWeight: '500',\n                  cursor: isLoading ? 'default' : 'pointer',\n                  transition: 'all 0.15s',\n                  opacity: isLoading ? 0.5 : 1,\n                }}\n                onMouseEnter={(e) => {\n                  if (!e.currentTarget.disabled) {\n                    e.currentTarget.style.background = 'rgba(16,185,129,0.1)';\n                    e.currentTarget.style.color = '#10b981';\n                  }\n                }}\n                onMouseLeave={(e) => {\n                  e.currentTarget.style.background = 'transparent';\n                  e.currentTarget.style.color = mockTheme === 'dark' ? '#aaa' : '#555';\n                }}\n              >\n                ⏱️ Delayed\n              </button>\n              <button\n                onClick={handleShowEmpty}\n                disabled={isLoading}\n                style={{\n                  padding: '5px 12px',\n                  borderRadius: '5px',\n                  border: 'none',\n                  background: widgetState === 'empty' ? '#f59e0b' : 'transparent',\n                  color: widgetState === 'empty' ? 'white' : '#555',\n                  fontSize: '12px',\n                  fontWeight: '500',\n                  cursor: isLoading ? 'default' : 'pointer',\n                  transition: 'all 0.15s',\n                  opacity: isLoading ? 0.5 : 1,\n                }}\n                onMouseEnter={(e) => {\n                  if (widgetState !== 'empty' && !e.currentTarget.disabled) {\n                    e.currentTarget.style.background = 'rgba(245,158,11,0.1)';\n                    e.currentTarget.style.color = '#f59e0b';\n                  }\n                }}\n                onMouseLeave={(e) => {\n                  if (widgetState !== 'empty') {\n                    e.currentTarget.style.background = 'transparent';\n                    e.currentTarget.style.color = mockTheme === 'dark' ? '#aaa' : '#555';\n                  }\n                }}\n              >\n                📭 Empty\n              </button>\n              <button\n                onClick={handleShowError}\n                disabled={isLoading}\n                style={{\n                  padding: '5px 12px',\n                  borderRadius: '5px',\n                  border: 'none',\n                  background: widgetState === 'error' ? '#ef4444' : 'transparent',\n                  color: widgetState === 'error' ? 'white' : '#555',\n                  fontSize: '12px',\n                  fontWeight: '500',\n                  cursor: isLoading ? 'default' : 'pointer',\n                  transition: 'all 0.15s',\n                  opacity: isLoading ? 0.5 : 1,\n                }}\n                onMouseEnter={(e) => {\n                  if (widgetState !== 'error' && !e.currentTarget.disabled) {\n                    e.currentTarget.style.background = 'rgba(239,68,68,0.1)';\n                    e.currentTarget.style.color = '#ef4444';\n                  }\n                }}\n                onMouseLeave={(e) => {\n                  if (widgetState !== 'error') {\n                    e.currentTarget.style.background = 'transparent';\n                    e.currentTarget.style.color = mockTheme === 'dark' ? '#aaa' : '#555';\n                  }\n                }}\n              >\n                ⚠️ Error\n              </button>\n            </div>\n\n            {/* Separator */}\n            <div style={{\n              width: '1px',\n              height: '20px',\n              background: mockTheme === 'dark' ? 'rgba(255,255,255,0.1)' : 'rgba(0,0,0,0.1)',\n              margin: '0 4px',\n            }} />\n\n            {/* Theme Toggle */}\n            <button\n              onClick={() => setMockTheme(mockTheme === 'light' ? 'dark' : 'light')}\n              title={`Switch to ${mockTheme === 'light' ? 'dark' : 'light'} theme`}\n              style={{\n                padding: '6px 10px',\n                borderRadius: '6px',\n                border: mockTheme === 'dark' ? '1px solid rgba(255,255,255,0.15)' : '1px solid rgba(0,0,0,0.12)',\n                background: mockTheme === 'dark' ? '#2a2a2a' : 'white',\n                fontSize: '14px',\n                cursor: 'pointer',\n                transition: 'all 0.15s',\n                display: 'flex',\n                alignItems: 'center',\n                gap: '4px',\n              }}\n              onMouseEnter={(e) => {\n                e.currentTarget.style.background = mockTheme === 'dark' ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.05)';\n                e.currentTarget.style.borderColor = mockTheme === 'dark' ? 'rgba(255,255,255,0.25)' : 'rgba(0,0,0,0.2)';\n              }}\n              onMouseLeave={(e) => {\n                e.currentTarget.style.background = mockTheme === 'dark' ? '#2a2a2a' : 'white';\n                e.currentTarget.style.borderColor = mockTheme === 'dark' ? 'rgba(255,255,255,0.15)' : 'rgba(0,0,0,0.12)';\n              }}\n            >\n              {mockTheme === 'light' ? '🌙' : '☀️'}\n            </button>\n\n            {/* Spacer */}\n            <div style={{ flex: 1, minWidth: '20px' }} />\n\n            {/* Advanced Toggle */}\n            <button\n              onClick={() => setShowAdvancedSettings(!showAdvancedSettings)}\n              style={{\n                padding: '6px 12px',\n                borderRadius: '6px',\n                border: 'none',\n                background: showAdvancedSettings ? 'rgba(59,130,246,0.1)' : 'transparent',\n                color: showAdvancedSettings ? '#3b82f6' : (mockTheme === 'dark' ? '#aaa' : '#666'),\n                fontSize: '12px',\n                fontWeight: '500',\n                cursor: 'pointer',\n                transition: 'all 0.15s',\n                display: 'flex',\n                alignItems: 'center',\n                gap: '4px',\n              }}\n              onMouseEnter={(e) => {\n                e.currentTarget.style.background = 'rgba(59,130,246,0.1)';\n                e.currentTarget.style.color = '#3b82f6';\n              }}\n              onMouseLeave={(e) => {\n                if (!showAdvancedSettings) {\n                  e.currentTarget.style.background = 'transparent';\n                  e.currentTarget.style.color = mockTheme === 'dark' ? '#aaa' : '#666';\n                }\n              }}\n            >\n              <span style={{\n                transform: showAdvancedSettings ? 'rotate(90deg)' : 'rotate(0deg)',\n                transition: 'transform 0.2s',\n                fontSize: '10px',\n              }}>\n                ▶\n              </span>\n              Advanced\n            </button>\n          </div>\n\n          {/* Advanced Settings */}\n          {showAdvancedSettings && (\n            <div style={{\n              display: 'flex',\n              alignItems: 'center',\n              gap: '12px',\n              flexWrap: 'wrap',\n              paddingTop: '8px',\n              borderTop: mockTheme === 'dark' ? '1px solid rgba(255,255,255,0.08)' : '1px solid rgba(0,0,0,0.06)',\n            }}>\n              {/* Device Type */}\n              <div style={{\n                display: 'flex',\n                alignItems: 'center',\n                gap: '6px',\n              }}>\n                <span style={{ fontSize: '12px', color: mockTheme === 'dark' ? '#aaa' : '#666', fontWeight: '500' }}>Device:</span>\n                <div style={{ position: 'relative', display: 'inline-block' }}>\n                  <select\n                    value={deviceType}\n                    onChange={(e) => setDeviceType(e.target.value as 'desktop' | 'tablet' | 'mobile')}\n                    style={{\n                      padding: '4px 8px',\n                      paddingRight: '24px',\n                      borderRadius: '6px',\n                      border: mockTheme === 'dark' ? '1px solid rgba(255,255,255,0.15)' : '1px solid rgba(0,0,0,0.12)',\n                      background: mockTheme === 'dark' ? '#2a2a2a' : 'white',\n                      color: mockTheme === 'dark' ? '#e5e5e5' : '#333',\n                      fontSize: '12px',\n                      fontWeight: '500',\n                      cursor: 'pointer',\n                      WebkitAppearance: 'none',\n                      MozAppearance: 'none',\n                      appearance: 'none',\n                      transition: 'border-color 0.15s',\n                      outline: 'none',\n                    }}\n                    onFocus={(e) => {\n                      e.target.style.borderColor = '#3b82f6';\n                    }}\n                    onBlur={(e) => {\n                      e.target.style.borderColor = mockTheme === 'dark' ? 'rgba(255,255,255,0.15)' : 'rgba(0,0,0,0.12)';\n                    }}\n                  >\n                    <option value=\"desktop\">💻 Desktop (768px)</option>\n                    <option value=\"tablet\">📱 Tablet (640px)</option>\n                    <option value=\"mobile\">📱 Mobile (375px)</option>\n                  </select>\n                  <span style={{\n                    position: 'absolute',\n                    right: '8px',\n                    top: '50%',\n                    transform: 'translateY(-50%)',\n                    pointerEvents: 'none',\n                    color: mockTheme === 'dark' ? '#aaa' : '#666',\n                    fontSize: '9px',\n                  }}>▼</span>\n                </div>\n              </div>\n\n              {/* Debug Mode Toggle */}\n              <button\n                onClick={() => setDebugMode(debugMode === 'none' ? 'border' : 'none')}\n                title=\"Toggle debug borders\"\n                style={{\n                  padding: '4px 10px',\n                  borderRadius: '6px',\n                  border: '1px solid',\n                  borderColor: debugMode === 'border' ? '#ef4444' : (mockTheme === 'dark' ? 'rgba(255,255,255,0.15)' : 'rgba(0,0,0,0.12)'),\n                  background: debugMode === 'border' ? 'rgba(239,68,68,0.1)' : (mockTheme === 'dark' ? '#2a2a2a' : 'white'),\n                  color: debugMode === 'border' ? '#ef4444' : (mockTheme === 'dark' ? '#aaa' : '#666'),\n                  fontSize: '12px',\n                  fontWeight: '500',\n                  cursor: 'pointer',\n                  transition: 'all 0.15s',\n                }}\n                onMouseEnter={(e) => {\n                  if (debugMode !== 'border') {\n                    e.currentTarget.style.borderColor = '#ef4444';\n                    e.currentTarget.style.background = 'rgba(239,68,68,0.05)';\n                  }\n                }}\n                onMouseLeave={(e) => {\n                  if (debugMode !== 'border') {\n                    e.currentTarget.style.borderColor = mockTheme === 'dark' ? 'rgba(255,255,255,0.15)' : 'rgba(0,0,0,0.12)';\n                    e.currentTarget.style.background = mockTheme === 'dark' ? '#2a2a2a' : 'white';\n                  }\n                }}\n              >\n                🔍 Debug: {debugMode === 'border' ? 'ON' : 'OFF'}\n              </button>\n\n              {/* Spacer */}\n              <div style={{ flex: 1, minWidth: '20px' }} />\n\n              {/* Status Indicators */}\n              <div style={{\n                display: 'flex',\n                gap: '8px',\n                alignItems: 'center',\n              }}>\n                <span style={{\n                  padding: '3px 10px',\n                  borderRadius: '12px',\n                  background: 'rgba(59,130,246,0.1)',\n                  color: '#3b82f6',\n                  fontSize: '11px',\n                  fontWeight: '600',\n                  letterSpacing: '0.02em',\n                }}>\n                  {widgetState.toUpperCase()}\n                </span>\n                <span style={{\n                  padding: '3px 10px',\n                  borderRadius: '12px',\n                  background: mockTheme === 'dark' ? 'rgba(255,255,255,0.1)' : 'rgba(255,255,255,0.5)',\n                  color: mockTheme === 'dark' ? '#aaa' : '#666',\n                  fontSize: '11px',\n                  fontWeight: '600',\n                  border: mockTheme === 'dark' ? '1px solid rgba(255,255,255,0.1)' : '1px solid rgba(0,0,0,0.08)',\n                }}>\n                  {mockTheme === 'dark' ? '🌙' : '☀️'} {mockTheme.toUpperCase()}\n                </span>\n                <span style={{\n                  padding: '3px 10px',\n                  borderRadius: '12px',\n                  background: mockTheme === 'dark' ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.05)',\n                  color: mockTheme === 'dark' ? '#aaa' : '#666',\n                  fontSize: '11px',\n                  fontWeight: '600',\n                }}>\n                  {viewportWidth}px\n                </span>\n              </div>\n            </div>\n          )}\n        </div>\n      )}\n\n      {/* Main Content Area */}\n      <div style={{\n        paddingTop: showDevTools && toolbarPosition === 'top'\n          ? showAdvancedSettings ? '120px' : '70px'\n          : '0',\n        paddingBottom: showDevTools && toolbarPosition === 'bottom'\n          ? showAdvancedSettings ? '120px' : '70px'\n          : '0',\n      }}>\n        {/* Viewport Constraint */}\n        <div style={{\n          maxWidth: `${viewportWidth}px`,\n          margin: '0 auto',\n          width: '100%',\n          position: 'relative',\n          overflowX: 'hidden',\n        }}>\n          <ErrorBoundary>\n            <ActiveComponent />\n          </ErrorBoundary>\n\n          {/* Debug Border */}\n          {debugMode === 'border' && (\n            <div\n              style={{\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                right: 0,\n                bottom: 0,\n                pointerEvents: 'none',\n                border: '2px dashed red',\n                zIndex: 9998,\n              }}\n            />\n          )}\n        </div>\n      </div>\n    </div>\n  );\n}","/**\n * Configuration for creating mock data variations\n */\nexport interface MockDataConfig<T> {\n  /**\n   * Transform function to create empty state from full data\n   * If not provided and emptyData is not specified, returns empty object\n   *\n   * @example\n   * ```typescript\n   * emptyTransform: (data) => ({ ...data, items: [], count: 0 })\n   * ```\n   */\n  emptyTransform?: (fullData: T) => T;\n\n  /**\n   * Optional explicit empty state\n   * Takes precedence over emptyTransform\n   *\n   * @example\n   * ```typescript\n   * emptyData: { items: [], count: 0, status: 'empty' }\n   * ```\n   */\n  emptyData?: T;\n}\n\n/**\n * Mock data with full and empty state variations\n *\n * Provides structured access to full and empty data states for testing widgets\n * in different scenarios.\n */\nexport interface MockData<T> {\n  /** Full dataset with all data */\n  full: T;\n  /** Empty state (valid structure, no data) */\n  empty: T;\n}\n\n/**\n * Creates mock data with automatic empty state generation\n *\n * This utility helps manage mock data for development by providing a consistent\n * way to define both full and empty data states. It works with any data structure\n * and is fully type-safe.\n *\n * @template T - The type of your mock data\n * @param fullData - The full dataset to use for testing\n * @param config - Optional configuration for empty state generation\n * @returns Object with full and empty data variations\n *\n * @example\n * **Basic usage with transform:**\n * ```typescript\n * interface RestaurantData {\n *   restaurants: Restaurant[];\n *   totalResults: number;\n * }\n *\n * const mockRestaurants = createMockData<RestaurantData>(\n *   { restaurants: [...], totalResults: 9 },\n *   {\n *     emptyTransform: (data) => ({\n *       ...data,\n *       restaurants: [],\n *       totalResults: 0\n *     })\n *   }\n * );\n *\n * console.log(mockRestaurants.full);   // Full restaurant data\n * console.log(mockRestaurants.empty);  // Empty restaurant data\n * ```\n *\n * @example\n * **Explicit empty data:**\n * ```typescript\n * const mockUsers = createMockData(\n *   { users: [...], page: 1 },\n *   {\n *     emptyData: { users: [], page: 1, message: 'No users found' }\n *   }\n * );\n * ```\n *\n * @example\n * **Auto-generated empty state (empty object):**\n * ```typescript\n * const mockData = createMockData({ items: [1, 2, 3] });\n * // mockData.empty = {}\n * ```\n */\nexport function createMockData<T>(\n  fullData: T,\n  config?: MockDataConfig<T>\n): MockData<T> {\n  // Priority 1: Use explicit empty data if provided\n  if (config?.emptyData) {\n    return {\n      full: fullData,\n      empty: config.emptyData\n    };\n  }\n\n  // Priority 2: Use transform function if provided\n  if (config?.emptyTransform) {\n    return {\n      full: fullData,\n      empty: config.emptyTransform(fullData)\n    };\n  }\n\n  // Priority 3: Fallback to empty object (typed as T for flexibility)\n  return {\n    full: fullData,\n    empty: {} as T\n  };\n}\n","/**\n * @ainativekit/devtools - Type definitions\n */\n\nimport type { Theme } from '@ainativekit/ui';\n\n/**\n * Widget configuration for multi-widget development\n */\nexport interface Widget {\n  /** Unique identifier for the widget */\n  id: string;\n  /** Display name for the widget selector */\n  name: string;\n  /** The widget component */\n  component: React.ComponentType;\n}\n\n/**\n * Props for the DevContainer component\n * Supports both single widget (via children) and multi-widget (via widgets array) modes\n */\nexport interface DevContainerProps {\n  // Single widget mode (simple case)\n  /**\n   * Single widget to wrap with dev tools\n   * Use this for simple single-widget development\n   */\n  children?: React.ReactNode;\n\n  /**\n   * Data loader for single widget mode\n   * @example\n   * ```typescript\n   * dataLoader: () => ({ type: 'data', items: [...] })\n   * ```\n   */\n  dataLoader?: () => Promise<any> | any;\n\n  /**\n   * Empty state data loader for single widget mode\n   */\n  emptyDataLoader?: () => Promise<any> | any;\n\n  // Multi-widget mode\n  /**\n   * Array of widgets for multi-widget development\n   * When provided, enables widget selector dropdown\n   * @example\n   * ```typescript\n   * widgets: [\n   *   { id: 'carousel', name: 'Carousel', component: CarouselWidget },\n   *   { id: 'map', name: 'Map', component: MapWidget }\n   * ]\n   * ```\n   */\n  widgets?: Widget[];\n\n  /**\n   * Map of data loaders for multi-widget mode\n   * Keys are data source names, values are loader functions\n   * @example\n   * ```typescript\n   * dataLoaders: {\n   *   restaurants: () => restaurantData,\n   *   locations: () => locationData\n   * }\n   * ```\n   */\n  dataLoaders?: Record<string, () => Promise<any> | any>;\n\n  /**\n   * Map of empty data loaders for multi-widget mode\n   */\n  emptyDataLoaders?: Record<string, () => Promise<any> | any>;\n\n  /**\n   * Default data loader key to use\n   */\n  defaultDataLoader?: string;\n\n  /**\n   * Default widget ID to show on load\n   */\n  defaultWidget?: string;\n\n  // Common props\n  /**\n   * Delay in milliseconds before loading data (simulates network latency)\n   * @default 2000\n   */\n  loadingDelay?: number;\n\n  /**\n   * Initial theme\n   * @default 'light'\n   */\n  theme?: Theme;\n\n  /**\n   * Auto-load data on mount\n   * @default true\n   */\n  autoLoad?: boolean;\n\n  /**\n   * Toolbar position\n   * @default 'top'\n   */\n  toolbarPosition?: 'top' | 'bottom';\n}\n\n/**\n * Device type for viewport simulation\n */\nexport type DeviceType = 'desktop' | 'tablet' | 'mobile';\n\n/**\n * Debug mode options\n */\nexport type DebugMode = 'none' | 'border';\n\n/**\n * Widget state for testing\n */\nexport type WidgetState = 'loading' | 'data' | 'empty' | 'error';\n\n/**\n * Viewport presets for device simulation\n */\nexport const VIEWPORT_PRESETS = {\n  desktop: 768,\n  tablet: 640,\n  mobile: 375,\n} as const;\n\n/**\n * Re-export commonly used types from ChatGPT Apps SDK (@ainativekit/ui)\n */\nexport type { Theme, OpenAiGlobals, DisplayMode, SetGlobalsEvent } from '@ainativekit/ui';","/**\n * @ainativekit/devtools\n * Development tools for building and testing ChatGPT Apps using ChatGPT Apps SDK\n *\n * @packageDocumentation\n * A powerful, zero-configuration development environment for building ChatGPT apps.\n * Simulates the ChatGPT production environment locally with interactive controls\n * for testing different states, themes, and device types.\n *\n * @example\n * Single widget (simple case):\n * ```tsx\n * import { DevContainer } from '@ainativekit/devtools';\n * import { ThemeProvider } from '@ainativekit/ui';\n *\n * function App() {\n *   return (\n *     <ThemeProvider>\n *       <DevContainer\n *         dataLoader={() => ({ data: 'mock' })}\n *         loadingDelay={2000}\n *       >\n *         <YourWidget />\n *       </DevContainer>\n *     </ThemeProvider>\n *   );\n * }\n * ```\n *\n * @example\n * Multiple widgets:\n * ```tsx\n * import { DevContainer, createMockData } from '@ainativekit/devtools';\n *\n * const mockData = createMockData(\n *   { items: [...] },\n *   { emptyTransform: (data) => ({ ...data, items: [] }) }\n * );\n *\n * function App() {\n *   return (\n *     <ThemeProvider>\n *       <DevContainer\n *         widgets={[\n *           { id: 'widget1', name: 'Widget 1', component: Widget1 },\n *           { id: 'widget2', name: 'Widget 2', component: Widget2 }\n *         ]}\n *         dataLoaders={{\n *           default: () => mockData.full\n *         }}\n *         emptyDataLoaders={{\n *           default: () => mockData.empty\n *         }}\n *       />\n *     </ThemeProvider>\n *   );\n * }\n * ```\n */\n\n/**\n * Main development container component that simulates ChatGPT environment\n * Supports both single and multiple widget development\n * @see {@link DevContainerProps} for configuration options\n */\nexport { DevContainer } from './components/DevContainer';\n\n/**\n * Utility function for creating type-safe mock data with automatic empty state generation\n * @see {@link MockData} for return type\n * @see {@link MockDataConfig} for configuration options\n */\nexport { createMockData } from './utils/createMockData';\nexport type { MockData, MockDataConfig } from './utils/createMockData';\n\n// Type exports\nexport type {\n  /**\n   * Configuration props for DevContainer component\n   */\n  DevContainerProps,\n  /**\n   * Widget configuration for multi-widget mode\n   */\n  Widget,\n  /**\n   * Device type for viewport simulation ('desktop' | 'tablet' | 'mobile')\n   */\n  DeviceType,\n  /**\n   * Debug mode options ('none' | 'border')\n   */\n  DebugMode,\n  /**\n   * Widget state for testing ('loading' | 'data' | 'empty' | 'error')\n   */\n  WidgetState,\n  // Re-exported from ChatGPT Apps SDK (@ainativekit/ui)\n  Theme,\n  OpenAiGlobals,\n  DisplayMode,\n  SetGlobalsEvent,\n} from './types';\n\n/**\n * Viewport width presets for device simulation\n * @constant\n * @property {number} desktop - 768px width\n * @property {number} tablet - 640px width\n * @property {number} mobile - 375px width\n */\nexport { VIEWPORT_PRESETS } from './types';\n\n/**\n * Current version of @ainativekit/devtools\n * @constant\n */\nexport const VERSION = '0.2.0';"]}