{"version":3,"sources":["../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/toolbar/DarkModeSelector.tsx","../../../src/components/toolbar/I18nSelector.tsx"],"names":["cn","jsxs","jsx","DropdownMenu2","Tooltip2"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { MonkeysLocale } from \"./types\";\n\nexport const enUS = {\n  locale: \"en-US\",\n  messages: {\n    pagination: {\n      navigation: \"Pagination\",\n      first: \"First\",\n      previous: \"Previous\",\n      next: \"Next\",\n      last: \"Last\",\n      page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n      currentPage: ({ page, pageCount }) =>\n        `Page ${page} of ${pageCount}, current page`,\n      emptyResults: \"0 results\",\n      range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n      selected: ({ count }) => `${count} selected`,\n      pageSize: \"Items per page\",\n      perLoad: \"Items per load\",\n      jumpToPage: \"Jump to page\",\n      pages: \"pages\",\n      clickToJump: \"Click to jump to a page\",\n    },\n    dialog: {\n      close: \"Close dialog\",\n    },\n    dropdownMenu: {\n      actions: \"Actions\",\n    },\n    loading: {\n      spinner: \"Loading\",\n    },\n    layout: {\n      resizePanels: \"Resize panels\",\n    },\n    steps: {\n      label: \"Progress\",\n      current: \"Current\",\n      completed: \"Completed\",\n      error: \"Error\",\n      disabled: \"Disabled\",\n    },\n    numberInput: {\n      increment: \"Increase value\",\n      decrement: \"Decrease value\",\n    },\n    passwordInput: {\n      showPassword: \"Show password\",\n      hidePassword: \"Hide password\",\n    },\n    multiSelect: {\n      placeholder: \"Select options\",\n      empty: \"No options\",\n      removeOption: ({ value }) => `Remove ${value}`,\n    },\n    table: {\n      dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n      resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n      sortColumn: ({ columnId }) =>\n        columnId ? `Sort column ${columnId}` : \"Sort column\",\n      loadingRow: \"Loading table row\",\n    },\n    toolbar: {\n      theme: {\n        label: \"Appearance\",\n        toggle: \"Toggle theme\",\n        auto: \"Auto\",\n        light: \"Light\",\n        dark: \"Dark\",\n      },\n      language: {\n        label: \"Language\",\n        switch: \"Switch language\",\n      },\n    },\n    toast: {\n      errorTitle: \"Error\",\n      warningTitle: \"Warning\",\n      defaultErrorDescription: \"Something went wrong.\",\n      defaultWarningDescription: \"Please check and try again.\",\n    },\n    dataExplorer: {\n      viewTree: {\n        actions: \"More actions\",\n        expand: \"Expand\",\n        collapse: \"Collapse\",\n        loading: \"Loading...\",\n        empty: \"No views\",\n        error: \"Unable to load views\",\n      },\n    },\n    workbench: {\n      collection: {\n        label: \"Collection\",\n        loading: \"Loading items\",\n        empty: \"No items\",\n        loadError: \"Unable to load items\",\n        refreshError: \"Unable to refresh items\",\n        retry: \"Retry\",\n        loadingMore: \"Loading more items\",\n        permission: \"You do not have permission to view this content\",\n        offline: \"You appear to be offline\",\n        requestAccess: \"Request access\",\n      },\n      interactiveTable: {\n        columnActions: \"Column actions\",\n        freezeColumn: \"Freeze to left\",\n        freezeEndColumn: \"Freeze to right\",\n        unfreezeColumn: \"Unfreeze from left\",\n        unfreezeEndColumn: \"Unfreeze from right\",\n        unfreezeAllColumns: \"Unfreeze all columns\",\n        resetColumnWidth: \"Reset column width\",\n        frozenColumnTitle: \"Frozen column\",\n      },\n    },\n    agentWorkbench: {\n      label: \"Session activity\",\n      reasoning: \"Reasoning\",\n      plan: \"Plan\",\n      taskNoDetail: \"No additional details\",\n      modes: { chat: \"Chat\", work: \"Work\" },\n      composer: {\n        send: \"Send message\",\n        stop: \"Stop generating\",\n        queue: \"Queue message\",\n        attach: \"Add photos or files\",\n        voice: \"Start voice input\",\n        webSearch: \"Web search\",\n        chatMode: \"Chat mode\",\n        model: \"Model\",\n        reasoning: \"Reasoning effort\",\n        permissions: \"Permissions\",\n        removeAttachment: \"Remove attachment\",\n        editQueued: \"Edit queued message\",\n        deleteQueued: \"Delete queued message\",\n        moveUp: \"Move message up\",\n        moveDown: \"Move message down\",\n        queued: \"Queued messages\",\n        uploading: \"Uploading\",\n        uploadFailed: \"Upload failed\",\n        retryAttachment: \"Retry attachment upload\",\n        noModels: \"No models available\",\n        message: \"Message\",\n        attachmentOnly: \"Attachment\",\n        reasoningOptions: {\n          low: \"Low\",\n          medium: \"Medium\",\n          high: \"High\",\n          xhigh: \"Extra high\",\n        },\n        permissionOptions: {\n          \"approval-required\": \"Approval required\",\n          \"auto-approve\": \"Auto approve\",\n          \"full-access\": \"Full access\",\n        },\n      },\n      quickStart: {\n        label: \"Quick start\",\n        back: \"Back\",\n        addFile: \"Add file\",\n      },\n      tool: {\n        input: \"Input\",\n        output: \"Output\",\n        status: {\n          pending: \"Pending\",\n          running: \"Running\",\n          completed: \"Completed\",\n          failed: \"Error\",\n          denied: \"Denied\",\n        },\n      },\n      approval: {\n        approve: \"Approve\",\n        reject: \"Reject\",\n        approved: \"Approved\",\n        rejected: \"Rejected\",\n      },\n      artifact: {\n        pending: \"Preparing\",\n        ready: \"Ready\",\n        failed: \"Failed\",\n        open: ({ name }) => `Open ${name}`,\n      },\n      run: {\n        stopping: \"Stopping...\",\n        stoppedAfter: ({ duration }) => `You stopped after ${duration}`,\n      },\n      process: {\n        running: \"Working\",\n        queued: \"Queued\",\n        waitingApproval: \"Waiting for approval\",\n        failed: \"Failed\",\n        stopped: \"Stopped\",\n        processed: \"Processed\",\n        processedFor: ({ duration }) => `Worked for ${duration}`,\n        completedCount: ({ completed, total }) =>\n          `${completed}/${total} completed`,\n      },\n      artifactWorkspace: {\n        outputs: \"Outputs\",\n        sources: \"Sources\",\n        viewAll: \"View all\",\n        toggleSummary: \"Toggle files\",\n        tabs: \"Open files\",\n        closeTab: ({ name }) => `Close ${name}`,\n        closeWorkspace: \"Close workspace\",\n        download: ({ name }) => `Download ${name}`,\n        openExternal: ({ name }) => `Open ${name} in a new window`,\n        loading: \"Loading preview...\",\n        failed: \"Preview unavailable\",\n        retry: \"Try again\",\n      },\n      usage: {\n        label: \"Context usage\",\n        context: ({ used, total }) => `${used} / ${total} tokens`,\n      },\n      navigation: {\n        search: \"Search agents and sessions\",\n        searchSessions: \"Search sessions\",\n        searchShortcut: \"Focus search\",\n        clearSearch: \"Clear search\",\n        tabsLabel: \"Agent workbench navigation\",\n        agents: \"Agents\",\n        sessions: \"Sessions\",\n        newAgent: \"New Agent\",\n        newSession: \"New Session\",\n        capabilities: \"Capabilities & Extensions\",\n        settings: \"Agent Settings\",\n        allAgents: \"All Agents\",\n        recentSessions: \"Recent Sessions\",\n        chat: \"Chat\",\n        work: \"Work\",\n        chats: \"Chats\",\n        builtIn: \"Built-in\",\n        noDescription: \"No description\",\n        loading: \"Loading...\",\n        emptyAgents: \"No agents yet\",\n        emptySessions: \"No sessions yet\",\n        noResults: \"No matching results\",\n        retry: \"Retry\",\n        pin: \"Pin\",\n        unpin: \"Unpin\",\n        rename: \"Rename\",\n        delete: \"Delete\",\n        actions: \"Actions\",\n        save: \"Save\",\n        cancel: \"Cancel\",\n        running: \"Running\",\n        completed: \"Completed\",\n        failed: \"Failed\",\n        contextUsage: ({ percent }) => `${percent}% context used`,\n      },\n      details: {\n        title: \"Task details\",\n        description: \"Summary and workspace activity\",\n        duration: \"Duration\",\n        updated: \"Updated\",\n        model: \"Model\",\n        mode: \"Mode\",\n        permissions: \"Permissions\",\n        tokenUsage: \"Token usage\",\n        summary: \"Summary\",\n        summaryEmpty: \"No summary is available yet.\",\n        summaryFailed: \"The summary could not be generated.\",\n        highlights: \"Highlights\",\n        pendingItems: \"Pending items\",\n        tabs: {\n          label: \"Task detail views\",\n          summary: \"Summary\",\n          workspace: \"Workspace\",\n        },\n        status: {\n          queued: \"Queued\",\n          running: \"Running\",\n          waiting_approval: \"Waiting for approval\",\n          stopping: \"Stopping\",\n          stopped: \"Stopped\",\n          completed: \"Completed\",\n          failed: \"Failed\",\n        },\n        state: {\n          loading: {\n            title: \"Loading task details\",\n            description: \"Restoring the latest session activity.\",\n          },\n          empty: {\n            title: \"No task selected\",\n            description: \"Select a task to inspect its details.\",\n          },\n          error: {\n            title: \"Unable to load task details\",\n            description: \"Try again after the session is available.\",\n          },\n        },\n        actions: {\n          close: \"Close task details\",\n          copySummary: \"Copy summary\",\n          retry: \"Retry\",\n          retrySummary: \"Retry summary\",\n          resume: \"Resume\",\n          continueInNewTask: \"Continue in new task\",\n          editAndRerun: \"Edit and rerun\",\n          export: \"Export\",\n        },\n        workspace: {\n          diffs: \"Code changes\",\n          files: \"Files\",\n          terminals: \"Terminals\",\n          tests: \"Tests\",\n          artifacts: \"Artifacts\",\n          exitCode: ({ code }) => `Exit code ${code}`,\n          diffStatus: {\n            added: \"Added\",\n            modified: \"Modified\",\n            deleted: \"Deleted\",\n            renamed: \"Renamed\",\n          },\n          fileOperation: { upsert: \"Updated\", delete: \"Deleted\" },\n        },\n      },\n    },\n  },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n  MonkeysBuiltInLocaleId,\n  MonkeysLocale,\n  MonkeysLocaleInput,\n  MonkeysLocaleMessages,\n  MonkeysLocaleMessagesOverride,\n  MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n  'en-US': enUS,\n  'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n  if (typeof locale !== 'string' || !locale.trim()) {\n    throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n  }\n\n  try {\n    return Intl.getCanonicalLocales(locale)[0];\n  } catch {\n    throw new RangeError(\n      `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n    );\n  }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n  value: unknown,\n  schema: unknown,\n  path: string,\n) {\n  if (!isRecord(value) || !isRecord(schema)) {\n    throw new TypeError(`${path} must be an object.`);\n  }\n\n  for (const [key, candidate] of Object.entries(value)) {\n    if (candidate === undefined) continue;\n    if (!(key in schema)) {\n      throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n    }\n\n    const expected = schema[key];\n    const candidatePath = `${path}.${key}`;\n    if (typeof expected === 'function') {\n      if (typeof candidate !== 'function') {\n        throw new TypeError(`${candidatePath} must be a function.`);\n      }\n    } else if (typeof expected === 'string') {\n      if (typeof candidate !== 'string') {\n        throw new TypeError(`${candidatePath} must be a string.`);\n      }\n    } else {\n      validateMessageOverride(candidate, expected, candidatePath);\n    }\n  }\n}\n\nfunction assertMessagesOverride(\n  value: unknown,\n  path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n  validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n  return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n  locale: string | undefined;\n  messages: MonkeysLocaleMessagesOverride | undefined;\n  hasExplicitLocale: boolean;\n} {\n  if (input === undefined) {\n    return {\n      locale: undefined,\n      messages: undefined,\n      hasExplicitLocale: false,\n    };\n  }\n\n  if (typeof input === 'string') {\n    const locale = normalizeLocaleId(input);\n    if (!isBuiltInLocale(locale)) {\n      throw new RangeError(\n        `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n      );\n    }\n    return { locale, messages: undefined, hasExplicitLocale: true };\n  }\n\n  if (!input || typeof input !== 'object' || Array.isArray(input)) {\n    throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n  }\n\n  const locale = normalizeLocaleId(input.locale);\n  assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n  return {\n    locale,\n    messages: input.messages,\n    hasExplicitLocale: true,\n  };\n}\n\nexport function mergeMonkeysLocaleMessages(\n  base: MonkeysLocaleMessages,\n  override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n  if (!override) return base;\n\n  return {\n    pagination: { ...base.pagination, ...override.pagination },\n    dialog: { ...base.dialog, ...override.dialog },\n    dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n    loading: { ...base.loading, ...override.loading },\n    layout: { ...base.layout, ...override.layout },\n    steps: { ...base.steps, ...override.steps },\n    numberInput: { ...base.numberInput, ...override.numberInput },\n    passwordInput: { ...base.passwordInput, ...override.passwordInput },\n    multiSelect: { ...base.multiSelect, ...override.multiSelect },\n    table: { ...base.table, ...override.table },\n    toolbar: {\n      theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n      language: { ...base.toolbar.language, ...override.toolbar?.language },\n    },\n    toast: { ...base.toast, ...override.toast },\n    dataExplorer: {\n      viewTree: {\n        ...base.dataExplorer.viewTree,\n        ...override.dataExplorer?.viewTree,\n      },\n    },\n    workbench: {\n      collection: {\n        ...base.workbench.collection,\n        ...override.workbench?.collection,\n      },\n      interactiveTable: {\n        ...base.workbench.interactiveTable,\n        ...override.workbench?.interactiveTable,\n      },\n    },\n    agentWorkbench: {\n      ...base.agentWorkbench,\n      ...override.agentWorkbench,\n      modes: {\n        ...base.agentWorkbench.modes,\n        ...override.agentWorkbench?.modes,\n      },\n      composer: {\n        ...base.agentWorkbench.composer,\n        ...override.agentWorkbench?.composer,\n      },\n      quickStart: {\n        ...base.agentWorkbench.quickStart,\n        ...override.agentWorkbench?.quickStart,\n      },\n      tool: {\n        ...base.agentWorkbench.tool,\n        ...override.agentWorkbench?.tool,\n        status: {\n          ...base.agentWorkbench.tool.status,\n          ...override.agentWorkbench?.tool?.status,\n        },\n      },\n      approval: {\n        ...base.agentWorkbench.approval,\n        ...override.agentWorkbench?.approval,\n      },\n      artifact: {\n        ...base.agentWorkbench.artifact,\n        ...override.agentWorkbench?.artifact,\n      },\n      run: {\n        ...base.agentWorkbench.run,\n        ...override.agentWorkbench?.run,\n      },\n      process: {\n        ...base.agentWorkbench.process,\n        ...override.agentWorkbench?.process,\n      },\n      artifactWorkspace: {\n        ...base.agentWorkbench.artifactWorkspace,\n        ...override.agentWorkbench?.artifactWorkspace,\n      },\n      usage: {\n        ...base.agentWorkbench.usage,\n        ...override.agentWorkbench?.usage,\n      },\n      navigation: {\n        ...base.agentWorkbench.navigation,\n        ...override.agentWorkbench?.navigation,\n      },\n      details: {\n        ...base.agentWorkbench.details,\n        ...override.agentWorkbench?.details,\n        tabs: {\n          ...base.agentWorkbench.details.tabs,\n          ...override.agentWorkbench?.details?.tabs,\n        },\n        status: {\n          ...base.agentWorkbench.details.status,\n          ...override.agentWorkbench?.details?.status,\n        },\n        state: {\n          loading: {\n            ...base.agentWorkbench.details.state.loading,\n            ...override.agentWorkbench?.details?.state?.loading,\n          },\n          empty: {\n            ...base.agentWorkbench.details.state.empty,\n            ...override.agentWorkbench?.details?.state?.empty,\n          },\n          error: {\n            ...base.agentWorkbench.details.state.error,\n            ...override.agentWorkbench?.details?.state?.error,\n          },\n        },\n        actions: {\n          ...base.agentWorkbench.details.actions,\n          ...override.agentWorkbench?.details?.actions,\n        },\n        workspace: {\n          ...base.agentWorkbench.details.workspace,\n          ...override.agentWorkbench?.details?.workspace,\n          diffStatus: {\n            ...base.agentWorkbench.details.workspace.diffStatus,\n            ...override.agentWorkbench?.details?.workspace?.diffStatus,\n          },\n          fileOperation: {\n            ...base.agentWorkbench.details.workspace.fileOperation,\n            ...override.agentWorkbench?.details?.workspace?.fileOperation,\n          },\n        },\n      },\n    },\n  };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n  locale: enUS.locale,\n  messages: mergeMonkeysLocaleMessages(\n    enUS.messages as MonkeysLocaleMessages,\n  ),\n};\n\nexport function resolveMonkeysLocale(\n  input?: MonkeysLocaleInput,\n  override?: MonkeysLocaleMessagesOverride,\n  parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n  if (override !== undefined) {\n    assertMessagesOverride(override, 'MonkeysProvider messages');\n  }\n  const normalized = normalizeLocaleInput(input);\n  const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n  const builtInMessages = isBuiltInLocale(locale)\n    ? BUILT_IN_LOCALES[locale].messages\n    : undefined;\n  let messages = mergeMonkeysLocaleMessages(\n    enUS.messages as MonkeysLocaleMessages,\n    builtInMessages,\n  );\n\n  if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n    messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n  }\n\n  messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n  messages = mergeMonkeysLocaleMessages(messages, override);\n\n  return { locale, messages };\n}\n","import {\n  createContext,\n  useContext,\n  useMemo,\n  type Context,\n} from 'react';\n\nimport type { AssetIconResolver, AssetImageResolver } from '../components/base/BaseAssetIcon';\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n  defaultMonkeysLocale,\n  type MonkeysLocaleMessages,\n  type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n  getDocument?: () => Document | null;\n  getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n  | Element\n  | null\n  | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n  container?: MonkeysPortalContainer;\n  disabled?: boolean;\n}\n\nexport type MonkeysLoadingStateVariant = 'spinner' | 'skeleton';\nexport type MonkeysEmptyStateVariant = 'default' | 'compact';\nexport type MonkeysStatusStateDensity = 'compact' | 'default' | 'comfortable';\n\nexport type MonkeysListFooterPaginationMode = 'auto' | 'pages' | 'compact';\nexport type MonkeysListFooterAlignment = 'start' | 'end' | 'space-between';\n\nexport interface MonkeysListFooterConfig {\n  showTotal?: boolean;\n  showPageSize?: boolean;\n  pageSizeOptions?: number[];\n  paginationMode?: MonkeysListFooterPaginationMode;\n  alignment?: MonkeysListFooterAlignment;\n  density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysStatusStatesConfig {\n  loading?: { variant?: MonkeysLoadingStateVariant };\n  empty?: { variant?: MonkeysEmptyStateVariant };\n  error?: { showRetry?: boolean };\n  permission?: { showRequestAccess?: boolean };\n  density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysComponentAttributes {\n  dir?: MonkeysDirection;\n  'data-monkeys-direction'?: MonkeysDirection;\n  'data-monkeys-locale'?: string;\n  'data-monkeys-theme'?: string;\n  'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n  provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n  provided: boolean;\n  resolvedTheme?: CompiledThemeTokens;\n  themeId?: string;\n  baseAppearance?: BaseAppearance;\n  dataExplorerAppearance?: DataExplorerAppearance;\n  statusStates?: MonkeysStatusStatesConfig;\n  listFooter?: MonkeysListFooterConfig;\n}\n\ninterface MonkeysDirectionContextValue {\n  provided: boolean;\n  direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n  provided: boolean;\n  environment: MonkeysEnvironment;\n  portal: MonkeysPortalOptions;\n  iconResolver?: AssetIconResolver;\n  imageResolver?: AssetImageResolver;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n  locale: Context<MonkeysLocaleContextValue>;\n  theme: Context<MonkeysThemeContextValue>;\n  direction: Context<MonkeysDirectionContextValue>;\n  environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n  '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n  [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n  return Object.freeze({\n    locale: createContext<MonkeysLocaleContextValue>({\n      ...defaultMonkeysLocale,\n      provided: false,\n    }),\n    theme: createContext<MonkeysThemeContextValue>({\n      provided: false,\n    }),\n    direction: createContext<MonkeysDirectionContextValue>({\n      provided: false,\n    }),\n    environment: createContext<MonkeysEnvironmentContextValue>({\n      provided: false,\n      environment: EMPTY_ENVIRONMENT,\n      portal: EMPTY_PORTAL,\n    }),\n  });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n  const host = globalThis as MonkeysProviderContextHost;\n  const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n  if (existing) return existing;\n\n  const contexts = createMonkeysProviderContexts();\n  Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n    value: contexts,\n    enumerable: false,\n    configurable: false,\n    writable: false,\n  });\n  return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n  inherited: T | undefined,\n  explicit: T | undefined,\n): T | undefined {\n  if (explicit === undefined) return inherited;\n  if (inherited === undefined) return explicit;\n\n  return {\n    ...inherited,\n    ...explicit,\n    slots:\n      inherited.slots || explicit.slots\n        ? { ...inherited.slots, ...explicit.slots }\n        : undefined,\n    styles:\n      inherited.styles || explicit.styles\n        ? { ...inherited.styles, ...explicit.styles }\n        : undefined,\n  };\n}\n\nexport function useMonkeysLocale() {\n  try {\n    const context = useContext(MonkeysLocaleContext);\n    return context ?? { ...defaultMonkeysLocale, provided: false };\n  } catch {\n    return { ...defaultMonkeysLocale, provided: false };\n  }\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n  return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n  return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n  explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n  const inherited = useContext(MonkeysThemeContext).baseAppearance;\n  return useMemo(\n    () => mergeAppearance(inherited, explicit),\n    [explicit, inherited],\n  );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n  explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n  const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n  return useMemo(\n    () => mergeAppearance(inherited, explicit),\n    [explicit, inherited],\n  );\n}\n\nexport function useMonkeysStatusStates(): MonkeysStatusStatesConfig {\n  return useContext(MonkeysThemeContext).statusStates ?? {};\n}\n\nexport function useMonkeysListFooter(): MonkeysListFooterConfig {\n  return useContext(MonkeysThemeContext).listFooter ?? {};\n}\n\nexport function useMonkeysDirection() {\n  return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n  return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n  return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n  const locale = useContext(MonkeysLocaleContext);\n  const theme = useContext(MonkeysThemeContext);\n  const direction = useContext(MonkeysDirectionContext);\n  const providerActive = locale.provided || theme.provided || direction.provided;\n\n  return useMemo(\n    () =>\n      providerActive\n        ? {\n            dir: direction.direction,\n            'data-monkeys-direction': direction.direction,\n            'data-monkeys-locale': locale.locale,\n            'data-monkeys-theme': theme.themeId,\n            'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n          }\n        : {},\n    [\n      direction.direction,\n      locale.locale,\n      providerActive,\n      theme.resolvedTheme?.colorMode,\n      theme.themeId,\n    ],\n  );\n}\n\nexport function useMonkeysAssetIconResolver(): AssetIconResolver | undefined {\n  return useContext(MonkeysEnvironmentContext).iconResolver;\n}\nexport function useMonkeysAssetImageResolver(): AssetImageResolver | undefined {\n  return useContext(MonkeysEnvironmentContext).imageResolver;\n}\n","import * as React from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport * as Tooltip from '@radix-ui/react-tooltip';\n\nimport {\n  useMonkeysComponentAttributes,\n  useMonkeysLocale,\n} from '../../provider/context';\n\nfunction cn(...inputs: (string | undefined | null | false)[]): string {\n  return inputs.filter(Boolean).join(' ');\n}\n\n// ---------- Inline SVG Icons ----------\n\nfunction SunIcon({ className }: { className?: string }) {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n      <circle cx=\"12\" cy=\"12\" r=\"4\" />\n      <path d=\"M12 2v2\" /><path d=\"M12 20v2\" />\n      <path d=\"m4.93 4.93 1.41 1.41\" /><path d=\"m17.66 17.66 1.41 1.41\" />\n      <path d=\"M2 12h2\" /><path d=\"M20 12h2\" />\n      <path d=\"m6.34 17.66-1.41 1.41\" /><path d=\"m19.07 4.93-1.41 1.41\" />\n    </svg>\n  );\n}\n\nfunction MoonIcon({ className }: { className?: string }) {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n      <path d=\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\" />\n    </svg>\n  );\n}\n\nfunction MonitorIcon({ className }: { className?: string }) {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n      <rect width=\"20\" height=\"14\" x=\"2\" y=\"3\" rx=\"2\" />\n      <line x1=\"8\" x2=\"16\" y1=\"21\" y2=\"21\" />\n      <line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"21\" />\n    </svg>\n  );\n}\n\n// ---------- Component ----------\n\nexport type DarkModeValue = 'auto' | 'light' | 'dark';\n\nexport interface DarkModeSelectorProps {\n  mode: DarkModeValue;\n  onModeChange: (mode: DarkModeValue) => void;\n  labels?: { auto?: string; light?: string; dark?: string };\n  tooltip?: string;\n  className?: string;\n}\n\nconst triggerIconMap: Record<DarkModeValue, React.FC<{ className?: string }>> = {\n  light: SunIcon,\n  dark: MoonIcon,\n  auto: MonitorIcon,\n};\n\nexport function DarkModeSelector({\n  mode,\n  onModeChange,\n  labels = {},\n  tooltip,\n  className,\n}: DarkModeSelectorProps) {\n  const locale = useMonkeysLocale();\n  const componentAttributes = useMonkeysComponentAttributes();\n  const localeLabels = locale.messages.toolbar.theme;\n  const TriggerIcon = triggerIconMap[mode];\n  const resolvedLabels = {\n    auto: labels.auto ?? localeLabels.auto,\n    light: labels.light ?? localeLabels.light,\n    dark: labels.dark ?? localeLabels.dark,\n  };\n\n  const options: { value: DarkModeValue; label: string; Icon: React.FC<{ className?: string }> }[] = [\n    { value: 'auto', label: resolvedLabels.auto, Icon: MonitorIcon },\n    { value: 'light', label: resolvedLabels.light, Icon: SunIcon },\n    { value: 'dark', label: resolvedLabels.dark, Icon: MoonIcon },\n  ];\n\n  const trigger = (\n    <DropdownMenu.Trigger asChild>\n      <button\n        {...componentAttributes}\n        className={cn(\n          'inline-flex h-8 w-8 items-center justify-center rounded-md text-[hsl(var(--foreground))] hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] transition-colors focus-visible:outline-none',\n          className,\n        )}\n      >\n        <TriggerIcon />\n        <span className=\"sr-only\">{tooltip ?? localeLabels.toggle}</span>\n      </button>\n    </DropdownMenu.Trigger>\n  );\n\n  return (\n    <DropdownMenu.Root>\n      {tooltip ? (\n        <Tooltip.Provider delayDuration={300}>\n          <Tooltip.Root>\n            <Tooltip.Trigger asChild>{trigger}</Tooltip.Trigger>\n            <Tooltip.Portal>\n              <Tooltip.Content\n                className=\"rounded-md bg-[hsl(var(--popover))] px-3 py-1.5 text-xs text-[hsl(var(--popover-foreground))] shadow-md border border-[hsl(var(--border))] animate-in fade-in-0 zoom-in-95\"\n                sideOffset={5}\n              >\n                {tooltip}\n                <Tooltip.Arrow className=\"fill-[hsl(var(--popover))]\" />\n              </Tooltip.Content>\n            </Tooltip.Portal>\n          </Tooltip.Root>\n        </Tooltip.Provider>\n      ) : (\n        trigger\n      )}\n\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          className=\"z-50 min-w-[8rem] rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n          sideOffset={5}\n          align=\"end\"\n        >\n          {options.map(({ value, label, Icon }) => (\n            <DropdownMenu.Item\n              key={value}\n              className={cn(\n                'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))]',\n                mode === value && 'bg-[hsl(var(--accent))]',\n              )}\n              onSelect={() => onModeChange(value)}\n            >\n              <Icon className=\"h-4 w-4\" />\n              {label}\n            </DropdownMenu.Item>\n          ))}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n\n// ---------- Sub-menu variant (for embedding in user dropdown) ----------\n\nfunction SunMoonIcon({ className }: { className?: string }) {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n      <path d=\"M12 8a2.83 2.83 0 0 0 4 4 4 4 0 1 1-4-4\" />\n      <path d=\"M12 2v2\" /><path d=\"M12 20v2\" />\n      <path d=\"m4.9 4.9 1.4 1.4\" /><path d=\"m17.7 17.7 1.4 1.4\" />\n      <path d=\"M2 12h2\" /><path d=\"M20 12h2\" />\n      <path d=\"m6.3 17.7-1.4 1.4\" /><path d=\"m19.1 4.9-1.4 1.4\" />\n    </svg>\n  );\n}\n\nexport interface DarkModeSubMenuProps {\n  mode: DarkModeValue;\n  onModeChange: (mode: DarkModeValue) => void;\n  label?: string;\n  labels?: { auto?: string; light?: string; dark?: string };\n}\n\n/**\n * A DropdownMenuSub component for embedding dark mode selector\n * inside a Radix DropdownMenu (e.g. user avatar menu).\n * Must be rendered as a child of DropdownMenu.Group / DropdownMenu.Content.\n */\nexport function DarkModeSubMenu({\n  mode,\n  onModeChange,\n  label,\n  labels = {},\n}: DarkModeSubMenuProps) {\n  const locale = useMonkeysLocale();\n  const componentAttributes = useMonkeysComponentAttributes();\n  const localeLabels = locale.messages.toolbar.theme;\n  const fallbackLabels = locale.provided\n    ? localeLabels\n    : {\n        label: '外观',\n        auto: '跟随系统',\n        light: '浅色模式',\n        dark: '深色模式',\n      };\n  const resolvedLabels = {\n    auto: labels.auto ?? fallbackLabels.auto,\n    light: labels.light ?? fallbackLabels.light,\n    dark: labels.dark ?? fallbackLabels.dark,\n  };\n\n  const currentLabel = mode === 'auto' ? resolvedLabels.auto : mode === 'dark' ? resolvedLabels.dark : resolvedLabels.light;\n\n  const options: { value: DarkModeValue; label: string; Icon: React.FC<{ className?: string }> }[] = [\n    { value: 'auto', label: resolvedLabels.auto, Icon: MonitorIcon },\n    { value: 'light', label: resolvedLabels.light, Icon: SunIcon },\n    { value: 'dark', label: resolvedLabels.dark, Icon: MoonIcon },\n  ];\n\n  return (\n    <DropdownMenu.Sub>\n      <DropdownMenu.SubTrigger\n        {...componentAttributes}\n        className=\"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[state=open]:bg-[hsl(var(--accent))]\"\n      >\n        <SunMoonIcon className=\"h-4 w-4\" />\n        <span>{label ?? fallbackLabels.label}</span>\n        <span className=\"ml-auto text-xs text-[hsl(var(--muted-foreground))]\">{currentLabel}</span>\n      </DropdownMenu.SubTrigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.SubContent\n          className=\"z-50 min-w-[8rem] rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n          sideOffset={8}\n        >\n          {options.map(({ value, label: optLabel, Icon }) => (\n            <DropdownMenu.CheckboxItem\n              key={value}\n              checked={mode === value}\n              disabled={mode === value}\n              className={cn(\n                'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 pl-7 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n              )}\n              onCheckedChange={() => onModeChange(value)}\n            >\n              <DropdownMenu.ItemIndicator className=\"absolute left-2 inline-flex items-center justify-center\">\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg>\n              </DropdownMenu.ItemIndicator>\n              <Icon className=\"h-4 w-4\" />\n              {optLabel}\n            </DropdownMenu.CheckboxItem>\n          ))}\n        </DropdownMenu.SubContent>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Sub>\n  );\n}\n","import * as React from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport * as Tooltip from '@radix-ui/react-tooltip';\n\nimport {\n  useMonkeysComponentAttributes,\n  useMonkeysLocale,\n} from '../../provider/context';\n\nfunction cn(...inputs: (string | undefined | null | false)[]): string {\n  return inputs.filter(Boolean).join(' ');\n}\n\n// ---------- Inline SVG Icon ----------\n\nfunction GlobeIcon({ className }: { className?: string }) {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n      <circle cx=\"12\" cy=\"12\" r=\"10\" />\n      <path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\" />\n      <path d=\"M2 12h20\" />\n    </svg>\n  );\n}\n\n// ---------- Component ----------\n\nexport interface I18nLanguage {\n  code: string;\n  label: string;\n}\n\nexport interface I18nSelectorProps {\n  languages: I18nLanguage[];\n  currentLanguage: string;\n  onLanguageChange: (code: string) => void;\n  tooltip?: string;\n  className?: string;\n}\n\nexport function I18nSelector({\n  languages,\n  currentLanguage,\n  onLanguageChange,\n  tooltip,\n  className,\n}: I18nSelectorProps) {\n  const locale = useMonkeysLocale();\n  const componentAttributes = useMonkeysComponentAttributes();\n  const trigger = (\n    <DropdownMenu.Trigger asChild>\n      <button\n        {...componentAttributes}\n        className={cn(\n          'inline-flex h-8 w-8 items-center justify-center rounded-md text-[hsl(var(--foreground))] hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] transition-colors focus-visible:outline-none',\n          className,\n        )}\n      >\n        <GlobeIcon />\n        <span className=\"sr-only\">\n          {tooltip ?? locale.messages.toolbar.language.switch}\n        </span>\n      </button>\n    </DropdownMenu.Trigger>\n  );\n\n  return (\n    <DropdownMenu.Root>\n      {tooltip ? (\n        <Tooltip.Provider delayDuration={300}>\n          <Tooltip.Root>\n            <Tooltip.Trigger asChild>{trigger}</Tooltip.Trigger>\n            <Tooltip.Portal>\n              <Tooltip.Content\n                className=\"rounded-md bg-[hsl(var(--popover))] px-3 py-1.5 text-xs text-[hsl(var(--popover-foreground))] shadow-md border border-[hsl(var(--border))] animate-in fade-in-0 zoom-in-95\"\n                sideOffset={5}\n              >\n                {tooltip}\n                <Tooltip.Arrow className=\"fill-[hsl(var(--popover))]\" />\n              </Tooltip.Content>\n            </Tooltip.Portal>\n          </Tooltip.Root>\n        </Tooltip.Provider>\n      ) : (\n        trigger\n      )}\n\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          className=\"z-50 min-w-[8rem] rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n          sideOffset={5}\n          align=\"end\"\n        >\n          {languages.map(({ code, label }) => (\n            <DropdownMenu.Item\n              key={code}\n              className={cn(\n                'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))]',\n                currentLanguage === code && 'bg-[hsl(var(--accent))]',\n              )}\n              onSelect={() => onLanguageChange(code)}\n            >\n              {label}\n            </DropdownMenu.Item>\n          ))}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n\n// ---------- Sub-menu variant (for embedding in user dropdown) ----------\n\nexport interface I18nSubMenuProps {\n  languages: I18nLanguage[];\n  currentLanguage: string;\n  onLanguageChange: (code: string) => void;\n  label?: string;\n}\n\n/**\n * A DropdownMenuSub component for embedding language selector\n * inside a Radix DropdownMenu (e.g. user avatar menu).\n * Must be rendered as a child of DropdownMenu.Group / DropdownMenu.Content.\n */\nexport function I18nSubMenu({\n  languages,\n  currentLanguage,\n  onLanguageChange,\n  label,\n}: I18nSubMenuProps) {\n  const locale = useMonkeysLocale();\n  const componentAttributes = useMonkeysComponentAttributes();\n  const fallbackLabel = locale.provided\n    ? locale.messages.toolbar.language.label\n    : '语言';\n  const currentLabel = languages.find((l) => l.code === currentLanguage)?.label ?? currentLanguage;\n\n  return (\n    <DropdownMenu.Sub>\n      <DropdownMenu.SubTrigger\n        {...componentAttributes}\n        className=\"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[state=open]:bg-[hsl(var(--accent))]\"\n      >\n        <GlobeIcon className=\"h-4 w-4\" />\n        <span>{label ?? fallbackLabel}</span>\n        <span className=\"ml-auto text-xs text-[hsl(var(--muted-foreground))]\">{currentLabel}</span>\n      </DropdownMenu.SubTrigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.SubContent\n          className=\"z-50 min-w-[8rem] rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n          sideOffset={8}\n        >\n          {languages.map(({ code, label: langLabel }) => (\n            <DropdownMenu.CheckboxItem\n              key={code}\n              checked={currentLanguage === code}\n              disabled={currentLanguage === code}\n              className={cn(\n                'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 pl-7 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n              )}\n              onCheckedChange={() => onLanguageChange(code)}\n            >\n              <DropdownMenu.ItemIndicator className=\"absolute left-2 inline-flex items-center justify-center\">\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg>\n              </DropdownMenu.ItemIndicator>\n              {langLabel}\n            </DropdownMenu.CheckboxItem>\n          ))}\n        </DropdownMenu.SubContent>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Sub>\n  );\n}\n"]}