@dsh-plugin/dsh-loader 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/dsh-1-x.js +6 -0
- package/dist/adapters/dsh-1-x.js.map +1 -1
- package/dist/registry.js +69 -0
- package/dist/registry.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/lib/client.js +1 -1
- package/lib/client.js.map +1 -1
- package/lib/types/version.d.ts +1 -1
- package/package.json +1 -1
package/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":["name","dsh1x.supports","dsh1x.name","dsh1x.create","ambientWindow","scope","require","createRoot","React","useContext","useMemo","Up","Down","Left","Right","FullScreen","Pause","Attention","ErrorIcon","Setting","SettingTwo","FileText","Branch","Globe","PreviewOpen","PreviewClose","AllApplication","React","PlatformMenu","React","scope"],"sources":["../src/version.ts","../src/services/settings.ts","../src/adapters/dsh-1-x.ts","../src/adapters/index.ts","../src/client.ts","../src/ui/anchors.ts","../src/ui/slots.tsx","../src/ui/style.ts","../node_modules/@icon-park/react/es/runtime/index.js","../node_modules/@icon-park/react/es/icons/Add.js","../node_modules/@icon-park/react/es/icons/Alarm.js","../node_modules/@icon-park/react/es/icons/AllApplication.js","../node_modules/@icon-park/react/es/icons/Attention.js","../node_modules/@icon-park/react/es/icons/Back.js","../node_modules/@icon-park/react/es/icons/Branch.js","../node_modules/@icon-park/react/es/icons/Browser.js","../node_modules/@icon-park/react/es/icons/Check.js","../node_modules/@icon-park/react/es/icons/CheckSmall.js","../node_modules/@icon-park/react/es/icons/Close.js","../node_modules/@icon-park/react/es/icons/CloseSmall.js","../node_modules/@icon-park/react/es/icons/Code.js","../node_modules/@icon-park/react/es/icons/Config.js","../node_modules/@icon-park/react/es/icons/Copy.js","../node_modules/@icon-park/react/es/icons/Delete.js","../node_modules/@icon-park/react/es/icons/Diamond.js","../node_modules/@icon-park/react/es/icons/Down.js","../node_modules/@icon-park/react/es/icons/Download.js","../node_modules/@icon-park/react/es/icons/Edit.js","../node_modules/@icon-park/react/es/icons/Error.js","../node_modules/@icon-park/react/es/icons/FileCode.js","../node_modules/@icon-park/react/es/icons/FileText.js","../node_modules/@icon-park/react/es/icons/Folder.js","../node_modules/@icon-park/react/es/icons/FolderOpen.js","../node_modules/@icon-park/react/es/icons/FullScreen.js","../node_modules/@icon-park/react/es/icons/Globe.js","../node_modules/@icon-park/react/es/icons/Help.js","../node_modules/@icon-park/react/es/icons/Info.js","../node_modules/@icon-park/react/es/icons/Left.js","../node_modules/@icon-park/react/es/icons/Link.js","../node_modules/@icon-park/react/es/icons/Loading.js","../node_modules/@icon-park/react/es/icons/Lock.js","../node_modules/@icon-park/react/es/icons/More.js","../node_modules/@icon-park/react/es/icons/Pause.js","../node_modules/@icon-park/react/es/icons/Play.js","../node_modules/@icon-park/react/es/icons/PreviewClose.js","../node_modules/@icon-park/react/es/icons/PreviewOpen.js","../node_modules/@icon-park/react/es/icons/Redo.js","../node_modules/@icon-park/react/es/icons/Refresh.js","../node_modules/@icon-park/react/es/icons/Right.js","../node_modules/@icon-park/react/es/icons/Save.js","../node_modules/@icon-park/react/es/icons/Search.js","../node_modules/@icon-park/react/es/icons/Setting.js","../node_modules/@icon-park/react/es/icons/SettingTwo.js","../node_modules/@icon-park/react/es/icons/Sort.js","../node_modules/@icon-park/react/es/icons/Success.js","../node_modules/@icon-park/react/es/icons/Terminal.js","../node_modules/@icon-park/react/es/icons/Undo.js","../node_modules/@icon-park/react/es/icons/Unlock.js","../node_modules/@icon-park/react/es/icons/Up.js","../node_modules/@icon-park/react/es/icons/Upload.js","../node_modules/@icon-park/react/es/icons/Write.js","../src/ui/icons.tsx","../src/ui/menu.tsx","../src/ui/components.tsx","../src/ui/index.ts","../src/client-ui.tsx"],"sourcesContent":["// dshloader version — keep in sync with package.json.\nexport const LOADER_VERSION = '1.2.0';\n\n// Prefix used in every console log / error so users can grep dshloader output.\nexport const LOG_PREFIX = '[dshloader]';\n","// Settings stable API (design.md §3.3.1 / §4.1 / §4.2).\n//\n// Two concerns are deliberately separated:\n// 1. naming/shape differences — handled by proxying to ctx.get('settings').\n// 2. access scope (security) — `exposeAllNamespaces` controls whether\n// `describe` returns only the official browser whitelist namespaces\n// (default, matches official behavior) or every registered namespace.\n//\n// Host-side writes always proxy through to the real settings service: host\n// plugin code is already trusted (it runs in the dsh Node process and could\n// call ctx.get('settings').update directly). The whitelist is a browser-side\n// default-deny boundary owned by dsh-host-apiproxy; the browser path is\n// covered separately by the client fetch interceptor (src/client.ts).\nimport { LOG_PREFIX } from '../version.js';\nimport type { CordisContext, SettingsAPI, SettingsResult, NamespaceView } from '../types.js';\n\n/**\n * Official browser-writable settings namespaces (dsh-host-apiproxy\n * WEB_SETTINGS_NAMESPACES), as documented in dsh-upstream-fixes/README.md.\n * Product namespaces and dynamic model-provider namespaces are not enumerable\n * without dsh internals; callers may extend this set via `extraWhitelist`.\n */\nexport const DEFAULT_WEB_SETTINGS_NAMESPACES = new Set([\n 'agent-loop',\n 'shell',\n 'locale',\n 'permission',\n 'ui-conversation',\n 'ui-theme',\n 'web-search-deepseek',\n]);\n\n/** A raw settings descriptor returned by the real settings service. */\ninterface SettingsDescriptor {\n ns: string;\n schema: any;\n value: any;\n base?: any;\n user?: any;\n applies?: any;\n secrets?: { path: string[]; set?: any }[];\n revision?: any;\n}\n\n/**\n * Shape a raw settings descriptor into the official NamespaceView wire shape\n * (mirrors dsh-upstream-fixes/lib/index.js `namespaceView`).\n */\nexport function toNamespaceView(descriptor: SettingsDescriptor): NamespaceView {\n const view: NamespaceView = {\n ns: String(descriptor.ns),\n schema: descriptor.schema,\n value: descriptor.value,\n ...(descriptor.base === undefined ? {} : { base: descriptor.base }),\n ...(descriptor.user === undefined ? {} : { user: descriptor.user }),\n applies: descriptor.applies,\n secrets: (descriptor.secrets ?? []).map((s) => ({ path: [...s.path], set: s.set })),\n revision: descriptor.revision,\n };\n return view;\n}\n\n/**\n * Map a thrown settings error into a SettingsResult, preserving the official\n * `settings-conflict` / `settings-rejected` classification.\n */\nexport function settingsErrorToResult(error: unknown, ns: string, method: string): SettingsResult {\n const isObject = error !== null && typeof error === 'object';\n const isConflict = isObject && ('expected' in error || 'actual' in error);\n if (isConflict) {\n const err = error as { message?: string; expected?: any; actual?: any };\n return {\n ok: false,\n code: 'settings-conflict',\n message: err.message ?? String(error),\n details: {\n ns,\n ...(err.expected === undefined ? {} : { expected: err.expected }),\n ...(err.actual === undefined ? {} : { actual: err.actual }),\n },\n };\n }\n return {\n ok: false,\n code: 'settings-rejected',\n message: error instanceof Error ? error.message : String(error),\n details: { ns, method },\n };\n}\n\n/**\n * Internal shape used while building the API: includes the private `_write`\n * helper so `update`/`replace`/`mutate` can share one implementation.\n */\ntype SettingsAPIBuilder = SettingsAPI & {\n _write(\n method: 'update' | 'replace' | 'mutate',\n ns: string,\n section: any,\n expectedRevision?: number,\n ): Promise<SettingsResult>;\n};\n\n/**\n * Build the `ctx.dshLoader.settings` stable API.\n */\nexport function createSettingsAPI(opts: {\n ctx: CordisContext;\n exposeAllNamespaces: boolean;\n whitelist?: Set<string>;\n /** The real `@deepseek-ai/dsh-settings` module, when it resolved at boot. */\n module?: {\n installSettingsSection?: (ctx: unknown, ns: unknown, schema: unknown, entry: unknown, hooks: unknown) => void;\n settingsNamespace?: (id: string) => unknown;\n SettingsConflictError?: new (...args: never[]) => Error;\n };\n}): SettingsAPI {\n const { ctx, exposeAllNamespaces, whitelist, module } = opts;\n const allowed = whitelist ?? DEFAULT_WEB_SETTINGS_NAMESPACES;\n\n function getSettings() {\n return ctx.get('settings');\n }\n\n function filterNamespaces(views: NamespaceView[]) {\n if (exposeAllNamespaces) return views;\n return views.filter((v) => allowed.has(String(v.ns)));\n }\n\n const api: SettingsAPIBuilder = {\n exposeAllNamespaces: Boolean(exposeAllNamespaces),\n\n /**\n * Register a settings namespace. Proxies to the real settings service's\n * `register(ns, schema, options)` and returns the owner scope\n * ({ get, watch }) — the same shape the official service returns.\n *\n * Unlike describe/update/replace/mutate, register is NOT filtered by the\n * whitelist: host plugin code is trusted and registering a namespace is\n * a composition-time act, not a browser-facing read/write.\n */\n register(ns, schema, options) {\n const settings = getSettings();\n if (settings === undefined || typeof settings.register !== 'function') {\n console.warn(`${LOG_PREFIX}:settings.register settings service unavailable`);\n return undefined;\n }\n return settings.register(ns, schema, options);\n },\n\n describe(options: { redactSecrets?: boolean } = {}) {\n const settings = getSettings();\n if (settings === undefined || typeof settings.describe !== 'function') {\n return [];\n }\n const redactSecrets = options.redactSecrets !== false;\n const descriptors = settings.describe({ redactSecrets }) as SettingsDescriptor[];\n const views = (descriptors ?? []).map(toNamespaceView);\n return filterNamespaces(views);\n },\n\n async _write(\n method: 'update' | 'replace' | 'mutate',\n ns: string,\n section: any,\n expectedRevision?: number,\n ): Promise<SettingsResult> {\n const settings = getSettings();\n if (settings === undefined) {\n return {\n ok: false,\n code: 'internal',\n message: `${LOG_PREFIX}:settings.${method} settings service unavailable`,\n details: { ns },\n };\n }\n try {\n if (method === 'update') await settings.update(ns, section, expectedRevision);\n else if (method === 'replace') await settings.replace(ns, section, expectedRevision);\n else await settings.mutate(ns, section, expectedRevision);\n } catch (error) {\n return settingsErrorToResult(error, ns, method);\n }\n const descriptor = (settings.describe({ redactSecrets: true }) as SettingsDescriptor[]).find(\n (d) => String(d.ns) === String(ns),\n );\n if (descriptor === undefined) {\n return {\n ok: false,\n code: 'internal',\n message: `${LOG_PREFIX}:settings.${method} namespace disposed after write`,\n details: { ns },\n };\n }\n return { ok: true, value: toNamespaceView(descriptor) };\n },\n\n update(ns, section, expectedRevision) {\n return api._write('update', ns, section, expectedRevision);\n },\n replace(ns, section, expectedRevision) {\n return api._write('replace', ns, section, expectedRevision);\n },\n mutate(ns, ops, expectedRevision) {\n return api._write('mutate', ns, ops, expectedRevision);\n },\n\n namespace(id: string) {\n const make = module?.settingsNamespace;\n if (typeof make !== 'function') {\n // No dsh-settings: hand back the raw id. Callers only pass it straight\n // back into this facade, so an opaque handle and a string behave alike.\n return id;\n }\n return make(id);\n },\n\n installSection(consumerCtx, ns, schema, entry, hooks) {\n const install = module?.installSettingsSection;\n if (typeof install !== 'function') {\n console.warn(\n `${LOG_PREFIX}:settings.installSection — @deepseek-ai/dsh-settings is unavailable; ` +\n 'the consumer keeps its composition entry (no user-settings layer)',\n );\n return false;\n }\n install(consumerCtx, ns, schema, entry, hooks);\n return true;\n },\n\n isConflictError(error: unknown) {\n const Ctor = module?.SettingsConflictError;\n if (typeof Ctor === 'function' && error instanceof Ctor) return true;\n // Structural fallback: dsh marks conflicts with expected/actual revisions.\n return (\n error !== null &&\n typeof error === 'object' &&\n ('expected' in error || 'actual' in error)\n );\n },\n };\n\n return api;\n}\n","// dsh 1.x host adapter (design.md §7.4 / §5.1 / §3.3.1).\n//\n// Absorbs the verified repairs from dsh-upstream-fixes:\n// - httpServer -> webServer single-hop service alias (fix 2).\n// - settings namespace whitelist bypass bridge, gated behind\n// `exposeAllNamespaces` (fix 5). Two independent paths:\n// * host side: ctx.dshLoader.settings.* (handled by services/settings.ts\n// + the bridge routes registered here for the browser fetch path).\n// * client side: fetch interceptor in src/client.ts.\n// - package-name aliasing for host-side CJS require (createRequire /\n// require()) — intercepts Module._resolveFilename so a renamed dsh\n// package resolves to its new name without plugin rebuilds.\n//\n// All registrations go through ctx.reflect.provide / ctx.effect so cordis\n// auto-recycles them when the dshloader fiber unloads (design.md §4.4). No\n// custom dispose() is needed for v1's covered capabilities.\nimport { LOG_PREFIX } from '../version.js';\nimport { toNamespaceView, settingsErrorToResult } from '../services/settings.js';\nimport type { CordisContext, AdapterFactory as Factory, HostAdapterConfig } from '../types.js';\n\n// Covers the real dsh release line (0.1.0-rc.x, verified against\n// dsh-upstream-fixes) and the anticipated 1.x line. The adapter name keeps\n// the design-doc label \"dsh-1-x\"; the behavior is identical across both\n// ranges since dsh-upstream-fixes confirms httpServer->webServer + settings\n// bridge work the same way on 0.1.0-rc.7.\nexport const supports = '>=0.1.0-rc.1 <2.0.0';\nexport const name = 'dsh-1-x';\n\n// Browser-facing bridge prefix; the client fetch interceptor (src/client.ts)\n// must use the same prefix.\nexport const BRIDGE_PREFIX = '/api/dshloader';\n\n// Host-side package-name aliases. Maps stable @dshloader/* names to the\n// real dsh package names for this version. Plugins should require() from\n// the stable names; the Module._resolveFilename hook maps them to the real\n// package. When dsh renames a host package, only this table changes.\n//\n// This intercepts CJS require() (including createRequire) via\n// Module._resolveFilename; ESM static imports are build-time resolved and\n// cannot be intercepted at runtime (use pnpm overrides / tsconfig paths\n// for those).\nexport const hostPackageAliases: Record<string, string> = {\n '@dsh-plugin/dsh-loader/tools': '@deepseek-ai/dsh-tools',\n '@dsh-plugin/dsh-loader/llm': '@deepseek-ai/dsh-llm',\n '@dsh-plugin/dsh-loader/agent': '@deepseek-ai/dsh-agent',\n '@dsh-plugin/dsh-loader/settings': '@deepseek-ai/dsh-settings',\n '@dsh-plugin/dsh-loader/timeout': '@deepseek-ai/dsh-timeout',\n '@dsh-plugin/dsh-loader/subagent': '@deepseek-ai/dsh-subagent',\n '@dsh-plugin/dsh-loader/credentials': '@deepseek-ai/dsh-credentials',\n '@dsh-plugin/dsh-loader/compaction-basic': '@deepseek-ai/dsh-compaction-basic',\n};\n\n/** Loosely-typed node:module NodeModule for the _resolveFilename hook. */\ninterface NodeModuleLike {\n _resolveFilename?: (...args: any[]) => string;\n}\n\n/**\n * Install a Module._resolveFilename hook that maps old package names to\n * new ones for CJS require() calls. Returns a dispose function that\n * removes the hook.\n */\nexport async function installHostPackageAliases(\n aliases: Record<string, string>,\n): Promise<() => void> {\n const entries = Object.entries(aliases);\n if (entries.length === 0) return () => {};\n const aliasMap = new Map(entries);\n // Lazy-import Module to avoid loading it in browser/test contexts.\n let Module: NodeModuleLike | undefined;\n try {\n const mod = await import('node:module');\n const nodeModule = mod.default ?? mod.Module ?? mod;\n Module = nodeModule as NodeModuleLike;\n } catch {\n return () => {};\n }\n if (!Module || typeof Module._resolveFilename !== 'function') return () => {};\n const original = Module._resolveFilename;\n const hooked = function dshloaderResolve(this: unknown, request: string, parent: unknown, ...rest: unknown[]) {\n const mapped = aliasMap.get(request);\n if (mapped !== undefined) return original.call(this, mapped, parent, ...rest);\n return original.call(this, request, parent, ...rest);\n };\n Module._resolveFilename = hooked;\n return () => {\n if (Module && Module._resolveFilename === hooked) Module._resolveFilename = original;\n };\n}\n\n/**\n * @param ctx cordis context\n * @param config\n */\nexport function create(ctx: CordisContext, config: HostAdapterConfig = {}): HostAdapterType {\n const exposeAllNamespaces = Boolean(config.exposeAllNamespaces);\n const packageAliases = { ...hostPackageAliases, ...(config.hostPackageAliases ?? {}) };\n\n async function apply() {\n // --- service alias: httpServer -> webServer (fix 2) ---\n if (ctx.get('httpServer') === undefined) {\n const webServer = ctx.get('webServer');\n if (webServer !== undefined) {\n ctx.reflect.provide('httpServer', webServer);\n console.log(`${LOG_PREFIX} aliased httpServer -> webServer`);\n }\n } else {\n console.log(`${LOG_PREFIX} httpServer already exists, skip alias`);\n }\n\n // --- host package-name aliases (CJS require interception) ---\n if (Object.keys(packageAliases).length > 0) {\n ctx.effect(\n () => installHostPackageAliases(packageAliases),\n 'dshloader: host package-name aliases',\n );\n console.log(`${LOG_PREFIX} installed host package aliases: ${Object.keys(packageAliases).join(', ')}`);\n }\n\n // --- settings bridge routes for the browser fetch path (fix 5, path 2) ---\n // Only registered when the profile explicitly opts in. The host-side\n // stable API (ctx.dshLoader.settings.*) is unaffected by this gate and\n // always available to host plugin code.\n if (exposeAllNamespaces) {\n ctx.effect(\n () => registerSettingsBridgeRoutes(ctx),\n 'dshloader: settings namespace bridge routes',\n );\n }\n }\n\n function dispose() {\n // No cordis-unaware resources held in v1; effect auto-recycle covers\n // everything registered in apply(). Implemented as a no-op to satisfy\n // the HostAdapter interface and future hot-swap scenarios.\n }\n\n return { supports, name, apply, dispose };\n}\n\ninterface HostAdapterType {\n supports: string;\n name: string;\n apply: () => Promise<void>;\n dispose: () => void;\n}\n\n/**\n * Register host bridge routes that the client fetch interceptor forwards\n * non-whitelisted settings requests to. Mirrors dsh-upstream-fixes/lib/index.js\n * `registerRoutes` (settings section).\n */\nfunction registerSettingsBridgeRoutes(ctx: CordisContext): () => void {\n const webServer = ctx.get('webServer') ?? ctx.get('httpServer');\n if (webServer === undefined || typeof webServer.register !== 'function') return () => {};\n return webServer.register({\n kind: 'prefix',\n path: BRIDGE_PREFIX,\n handler: (req: any, res: any) => {\n const json = (status: number, body: unknown) => {\n res.statusCode = status;\n res.setHeader('content-type', 'application/json');\n res.end(JSON.stringify(body));\n };\n const readBody = () =>\n new Promise<string>((done, fail) => {\n let body = '';\n req.on?.('data', (chunk: Buffer | string) => {\n body += chunk.toString('utf8');\n });\n req.on?.('end', () => done(body));\n req.on?.('error', fail);\n });\n const url = req.url ?? '/';\n const method = (req.method ?? 'GET').toUpperCase();\n const path = url.split('?')[0] ?? '/';\n\n void (async () => {\n try {\n // GET /api/dshloader/settings/describe — full redacted namespace list.\n if (method === 'GET' && (path === `${BRIDGE_PREFIX}/settings/describe` || path === `${BRIDGE_PREFIX}/settings/describe/`)) {\n const settings = ctx.get('settings');\n if (settings === undefined) {\n json(200, { ok: false, message: 'settings service unavailable' });\n return;\n }\n json(200, {\n ok: true,\n namespaces: settings.describe({ redactSecrets: true }).map(toNamespaceView),\n });\n return;\n }\n\n // POST /api/dshloader/settings/{update,mutate,replace} — write seam.\n const writeMatch = /^\\/api\\/dshloader\\/settings\\/(update|mutate|replace)$/.exec(path);\n if (method === 'POST' && writeMatch !== null) {\n const mode = writeMatch[1];\n let parsed: { ns?: unknown; section?: unknown; ops?: unknown; expectedRevision?: number } = {};\n try {\n parsed = JSON.parse(await readBody());\n } catch {\n /* keep {} */\n }\n const ns = typeof parsed.ns === 'string' ? parsed.ns : '';\n if (ns.length === 0) {\n json(200, {\n ok: true,\n result: {\n ok: false,\n code: 'settings-rejected',\n message: 'settings write needs a namespace',\n details: {},\n },\n });\n return;\n }\n const settings = ctx.get('settings');\n const result = await runSettingsWrite(\n settings,\n mode,\n ns,\n mode === 'mutate' ? parsed.ops : parsed.section,\n parsed.expectedRevision,\n );\n json(200, { ok: true, result });\n return;\n }\n\n json(404, { ok: false, message: 'not found' });\n } catch (error) {\n json(500, { ok: false, message: error instanceof Error ? error.message : String(error) });\n }\n })();\n },\n });\n}\n\nasync function runSettingsWrite(\n settings: any,\n mode: string,\n ns: string,\n section: unknown,\n expectedRevision?: number,\n) {\n if (settings === undefined) {\n return { ok: false, code: 'internal', message: 'settings service unavailable', details: {} };\n }\n try {\n if (mode === 'update') await settings.update(ns, section, expectedRevision);\n else if (mode === 'replace') await settings.replace(ns, section, expectedRevision);\n else await settings.mutate(ns, section, expectedRevision);\n } catch (error) {\n return settingsErrorToResult(error, ns, mode);\n }\n const descriptor = settings\n .describe({ redactSecrets: true })\n .find((d: { ns: unknown }) => String(d.ns) === String(ns));\n if (descriptor === undefined) {\n return { ok: false, code: 'internal', message: 'settings namespace disposed after write', details: { ns } };\n }\n return { ok: true, value: toNamespaceView(descriptor) };\n}\n","// Adapter registration (design.md §7.4). Imports every host adapter and\n// registers it on the provided AdapterRegistry. Kept as a function so tests\n// can build a fresh registry per case.\nimport * as dsh1x from './dsh-1-x.js';\nimport type { AdapterFactory } from '../types.js';\nimport type { AdapterRegistry } from '../registry.js';\n\n/** All host adapter factories, in registration order. */\nexport const hostAdapters: AdapterFactory[] = [\n { supports: dsh1x.supports, name: dsh1x.name, create: dsh1x.create },\n];\n\n/** Register every built-in host adapter onto a registry. */\nexport function registerHostAdapters(registry: AdapterRegistry): AdapterRegistry {\n for (const factory of hostAdapters) registry.register(factory);\n return registry;\n}\n\n// Client adapter metadata for dsh 1.x (consumed by src/client.ts).\n//\n// packageAliases serves TWO roles:\n// 1. **Stable name → real name** (primary): plugins import from stable\n// names like '@dshloader/ui-primitives' and the adapter maps them to\n// the real dsh package name for this version. When dsh renames a\n// package, only the adapter changes — plugin source and bundle stay\n// the same.\n// 2. **Old real name → new real name** (fallback): if a plugin bundle\n// was built before adopting stable names and still has\n// `require('@deepseek-ai/dsh-client-ui-primitives')` baked in, the\n// adapter can map the old real name to the new real name as a\n// transition measure.\nexport const clientAdapters = [\n {\n supports: dsh1x.supports,\n name: dsh1x.name,\n moduleAliases: {\n // deep source import that breaks when dsh ships no `src/` (fix 1).\n '@deepseek-ai/dsh-client-runtime/src/client/sessions/context-provenance.ts':\n '@deepseek-ai/dsh-client-runtime/client',\n // stable module name (design.md §3.3.3).\n 'dsh/runtime/context-provenance': '@deepseek-ai/dsh-client-runtime/client',\n },\n // Stable package names → real dsh package names for dsh 1.x.\n // Plugins import from @dsh-plugin/dsh-loader/* subpaths (e.g.\n // '@dsh-plugin/dsh-loader/ui-primitives'); the __ModuleLoader__\n // wrapper (installed by installClient) maps them to the real dsh\n // package before hitting the module table. When dsh renames a\n // package, only this table changes — plugin source and bundle stay\n // the same.\n packageAliases: {\n // Client UI component libraries\n '@dsh-plugin/dsh-loader/ui-primitives': '@deepseek-ai/dsh-client-ui-primitives',\n '@dsh-plugin/dsh-loader/ui-slots': '@deepseek-ai/dsh-client-ui-slots',\n '@dsh-plugin/dsh-loader/web-react': '@deepseek-ai/dsh-client-web-react',\n '@dsh-plugin/dsh-loader/schema-form': '@deepseek-ai/dsh-client-schema-form',\n '@dsh-plugin/dsh-loader/ui-settings': '@deepseek-ai/dsh-client-ui-settings/client',\n // Client runtime\n '@dsh-plugin/dsh-loader/runtime': '@deepseek-ai/dsh-client-runtime/client',\n },\n },\n];\n","// dshloader client bundle entry (design.md §3.5 / §4.3 / §7.3).\n//\n// Loaded in the `immediately` prefetch tier (package.json `dsh.client`).\n// Responsibilities:\n// 1. Mount `window.__dshLoader__` with `require` / `registerModuleAlias` /\n// `rpc.settings.*`.\n// 2. Register module-alias factories via `window.__ModuleLoader__.load` so\n// deep source imports (fix 1) and stable module names resolve to the\n// public runtime client entry.\n// 3. When `exposeAllNamespaces` is on, install a fetch interceptor that\n// merges non-whitelisted namespaces into `/api/settings.describe` and\n// routes non-whitelisted writes through the host bridge, echoing the\n// request `rpcId` in the `{ type: 'server-response', rpcId, result }`\n// envelope (fix 5, path 2 — mirrors dsh-upstream-fixes/lib/client.js).\n//\n// The module exports an `installClient` function for testability and runs an\n// IIFE at the bottom for the real browser bundle.\nimport { LOADER_VERSION, LOG_PREFIX } from './version.js';\nimport { clientAdapters } from './adapters/index.js';\nimport { BRIDGE_PREFIX } from './adapters/dsh-1-x.js';\n\n/** Browser-only globals dshloader relies on (typed loosely so the module compiles without DOM lib). */\ntype FetchImpl = (input: any, init?: any) => Promise<{ clone(): { json(): any }; json(): any }>;\ninterface DshLoaderWindowLike {\n fetch: FetchImpl;\n location?: { origin?: string };\n Response?: new (body?: string, init?: { status?: number; headers?: Record<string, string> }) => any;\n __ModuleLoader__?: {\n load(handoff: { id: string; factory: (require: (spec: string) => any) => any }): unknown;\n };\n __DSHLOADER_VERSION__?: string;\n __DSHLOADER_CONFIG__?: { exposeAllNamespaces?: boolean };\n __dshNativeRequire__?: (spec: string) => any;\n __dshLoader__?: unknown;\n}\n\ndeclare global {\n // Intentionally NOT declaring `window` here: this module must compile in BOTH\n // programs — the Node build (tsconfig.build.json → dist/client.js, which the\n // client tests import) with no DOM lib, and the browser program that also\n // compiles the React UI modules WITH lib.dom. Declaring `window` would\n // collide with lib.dom's own declaration in the latter, so the ambient window\n // is read through `globalThis` by {@link ambientWindow} instead.\n}\n\n/**\n * The ambient browser `window`, when this module runs in a browser-like realm.\n * Read off `globalThis` so no DOM lib and no global declaration is required.\n */\nfunction ambientWindow(): DshLoaderWindowLike | undefined {\n const scope = globalThis as { window?: unknown };\n const found = scope.window;\n return typeof found === 'object' && found !== null ? (found as DshLoaderWindowLike) : undefined;\n}\n\nexport class ModuleNotFoundError extends Error {\n specifier: string;\n\n constructor(specifier: string) {\n super(`${LOG_PREFIX} module not found: ${specifier}`);\n this.name = 'ModuleNotFoundError';\n this.specifier = specifier;\n }\n}\n\ninterface ClientAdapter {\n supports: string;\n name: string;\n moduleAliases?: Record<string, string>;\n packageAliases?: Record<string, string>;\n}\n\n/**\n * Pick the client adapter for the given dsh version. v1 ships a single\n * client adapter (dsh 1.x); when more are added, swap this for a semver-based\n * selection mirroring the host AdapterRegistry.\n */\nfunction pickClientAdapter(dshVersion?: string): ClientAdapter {\n return clientAdapters[0];\n}\n\ninterface CreateClientAPIOpts {\n dshVersion?: string;\n adapterVersion?: string;\n moduleAliases?: Record<string, string>;\n packageAliases?: Map<string, string> | Record<string, string>;\n requireImpl?: (spec: string) => any;\n fetchBridge?: {\n describe: () => Promise<any>;\n write: (mode: string, payload: object) => Promise<any>;\n };\n clientCtx?: { get?: (name: string) => any };\n}\n\n/**\n * Build the `window.__dshLoader__` API object.\n */\nexport function createClientAPI(opts: CreateClientAPIOpts = {}) {\n const aliases = new Map(Object.entries(opts.moduleAliases ?? {}));\n const requireImpl = opts.requireImpl ?? ((spec: string) => {\n throw new ModuleNotFoundError(spec);\n });\n const clientCtx = opts.clientCtx;\n // Reuse the Map from installClient when provided so registerPackageAlias\n // mutations are visible to the __ModuleLoader__ wrapper. Otherwise create\n // a fresh Map from a plain object.\n const packageAliases = opts.packageAliases instanceof Map\n ? opts.packageAliases\n : new Map(Object.entries(opts.packageAliases ?? {}));\n\n const api = {\n version: LOADER_VERSION,\n dshVersion: opts.dshVersion,\n adapterVersion: opts.adapterVersion,\n\n require(specifier: string) {\n if (typeof specifier !== 'string') throw new ModuleNotFoundError(String(specifier));\n const target = aliases.get(specifier);\n if (target === undefined) {\n throw new ModuleNotFoundError(specifier);\n }\n return requireImpl(target);\n },\n\n registerModuleAlias(alias: string, target: string) {\n aliases.set(alias, target);\n },\n\n /**\n * Register a package-name alias for the client module loader's\n * require(). When a plugin's bundle calls require('@old/pkg-name'),\n * the loader's wrapped require remaps it to '@new/pkg-name' before\n * hitting the module table. This lets dsh rename client packages\n * across versions without forcing plugin bundles to rebuild.\n */\n registerPackageAlias(oldName: string, newName: string) {\n packageAliases.set(oldName, newName);\n },\n\n /**\n * Read a client-side cordis service by name.\n * Proxies to `clientCtx.get(name)` — the same ctx.get plugins use\n * inside their client `apply(ctx)`, but exposed through the stable\n * dshloader surface so plugins don't depend on the cordis context\n * shape directly.\n *\n * Only available when dshloader's client apply() received a ctx\n * (cordis client boot). Returns undefined when ctx is not wired.\n */\n services: {\n get(name: string) {\n if (clientCtx === undefined || typeof clientCtx.get !== 'function') return undefined;\n return clientCtx.get(name);\n },\n },\n\n rpc: opts.fetchBridge\n ? {\n settings: {\n describe: () => opts.fetchBridge!.describe(),\n update: (ns: string, section: unknown) => opts.fetchBridge!.write('update', { ns, section }),\n replace: (ns: string, section: unknown) => opts.fetchBridge!.write('replace', { ns, section }),\n mutate: (ns: string, ops: unknown) => opts.fetchBridge!.write('mutate', { ns, ops }),\n },\n }\n : undefined,\n };\n\n return api;\n}\n\ninterface InstallClientOpts {\n window?: DshLoaderWindowLike;\n dshVersion?: string;\n exposeAllNamespaces?: boolean;\n requireImpl?: (spec: string) => any;\n hostBridgePrefix?: string;\n packageAliases?: Record<string, string>;\n clientCtx?: { get?: (name: string) => any };\n}\n\n/**\n * Install dshloader into a browser-like environment.\n */\nexport function installClient(opts: InstallClientOpts = {}) {\n const win = opts.window ?? ambientWindow();\n if (win === undefined) return undefined;\n\n const dshVersion = opts.dshVersion ?? win.__DSHLOADER_VERSION__;\n const adapter = pickClientAdapter(dshVersion);\n const moduleAliases = { ...(adapter.moduleAliases ?? {}) };\n // Merge adapter-declared package aliases with any passed via opts (opts\n // win on conflict, so tests / runtime can override adapter defaults).\n const packageAliases = new Map(Object.entries(adapter.packageAliases ?? {}));\n if (opts.packageAliases) {\n for (const [k, v] of Object.entries(opts.packageAliases)) packageAliases.set(k, v);\n }\n\n // fetch bridge (only meaningful when exposeAllNamespaces is on).\n const exposeAllNamespaces = Boolean(\n opts.exposeAllNamespaces ?? win.__DSHLOADER_CONFIG__?.exposeAllNamespaces,\n );\n const bridgePrefix = opts.hostBridgePrefix ?? BRIDGE_PREFIX;\n\n const fetchBridge = exposeAllNamespaces\n ? {\n describe: () =>\n win.fetch(`${bridgePrefix}/settings/describe`, { headers: { accept: 'application/json' } }).then((r) => r.json()),\n write: (mode: string, payload: object) =>\n win.fetch(`${bridgePrefix}/settings/${mode}`, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(payload),\n }).then((r) => r.json()),\n }\n : undefined;\n\n const api = createClientAPI({\n dshVersion,\n adapterVersion: adapter.supports,\n moduleAliases,\n packageAliases,\n requireImpl: opts.requireImpl ?? ((spec) => win.__dshNativeRequire__?.(spec)),\n fetchBridge,\n clientCtx: opts.clientCtx,\n });\n win.__dshLoader__ = api;\n\n // Wrap __ModuleLoader__.load so every factory's require() function\n // applies package-name aliases before hitting the module table. This\n // must happen BEFORE registering module-alias factories below, because\n // those factories also receive the wrapped require.\n const loader = win.__ModuleLoader__;\n if (loader && typeof loader.load === 'function') {\n const originalLoad = loader.load.bind(loader);\n loader.load = function dshloaderLoad(handoff: { id: string; factory: (require: (spec: string) => any) => any }) {\n const wrappedFactory = (require: (spec: string) => any) => {\n const aliasedRequire = (spec: string) => {\n const mapped = packageAliases.get(spec);\n return require(mapped ?? spec);\n };\n return handoff.factory(aliasedRequire);\n };\n return originalLoad({ id: handoff.id, factory: wrappedFactory });\n };\n }\n\n // Register module-alias factories with the client module loader (fix 1).\n if (loader && typeof loader.load === 'function') {\n for (const [aliasId, target] of Object.entries(moduleAliases)) {\n loader.load({\n id: aliasId,\n factory: (require: (spec: string) => any) => {\n const mod = require(target);\n // Preserve the deep import's expected named export shape.\n if (aliasId.endsWith('context-provenance.ts') || aliasId.endsWith('context-provenance')) {\n return { contextProvenance: mod.contextProvenance };\n }\n return mod;\n },\n });\n }\n }\n\n if (exposeAllNamespaces) {\n installSettingsFetchInterceptor(win, bridgePrefix);\n console.warn(`${LOG_PREFIX} exposeAllNamespaces enabled: bypassing official settings whitelist`);\n }\n\n return api;\n}\n\n/**\n * Fetch interceptor for settings namespace whitelist bypass (fix 5, path 2).\n * Mirrors dsh-upstream-fixes/lib/client.js (127-223).\n *\n * - /api/settings.describe: merge non-whitelisted namespaces from the host\n * bridge into the official response (rpcId/official fields preserved).\n * - /api/settings.{update,mutate,replace}: route writes for namespaces the\n * official proxy does NOT expose through the host bridge, and rebuild the\n * response envelope as `{ type: 'server-response', rpcId, result }` so the\n * official client can correlate the response with the request.\n */\nexport function installSettingsFetchInterceptor(\n win: DshLoaderWindowLike,\n bridgePrefix = BRIDGE_PREFIX,\n): () => void {\n if (typeof win.fetch !== 'function') return () => {};\n const originalFetch = win.fetch;\n /** Namespaces the official proxy itself exposed (learned from describe). */\n const officialExposed = new Set<string>();\n\n win.fetch = async function dshloaderFetch(this: unknown, input: any, init?: any) {\n let pathname = '';\n try {\n const urlLike = typeof input === 'string' ? input : (input as { url?: string }).url;\n pathname = new URL(urlLike as string, win.location?.origin ?? 'http://localhost').pathname;\n } catch {\n pathname = String(input).split('?')[0];\n }\n const method = (init?.method ?? 'GET').toUpperCase();\n\n // describe: merge bridge namespaces into the official response.\n if (pathname === '/api/settings.describe') {\n const response = await originalFetch.call(this, input, init);\n try {\n const body = await response.clone().json();\n const namespaces = body?.result?.value?.namespaces;\n if (!Array.isArray(namespaces)) return response;\n for (const row of namespaces) {\n if (typeof row?.ns === 'string') officialExposed.add(row.ns);\n }\n const extra = await originalFetch.call(this, `${bridgePrefix}/settings/describe`, {\n headers: { accept: 'application/json' },\n });\n const extraBody = await extra.json();\n if (extraBody?.ok !== true || !Array.isArray(extraBody.namespaces)) return response;\n const seen = new Set(namespaces.map((row: { ns: string }) => row.ns));\n const merged = [...namespaces, ...extraBody.namespaces.filter((row: { ns: string }) => !seen.has(row.ns))];\n const ResponseCtor = win.Response!;\n return new ResponseCtor(\n JSON.stringify({ ...body, result: { ...body.result, value: { ...body.result.value, namespaces: merged } } }),\n { status: 200, headers: { 'content-type': 'application/json' } },\n );\n } catch {\n return response;\n }\n }\n\n // writes: route non-whitelisted namespaces through the bridge, echo rpcId.\n if (\n (pathname === '/api/settings.update' || pathname === '/api/settings.mutate' || pathname === '/api/settings.replace') &&\n method === 'POST'\n ) {\n let rpcId: unknown = null;\n let payload: { ns?: string; [k: string]: unknown } | null = null;\n try {\n const parsed = JSON.parse(String(init?.body ?? '{}'));\n rpcId = parsed.rpcId;\n payload = parsed.payload;\n } catch {\n /* fall through to the original endpoint */\n }\n const ns = typeof payload?.ns === 'string' ? payload.ns : '';\n if (rpcId !== null && ns !== '' && officialExposed.size > 0 && !officialExposed.has(ns)) {\n try {\n const mode = pathname.slice('/api/settings.'.length);\n const res = await originalFetch.call(this, `${bridgePrefix}/settings/${mode}`, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(payload),\n });\n const body = await res.json();\n if (body?.result) {\n const ResponseCtor = win.Response!;\n return new ResponseCtor(\n JSON.stringify({ type: 'server-response', rpcId, result: body.result }),\n { status: 200, headers: { 'content-type': 'application/json' } },\n );\n }\n } catch {\n /* fall back to the original endpoint */\n }\n }\n }\n\n return originalFetch.call(this, input, init);\n };\n\n return () => {\n win.fetch = originalFetch;\n };\n}\n\n// ── cordis client-plugin entry ─────────────────────────────────────────\n// dsh's client boot applies every registered bundle as a cordis plugin:\n// the module must expose `apply` (third-party plugins / dsh-client-runtime\n// all do `exports.apply = apply`). Without it the client boot fails with\n// \"invalid plugin, expect function or object with an \\\"apply\\\" method\".\n// `installClient` mounts window.__dshLoader__, registers module aliases,\n// wires the client cordis ctx for `services.get`, and (when opted in)\n// installs the settings fetch interceptor.\nexport const name = '@dsh-plugin/dsh-loader'\nexport const inject: string[] = []\nexport function apply(ctx: { get?: (name: string) => any }) {\n const win = ambientWindow();\n if (win !== undefined) installClient({ window: win, clientCtx: ctx });\n}\n","/**\n * The dsh-1-x SHELL ANCHOR TABLE.\n *\n * Every entry is a selector some plugin in this family currently hardcodes.\n * Centralising them here is the whole point of `dshLoader.ui`: when dsh moves\n * its DOM, this table changes and the plugins do not.\n *\n * Each anchor records WHO needed it and WHAT it was before, so a future\n * maintainer can trace an anchor back to the behaviour it supports.\n *\n * @module @dsh-plugin/dsh-loader/ui/anchors\n */\nimport type { AnchorSpec } from './slots.js';\n\n/** Query helper that tolerates an invalid selector (returns nothing). */\nfunction all(selector: string): () => Iterable<Element> {\n return () => {\n if (typeof document === 'undefined') return [];\n try {\n return document.querySelectorAll(selector);\n } catch {\n return [];\n }\n };\n}\n\n/** Anchor names dshloader ships for the dsh 1.x shell. */\nexport const ANCHOR_NAMES = [\n 'conversation.status',\n 'conversation.column',\n 'shell.overlay',\n 'desktop.detailsSurface',\n 'layout.frame',\n 'settings.nav',\n] as const;\n\n/** One of the built-in anchor names. */\nexport type BuiltinAnchor = (typeof ANCHOR_NAMES)[number];\n\n/**\n * The built-in anchors for dsh 1.x (verified against dsh 0.1.0-rc.6).\n *\n * Provenance of each selector:\n *\n * - `conversation.status` — dsh-thought-buddy, `src/client/index.ts:632-637`:\n * `[data-conversation-scroll] [role=\"status\"]` with a whole-document\n * `[role=\"status\"]` fallback. Callers add their own `accept` (thought-buddy\n * matches the status text) via {@link AnchorSpec.accept} on a redefinition,\n * or filter in `MountSpec.when`.\n * - `conversation.column` — dsh-better-sidebar, `src/client/Sidebar.tsx:396`:\n * `#root [data-slot=\"conversation\"]`.\n * - `shell.overlay` — dsh-code-review, `src/client.ts:1930` / `:2528`:\n * `[data-shell-overlay]`.\n * - `desktop.detailsSurface` — dsh-code-review, `src/client.ts:1957`:\n * `.dshDesktopDetailsSurface`. A CSS-module-adjacent CLASS name and therefore\n * the most fragile anchor in the table; kept because the behaviour needs it.\n * - `layout.frame` — dsh-code-review, `src/client.ts:1176` / `:1209` / `:1244`:\n * the frame whose `style.gridTemplateColumns` carries the sidebar width and\n * whose `data-sidebar-collapsed` attribute carries the collapsed state. This\n * anchor is READ (via `ui.hosts('layout.frame')`), never mounted into.\n * - `settings.nav` — dsh-better-sidebar, `src/client/settings-nav-icon.ts`:\n * the settings navigation list that gets an icon synced into it.\n */\nexport const BUILTIN_ANCHORS: Record<BuiltinAnchor, AnchorSpec> = {\n 'conversation.status': {\n describe: 'Conversation turn-status strip ([data-conversation-scroll] [role=\"status\"])',\n find: all('[data-conversation-scroll] [role=\"status\"]'),\n fallback: all('[role=\"status\"]'),\n insert: 'prepend',\n },\n 'conversation.column': {\n describe: 'Conversation centre column (#root [data-slot=\"conversation\"])',\n find: all('#root [data-slot=\"conversation\"]'),\n insert: 'append',\n },\n 'shell.overlay': {\n describe: 'Shell overlay host ([data-shell-overlay])',\n find: all('[data-shell-overlay]'),\n insert: 'append',\n },\n 'desktop.detailsSurface': {\n describe: 'Desktop details surface (.dshDesktopDetailsSurface) — class-based, fragile',\n find: all('.dshDesktopDetailsSurface'),\n insert: 'append',\n },\n 'layout.frame': {\n describe: 'Layout frame carrying sidebar width / collapsed state (read-only anchor)',\n find: all('[data-sidebar-collapsed], [data-shell-frame]'),\n insert: 'append',\n },\n 'settings.nav': {\n describe: 'Settings navigation list',\n find: all('[data-settings-nav]'),\n fallback: all('[role=\"tablist\"]'),\n insert: 'append',\n },\n};\n\n/** Read the sidebar layout state from the `layout.frame` anchor. */\nexport interface LayoutFrameState {\n /** Whether the shell reports the sidebar as collapsed. */\n collapsed: boolean;\n /** First `px` value of the frame's grid template, when present. */\n firstColumnPx: number | undefined;\n}\n\n/**\n * Project one `layout.frame` host into {@link LayoutFrameState}.\n *\n * Encapsulates the `style.gridTemplateColumns` parsing dsh-code-review does at\n * `src/client.ts:1176`, so the regex lives with the anchor it belongs to.\n */\nexport function readLayoutFrame(host: Element): LayoutFrameState {\n const collapsed = host.hasAttribute('data-sidebar-collapsed');\n let firstColumnPx: number | undefined;\n const style = (host as HTMLElement).style;\n const template = typeof style?.gridTemplateColumns === 'string' ? style.gridTemplateColumns : '';\n const match = /^\\s*([\\d.]+)px/.exec(template);\n if (match !== null) {\n const value = Number.parseFloat(match[1]);\n if (Number.isFinite(value)) firstColumnPx = value;\n }\n return { collapsed, firstColumnPx };\n}\n","/**\n * The dshloader UI SLOT engine (`ctx.dshLoader.ui` / `__dshLoader__.ui`).\n *\n * dsh's Web shell offers official slots for a few places (`settings.section`,\n * `conversation.chat.node`, …) but not for everything plugins need to decorate.\n * Today four plugins in this family each hand-roll the same DOM-injection\n * boilerplate against hardcoded shell selectors:\n *\n * - dsh-thought-buddy → `[data-conversation-scroll] [role=\"status\"]`\n * - dsh-auxiliary → the Models page's editable model rows\n * - dsh-code-review → `[data-shell-overlay]`, `.dshDesktopDetailsSurface`\n * - dsh-better-sidebar → `#root [data-slot=\"conversation\"]`, theme root, …\n *\n * Every one of them re-implements: a MutationObserver, requestAnimationFrame\n * coalescing, an idempotence guard, self-healing after a React re-render, and\n * teardown. This module implements that ONCE and moves the shell selectors into\n * a named ANCHOR TABLE the version adapter owns — so when dsh moves its DOM,\n * one anchor entry changes instead of four plugins.\n *\n * What it cannot do: invent an anchor that no longer exists. A vanished anchor\n * turns N silent breakages into ONE diagnosable one (`ui.diagnose()`), which is\n * the honest goal — DOM injection is centralised here, not made robust. The\n * durable fix stays \"get the anchor promoted to an official slot\".\n *\n * @module @dsh-plugin/dsh-loader/ui/slots\n */\nimport * as React from 'react';\nimport { createRoot, type Root } from 'react-dom/client';\n\n/** Where a mount node is placed relative to its host element. */\nexport type InsertMode = 'prepend' | 'append' | 'before' | 'after';\n\n/** How the active adapter locates one shell anchor. */\nexport interface AnchorSpec {\n /** Human-readable description, used by {@link UiAPI.diagnose}. */\n describe: string;\n /** Primary locator. Return every element that should host a mount. */\n find: () => Iterable<Element>;\n /**\n * Fallback locator, tried only when `find` yields nothing. Lets an anchor\n * survive a narrow selector going stale (the pattern thought-buddy uses:\n * scoped selector first, whole-document second).\n */\n fallback?: () => Iterable<Element>;\n /** Extra predicate a candidate must satisfy (e.g. matching text content). */\n accept?: (host: Element) => boolean;\n /** Placement of the mount node. Defaults to `'append'`. */\n insert?: InsertMode;\n /** Tag name for the generated mount node. Defaults to `'span'`. */\n tagName?: string;\n}\n\n/** One plugin-supplied mount against an anchor. */\nexport interface MountSpec {\n /**\n * Unique mount id, `'<plugin>:<what>'`. Doubles as the `data-dshl-slot`\n * attribute value that makes mounting idempotent.\n */\n id: string;\n /**\n * Populate the mount node. Called once per host; return a cleanup that\n * releases whatever was created.\n */\n render: (mount: HTMLElement, host: Element) => (() => void) | void;\n /** Skip this host when the predicate returns false. */\n when?: (host: Element) => boolean;\n}\n\n/** A React flavour of {@link MountSpec}. */\nexport interface ReactMountSpec {\n /** Unique mount id, `'<plugin>:<what>'`. */\n id: string;\n /** Component rendered into the mount node; receives the host element. */\n component: React.ComponentType<{ host: Element }>;\n /** Skip this host when the predicate returns false. */\n when?: (host: Element) => boolean;\n}\n\n/** One live mount instance. */\ninterface Instance {\n mount: HTMLElement;\n cleanup: (() => void) | undefined;\n}\n\n/** Diagnostics for one registered anchor. */\nexport interface AnchorDiagnostic {\n anchor: string;\n describe: string;\n /** Hosts the primary locator currently finds. */\n hosts: number;\n /** Whether the fallback locator had to be used. */\n usedFallback: boolean;\n /** Mount ids currently registered against this anchor. */\n mounts: string[];\n /** Live mount instances across all hosts. */\n live: number;\n}\n\n/** The `ui` facade. */\nexport interface UiAPI {\n /**\n * Register (or replace) an anchor. The adapter seeds the built-ins at boot;\n * a plugin may add its own for shell areas dshloader does not know yet.\n * @returns a disposer removing the anchor and unmounting everything on it.\n */\n defineAnchor(name: string, spec: AnchorSpec): () => void;\n /** Anchor names currently registered. */\n anchors(): string[];\n /**\n * The elements an anchor currently resolves to. Use this for anchors that are\n * READ rather than decorated — e.g. reading the layout frame's collapsed\n * attribute or grid width instead of mounting into it.\n */\n hosts(anchor: string): Element[];\n /**\n * Subscribe to \"the shell's DOM has settled\": called once per coalesced\n * mutation batch, on the same observer and the same rAF frame the mount sweep\n * uses.\n *\n * This exists for injections whose HOST IDENTIFICATION is itself business\n * logic and therefore does not fit the anchor model — dsh-auxiliary's model\n * catalog is the motivating case: it cross-references `aria-label` inputs\n * against a provider directory, re-reads settings on a debounce, and also\n * listens for `input` events, so an `AnchorSpec.find()` could never express\n * it. Such a caller keeps its own sweep but stops running a second\n * MutationObserver over the whole document.\n *\n * The listener MUST be idempotent: it is invoked again after any batch,\n * including batches its own writes caused.\n *\n * @returns an unsubscribe function.\n */\n onDomSettled(listener: () => void): () => void;\n /**\n * Mount imperative content on every element an anchor resolves to, now and\n * whenever the shell re-renders. Idempotent per (host, mount id).\n * @returns a disposer unmounting every instance of this mount.\n */\n mount(anchor: string, spec: MountSpec): () => void;\n /**\n * Mount a React component on every element an anchor resolves to. A React\n * root is created per host and unmounted on teardown.\n * @returns a disposer unmounting every instance of this mount.\n */\n mountReact(anchor: string, spec: ReactMountSpec): () => void;\n /** Snapshot of anchor health — the single place to look when injection stops working. */\n diagnose(): AnchorDiagnostic[];\n /** Stop observing and unmount everything (called by the loader's own teardown). */\n destroy(): void;\n}\n\n/** Attribute marking a generated mount node (and making re-mount idempotent). */\nconst SLOT_ATTR = 'data-dshl-slot';\n\n/** Options for {@link createUiAPI}. */\nexport interface CreateUiOptions {\n /** Root to observe. Defaults to `document.documentElement`. */\n observeRoot?: Element;\n /** Diagnostic sink; defaults to `console.warn`. */\n warn?: (message: string) => void;\n}\n\n/**\n * Build the `ui` facade with its own observer. One engine serves every anchor\n * and every mount, so the shell is observed exactly once regardless of how many\n * plugins inject.\n */\nexport function createUiAPI(options: CreateUiOptions = {}): UiAPI {\n const warn = options.warn ?? ((message: string) => console.warn(message));\n const anchors = new Map<string, AnchorSpec>();\n /** anchor name → mount id → spec */\n const mounts = new Map<string, Map<string, MountSpec>>();\n /** anchor name → mount id → host → instance */\n const live = new Map<string, Map<string, Map<Element, Instance>>>();\n /** Anchors whose primary locator came up empty on the last sweep. */\n const fellBack = new Set<string>();\n /** `onDomSettled` subscribers, notified once per coalesced batch. */\n const settledListeners = new Set<() => void>();\n\n let observer: MutationObserver | undefined;\n let scheduled = false;\n let destroyed = false;\n\n const hasDom = (): boolean => typeof document !== 'undefined' && typeof MutationObserver !== 'undefined';\n\n /** Resolve an anchor to its host elements, recording fallback use. */\n const resolve = (name: string, spec: AnchorSpec): Element[] => {\n const collect = (source: (() => Iterable<Element>) | undefined): Element[] => {\n if (source === undefined) return [];\n try {\n return [...source()];\n } catch {\n return [];\n }\n };\n let hosts = collect(spec.find);\n if (hosts.length === 0) {\n const alt = collect(spec.fallback);\n if (alt.length > 0) {\n fellBack.add(name);\n hosts = alt;\n } else {\n fellBack.delete(name);\n }\n } else {\n fellBack.delete(name);\n }\n if (spec.accept !== undefined) {\n hosts = hosts.filter(host => {\n try {\n return spec.accept!(host);\n } catch {\n return false;\n }\n });\n }\n // De-duplicate: the primary and fallback locators may overlap.\n return [...new Set(hosts)];\n };\n\n /** Insert a freshly created mount node relative to its host. */\n const place = (host: Element, node: HTMLElement, mode: InsertMode): void => {\n switch (mode) {\n case 'prepend':\n host.insertBefore(node, host.firstChild);\n return;\n case 'before':\n host.parentNode?.insertBefore(node, host);\n return;\n case 'after':\n host.parentNode?.insertBefore(node, host.nextSibling);\n return;\n default:\n host.appendChild(node);\n }\n };\n\n /** Tear down one instance, containing any cleanup failure. */\n const teardown = (instance: Instance): void => {\n try {\n instance.cleanup?.();\n } catch (error) {\n warn(`[dshloader.ui] mount cleanup threw: ${error instanceof Error ? error.message : String(error)}`);\n }\n if (instance.mount.parentNode !== null) {\n instance.mount.parentNode.removeChild(instance.mount);\n }\n };\n\n const instancesFor = (anchor: string, mountId: string): Map<Element, Instance> => {\n let byMount = live.get(anchor);\n if (byMount === undefined) {\n byMount = new Map();\n live.set(anchor, byMount);\n }\n let byHost = byMount.get(mountId);\n if (byHost === undefined) {\n byHost = new Map();\n byMount.set(mountId, byHost);\n }\n return byHost;\n };\n\n /** One reconciliation pass over every anchor × mount. */\n const sweep = (): void => {\n if (destroyed || !hasDom()) return;\n for (const [name, spec] of anchors) {\n const specs = mounts.get(name);\n if (specs === undefined || specs.size === 0) continue;\n const hosts = resolve(name, spec);\n const insert = spec.insert ?? 'append';\n const tagName = spec.tagName ?? 'span';\n\n for (const [mountId, mountSpec] of specs) {\n const instances = instancesFor(name, mountId);\n\n // Drop instances whose host left the document, or whose node was\n // detached by a shell re-render (the latter is re-created below).\n for (const [host, instance] of [...instances]) {\n if (!host.isConnected || !instance.mount.isConnected) {\n teardown(instance);\n instances.delete(host);\n }\n }\n\n for (const host of hosts) {\n if (instances.has(host)) continue;\n if (mountSpec.when !== undefined) {\n try {\n if (!mountSpec.when(host)) continue;\n } catch {\n continue;\n }\n }\n // Idempotence net: a node with our slot id already inside the host\n // (e.g. left over from a previous engine) means \"already mounted\".\n if (host.querySelector(`[${SLOT_ATTR}=\"${mountId}\"]`) !== null) continue;\n\n const node = document.createElement(tagName);\n node.setAttribute(SLOT_ATTR, mountId);\n try {\n place(host, node, insert);\n } catch (error) {\n warn(`[dshloader.ui] could not place \"${mountId}\" on anchor \"${name}\": ${error instanceof Error ? error.message : String(error)}`);\n continue;\n }\n let cleanup: (() => void) | undefined;\n try {\n cleanup = mountSpec.render(node, host) ?? undefined;\n } catch (error) {\n warn(`[dshloader.ui] mount \"${mountId}\" render threw: ${error instanceof Error ? error.message : String(error)}`);\n if (node.parentNode !== null) node.parentNode.removeChild(node);\n continue;\n }\n instances.set(host, { mount: node, cleanup });\n }\n }\n }\n };\n\n /** Coalesce mutation bursts into one sweep per frame. */\n const schedule = (): void => {\n if (scheduled || destroyed) return;\n scheduled = true;\n const run = (): void => {\n scheduled = false;\n sweep();\n // Notify DOM-settled subscribers after the mount sweep, so a listener that\n // inspects the document sees this batch's mounts already in place.\n for (const listener of [...settledListeners]) {\n try {\n listener();\n } catch (error) {\n warn(\n `[dshloader.ui] onDomSettled listener threw: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n };\n if (typeof requestAnimationFrame === 'function') requestAnimationFrame(run);\n else setTimeout(run, 16);\n };\n\n /** Start observing on first use; a single observer serves every anchor. */\n const ensureObserver = (): void => {\n if (observer !== undefined || destroyed || !hasDom()) return;\n const root = options.observeRoot ?? document.documentElement;\n observer = new MutationObserver(schedule);\n observer.observe(root, { childList: true, subtree: true });\n };\n\n const removeAllFor = (anchor: string, mountId?: string): void => {\n const byMount = live.get(anchor);\n if (byMount === undefined) return;\n const ids = mountId === undefined ? [...byMount.keys()] : [mountId];\n for (const id of ids) {\n const byHost = byMount.get(id);\n if (byHost === undefined) continue;\n for (const instance of byHost.values()) teardown(instance);\n byHost.clear();\n byMount.delete(id);\n }\n };\n\n return {\n defineAnchor(name, spec) {\n anchors.set(name, spec);\n ensureObserver();\n schedule();\n return () => {\n removeAllFor(name);\n anchors.delete(name);\n mounts.delete(name);\n live.delete(name);\n fellBack.delete(name);\n };\n },\n\n anchors() {\n return [...anchors.keys()];\n },\n\n hosts(anchor) {\n const spec = anchors.get(anchor);\n return spec === undefined ? [] : resolve(anchor, spec);\n },\n\n onDomSettled(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('dshloader.ui.onDomSettled: listener must be a function');\n }\n settledListeners.add(listener);\n // Start observing even when no anchor is registered: a caller may use only\n // this primitive and never mount anything.\n ensureObserver();\n schedule();\n return () => {\n settledListeners.delete(listener);\n };\n },\n\n mount(anchor, spec) {\n if (typeof spec.id !== 'string' || spec.id.length === 0) {\n throw new TypeError('dshloader.ui.mount: spec.id is required');\n }\n if (!anchors.has(anchor)) {\n warn(\n `[dshloader.ui] mount \"${spec.id}\" targets unknown anchor \"${anchor}\" — ` +\n `known anchors: ${[...anchors.keys()].join(', ') || '(none)'}. ` +\n 'The mount stays registered and activates if the anchor is defined later.',\n );\n }\n let specs = mounts.get(anchor);\n if (specs === undefined) {\n specs = new Map();\n mounts.set(anchor, specs);\n }\n if (specs.has(spec.id)) {\n // Re-register (HMR): drop the old instances first so render runs fresh.\n removeAllFor(anchor, spec.id);\n }\n specs.set(spec.id, spec);\n ensureObserver();\n schedule();\n return () => {\n removeAllFor(anchor, spec.id);\n mounts.get(anchor)?.delete(spec.id);\n };\n },\n\n mountReact(anchor, spec) {\n const Component = spec.component;\n return this.mount(anchor, {\n id: spec.id,\n when: spec.when,\n render: (node, host) => {\n let root: Root | undefined;\n try {\n root = createRoot(node);\n root.render(React.createElement(Component, { host }));\n } catch (error) {\n warn(`[dshloader.ui] React mount \"${spec.id}\" failed: ${error instanceof Error ? error.message : String(error)}`);\n return undefined;\n }\n return () => {\n // Unmount runs from a mutation sweep or plugin teardown, never from\n // inside a React commit, so a synchronous unmount is safe here.\n try {\n root?.unmount();\n } catch {\n /* the root may already be gone with its container */\n }\n };\n },\n });\n },\n\n diagnose() {\n const out: AnchorDiagnostic[] = [];\n for (const [name, spec] of anchors) {\n const hosts = resolve(name, spec);\n const specs = mounts.get(name);\n let liveCount = 0;\n const byMount = live.get(name);\n if (byMount !== undefined) for (const byHost of byMount.values()) liveCount += byHost.size;\n out.push({\n anchor: name,\n describe: spec.describe,\n hosts: hosts.length,\n usedFallback: fellBack.has(name),\n mounts: specs === undefined ? [] : [...specs.keys()],\n live: liveCount,\n });\n }\n return out;\n },\n\n destroy() {\n destroyed = true;\n observer?.disconnect();\n observer = undefined;\n settledListeners.clear();\n for (const anchor of [...live.keys()]) removeAllFor(anchor);\n live.clear();\n mounts.clear();\n anchors.clear();\n fellBack.clear();\n },\n };\n}\n","/**\n * Design tokens and the idempotent stylesheet injector shared by every\n * dshloader UI component.\n *\n * Tokens are the DSH shell's own CSS custom properties, each paired with a\n * fallback so a component still renders sanely when the shell changes or the\n * plugin is previewed outside it. The names were harvested from the shell\n * styling the plugins in this family already rely on; when dsh renames one,\n * this file is the single place to fix.\n *\n * @module @dsh-plugin/dsh-loader/ui/style\n */\n\n/** `var(--name, fallback)` — a token reference that degrades instead of breaking. */\nexport function token(name: string, fallback: string): string {\n return `var(${name}, ${fallback})`;\n}\n\n/** The DSH shell tokens dshloader components consume. */\nexport const T = {\n /** Primary body text. */\n labelPrimary: token('--dsw-alias-label-primary', '#1a1a1a'),\n /** Secondary / supporting text. */\n labelSecondary: token('--dsw-alias-label-secondary', '#4a4a4a'),\n /** Tertiary text (hints, units). */\n labelTertiary: token('--dsw-alias-label-tertiary', '#8a8a8a'),\n /** Caption / disabled text. */\n labelCaption: token('--dsw-alias-label-caption', '#a8a8a8'),\n /** Page / card background. */\n bgBase: token('--dsw-alias-bg-base', '#ffffff'),\n /** Raised surface inside a page (shell layer 1). */\n bgLayer1: token('--dsw-alias-bg-layer-1', 'rgba(127,127,127,0.06)'),\n /** Subtle raised surface. */\n bgSubtle: token('--dsw-alias-bg-subtle', 'rgba(127,127,127,0.06)'),\n /** Hover wash for interactive rows. */\n bgHover: token('--dsw-alias-bg-hover', 'rgba(127,127,127,0.10)'),\n /** Default control border. */\n border: token('--dsw-alias-border-l2', '#d9d9d9'),\n /** Lighter divider. */\n borderSubtle: token('--dsw-alias-border-l1', '#ececec'),\n /** Primary button fill — the shell's own button colour, NOT the brand accent. */\n buttonPrimaryFill: token('--dsw-alias-button-primary-fill', '#4f7cff'),\n /** Text placed on top of {@link buttonPrimaryFill}. */\n buttonPrimaryForeground: token('--dsw-alias-label-primary-foreground', '#ffffff'),\n /** Brand accent (checked states, focus rings). */\n accent: token('--dsw-alias-brand-primary', '#4f7cff'),\n /** Accent text placed on top of the accent fill. */\n accentOn: token('--dsw-alias-brand-on-primary', '#ffffff'),\n /** Destructive accent. */\n danger: token('--dsw-alias-status-danger', '#e5484d'),\n /** Success state (saved confirmations). */\n success: token('--dsw-alias-state-success-primary', '#2e7d32'),\n /** Monospace stack for code / paths. */\n fontCode: token('--ds-font-family-code', 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace'),\n} as const;\n\n/**\n * Shared control geometry so every dshloader control lines up.\n *\n * The values mirror the shell's native settings-page metrics (as established by\n * dsh-auxiliary's section): pill-shaped primary buttons at height 32, inputs at\n * height 28 with radius 6, cards with radius 10 and padding 16.\n */\nexport const G = {\n /** Control height for inputs / selects. */\n controlHeight: 28,\n /** Compact control height. */\n controlHeightSm: 24,\n /** Primary button height (the shell's buttons run taller than inputs). */\n buttonHeight: 32,\n /** Standard corner radius (inputs). */\n radius: 6,\n /** Card corner radius. */\n cardRadius: 10,\n /** Pill radius (primary buttons, switches, chips). */\n radiusPill: 999,\n /** Horizontal padding inside an input. */\n padX: 8,\n /** Horizontal padding inside a primary button. */\n padXButton: 14,\n /** Standard row gap. */\n gap: 8,\n /** Base font size. */\n fontSize: 13,\n /** Small font size (descriptions). */\n fontSizeSm: 12,\n} as const;\n\n/**\n * Inject a stylesheet once, tagged with the DSH client-module ownership\n * attributes (`data-plugin` / `data-plugin-css`) so the HMR driver can reclaim\n * it. Calling this repeatedly with the same `cssId` is a no-op.\n *\n * @param pluginId - owning plugin id (package name), for `data-plugin`.\n * @param cssId - stylesheet id within the plugin, e.g. `'ui/components.css'`.\n * @param css - the stylesheet text.\n * @returns a disposer removing the tag, for callers that want one.\n */\nexport function injectStyle(pluginId: string, cssId: string, css: string): () => void {\n if (typeof document === 'undefined') return () => {};\n const tagId = `${pluginId}/${cssId}`;\n const selector = `style[data-plugin-css=\"${tagId}\"]`;\n const existing = document.querySelector(selector);\n if (existing !== null) return () => {};\n const style = document.createElement('style');\n style.dataset.plugin = pluginId;\n style.dataset.pluginCss = tagId;\n style.textContent = css;\n document.head.appendChild(style);\n return () => {\n if (style.parentNode !== null) style.parentNode.removeChild(style);\n };\n}\n\n/** The class-name prefix every dshloader UI class carries. */\nexport const CX = 'dshl';\n\n/** Join truthy class names. */\nexport function cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(' ');\n}\n","var _excluded = [\"size\", \"strokeWidth\", \"strokeLinecap\", \"strokeLinejoin\", \"theme\", \"fill\", \"className\", \"spin\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { createContext, useContext, useMemo } from 'react';\nexport var DEFAULT_ICON_CONFIGS = {\n size: '1em',\n strokeWidth: 4,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n rtl: false,\n theme: 'outline',\n colors: {\n outline: {\n fill: '#333',\n background: 'transparent'\n },\n filled: {\n fill: '#333',\n background: '#FFF'\n },\n twoTone: {\n fill: '#333',\n twoTone: '#2F88FF'\n },\n multiColor: {\n outStrokeColor: '#333',\n outFillColor: '#2F88FF',\n innerStrokeColor: '#FFF',\n innerFillColor: '#43CCF8'\n }\n },\n prefix: 'i'\n};\n\nfunction guid() {\n return 'icon-' + ((1 + Math.random()) * 0x100000000 | 0).toString(16).substring(1);\n}\n\nexport function IconConverter(id, icon, config) {\n var fill = typeof icon.fill === 'string' ? [icon.fill] : icon.fill || [];\n var colors = [];\n var theme = icon.theme || config.theme;\n\n switch (theme) {\n case 'outline':\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push('none');\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push('none');\n break;\n\n case 'filled':\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push('#FFF');\n colors.push('#FFF');\n break;\n\n case 'two-tone':\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push(typeof fill[1] === 'string' ? fill[1] : config.colors.twoTone.twoTone);\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push(typeof fill[1] === 'string' ? fill[1] : config.colors.twoTone.twoTone);\n break;\n\n case 'multi-color':\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push(typeof fill[1] === 'string' ? fill[1] : config.colors.multiColor.outFillColor);\n colors.push(typeof fill[2] === 'string' ? fill[2] : config.colors.multiColor.innerStrokeColor);\n colors.push(typeof fill[3] === 'string' ? fill[3] : config.colors.multiColor.innerFillColor);\n break;\n }\n\n return {\n size: icon.size || config.size,\n strokeWidth: icon.strokeWidth || config.strokeWidth,\n strokeLinecap: icon.strokeLinecap || config.strokeLinecap,\n strokeLinejoin: icon.strokeLinejoin || config.strokeLinejoin,\n colors: colors,\n id: id\n };\n}\nvar IconContext = /*#__PURE__*/createContext(DEFAULT_ICON_CONFIGS);\nexport var IconProvider = IconContext.Provider;\nexport function IconWrapper(name, rtl, render) {\n return function (props) {\n var size = props.size,\n strokeWidth = props.strokeWidth,\n strokeLinecap = props.strokeLinecap,\n strokeLinejoin = props.strokeLinejoin,\n theme = props.theme,\n fill = props.fill,\n className = props.className,\n spin = props.spin,\n extra = _objectWithoutProperties(props, _excluded);\n\n var ICON_CONFIGS = useContext(IconContext);\n var id = useMemo(guid, []);\n var svgProps = IconConverter(id, {\n size: size,\n strokeWidth: strokeWidth,\n strokeLinecap: strokeLinecap,\n strokeLinejoin: strokeLinejoin,\n theme: theme,\n fill: fill\n }, ICON_CONFIGS);\n var cls = [ICON_CONFIGS.prefix + '-icon'];\n cls.push(ICON_CONFIGS.prefix + '-icon' + '-' + name);\n\n if (rtl && ICON_CONFIGS.rtl) {\n cls.push(ICON_CONFIGS.prefix + '-icon-rtl');\n }\n\n if (spin) {\n cls.push(ICON_CONFIGS.prefix + '-icon-spin');\n }\n\n if (className) {\n cls.push(className);\n }\n\n return /*#__PURE__*/React.createElement(\"span\", _objectSpread(_objectSpread({}, extra), {}, {\n className: cls.join(' ')\n }), render(svgProps));\n };\n}","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('add', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: \"6\",\n y: \"6\",\n width: \"36\",\n height: \"36\",\n rx: \"3\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 16V32\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 24L32 24\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('alarm', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 25C14 19.4772 18.4772 15 24 15C29.5228 15 34 19.4772 34 25V41H14V25Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 5V8\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.8918 9.32823L33.9634 11.6264\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.2187 20.2873L39.2642 20.8083\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.78116 20.2874L8.73558 20.8083\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.1086 9.32802L14.037 11.6262\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 41H43\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('all-application', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 6H8C6.89543 6 6 6.89543 6 8V18C6 19.1046 6.89543 20 8 20H18C19.1046 20 20 19.1046 20 18V8C20 6.89543 19.1046 6 18 6Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 28H8C6.89543 28 6 28.8954 6 30V40C6 41.1046 6.89543 42 8 42H18C19.1046 42 20 41.1046 20 40V30C20 28.8954 19.1046 28 18 28Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40 6H30C28.8954 6 28 6.89543 28 8V18C28 19.1046 28.8954 20 30 20H40C41.1046 20 42 19.1046 42 18V8C42 6.89543 41.1046 6 40 6Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40 28H30C28.8954 28 28 28.8954 28 30V40C28 41.1046 28.8954 42 30 42H40C41.1046 42 42 41.1046 42 40V30C42 28.8954 41.1046 28 40 28Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('attention', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24 37C25.3807 37 26.5 35.8807 26.5 34.5C26.5 33.1193 25.3807 32 24 32C22.6193 32 21.5 33.1193 21.5 34.5C21.5 35.8807 22.6193 37 24 37Z\",\n fill: props.colors[2]\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 12V28\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('back', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44 40.8361C39.1069 34.8632 34.7617 31.4739 30.9644 30.6682C27.1671 29.8625 23.5517 29.7408 20.1182 30.303V41L4 23.5453L20.1182 7V17.167C26.4667 17.2172 31.8638 19.4948 36.3095 24C40.7553 28.5052 43.3187 34.1172 44 40.8361Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('branch', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40 28C42.2091 28 44 26.2091 44 24C44 21.7909 42.2091 20 40 20C37.7909 20 36 21.7909 36 24C36 26.2091 37.7909 28 40 28Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 12C11.2091 12 13 10.2091 13 8C13 5.79086 11.2091 4 9 4C6.79086 4 5 5.79086 5 8C5 10.2091 6.79086 12 9 12Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 44C11.2091 44 13 42.2091 13 40C13 37.7909 11.2091 36 9 36C6.79086 36 5 37.7909 5 40C5 42.2091 6.79086 44 9 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 12V36V24.0083H36\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('browser', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 18V40C42 41.1046 41.1046 42 40 42H8C6.89543 42 6 41.1046 6 40V18\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 8C6 6.89543 6.89543 6 8 6H40C41.1046 6 42 6.89543 42 8V18H6V8Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10C10.8954 10 10 10.8954 10 12C10 13.1046 10.8954 14 12 14Z\",\n fill: props.colors[2]\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M18 14C19.1046 14 20 13.1046 20 12C20 10.8954 19.1046 10 18 10C16.8954 10 16 10.8954 16 12C16 13.1046 16.8954 14 18 14Z\",\n fill: props.colors[2]\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24 14C25.1046 14 26 13.1046 26 12C26 10.8954 25.1046 10 24 10C22.8954 10 22 10.8954 22 12C22 13.1046 22.8954 14 24 14Z\",\n fill: props.colors[2]\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('check', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 11L16.875 37L5 25.1818\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('check-small', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 24L20 34L40 14\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('close', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 8L40 40\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 40L40 8\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('close-small', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 14L34 34\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 34L34 14\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('code', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 13L4 25.4322L16 37\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 13L44 25.4322L32 37\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 4L21 44\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('config', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 4L18 10H10V18L4 24L10 30V38H18L24 44L30 38H38V30L44 24L38 18V10H30L24 4Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 30C27.3137 30 30 27.3137 30 24C30 20.6863 27.3137 18 24 18C20.6863 18 18 20.6863 18 24C18 27.3137 20.6863 30 24 30Z\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('copy', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 12.4316V7.8125C13 6.2592 14.2592 5 15.8125 5H40.1875C41.7408 5 43 6.2592 43 7.8125V32.1875C43 33.7408 41.7408 35 40.1875 35H35.5163\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.1875 13H7.8125C6.2592 13 5 14.2592 5 15.8125V40.1875C5 41.7408 6.2592 43 7.8125 43H32.1875C33.7408 43 35 41.7408 35 40.1875V15.8125C35 14.2592 33.7408 13 32.1875 13Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('delete', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 10V44H39V10H9Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 20V33\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 20V33\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 10H44\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 10L19.289 4H28.7771L32 10H16Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('diamond', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.6364 5H37.3636L45 18.3L24 43L3 18.3L10.6364 5Z\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.6362 5L23.9999 43L37.3635 5\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 18.3H45\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.4092 18.3L24.0001 5L32.591 18.3\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('down', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 18L24 30L12 18\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('download', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 24.0083V42H42V24\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33 23L24 32L15 23\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.9917 6V32\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('edit', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 42H43\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 26.7199V34H18.3172L39 13.3081L31.6951 6L11 26.7199Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('error', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6 11L11 6L24 19L37 6L42 11L29 24L42 37L37 42L24 29L11 42L6 37L19 24L6 11Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('file-code', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 44H38C39.1046 44 40 43.1046 40 42V14H30V4H10C8.89543 4 8 4.89543 8 6V42C8 43.1046 8.89543 44 10 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 4L40 14\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27 24L32 29L27 34\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 24L16 29L21 34\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('file-text', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 44H38C39.1046 44 40 43.1046 40 42V14H30V4H10C8.89543 4 8 4.89543 8 6V42C8 43.1046 8.89543 44 10 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 4L40 14\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 22V36\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 22H24L30 22\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('folder', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 6C7 4.89543 7.89543 4 9 4H39C40.1046 4 41 4.89543 41 6V42C41 43.1046 40.1046 44 39 44H9C7.89543 44 7 43.1046 7 42V6Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 29H20\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 35H26\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 5C8 5 11.7647 18 24 18C36.2353 18 40 5 40 5\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"24\",\n cy: \"18\",\n r: \"4\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 4H9C7.89543 4 7 4.89543 7 6V12\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33 4H39C40.1046 4 41 4.89543 41 6V12\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('folder-open', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 9V41L9 21H39.5V15C39.5 13.8954 38.6046 13 37.5 13H24L19 7H6C4.89543 7 4 7.89543 4 9Z\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40 41L44 21H8.8125L4 41H40Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('full-screen', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33 6H42V15\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 33V42H33\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 42H6V33\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 15V6H15\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('globe', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.8261 4C41.6276 7.58886 44 12.6753 44 18.3158C44 29.1871 35.1871 38 24.3158 38C18.6753 38 13.5889 35.6276 10 31.8261\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24 32C31.732 32 38 25.732 38 18C38 10.268 31.732 4 24 4C16.268 4 10 10.268 10 18C10 25.732 16.268 32 24 32Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 38V44\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 44H30\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('help', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 28.6248V24.6248C27.3137 24.6248 30 21.9385 30 18.6248C30 15.3111 27.3137 12.6248 24 12.6248C20.6863 12.6248 18 15.3111 18 18.6248\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24 37.6248C25.3807 37.6248 26.5 36.5055 26.5 35.1248C26.5 33.7441 25.3807 32.6248 24 32.6248C22.6193 32.6248 21.5 33.7441 21.5 35.1248C21.5 36.5055 22.6193 37.6248 24 37.6248Z\",\n fill: props.colors[2]\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('info', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24 11C25.3807 11 26.5 12.1193 26.5 13.5C26.5 14.8807 25.3807 16 24 16C22.6193 16 21.5 14.8807 21.5 13.5C21.5 12.1193 22.6193 11 24 11Z\",\n fill: props.colors[2]\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5 34V20H23.5H22.5\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 34H28\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('left', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31 36L19 24L31 12\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('link', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.7073 9.56521L9.85801 24.4145C6.34329 27.9292 6.34329 33.6277 9.85801 37.1424V37.1424C13.3727 40.6571 19.0712 40.6571 22.5859 37.1424L40.2636 19.4647C42.6067 17.1216 42.6067 13.3226 40.2636 10.9794V10.9794C37.9205 8.63628 34.1215 8.63628 31.7783 10.9794L14.1007 28.6571C12.9291 29.8287 12.9291 31.7282 14.1007 32.8997V32.8997C15.2722 34.0713 17.1717 34.0713 18.3433 32.8997L33.1925 18.0505\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('loading', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 24C4 35.0457 12.9543 44 24 44V44C35.0457 44 44 35.0457 44 24C44 12.9543 35.0457 4 24 4\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 24C36 17.3726 30.6274 12 24 12C17.3726 12 12 17.3726 12 24C12 30.6274 17.3726 36 24 36V36\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('lock', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: \"6\",\n y: \"22\",\n width: \"36\",\n height: \"22\",\n rx: \"2\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 22V14C14 8.47715 18.4772 4 24 4C29.5228 4 34 8.47715 34 14V22\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 30V36\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('more', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"24\",\n r: \"3\",\n fill: props.colors[0]\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"24\",\n cy: \"24\",\n r: \"3\",\n fill: props.colors[0]\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"36\",\n cy: \"24\",\n r: \"3\",\n fill: props.colors[0]\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('pause', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 12V36\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 12V36\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('play', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 44C35.0457 44 44 35.0457 44 24C44 12.9543 35.0457 4 24 4C12.9543 4 4 12.9543 4 24C4 35.0457 12.9543 44 24 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 24V17.0718L26 20.5359L32 24L26 27.4641L20 30.9282V24Z\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('preview-close', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 16C6.63472 17.2193 7.59646 18.3504 8.82276 19.3554C12.261 22.1733 17.779 24 24 24C30.221 24 35.739 22.1733 39.1772 19.3554C40.4035 18.3504 41.3653 17.2193 42 16\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.9775 24L31.048 31.7274\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.3535 21.3536L43.0103 27.0104\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.00004 27.0103L10.6569 21.3534\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.9278 31.7276L18.9983 24.0001\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('preview-open', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 36C35.0457 36 44 24 44 24C44 24 35.0457 12 24 12C12.9543 12 4 24 4 24C4 24 12.9543 36 24 36Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 29C26.7614 29 29 26.7614 29 24C29 21.2386 26.7614 19 24 19C21.2386 19 19 21.2386 19 24C19 26.7614 21.2386 29 24 29Z\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('redo', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.7279 36.7279C33.4706 39.9853 28.9706 42 24 42C14.0589 42 6 33.9411 6 24C6 14.0589 14.0589 6 24 6C28.9706 6 33.4706 8.01472 36.7279 11.2721C38.3859 12.9301 42 17 42 17\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 8V17H33\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('refresh', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 8V24\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 24L6 40\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 24C42 14.0589 33.9411 6 24 6C18.9145 6 14.3216 8.10896 11.0481 11.5M6 24C6 33.9411 14.0589 42 24 42C28.8556 42 33.2622 40.0774 36.5 36.9519\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('right', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 12L31 24L19 36\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('save', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 9C6 7.34315 7.34315 6 9 6H34.2814L42 13.2065V39C42 40.6569 40.6569 42 39 42H9C7.34315 42 6 40.6569 6 39V9Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24.0083 6L24 13.3846C24 13.7245 23.5523 14 23 14H15C14.4477 14 14 13.7245 14 13.3846L14 6\",\n fill: props.colors[3]\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.0083 6L24 13.3846C24 13.7245 23.5523 14 23 14H15C14.4477 14 14 13.7245 14 13.3846L14 6H24.0083Z\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 6H34.2814\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 26H34\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 34H24.0083\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('search', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 38C30.3888 38 38 30.3888 38 21C38 11.6112 30.3888 4 21 4C11.6112 4 4 11.6112 4 21C4 30.3888 11.6112 38 21 38Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.657 14.3431C25.2093 12.8954 23.2093 12 21.0001 12C18.791 12 16.791 12.8954 15.3433 14.3431\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.2216 33.2217L41.7069 41.707\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('setting', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.686 15.171C37.9364 16.9643 38.8163 19.0352 39.2147 21.2727H44V26.7273H39.2147C38.8163 28.9648 37.9364 31.0357 36.686 32.829L40.0706 36.2137L36.2137 40.0706L32.829 36.686C31.0357 37.9364 28.9648 38.8163 26.7273 39.2147V44H21.2727V39.2147C19.0352 38.8163 16.9643 37.9364 15.171 36.686L11.7863 40.0706L7.92939 36.2137L11.314 32.829C10.0636 31.0357 9.18372 28.9648 8.78533 26.7273H4V21.2727H8.78533C9.18372 19.0352 10.0636 16.9643 11.314 15.171L7.92939 11.7863L11.7863 7.92939L15.171 11.314C16.9643 10.0636 19.0352 9.18372 21.2727 8.78533V4H26.7273V8.78533C28.9648 9.18372 31.0357 10.0636 32.829 11.314L36.2137 7.92939L40.0706 11.7863L36.686 15.171Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 29C26.7614 29 29 26.7614 29 24C29 21.2386 26.7614 19 24 19C21.2386 19 19 21.2386 19 24C19 26.7614 21.2386 29 24 29Z\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('setting-two', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.2838 43.1713C14.9327 42.1736 11.9498 40.3213 9.58787 37.867C10.469 36.8227 11 35.4734 11 34.0001C11 30.6864 8.31371 28.0001 5 28.0001C4.79955 28.0001 4.60139 28.01 4.40599 28.0292C4.13979 26.7277 4 25.3803 4 24.0001C4 21.9095 4.32077 19.8938 4.91579 17.9995C4.94381 17.9999 4.97188 18.0001 5 18.0001C8.31371 18.0001 11 15.3138 11 12.0001C11 11.0488 10.7786 10.1493 10.3846 9.35011C12.6975 7.1995 15.5205 5.59002 18.6521 4.72314C19.6444 6.66819 21.6667 8.00013 24 8.00013C26.3333 8.00013 28.3556 6.66819 29.3479 4.72314C32.4795 5.59002 35.3025 7.1995 37.6154 9.35011C37.2214 10.1493 37 11.0488 37 12.0001C37 15.3138 39.6863 18.0001 43 18.0001C43.0281 18.0001 43.0562 17.9999 43.0842 17.9995C43.6792 19.8938 44 21.9095 44 24.0001C44 25.3803 43.8602 26.7277 43.594 28.0292C43.3986 28.01 43.2005 28.0001 43 28.0001C39.6863 28.0001 37 30.6864 37 34.0001C37 35.4734 37.531 36.8227 38.4121 37.867C36.0502 40.3213 33.0673 42.1736 29.7162 43.1713C28.9428 40.752 26.676 39.0001 24 39.0001C21.324 39.0001 19.0572 40.752 18.2838 43.1713Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 31C27.866 31 31 27.866 31 24C31 20.134 27.866 17 24 17C20.134 17 17 20.134 17 24C17 27.866 20.134 31 24 31Z\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('sort', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 42L15 29H33L24 42Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 6L15 19H33L24 6Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('success', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 4L29.2533 7.83204L35.7557 7.81966L37.7533 14.0077L43.0211 17.8197L41 24L43.0211 30.1803L37.7533 33.9923L35.7557 40.1803L29.2533 40.168L24 44L18.7467 40.168L12.2443 40.1803L10.2467 33.9923L4.97887 30.1803L7 24L4.97887 17.8197L10.2467 14.0077L12.2443 7.81966L18.7467 7.83204L24 4Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 24L22 29L32 19\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('terminal', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: \"4\",\n y: \"8\",\n width: \"40\",\n height: \"32\",\n rx: \"2\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 18L19 24L12 30\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23 32H36\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('undo', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.2721 36.7279C14.5294 39.9853 19.0294 42 24 42C33.9411 42 42 33.9411 42 24C42 14.0589 33.9411 6 24 6C19.0294 6 14.5294 8.01472 11.2721 11.2721C9.61407 12.9301 6 17 6 17\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 9V17H14\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('unlock', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: \"7\",\n y: \"22.0476\",\n width: \"34\",\n height: \"22\",\n rx: \"2\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 22V14.0047C13.9948 8.87022 17.9227 4.56718 23.0859 4.05117C28.249 3.53516 32.9673 6.97408 34 12.0059\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 30V36\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('up', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 30L25 18L37 30\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('upload', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"mask\", {\n id: props.id + '7070702c',\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"48\",\n height: \"48\",\n style: {\n maskType: 'alpha'\n }\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48 0H0V48H48V0Z\",\n fill: props.colors[2]\n })), /*#__PURE__*/React.createElement(\"g\", {\n mask: 'url(#' + props.id + '7070702c' + ')'\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 24.0083V42H42V24\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33 15L24 6L15 15\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.9917 32V6\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n })));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('write', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.32497 43.4996L13.81 43.4998L44.9227 12.3871L36.4374 3.90186L5.32471 35.0146L5.32497 43.4996Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.9521 12.3872L36.4374 20.8725\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","/**\n * The curated dshloader ICON SET.\n *\n * Sourced from `@icon-park/react` so no plugin hand-maintains SVG path data\n * again (dsh-better-sidebar's `src/client/icons.tsx` keeps 10 icons by hand\n * today; every entry here replaces one of those or a\n * `@deepseek-ai/dsh-client-ui-primitives` icon import).\n *\n * WHY A SUBSET, NOT `export *`: IconPark ships ~2000 icons. dshloader's client\n * bundle is materialised through the DSH client module table, and a runtime\n * module boundary cannot be tree-shaken — re-exporting everything would put all\n * ~2000 icons into one bundle every plugin pays for. Naming a subset keeps the\n * cost proportional (only the icons listed here are bundled), and a plugin that\n * needs an exotic glyph can still depend on `@icon-park/react` directly.\n *\n * Adding an icon: import it below and add it to the export block. That is the\n * only change needed — no SVG, no viewBox, no stroke bookkeeping.\n *\n * @module @dsh-plugin/dsh-loader/ui/icons\n */\nimport * as React from 'react';\nimport Add from '@icon-park/react/es/icons/Add';\nimport Alarm from '@icon-park/react/es/icons/Alarm';\nimport AllApplication from '@icon-park/react/es/icons/AllApplication';\nimport Attention from '@icon-park/react/es/icons/Attention';\nimport Back from '@icon-park/react/es/icons/Back';\nimport Branch from '@icon-park/react/es/icons/Branch';\nimport Browser from '@icon-park/react/es/icons/Browser';\nimport Check from '@icon-park/react/es/icons/Check';\nimport CheckSmall from '@icon-park/react/es/icons/CheckSmall';\nimport Close from '@icon-park/react/es/icons/Close';\nimport CloseSmall from '@icon-park/react/es/icons/CloseSmall';\nimport Code from '@icon-park/react/es/icons/Code';\nimport Config from '@icon-park/react/es/icons/Config';\nimport Copy from '@icon-park/react/es/icons/Copy';\nimport Delete from '@icon-park/react/es/icons/Delete';\nimport Diamond from '@icon-park/react/es/icons/Diamond';\nimport Down from '@icon-park/react/es/icons/Down';\nimport Download from '@icon-park/react/es/icons/Download';\nimport Edit from '@icon-park/react/es/icons/Edit';\nimport ErrorIcon from '@icon-park/react/es/icons/Error';\nimport FileCode from '@icon-park/react/es/icons/FileCode';\nimport FileText from '@icon-park/react/es/icons/FileText';\nimport Folder from '@icon-park/react/es/icons/Folder';\nimport FolderOpen from '@icon-park/react/es/icons/FolderOpen';\nimport FullScreen from '@icon-park/react/es/icons/FullScreen';\nimport Globe from '@icon-park/react/es/icons/Globe';\nimport Help from '@icon-park/react/es/icons/Help';\nimport Info from '@icon-park/react/es/icons/Info';\nimport Left from '@icon-park/react/es/icons/Left';\nimport Link from '@icon-park/react/es/icons/Link';\nimport Loading from '@icon-park/react/es/icons/Loading';\nimport Lock from '@icon-park/react/es/icons/Lock';\nimport More from '@icon-park/react/es/icons/More';\nimport Pause from '@icon-park/react/es/icons/Pause';\nimport Play from '@icon-park/react/es/icons/Play';\nimport PreviewClose from '@icon-park/react/es/icons/PreviewClose';\nimport PreviewOpen from '@icon-park/react/es/icons/PreviewOpen';\nimport Redo from '@icon-park/react/es/icons/Redo';\nimport Refresh from '@icon-park/react/es/icons/Refresh';\nimport Right from '@icon-park/react/es/icons/Right';\nimport Save from '@icon-park/react/es/icons/Save';\nimport Search from '@icon-park/react/es/icons/Search';\nimport Setting from '@icon-park/react/es/icons/Setting';\nimport SettingTwo from '@icon-park/react/es/icons/SettingTwo';\nimport Sort from '@icon-park/react/es/icons/Sort';\nimport Success from '@icon-park/react/es/icons/Success';\nimport Terminal from '@icon-park/react/es/icons/Terminal';\nimport Undo from '@icon-park/react/es/icons/Undo';\nimport Unlock from '@icon-park/react/es/icons/Unlock';\nimport Up from '@icon-park/react/es/icons/Up';\nimport Upload from '@icon-park/react/es/icons/Upload';\nimport Write from '@icon-park/react/es/icons/Write';\nimport { IconProvider, DEFAULT_ICON_CONFIGS, type IIconProps, type Theme } from '@icon-park/react/es/runtime';\nimport { G } from './style.js';\n\n/** Props every dshloader icon accepts (IconPark's own prop contract). */\nexport type IconProps = IIconProps;\n\n/** An icon component. */\nexport type IconComponent = (props: IconProps) => React.ReactElement;\n\n/**\n * The curated set, grouped by purpose. Names are intent-based (`Settings`,\n * `Warning`) rather than IconPark's raw names so a glyph can be swapped without\n * touching consumers.\n */\nexport const Icons = {\n // structure / navigation\n ChevronUp: Up,\n ChevronDown: Down,\n ChevronLeft: Left,\n ChevronRight: Right,\n Back,\n Expand: FullScreen,\n More,\n Sort,\n // actions\n Add,\n Edit,\n Write,\n Delete,\n Copy,\n Save,\n Search,\n Refresh,\n Download,\n Upload,\n Undo,\n Redo,\n Play,\n Stop: Pause,\n Close,\n CloseSmall,\n Check,\n CheckSmall,\n // status\n Info,\n Warning: Attention,\n Error: ErrorIcon,\n Success,\n Loading,\n Help,\n // domain\n Settings: Setting,\n SettingsAlt: SettingTwo,\n Config,\n Terminal,\n Code,\n FileCode,\n Doc: FileText,\n Folder,\n FolderOpen,\n GitBranch: Branch,\n Link,\n Web: Globe,\n Browser,\n Lock,\n Unlock,\n EyeOpen: PreviewOpen,\n EyeClosed: PreviewClose,\n Alarm,\n Diamond,\n Apps: AllApplication,\n} as const;\n\n/** Name of a curated icon. */\nexport type IconName = keyof typeof Icons;\n\n/** Every curated icon name, for pickers and tests. */\nexport const ICON_NAMES = Object.keys(Icons) as IconName[];\n\n/**\n * Look one icon up by name. Unknown names resolve to `Help` rather than\n * throwing, so a stale name degrades to a visible placeholder.\n */\nexport function icon(name: IconName): IconComponent {\n return (Icons[name] ?? Icons.Help) as IconComponent;\n}\n\n/**\n * `<Icon name=\"Settings\" />` — the ergonomic form for data-driven icon choices\n * (menu descriptors, settings rows) where a component reference is awkward.\n */\nexport function Icon({ name, ...rest }: { name: IconName } & IconProps): React.ReactElement {\n const Component = icon(name);\n return React.createElement(Component, rest);\n}\n\n/** The icon defaults dshloader components render with. */\nexport const DSH_ICON_CONFIG = {\n ...DEFAULT_ICON_CONFIGS,\n size: G.fontSize + 3,\n strokeWidth: 3,\n theme: 'outline' as Theme,\n // `currentColor` is what makes icons follow DSH's theme tokens: the icon\n // inherits the colour of the text around it instead of pinning a hex value.\n colors: {\n ...DEFAULT_ICON_CONFIGS.colors,\n outline: { fill: 'currentColor', background: 'transparent' },\n },\n};\n\n/**\n * Wrap a subtree so every dshloader icon inside inherits the DSH defaults\n * (outline theme, `currentColor` fill, matching size). Plugins that render\n * dshloader components inside their own React tree should mount this once near\n * the root; the components in `./components.js` do not require it, but they look\n * consistent with the rest of DSH when it is present.\n */\nexport function DshIconProvider({ children }: { children?: React.ReactNode }): React.ReactElement {\n return React.createElement(IconProvider, { value: DSH_ICON_CONFIG }, children);\n}\n\nexport { IconProvider };\n","/**\n * The wrapped platform MENU (`DshMenu`).\n *\n * Consumers import this from `@dsh-plugin/dsh-loader/client` instead of\n * importing `@deepseek-ai/dsh-client-ui-primitives` directly. The wrapper exists\n * so that changes to the platform primitive — a renamed export, a moved package,\n * an altered prop shape — are absorbed HERE, in one line's distance, instead of\n * breaking every plugin that renders a dropdown.\n *\n * Two deliberate properties:\n *\n * 1. TYPES ARE HAND-WRITTEN, not re-exported. A shipped `.d.ts` that says\n * `export { Menu } from '@deepseek-ai/...'` resolves from dshloader's own\n * install — which consumers do not have (see docs/ui-kit.md, 铁律三) — so\n * re-exported types break consumer typecheck the moment dshloader is\n * published without devDependencies. These interfaces are written out and\n * must be kept in sync with upstream BY HAND when a prop the plugins use\n * changes; that maintenance cost is the price of consumer-side purity.\n * 2. THE PLATFORM IMPORT IS STATIC AND SINGULAR. This file is the only place in\n * dshloader that names the primitives package for menus. If it disappears or\n * renames, the fix is contained here. The static import means dshloader's\n * client bundle hard-depends on the primitive seed module — the same failure\n * mode the direct imports had, so no regression — which is also why the\n * missing-module degradation path is NOT attempted: with ESM compiled into\n * the CJS closure factory there is no clean way to defer the require, and a\n * half-working menu would be worse than an honest load error.\n *\n * @module @dsh-plugin/dsh-loader/ui/menu\n */\nimport * as React from 'react';\n// The SINGLE site that names the platform primitives package for menus.\nimport { Menu as PlatformMenu } from '@deepseek-ai/dsh-client-ui-primitives';\n\n/** One selectable row (optionally with a nested submenu). */\nexport interface MenuItem {\n id: string;\n label: React.ReactNode;\n disabled?: boolean;\n /** Leading icon. */\n icon?: React.ReactNode;\n /** Destructive row: error-coloured text/icon and danger hover fill. */\n danger?: boolean;\n /** Nested card opened to the right on hover/focus. */\n submenu?: readonly MenuItem[];\n}\n\n/** Hairline between item groups (not selectable). */\nexport interface MenuSeparator {\n type: 'separator';\n id: string;\n}\n\n/** Non-interactive heading row above a group of items. */\nexport interface MenuLabel {\n type: 'label';\n id: string;\n text: string;\n}\n\n/** One primary-menu entry: a row, a separator, or a heading label. */\nexport type MenuEntry = MenuItem | MenuSeparator | MenuLabel;\n\n/** {@link DshMenu} props — structurally the platform Menu's contract. */\nexport interface DshMenuProps {\n /** Whether the list is showing (owner-controlled). */\n open: boolean;\n /** The trigger element (rendered in place). */\n anchor: React.ReactNode;\n /** Selectable rows and optional separators/labels. */\n items: readonly MenuEntry[];\n /** Rows pinned below the scrolling items area. */\n footer?: readonly MenuEntry[];\n /** Row shown as selected. */\n selectedId?: string | undefined;\n /** Rows shown as selected with independent option groups. */\n selectedIds?: readonly string[] | undefined;\n /** Row click callback (not called for disabled rows). */\n onSelect: (id: string) => void;\n /** Invoked on outside click or Escape. */\n onClose: () => void;\n /** List alignment against the anchor (default `'start'`). */\n align?: 'start' | 'end';\n /** Open below (`'bottom'`, default), above, or to the right of the anchor. */\n side?: 'bottom' | 'top' | 'right';\n /**\n * Render the list into `document.body`, fixed-positioned from the anchor rect.\n * Use when an ancestor's overflow clipping would crop the in-place list.\n */\n portal?: boolean;\n /**\n * Close once the pointer has left both trigger and list for the grace period\n * (default `false` keeps it open until outside click/Escape/selection).\n */\n closeOnPointerLeave?: boolean;\n /** Reduce vertical row spacing only. */\n dense?: boolean;\n /** Reduced typography and spacing overall. */\n compact?: boolean;\n /** Portal mode only: supply the anchor rect directly. */\n getAnchorRect?: () => DOMRect | null;\n /** Extra class on the anchor wrapper. */\n className?: string;\n}\n\n/** Whether the platform primitive is already known to be missing. */\nlet platformMissing = false;\n\n/**\n * The stable menu surface for dshloader consumers.\n *\n * Forwards every prop verbatim to the platform primitive — this wrapper's job\n * is ISOLATION (one import site, hand-owned types), not behaviour change. When\n * the platform evolves, adaptation code goes here and consumers stay put.\n */\nexport function DshMenu(props: DshMenuProps): React.ReactElement | null {\n if (platformMissing) return null;\n try {\n // Forward verbatim. `PlatformMenu` is typed against upstream; the cast keeps\n // our hand-written contract authoritative on the consumer-facing side.\n return (PlatformMenu as unknown as (p: DshMenuProps) => React.ReactElement)(props);\n } catch (error) {\n // Render-time failures (prop-shape drift) degrade to an empty menu with one\n // loud warning rather than tearing down the host plugin's tree.\n platformMissing = true;\n console.warn(\n `[dshloader] DshMenu: the platform menu primitive failed (${error instanceof Error ? error.message : String(error)}); rendering nothing. ` +\n 'Update src/ui/menu.tsx to adapt to the new platform contract.',\n );\n return null;\n }\n}\n","/**\n * The dshloader BASE CONTROLS.\n *\n * A small, deliberately unopinionated control set so every plugin in this family\n * renders the same design language instead of each hand-rolling inline styles\n * (dsh-network-settings alone carries ~40 inline style objects today, and\n * dsh-auxiliary / dsh-code-review each maintain their own button and input\n * looks).\n *\n * Design rules:\n * - Styling is ONE injected stylesheet with `dshl-` prefixed classes, tagged\n * with the DSH `data-plugin` / `data-plugin-css` ownership attributes so HMR\n * can reclaim it. No CSS Modules, so consumers need no build-time CSS setup.\n * - Every colour is a DSH token with a fallback (see `./style.js`), so controls\n * follow the shell's theme, including dark mode, with no JS theme plumbing.\n * - Icons come from the curated set and inherit `currentColor`.\n * - Every control forwards native props and `className`, so a plugin can always\n * escape the defaults without forking the component.\n *\n * @module @dsh-plugin/dsh-loader/ui/components\n */\nimport * as React from 'react';\nimport { CX, G, T, cx, injectStyle } from './style.js';\nimport { Icon, type IconName } from './icons.js';\nimport { DshMenu, type MenuEntry } from './menu.js';\n\n/** Owner id used on the injected `<style>` tag. */\nconst OWNER = '@dsh-plugin/dsh-loader';\n\n/** The single stylesheet backing every control. */\nconst CSS = `\n.${CX}-row{display:flex;align-items:center;gap:${G.gap}px}\n.${CX}-col{display:flex;flex-direction:column;gap:${G.gap}px}\n.${CX}-btn{\n display:inline-flex;align-items:center;justify-content:center;gap:6px;\n height:${G.buttonHeight}px;padding:0 ${G.padXButton}px;\n font-size:14px;font-family:inherit;line-height:22px;\n border-radius:${G.radiusPill}px;border:none;\n background:${T.bgBase};color:${T.labelPrimary};\n cursor:pointer;box-sizing:border-box;white-space:nowrap;\n transition:background .12s ease,border-color .12s ease,opacity .12s ease;\n}\n.${CX}-btn:hover:not(:disabled){background:${T.bgHover}}\n.${CX}-btn:disabled{opacity:.5;cursor:not-allowed}\n.${CX}-btn--primary{\n background:${T.buttonPrimaryFill};\n color:${T.buttonPrimaryForeground};\n}\n.${CX}-btn--primary:hover:not(:disabled){filter:brightness(1.07);background:${T.buttonPrimaryFill}}\n.${CX}-btn--ghost{background:transparent;border-color:transparent;color:${T.labelSecondary}}\n.${CX}-btn--ghost:hover:not(:disabled){background:${T.bgHover};color:${T.labelPrimary}}\n.${CX}-btn--danger{background:transparent;border:1px solid ${T.danger};color:${T.danger};border-radius:${G.radius}px}\n.${CX}-btn--sm{height:${G.controlHeightSm}px;padding:0 ${G.padX + 2}px;font-size:${G.fontSizeSm}px;border-radius:${G.radius}px}\n.${CX}-iconbtn{\n display:inline-flex;align-items:center;justify-content:center;\n width:${G.controlHeight}px;height:${G.controlHeight}px;padding:0;\n border-radius:${G.radius}px;border:1px solid transparent;\n background:transparent;color:${T.labelSecondary};cursor:pointer;\n}\n.${CX}-iconbtn:hover:not(:disabled){background:${T.bgHover};color:${T.labelPrimary}}\n.${CX}-iconbtn:disabled{opacity:.5;cursor:not-allowed}\n.${CX}-input,.${CX}-textarea,.${CX}-select{\n width:100%;box-sizing:border-box;font-family:inherit;font-size:${G.fontSize}px;\n color:${T.labelPrimary};background:${T.bgLayer1};\n border:1px solid ${T.border};border-radius:${G.radius}px;\n padding:0 ${G.padX}px;height:${G.controlHeight}px;\n transition:border-color .12s ease;\n}\n.${CX}-textarea{height:auto;min-height:72px;padding:7px ${G.padX}px;line-height:1.5;resize:vertical}\n.${CX}-input:focus,.${CX}-textarea:focus,.${CX}-select:focus{outline:none;border-color:${T.accent}}\n.${CX}-input:disabled,.${CX}-textarea:disabled,.${CX}-select:disabled{opacity:.55;cursor:not-allowed}\n.${CX}-input--mono,.${CX}-textarea--mono{font-family:${T.fontCode}}\n.${CX}-input--invalid,.${CX}-textarea--invalid{border-color:${T.danger}}\n.${CX}-select{appearance:none;padding-right:26px;cursor:pointer;background-color:${T.bgBase}}\n.${CX}-selectwrap{position:relative;display:block;width:100%}\n.${CX}-selectwrap>.${CX}-caret{\n position:absolute;right:8px;top:50%;transform:translateY(-50%);\n pointer-events:none;color:${T.labelTertiary};display:inline-flex;\n}\n.${CX}-mselect{position:relative;width:100%}\n.${CX}-mselect__trigger{\n display:flex;align-items:center;justify-content:space-between;gap:8px;\n width:100%;box-sizing:border-box;min-height:36px;padding:7px 10px;\n font-family:inherit;font-size:14px;line-height:20px;text-align:left;\n color:${T.labelPrimary};background:${T.bgLayer1};\n border:1px solid ${T.border};border-radius:8px;cursor:pointer;appearance:none;\n}\n.${CX}-mselect__trigger:disabled{opacity:.45;cursor:not-allowed}\n.${CX}-mselect__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.${CX}-mselect__text--ph{color:${T.labelTertiary}}\n.${CX}-mselect__caret{display:inline-flex;align-items:center;flex:none;color:${T.labelTertiary}}\n.${CX}-check{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-size:13px;color:${T.labelPrimary};line-height:20px}\n.${CX}-check input{\n position:relative;margin:0;width:16px;height:16px;flex:none;\n appearance:auto;-webkit-appearance:checkbox;cursor:pointer;\n accent-color:${T.accent};\n}\n.${CX}-check input[disabled]{cursor:not-allowed}\n.${CX}-check--disabled{opacity:.55;cursor:not-allowed}\n.${CX}-switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:${G.fontSize}px;color:${T.labelPrimary}}\n.${CX}-switch input{position:absolute;opacity:0;width:0;height:0}\n.${CX}-switch__track{\n position:relative;flex:none;width:34px;height:20px;border-radius:${G.radiusPill}px;\n background:${T.border};transition:background .16s ease;\n}\n.${CX}-switch__knob{\n position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;\n background:${T.bgBase};box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .16s ease;\n}\n.${CX}-switch input:checked+.${CX}-switch__track{background:${T.accent}}\n.${CX}-switch input:checked+.${CX}-switch__track>.${CX}-switch__knob{transform:translateX(14px)}\n.${CX}-switch input:focus-visible+.${CX}-switch__track{box-shadow:0 0 0 2px ${T.accent}55}\n.${CX}-switch--disabled{opacity:.55;cursor:not-allowed}\n.${CX}-field{display:flex;flex-direction:column;gap:6px}\n.${CX}-field__label{font-size:12px;font-weight:500;color:${T.labelSecondary};line-height:18px}\n.${CX}-field__desc{font-size:${G.fontSizeSm}px;color:${T.labelTertiary};line-height:18px}\n.${CX}-field__error{font-size:${G.fontSizeSm}px;color:${T.danger}}\n.${CX}-card{\n display:flex;flex-direction:column;gap:10px;\n padding:16px;border:1px solid ${T.border};border-radius:${G.cardRadius}px;\n background:transparent;box-sizing:border-box;\n}\n.${CX}-card__title{margin:0;font-size:15px;font-weight:500;line-height:22px;color:${T.labelPrimary}}\n.${CX}-spin{display:inline-flex;animation:${CX}-spin 1s linear infinite}\n@keyframes ${CX}-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}\n@media (prefers-reduced-motion:reduce){\n .${CX}-spin{animation:none}\n .${CX}-btn,.${CX}-input,.${CX}-switch__track,.${CX}-switch__knob,.${CX}-check__box{transition:none}\n}\n`;\n\n/** Inject the control stylesheet once (idempotent, safe to call from any component). */\nexport function ensureStyles(): void {\n injectStyle(OWNER, 'ui/controls.css', CSS);\n}\n\n/** Call `ensureStyles` on first render of any control. */\nfunction useStyles(): void {\n // Runs during render on purpose: the stylesheet must exist before first paint,\n // and `injectStyle` is idempotent so repeated calls are free.\n ensureStyles();\n}\n\n/* ────────────────────────────── Button ────────────────────────────── */\n\n/** Visual weight of a {@link Button}. */\nexport type ButtonVariant = 'default' | 'primary' | 'ghost' | 'danger';\n\n/** {@link Button} props. */\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n /** Compact height. */\n small?: boolean;\n /** Leading icon from the curated set. */\n icon?: IconName;\n /** Replace the label with a spinner and disable interaction. */\n loading?: boolean;\n}\n\n/** A button in the DSH design language. */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { variant = 'default', small, icon, loading, className, children, disabled, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement(\n 'button',\n {\n ref,\n type: rest.type ?? 'button',\n className: cx(\n `${CX}-btn`,\n variant !== 'default' && `${CX}-btn--${variant}`,\n small && `${CX}-btn--sm`,\n className,\n ),\n disabled: disabled === true || loading === true,\n ...rest,\n },\n loading === true\n ? React.createElement('span', { className: `${CX}-spin`, key: 'spin' }, React.createElement(Icon, { name: 'Loading' }))\n : icon !== undefined\n ? React.createElement(Icon, { name: icon, key: 'icon' })\n : null,\n children,\n );\n});\n\n/** {@link IconButton} props. */\nexport interface IconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Icon from the curated set. */\n icon: IconName;\n /** Accessible name — required, since the button has no visible text. */\n label: string;\n}\n\n/** A square icon-only button. `label` becomes its accessible name. */\nexport const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { icon, label, className, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement(\n 'button',\n {\n ref,\n type: rest.type ?? 'button',\n className: cx(`${CX}-iconbtn`, className),\n 'aria-label': label,\n title: rest.title ?? label,\n ...rest,\n },\n React.createElement(Icon, { name: icon }),\n );\n});\n\n/* ────────────────────────────── Inputs ────────────────────────────── */\n\n/** {@link TextInput} props. */\nexport interface TextInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Render with the monospace stack (paths, commands, tokens). */\n mono?: boolean;\n /** Mark the field as failing validation. */\n invalid?: boolean;\n}\n\n/** A single-line text input. */\nexport const TextInput = React.forwardRef<HTMLInputElement, TextInputProps>(function TextInput(\n { mono, invalid, className, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement('input', {\n ref,\n type: rest.type ?? 'text',\n className: cx(`${CX}-input`, mono && `${CX}-input--mono`, invalid && `${CX}-input--invalid`, className),\n 'aria-invalid': invalid === true ? true : undefined,\n ...rest,\n });\n});\n\n/** {@link Textarea} props. */\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n mono?: boolean;\n invalid?: boolean;\n}\n\n/** A multi-line text area. */\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { mono, invalid, className, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement('textarea', {\n ref,\n className: cx(`${CX}-textarea`, mono && `${CX}-textarea--mono`, invalid && `${CX}-textarea--invalid`, className),\n 'aria-invalid': invalid === true ? true : undefined,\n ...rest,\n });\n});\n\n/* ────────────────────────────── Select ────────────────────────────── */\n\n/** One option of a {@link Select}. */\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\n/** {@link Select} props. */\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'children'> {\n options: readonly SelectOption[];\n /** Optional leading placeholder rendered as a disabled empty option. */\n placeholder?: string;\n}\n\n/**\n * A dropdown built on the native `<select>`.\n *\n * Native on purpose: it inherits the platform's keyboard handling, mobile\n * pickers, and accessibility for free. Plugins needing DSH's rich popup should\n * use `Menu` from `@dsh-plugin/dsh-loader/ui-primitives` instead.\n */\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(function Select(\n { options, placeholder, className, value, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement(\n 'span',\n { className: `${CX}-selectwrap` },\n React.createElement(\n 'select',\n { ref, className: cx(`${CX}-select`, className), value, ...rest },\n placeholder !== undefined\n ? React.createElement('option', { key: '__ph', value: '', disabled: true }, placeholder)\n : null,\n options.map(option =>\n React.createElement('option', { key: option.value, value: option.value, disabled: option.disabled }, option.label),\n ),\n ),\n React.createElement('span', { className: `${CX}-caret` }, React.createElement(Icon, { name: 'ChevronDown' })),\n );\n});\n\n/* ─────────────────────────── MenuSelect ─────────────────────────── */\n\n/** {@link MenuSelect} props — a value dropdown rendered with the platform menu. */\nexport interface MenuSelectProps {\n options: readonly SelectOption[];\n /** Currently selected value; renders {@link placeholder} when unmatched. */\n value?: string;\n placeholder?: string;\n disabled?: boolean;\n /** Called with the chosen option's value. */\n onChange?: (value: string) => void;\n id?: string;\n /** Field label, used for the trigger's accessible name. */\n label?: string;\n className?: string;\n}\n\n/** Height budget used when deciding whether the popup opens above the trigger. */\nconst MENU_SELECT_MAX_HEIGHT = 264;\n\n/**\n * A dropdown whose trigger and popup match the shell's own pickers (the\n * dsh-auxiliary model picker look): a bordered layer-1 trigger button plus the\n * platform menu popup via {@link DshMenu}.\n *\n * Prefer this over {@link Select} on settings pages: the native `<select>`\n * popup is OS-styled and cannot follow the shell theme, which is exactly the\n * visual drift this component removes. `Select` remains for dense/inline forms\n * where the native control's compactness matters.\n */\nexport function MenuSelect({\n options,\n value,\n placeholder,\n disabled,\n onChange,\n id,\n label,\n className,\n}: MenuSelectProps): React.ReactElement {\n useStyles();\n const [open, setOpen] = React.useState(false);\n const [side, setSide] = React.useState<'bottom' | 'top'>('bottom');\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const updateSide = React.useCallback((): void => {\n const trigger = triggerRef.current;\n if (trigger === null) return;\n const rect = trigger.getBoundingClientRect();\n const below = window.innerHeight - rect.bottom - 12;\n const above = rect.top - 12;\n setSide(below >= Math.min(MENU_SELECT_MAX_HEIGHT, above) ? 'bottom' : 'top');\n }, []);\n React.useEffect(() => {\n if (!open) return undefined;\n updateSide();\n window.addEventListener('scroll', updateSide, true);\n window.addEventListener('resize', updateSide);\n return () => {\n window.removeEventListener('scroll', updateSide, true);\n window.removeEventListener('resize', updateSide);\n };\n }, [open, updateSide]);\n\n const selected = options.find(option => option.value === value);\n const text = selected !== undefined ? selected.label : placeholder ?? '';\n const items = React.useMemo<readonly MenuEntry[]>(\n () => options.map(option => ({ id: option.value, label: option.label, disabled: option.disabled })),\n [options],\n );\n\n return React.createElement(\n 'div',\n { className: cx(`${CX}-mselect`, className) },\n React.createElement(DshMenu, {\n open,\n anchor: React.createElement(\n 'button',\n {\n ref: triggerRef,\n type: 'button',\n id,\n disabled: disabled === true,\n className: `${CX}-mselect__trigger`,\n 'aria-label': label !== undefined ? `${label}: ${text}` : text,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n title: text,\n onClick: () => setOpen(previous => !previous),\n },\n React.createElement(\n 'span',\n { className: cx(`${CX}-mselect__text`, selected === undefined && `${CX}-mselect__text--ph`) },\n text,\n ),\n React.createElement(\n 'span',\n { className: `${CX}-mselect__caret`, 'aria-hidden': true },\n React.createElement(Icon, { name: 'ChevronDown', size: 14 }),\n ),\n ),\n items,\n selectedId: value,\n onSelect: (chosen: string) => {\n onChange?.(chosen);\n setOpen(false);\n },\n onClose: () => setOpen(false),\n align: 'start',\n side,\n dense: true,\n }),\n );\n}\n\n/* ──────────────────────── Checkbox / Switch ───────────────────────── */\n\n/** {@link Checkbox} props. */\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Text beside the box. */\n label?: React.ReactNode;\n}\n\n/** A checkbox with an optional label. Native input styled via `accent-color`,\n * matching the shell's own settings pages. */\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { label, className, disabled, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement(\n 'label',\n { className: cx(`${CX}-check`, disabled === true && `${CX}-check--disabled`, className) },\n React.createElement('input', { ref, type: 'checkbox', disabled, ...rest }),\n label === undefined ? null : React.createElement('span', null, label),\n );\n});\n\n/** {@link Switch} props. */\nexport interface SwitchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: React.ReactNode;\n}\n\n/** A toggle switch — use for \"applies immediately\" settings. */\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { label, className, disabled, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement(\n 'label',\n { className: cx(`${CX}-switch`, disabled === true && `${CX}-switch--disabled`, className) },\n React.createElement('input', { ref, type: 'checkbox', role: 'switch', disabled, ...rest }),\n React.createElement(\n 'span',\n { className: `${CX}-switch__track`, 'aria-hidden': true },\n React.createElement('span', { className: `${CX}-switch__knob` }),\n ),\n label === undefined ? null : React.createElement('span', null, label),\n );\n});\n\n/* ─────────────────────── Layout / composition ─────────────────────── */\n\n/** {@link Field} props. */\nexport interface FieldProps {\n label?: React.ReactNode;\n /** Supporting description under the control. */\n description?: React.ReactNode;\n /** Validation message; renders in the danger colour. */\n error?: React.ReactNode;\n /** Associates the label with the control. */\n htmlFor?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\n/** Label + control + description/error, the standard settings row. */\nexport function Field({ label, description, error, htmlFor, children, className }: FieldProps): React.ReactElement {\n useStyles();\n return React.createElement(\n 'div',\n { className: cx(`${CX}-field`, className) },\n label === undefined ? null : React.createElement('label', { className: `${CX}-field__label`, htmlFor }, label),\n children,\n description === undefined ? null : React.createElement('span', { className: `${CX}-field__desc` }, description),\n error === undefined || error === null || error === false\n ? null\n : React.createElement('span', { className: `${CX}-field__error`, role: 'alert' }, error),\n );\n}\n\n/** {@link Card} props. */\nexport interface CardProps {\n title?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\n/** A bordered section container — the settings-page card look. */\nexport function Card({ title, children, className }: CardProps): React.ReactElement {\n useStyles();\n return React.createElement(\n 'section',\n { className: cx(`${CX}-card`, className) },\n title === undefined ? null : React.createElement('h3', { className: `${CX}-card__title` }, title),\n children,\n );\n}\n\n/** A horizontal flex row with the standard gap. */\nexport function Row({ children, className }: { children?: React.ReactNode; className?: string }): React.ReactElement {\n useStyles();\n return React.createElement('div', { className: cx(`${CX}-row`, className) }, children);\n}\n\n/** A vertical flex column with the standard gap. */\nexport function Col({ children, className }: { children?: React.ReactNode; className?: string }): React.ReactElement {\n useStyles();\n return React.createElement('div', { className: cx(`${CX}-col`, className) }, children);\n}\n\n/** An inline spinner. */\nexport function Spinner({ size }: { size?: number }): React.ReactElement {\n useStyles();\n return React.createElement(\n 'span',\n { className: `${CX}-spin`, role: 'status', 'aria-label': 'loading' },\n React.createElement(Icon, { name: 'Loading', size }),\n );\n}\n","/**\n * The dshloader UI surface: virtual slots, the curated icon set, and the base\n * controls, wrapped as one `ui` facade.\n *\n * Consumers reach this at runtime through `@dsh-plugin/dsh-loader/client`, which\n * the DSH client module table resolves by stripping the `/client` suffix to\n * dshloader's registered bundle id — so no alias and no load-order coordination\n * is needed (see docs/ui.md).\n *\n * @module @dsh-plugin/dsh-loader/ui\n */\nimport { BUILTIN_ANCHORS, readLayoutFrame, type BuiltinAnchor, type LayoutFrameState } from './anchors.js';\nimport { createUiAPI, type CreateUiOptions, type UiAPI } from './slots.js';\n\nexport * from './slots.js';\nexport * from './anchors.js';\nexport * from './style.js';\nexport * from './icons.js';\nexport * from './components.js';\nexport * from './menu.js';\n\n/** The `ui` facade plus the built-in anchor helpers. */\nexport interface DshLoaderUi extends UiAPI {\n /** Read the shell's sidebar layout state, when the anchor resolves. */\n layoutFrame(): LayoutFrameState | undefined;\n}\n\n/**\n * Build the UI facade and seed it with the dsh 1.x anchor table.\n *\n * @param options - forwarded to {@link createUiAPI} (observe root, warn sink).\n */\nexport function createUi(options: CreateUiOptions = {}): DshLoaderUi {\n const api = createUiAPI(options);\n for (const [name, spec] of Object.entries(BUILTIN_ANCHORS)) {\n api.defineAnchor(name as BuiltinAnchor, spec);\n }\n return {\n ...api,\n // Methods that close over engine state must be re-bound, not spread-copied\n // as plain values — `mountReact` calls `this.mount`, so keep the object.\n mount: api.mount.bind(api),\n mountReact: api.mountReact.bind(api),\n defineAnchor: api.defineAnchor.bind(api),\n anchors: api.anchors.bind(api),\n hosts: api.hosts.bind(api),\n onDomSettled: api.onDomSettled.bind(api),\n diagnose: api.diagnose.bind(api),\n destroy: api.destroy.bind(api),\n layoutFrame(): LayoutFrameState | undefined {\n const [host] = api.hosts('layout.frame');\n return host === undefined ? undefined : readLayoutFrame(host);\n },\n };\n}\n","/**\n * dshloader BROWSER BUNDLE ENTRY.\n *\n * Composes the two browser halves of dshloader:\n *\n * 1. the compatibility infrastructure in `./client.ts` — `window.__dshLoader__`,\n * the `__ModuleLoader__.load` wrapper that applies package aliases, the\n * module-alias factories, and the optional settings fetch interceptor;\n * 2. the UI surface in `./ui/` — the virtual slot engine, the curated icon set,\n * and the base controls.\n *\n * WHY A SEPARATE ENTRY FROM `client.ts`: `client.ts` must keep compiling in the\n * NODE program (`tsconfig.build.json` → `dist/client.js`), because the client\n * unit tests import it from there. The UI modules need `lib.dom` and JSX, which\n * that program does not have. Keeping the entry separate lets each half compile\n * under the program that suits it while both land in one bundle.\n *\n * Consumers import from `@dsh-plugin/dsh-loader/client`, marked external in\n * their bundler: the DSH client module table strips the `/client` suffix to\n * dshloader's registered bundle id and materialises this module recursively, so\n * no package alias and no load-order coordination is required.\n *\n * @module @dsh-plugin/dsh-loader/client\n */\nimport { installClient } from './client.js';\nimport { createUi, type DshLoaderUi } from './ui/index.js';\n\n// Re-export the whole UI surface so a consumer's\n// `import { Button, Switch, Field } from '@dsh-plugin/dsh-loader/client'`\n// resolves against this bundle at runtime.\nexport * from './ui/index.js';\n// Re-export the infrastructure surface consumers and tests rely on.\nexport {\n createClientAPI,\n installClient,\n installSettingsFetchInterceptor,\n ModuleNotFoundError,\n} from './client.js';\n\n/** cordis plugin name (matches the npm package name and the bundle id). */\nexport const name = '@dsh-plugin/dsh-loader';\n\n/** dshloader consumes no cordis service; it only provides. */\nexport const inject: string[] = [];\n\n/** The live UI facade, once `apply` has run. */\nlet ui: DshLoaderUi | undefined;\n\n/**\n * The UI facade for callers that reach dshloader through the module table rather\n * than `window.__dshLoader__`.\n *\n * @returns the facade, or `undefined` before the client plugin has applied.\n */\nexport function getUi(): DshLoaderUi | undefined {\n return ui;\n}\n\n/** The browser `window`, read off `globalThis` so no DOM lib is assumed here. */\nfunction ambientWindow(): (Record<string, unknown> & { __dshLoader__?: Record<string, unknown> }) | undefined {\n const scope = globalThis as { window?: unknown };\n const found = scope.window;\n return typeof found === 'object' && found !== null\n ? (found as Record<string, unknown> & { __dshLoader__?: Record<string, unknown> })\n : undefined;\n}\n\n/**\n * The cordis client service name dshloader publishes its UI facade under.\n *\n * Consumers should declare `inject: ['dshLoaderUi']` and read `ctx.dshLoaderUi`:\n * cordis then activates them only after dshloader's client half has applied,\n * which is the only ordering guarantee available on the browser side.\n * `dsh.client.immediately` guarantees the bundle's factory is REGISTERED early,\n * not that its `apply` has run — so a plugin that reads\n * `window.__dshLoader__.ui` without injecting can observe `undefined`.\n */\nexport const UI_SERVICE = 'dshLoaderUi';\n\n/** Minimal cordis client context surface this entry touches. */\ninterface ClientContextLike {\n get?: (name: string) => unknown;\n effect?: (fn: () => unknown) => unknown;\n provide?: (name: string, value: unknown) => unknown;\n}\n\n/**\n * cordis client-plugin entry.\n *\n * Mounts the infrastructure first (so the `__ModuleLoader__` wrapper is in place\n * before any sibling bundle materialises), then the UI facade, then publishes it\n * both as the `dshLoaderUi` cordis service (ordered access) and on\n * `window.__dshLoader__.ui` (ad-hoc access from non-cordis code).\n */\nexport function apply(ctx: ClientContextLike): void {\n const win = ambientWindow();\n if (win === undefined) return;\n\n const api = installClient({ window: win as never, clientCtx: ctx as never });\n\n ui = createUi();\n if (api !== undefined) (api as Record<string, unknown>).ui = ui;\n else if (win.__dshLoader__ !== undefined) win.__dshLoader__.ui = ui;\n\n // Ordered access for consumers that inject the service.\n ctx.provide?.(UI_SERVICE, ui);\n\n // Tear the observer down with the fiber when the host provides `effect`.\n ctx.effect?.(() => () => {\n ui?.destroy();\n ui = undefined;\n });\n}\n"],"x_google_ignoreList":[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","names":["name","dsh1x.supports","dsh1x.name","dsh1x.create","ambientWindow","scope","require","createRoot","React","useContext","useMemo","Up","Down","Left","Right","FullScreen","Pause","Attention","ErrorIcon","Setting","SettingTwo","FileText","Branch","Globe","PreviewOpen","PreviewClose","AllApplication","React","PlatformMenu","React","scope"],"sources":["../src/version.ts","../src/services/settings.ts","../src/adapters/dsh-1-x.ts","../src/adapters/index.ts","../src/client.ts","../src/ui/anchors.ts","../src/ui/slots.tsx","../src/ui/style.ts","../node_modules/@icon-park/react/es/runtime/index.js","../node_modules/@icon-park/react/es/icons/Add.js","../node_modules/@icon-park/react/es/icons/Alarm.js","../node_modules/@icon-park/react/es/icons/AllApplication.js","../node_modules/@icon-park/react/es/icons/Attention.js","../node_modules/@icon-park/react/es/icons/Back.js","../node_modules/@icon-park/react/es/icons/Branch.js","../node_modules/@icon-park/react/es/icons/Browser.js","../node_modules/@icon-park/react/es/icons/Check.js","../node_modules/@icon-park/react/es/icons/CheckSmall.js","../node_modules/@icon-park/react/es/icons/Close.js","../node_modules/@icon-park/react/es/icons/CloseSmall.js","../node_modules/@icon-park/react/es/icons/Code.js","../node_modules/@icon-park/react/es/icons/Config.js","../node_modules/@icon-park/react/es/icons/Copy.js","../node_modules/@icon-park/react/es/icons/Delete.js","../node_modules/@icon-park/react/es/icons/Diamond.js","../node_modules/@icon-park/react/es/icons/Down.js","../node_modules/@icon-park/react/es/icons/Download.js","../node_modules/@icon-park/react/es/icons/Edit.js","../node_modules/@icon-park/react/es/icons/Error.js","../node_modules/@icon-park/react/es/icons/FileCode.js","../node_modules/@icon-park/react/es/icons/FileText.js","../node_modules/@icon-park/react/es/icons/Folder.js","../node_modules/@icon-park/react/es/icons/FolderOpen.js","../node_modules/@icon-park/react/es/icons/FullScreen.js","../node_modules/@icon-park/react/es/icons/Globe.js","../node_modules/@icon-park/react/es/icons/Help.js","../node_modules/@icon-park/react/es/icons/Info.js","../node_modules/@icon-park/react/es/icons/Left.js","../node_modules/@icon-park/react/es/icons/Link.js","../node_modules/@icon-park/react/es/icons/Loading.js","../node_modules/@icon-park/react/es/icons/Lock.js","../node_modules/@icon-park/react/es/icons/More.js","../node_modules/@icon-park/react/es/icons/Pause.js","../node_modules/@icon-park/react/es/icons/Play.js","../node_modules/@icon-park/react/es/icons/PreviewClose.js","../node_modules/@icon-park/react/es/icons/PreviewOpen.js","../node_modules/@icon-park/react/es/icons/Redo.js","../node_modules/@icon-park/react/es/icons/Refresh.js","../node_modules/@icon-park/react/es/icons/Right.js","../node_modules/@icon-park/react/es/icons/Save.js","../node_modules/@icon-park/react/es/icons/Search.js","../node_modules/@icon-park/react/es/icons/Setting.js","../node_modules/@icon-park/react/es/icons/SettingTwo.js","../node_modules/@icon-park/react/es/icons/Sort.js","../node_modules/@icon-park/react/es/icons/Success.js","../node_modules/@icon-park/react/es/icons/Terminal.js","../node_modules/@icon-park/react/es/icons/Undo.js","../node_modules/@icon-park/react/es/icons/Unlock.js","../node_modules/@icon-park/react/es/icons/Up.js","../node_modules/@icon-park/react/es/icons/Upload.js","../node_modules/@icon-park/react/es/icons/Write.js","../src/ui/icons.tsx","../src/ui/menu.tsx","../src/ui/components.tsx","../src/ui/index.ts","../src/client-ui.tsx"],"sourcesContent":["// dshloader version — keep in sync with package.json.\nexport const LOADER_VERSION = '1.3.0';\n\n// Prefix used in every console log / error so users can grep dshloader output.\nexport const LOG_PREFIX = '[dshloader]';\n","// Settings stable API (design.md §3.3.1 / §4.1 / §4.2).\n//\n// Two concerns are deliberately separated:\n// 1. naming/shape differences — handled by proxying to ctx.get('settings').\n// 2. access scope (security) — `exposeAllNamespaces` controls whether\n// `describe` returns only the official browser whitelist namespaces\n// (default, matches official behavior) or every registered namespace.\n//\n// Host-side writes always proxy through to the real settings service: host\n// plugin code is already trusted (it runs in the dsh Node process and could\n// call ctx.get('settings').update directly). The whitelist is a browser-side\n// default-deny boundary owned by dsh-host-apiproxy; the browser path is\n// covered separately by the client fetch interceptor (src/client.ts).\nimport { LOG_PREFIX } from '../version.js';\nimport type { CordisContext, SettingsAPI, SettingsResult, NamespaceView } from '../types.js';\n\n/**\n * Official browser-writable settings namespaces (dsh-host-apiproxy\n * WEB_SETTINGS_NAMESPACES), as documented in dsh-upstream-fixes/README.md.\n * Product namespaces and dynamic model-provider namespaces are not enumerable\n * without dsh internals; callers may extend this set via `extraWhitelist`.\n */\nexport const DEFAULT_WEB_SETTINGS_NAMESPACES = new Set([\n 'agent-loop',\n 'shell',\n 'locale',\n 'permission',\n 'ui-conversation',\n 'ui-theme',\n 'web-search-deepseek',\n]);\n\n/** A raw settings descriptor returned by the real settings service. */\ninterface SettingsDescriptor {\n ns: string;\n schema: any;\n value: any;\n base?: any;\n user?: any;\n applies?: any;\n secrets?: { path: string[]; set?: any }[];\n revision?: any;\n}\n\n/**\n * Shape a raw settings descriptor into the official NamespaceView wire shape\n * (mirrors dsh-upstream-fixes/lib/index.js `namespaceView`).\n */\nexport function toNamespaceView(descriptor: SettingsDescriptor): NamespaceView {\n const view: NamespaceView = {\n ns: String(descriptor.ns),\n schema: descriptor.schema,\n value: descriptor.value,\n ...(descriptor.base === undefined ? {} : { base: descriptor.base }),\n ...(descriptor.user === undefined ? {} : { user: descriptor.user }),\n applies: descriptor.applies,\n secrets: (descriptor.secrets ?? []).map((s) => ({ path: [...s.path], set: s.set })),\n revision: descriptor.revision,\n };\n return view;\n}\n\n/**\n * Map a thrown settings error into a SettingsResult, preserving the official\n * `settings-conflict` / `settings-rejected` classification.\n */\nexport function settingsErrorToResult(error: unknown, ns: string, method: string): SettingsResult {\n const isObject = error !== null && typeof error === 'object';\n const isConflict = isObject && ('expected' in error || 'actual' in error);\n if (isConflict) {\n const err = error as { message?: string; expected?: any; actual?: any };\n return {\n ok: false,\n code: 'settings-conflict',\n message: err.message ?? String(error),\n details: {\n ns,\n ...(err.expected === undefined ? {} : { expected: err.expected }),\n ...(err.actual === undefined ? {} : { actual: err.actual }),\n },\n };\n }\n return {\n ok: false,\n code: 'settings-rejected',\n message: error instanceof Error ? error.message : String(error),\n details: { ns, method },\n };\n}\n\n/**\n * Internal shape used while building the API: includes the private `_write`\n * helper so `update`/`replace`/`mutate` can share one implementation.\n */\ntype SettingsAPIBuilder = SettingsAPI & {\n _write(\n method: 'update' | 'replace' | 'mutate',\n ns: string,\n section: any,\n expectedRevision?: number,\n ): Promise<SettingsResult>;\n};\n\n/**\n * Build the `ctx.dshLoader.settings` stable API.\n */\nexport function createSettingsAPI(opts: {\n ctx: CordisContext;\n exposeAllNamespaces: boolean;\n whitelist?: Set<string>;\n /** The real `@deepseek-ai/dsh-settings` module, when it resolved at boot. */\n module?: {\n installSettingsSection?: (ctx: unknown, ns: unknown, schema: unknown, entry: unknown, hooks: unknown) => void;\n settingsNamespace?: (id: string) => unknown;\n SettingsConflictError?: new (...args: never[]) => Error;\n };\n}): SettingsAPI {\n const { ctx, exposeAllNamespaces, whitelist, module } = opts;\n const allowed = whitelist ?? DEFAULT_WEB_SETTINGS_NAMESPACES;\n\n function getSettings() {\n return ctx.get('settings');\n }\n\n function filterNamespaces(views: NamespaceView[]) {\n if (exposeAllNamespaces) return views;\n return views.filter((v) => allowed.has(String(v.ns)));\n }\n\n const api: SettingsAPIBuilder = {\n exposeAllNamespaces: Boolean(exposeAllNamespaces),\n\n /**\n * Register a settings namespace. Proxies to the real settings service's\n * `register(ns, schema, options)` and returns the owner scope\n * ({ get, watch }) — the same shape the official service returns.\n *\n * Unlike describe/update/replace/mutate, register is NOT filtered by the\n * whitelist: host plugin code is trusted and registering a namespace is\n * a composition-time act, not a browser-facing read/write.\n */\n register(ns, schema, options) {\n const settings = getSettings();\n if (settings === undefined || typeof settings.register !== 'function') {\n console.warn(`${LOG_PREFIX}:settings.register settings service unavailable`);\n return undefined;\n }\n return settings.register(ns, schema, options);\n },\n\n describe(options: { redactSecrets?: boolean } = {}) {\n const settings = getSettings();\n if (settings === undefined || typeof settings.describe !== 'function') {\n return [];\n }\n const redactSecrets = options.redactSecrets !== false;\n const descriptors = settings.describe({ redactSecrets }) as SettingsDescriptor[];\n const views = (descriptors ?? []).map(toNamespaceView);\n return filterNamespaces(views);\n },\n\n async _write(\n method: 'update' | 'replace' | 'mutate',\n ns: string,\n section: any,\n expectedRevision?: number,\n ): Promise<SettingsResult> {\n const settings = getSettings();\n if (settings === undefined) {\n return {\n ok: false,\n code: 'internal',\n message: `${LOG_PREFIX}:settings.${method} settings service unavailable`,\n details: { ns },\n };\n }\n try {\n if (method === 'update') await settings.update(ns, section, expectedRevision);\n else if (method === 'replace') await settings.replace(ns, section, expectedRevision);\n else await settings.mutate(ns, section, expectedRevision);\n } catch (error) {\n return settingsErrorToResult(error, ns, method);\n }\n const descriptor = (settings.describe({ redactSecrets: true }) as SettingsDescriptor[]).find(\n (d) => String(d.ns) === String(ns),\n );\n if (descriptor === undefined) {\n return {\n ok: false,\n code: 'internal',\n message: `${LOG_PREFIX}:settings.${method} namespace disposed after write`,\n details: { ns },\n };\n }\n return { ok: true, value: toNamespaceView(descriptor) };\n },\n\n update(ns, section, expectedRevision) {\n return api._write('update', ns, section, expectedRevision);\n },\n replace(ns, section, expectedRevision) {\n return api._write('replace', ns, section, expectedRevision);\n },\n mutate(ns, ops, expectedRevision) {\n return api._write('mutate', ns, ops, expectedRevision);\n },\n\n namespace(id: string) {\n const make = module?.settingsNamespace;\n if (typeof make !== 'function') {\n // No dsh-settings: hand back the raw id. Callers only pass it straight\n // back into this facade, so an opaque handle and a string behave alike.\n return id;\n }\n return make(id);\n },\n\n installSection(consumerCtx, ns, schema, entry, hooks) {\n const install = module?.installSettingsSection;\n if (typeof install !== 'function') {\n console.warn(\n `${LOG_PREFIX}:settings.installSection — @deepseek-ai/dsh-settings is unavailable; ` +\n 'the consumer keeps its composition entry (no user-settings layer)',\n );\n return false;\n }\n install(consumerCtx, ns, schema, entry, hooks);\n return true;\n },\n\n isConflictError(error: unknown) {\n const Ctor = module?.SettingsConflictError;\n if (typeof Ctor === 'function' && error instanceof Ctor) return true;\n // Structural fallback: dsh marks conflicts with expected/actual revisions.\n return (\n error !== null &&\n typeof error === 'object' &&\n ('expected' in error || 'actual' in error)\n );\n },\n };\n\n return api;\n}\n","// dsh 1.x host adapter (design.md §7.4 / §5.1 / §3.3.1).\n//\n// Absorbs the verified repairs from dsh-upstream-fixes:\n// - httpServer -> webServer single-hop service alias (fix 2).\n// - settings namespace whitelist bypass bridge, gated behind\n// `exposeAllNamespaces` (fix 5). Two independent paths:\n// * host side: ctx.dshLoader.settings.* (handled by services/settings.ts\n// + the bridge routes registered here for the browser fetch path).\n// * client side: fetch interceptor in src/client.ts.\n// - package-name aliasing for host-side CJS require (createRequire /\n// require()) — intercepts Module._resolveFilename so a renamed dsh\n// package resolves to its new name without plugin rebuilds.\n//\n// All registrations go through ctx.reflect.provide / ctx.effect so cordis\n// auto-recycles them when the dshloader fiber unloads (design.md §4.4). No\n// custom dispose() is needed for v1's covered capabilities.\nimport { LOG_PREFIX } from '../version.js';\nimport { toNamespaceView, settingsErrorToResult } from '../services/settings.js';\nimport type { CordisContext, AdapterFactory as Factory, HostAdapterConfig } from '../types.js';\n\n// Covers the real dsh release line (0.1.0-rc.x, verified against\n// dsh-upstream-fixes) and the anticipated 1.x line. The adapter name keeps\n// the design-doc label \"dsh-1-x\"; the behavior is identical across both\n// ranges since dsh-upstream-fixes confirms httpServer->webServer + settings\n// bridge work the same way on 0.1.0-rc.7.\n//\n// Pre-release builds of covered lines (e.g. `0.1.1-rc.1`, `0.1.1-rc.2`) do\n// not satisfy this range under npm semver's pre-release rules even though\n// the release line is covered; the AdapterRegistry's rule 2b strips the\n// pre-release tag and re-tests, so dshloader loads on ANY build of the\n// 0.1.x/1.x lines.\nexport const supports = '>=0.1.0-rc.1 <2.0.0';\nexport const name = 'dsh-1-x';\n\n// Browser-facing bridge prefix; the client fetch interceptor (src/client.ts)\n// must use the same prefix.\nexport const BRIDGE_PREFIX = '/api/dshloader';\n\n// Host-side package-name aliases. Maps stable @dshloader/* names to the\n// real dsh package names for this version. Plugins should require() from\n// the stable names; the Module._resolveFilename hook maps them to the real\n// package. When dsh renames a host package, only this table changes.\n//\n// This intercepts CJS require() (including createRequire) via\n// Module._resolveFilename; ESM static imports are build-time resolved and\n// cannot be intercepted at runtime (use pnpm overrides / tsconfig paths\n// for those).\nexport const hostPackageAliases: Record<string, string> = {\n '@dsh-plugin/dsh-loader/tools': '@deepseek-ai/dsh-tools',\n '@dsh-plugin/dsh-loader/llm': '@deepseek-ai/dsh-llm',\n '@dsh-plugin/dsh-loader/agent': '@deepseek-ai/dsh-agent',\n '@dsh-plugin/dsh-loader/settings': '@deepseek-ai/dsh-settings',\n '@dsh-plugin/dsh-loader/timeout': '@deepseek-ai/dsh-timeout',\n '@dsh-plugin/dsh-loader/subagent': '@deepseek-ai/dsh-subagent',\n '@dsh-plugin/dsh-loader/credentials': '@deepseek-ai/dsh-credentials',\n '@dsh-plugin/dsh-loader/compaction-basic': '@deepseek-ai/dsh-compaction-basic',\n};\n\n/** Loosely-typed node:module NodeModule for the _resolveFilename hook. */\ninterface NodeModuleLike {\n _resolveFilename?: (...args: any[]) => string;\n}\n\n/**\n * Install a Module._resolveFilename hook that maps old package names to\n * new ones for CJS require() calls. Returns a dispose function that\n * removes the hook.\n */\nexport async function installHostPackageAliases(\n aliases: Record<string, string>,\n): Promise<() => void> {\n const entries = Object.entries(aliases);\n if (entries.length === 0) return () => {};\n const aliasMap = new Map(entries);\n // Lazy-import Module to avoid loading it in browser/test contexts.\n let Module: NodeModuleLike | undefined;\n try {\n const mod = await import('node:module');\n const nodeModule = mod.default ?? mod.Module ?? mod;\n Module = nodeModule as NodeModuleLike;\n } catch {\n return () => {};\n }\n if (!Module || typeof Module._resolveFilename !== 'function') return () => {};\n const original = Module._resolveFilename;\n const hooked = function dshloaderResolve(this: unknown, request: string, parent: unknown, ...rest: unknown[]) {\n const mapped = aliasMap.get(request);\n if (mapped !== undefined) return original.call(this, mapped, parent, ...rest);\n return original.call(this, request, parent, ...rest);\n };\n Module._resolveFilename = hooked;\n return () => {\n if (Module && Module._resolveFilename === hooked) Module._resolveFilename = original;\n };\n}\n\n/**\n * @param ctx cordis context\n * @param config\n */\nexport function create(ctx: CordisContext, config: HostAdapterConfig = {}): HostAdapterType {\n const exposeAllNamespaces = Boolean(config.exposeAllNamespaces);\n const packageAliases = { ...hostPackageAliases, ...(config.hostPackageAliases ?? {}) };\n\n async function apply() {\n // --- service alias: httpServer -> webServer (fix 2) ---\n if (ctx.get('httpServer') === undefined) {\n const webServer = ctx.get('webServer');\n if (webServer !== undefined) {\n ctx.reflect.provide('httpServer', webServer);\n console.log(`${LOG_PREFIX} aliased httpServer -> webServer`);\n }\n } else {\n console.log(`${LOG_PREFIX} httpServer already exists, skip alias`);\n }\n\n // --- host package-name aliases (CJS require interception) ---\n if (Object.keys(packageAliases).length > 0) {\n ctx.effect(\n () => installHostPackageAliases(packageAliases),\n 'dshloader: host package-name aliases',\n );\n console.log(`${LOG_PREFIX} installed host package aliases: ${Object.keys(packageAliases).join(', ')}`);\n }\n\n // --- settings bridge routes for the browser fetch path (fix 5, path 2) ---\n // Only registered when the profile explicitly opts in. The host-side\n // stable API (ctx.dshLoader.settings.*) is unaffected by this gate and\n // always available to host plugin code.\n if (exposeAllNamespaces) {\n ctx.effect(\n () => registerSettingsBridgeRoutes(ctx),\n 'dshloader: settings namespace bridge routes',\n );\n }\n }\n\n function dispose() {\n // No cordis-unaware resources held in v1; effect auto-recycle covers\n // everything registered in apply(). Implemented as a no-op to satisfy\n // the HostAdapter interface and future hot-swap scenarios.\n }\n\n return { supports, name, apply, dispose };\n}\n\ninterface HostAdapterType {\n supports: string;\n name: string;\n apply: () => Promise<void>;\n dispose: () => void;\n}\n\n/**\n * Register host bridge routes that the client fetch interceptor forwards\n * non-whitelisted settings requests to. Mirrors dsh-upstream-fixes/lib/index.js\n * `registerRoutes` (settings section).\n */\nfunction registerSettingsBridgeRoutes(ctx: CordisContext): () => void {\n const webServer = ctx.get('webServer') ?? ctx.get('httpServer');\n if (webServer === undefined || typeof webServer.register !== 'function') return () => {};\n return webServer.register({\n kind: 'prefix',\n path: BRIDGE_PREFIX,\n handler: (req: any, res: any) => {\n const json = (status: number, body: unknown) => {\n res.statusCode = status;\n res.setHeader('content-type', 'application/json');\n res.end(JSON.stringify(body));\n };\n const readBody = () =>\n new Promise<string>((done, fail) => {\n let body = '';\n req.on?.('data', (chunk: Buffer | string) => {\n body += chunk.toString('utf8');\n });\n req.on?.('end', () => done(body));\n req.on?.('error', fail);\n });\n const url = req.url ?? '/';\n const method = (req.method ?? 'GET').toUpperCase();\n const path = url.split('?')[0] ?? '/';\n\n void (async () => {\n try {\n // GET /api/dshloader/settings/describe — full redacted namespace list.\n if (method === 'GET' && (path === `${BRIDGE_PREFIX}/settings/describe` || path === `${BRIDGE_PREFIX}/settings/describe/`)) {\n const settings = ctx.get('settings');\n if (settings === undefined) {\n json(200, { ok: false, message: 'settings service unavailable' });\n return;\n }\n json(200, {\n ok: true,\n namespaces: settings.describe({ redactSecrets: true }).map(toNamespaceView),\n });\n return;\n }\n\n // POST /api/dshloader/settings/{update,mutate,replace} — write seam.\n const writeMatch = /^\\/api\\/dshloader\\/settings\\/(update|mutate|replace)$/.exec(path);\n if (method === 'POST' && writeMatch !== null) {\n const mode = writeMatch[1];\n let parsed: { ns?: unknown; section?: unknown; ops?: unknown; expectedRevision?: number } = {};\n try {\n parsed = JSON.parse(await readBody());\n } catch {\n /* keep {} */\n }\n const ns = typeof parsed.ns === 'string' ? parsed.ns : '';\n if (ns.length === 0) {\n json(200, {\n ok: true,\n result: {\n ok: false,\n code: 'settings-rejected',\n message: 'settings write needs a namespace',\n details: {},\n },\n });\n return;\n }\n const settings = ctx.get('settings');\n const result = await runSettingsWrite(\n settings,\n mode,\n ns,\n mode === 'mutate' ? parsed.ops : parsed.section,\n parsed.expectedRevision,\n );\n json(200, { ok: true, result });\n return;\n }\n\n json(404, { ok: false, message: 'not found' });\n } catch (error) {\n json(500, { ok: false, message: error instanceof Error ? error.message : String(error) });\n }\n })();\n },\n });\n}\n\nasync function runSettingsWrite(\n settings: any,\n mode: string,\n ns: string,\n section: unknown,\n expectedRevision?: number,\n) {\n if (settings === undefined) {\n return { ok: false, code: 'internal', message: 'settings service unavailable', details: {} };\n }\n try {\n if (mode === 'update') await settings.update(ns, section, expectedRevision);\n else if (mode === 'replace') await settings.replace(ns, section, expectedRevision);\n else await settings.mutate(ns, section, expectedRevision);\n } catch (error) {\n return settingsErrorToResult(error, ns, mode);\n }\n const descriptor = settings\n .describe({ redactSecrets: true })\n .find((d: { ns: unknown }) => String(d.ns) === String(ns));\n if (descriptor === undefined) {\n return { ok: false, code: 'internal', message: 'settings namespace disposed after write', details: { ns } };\n }\n return { ok: true, value: toNamespaceView(descriptor) };\n}\n","// Adapter registration (design.md §7.4). Imports every host adapter and\n// registers it on the provided AdapterRegistry. Kept as a function so tests\n// can build a fresh registry per case.\nimport * as dsh1x from './dsh-1-x.js';\nimport type { AdapterFactory } from '../types.js';\nimport type { AdapterRegistry } from '../registry.js';\n\n/** All host adapter factories, in registration order. */\nexport const hostAdapters: AdapterFactory[] = [\n { supports: dsh1x.supports, name: dsh1x.name, create: dsh1x.create },\n];\n\n/** Register every built-in host adapter onto a registry. */\nexport function registerHostAdapters(registry: AdapterRegistry): AdapterRegistry {\n for (const factory of hostAdapters) registry.register(factory);\n return registry;\n}\n\n// Client adapter metadata for dsh 1.x (consumed by src/client.ts).\n//\n// packageAliases serves TWO roles:\n// 1. **Stable name → real name** (primary): plugins import from stable\n// names like '@dshloader/ui-primitives' and the adapter maps them to\n// the real dsh package name for this version. When dsh renames a\n// package, only the adapter changes — plugin source and bundle stay\n// the same.\n// 2. **Old real name → new real name** (fallback): if a plugin bundle\n// was built before adopting stable names and still has\n// `require('@deepseek-ai/dsh-client-ui-primitives')` baked in, the\n// adapter can map the old real name to the new real name as a\n// transition measure.\nexport const clientAdapters = [\n {\n supports: dsh1x.supports,\n name: dsh1x.name,\n moduleAliases: {\n // deep source import that breaks when dsh ships no `src/` (fix 1).\n '@deepseek-ai/dsh-client-runtime/src/client/sessions/context-provenance.ts':\n '@deepseek-ai/dsh-client-runtime/client',\n // stable module name (design.md §3.3.3).\n 'dsh/runtime/context-provenance': '@deepseek-ai/dsh-client-runtime/client',\n },\n // Stable package names → real dsh package names for dsh 1.x.\n // Plugins import from @dsh-plugin/dsh-loader/* subpaths (e.g.\n // '@dsh-plugin/dsh-loader/ui-primitives'); the __ModuleLoader__\n // wrapper (installed by installClient) maps them to the real dsh\n // package before hitting the module table. When dsh renames a\n // package, only this table changes — plugin source and bundle stay\n // the same.\n packageAliases: {\n // Client UI component libraries\n '@dsh-plugin/dsh-loader/ui-primitives': '@deepseek-ai/dsh-client-ui-primitives',\n '@dsh-plugin/dsh-loader/ui-slots': '@deepseek-ai/dsh-client-ui-slots',\n '@dsh-plugin/dsh-loader/web-react': '@deepseek-ai/dsh-client-web-react',\n '@dsh-plugin/dsh-loader/schema-form': '@deepseek-ai/dsh-client-schema-form',\n '@dsh-plugin/dsh-loader/ui-settings': '@deepseek-ai/dsh-client-ui-settings/client',\n // Client runtime\n '@dsh-plugin/dsh-loader/runtime': '@deepseek-ai/dsh-client-runtime/client',\n },\n },\n];\n","// dshloader client bundle entry (design.md §3.5 / §4.3 / §7.3).\n//\n// Loaded in the `immediately` prefetch tier (package.json `dsh.client`).\n// Responsibilities:\n// 1. Mount `window.__dshLoader__` with `require` / `registerModuleAlias` /\n// `rpc.settings.*`.\n// 2. Register module-alias factories via `window.__ModuleLoader__.load` so\n// deep source imports (fix 1) and stable module names resolve to the\n// public runtime client entry.\n// 3. When `exposeAllNamespaces` is on, install a fetch interceptor that\n// merges non-whitelisted namespaces into `/api/settings.describe` and\n// routes non-whitelisted writes through the host bridge, echoing the\n// request `rpcId` in the `{ type: 'server-response', rpcId, result }`\n// envelope (fix 5, path 2 — mirrors dsh-upstream-fixes/lib/client.js).\n//\n// The module exports an `installClient` function for testability and runs an\n// IIFE at the bottom for the real browser bundle.\nimport { LOADER_VERSION, LOG_PREFIX } from './version.js';\nimport { clientAdapters } from './adapters/index.js';\nimport { BRIDGE_PREFIX } from './adapters/dsh-1-x.js';\n\n/** Browser-only globals dshloader relies on (typed loosely so the module compiles without DOM lib). */\ntype FetchImpl = (input: any, init?: any) => Promise<{ clone(): { json(): any }; json(): any }>;\ninterface DshLoaderWindowLike {\n fetch: FetchImpl;\n location?: { origin?: string };\n Response?: new (body?: string, init?: { status?: number; headers?: Record<string, string> }) => any;\n __ModuleLoader__?: {\n load(handoff: { id: string; factory: (require: (spec: string) => any) => any }): unknown;\n };\n __DSHLOADER_VERSION__?: string;\n __DSHLOADER_CONFIG__?: { exposeAllNamespaces?: boolean };\n __dshNativeRequire__?: (spec: string) => any;\n __dshLoader__?: unknown;\n}\n\ndeclare global {\n // Intentionally NOT declaring `window` here: this module must compile in BOTH\n // programs — the Node build (tsconfig.build.json → dist/client.js, which the\n // client tests import) with no DOM lib, and the browser program that also\n // compiles the React UI modules WITH lib.dom. Declaring `window` would\n // collide with lib.dom's own declaration in the latter, so the ambient window\n // is read through `globalThis` by {@link ambientWindow} instead.\n}\n\n/**\n * The ambient browser `window`, when this module runs in a browser-like realm.\n * Read off `globalThis` so no DOM lib and no global declaration is required.\n */\nfunction ambientWindow(): DshLoaderWindowLike | undefined {\n const scope = globalThis as { window?: unknown };\n const found = scope.window;\n return typeof found === 'object' && found !== null ? (found as DshLoaderWindowLike) : undefined;\n}\n\nexport class ModuleNotFoundError extends Error {\n specifier: string;\n\n constructor(specifier: string) {\n super(`${LOG_PREFIX} module not found: ${specifier}`);\n this.name = 'ModuleNotFoundError';\n this.specifier = specifier;\n }\n}\n\ninterface ClientAdapter {\n supports: string;\n name: string;\n moduleAliases?: Record<string, string>;\n packageAliases?: Record<string, string>;\n}\n\n/**\n * Pick the client adapter for the given dsh version. v1 ships a single\n * client adapter (dsh 1.x); when more are added, swap this for a semver-based\n * selection mirroring the host AdapterRegistry.\n */\nfunction pickClientAdapter(dshVersion?: string): ClientAdapter {\n return clientAdapters[0];\n}\n\ninterface CreateClientAPIOpts {\n dshVersion?: string;\n adapterVersion?: string;\n moduleAliases?: Record<string, string>;\n packageAliases?: Map<string, string> | Record<string, string>;\n requireImpl?: (spec: string) => any;\n fetchBridge?: {\n describe: () => Promise<any>;\n write: (mode: string, payload: object) => Promise<any>;\n };\n clientCtx?: { get?: (name: string) => any };\n}\n\n/**\n * Build the `window.__dshLoader__` API object.\n */\nexport function createClientAPI(opts: CreateClientAPIOpts = {}) {\n const aliases = new Map(Object.entries(opts.moduleAliases ?? {}));\n const requireImpl = opts.requireImpl ?? ((spec: string) => {\n throw new ModuleNotFoundError(spec);\n });\n const clientCtx = opts.clientCtx;\n // Reuse the Map from installClient when provided so registerPackageAlias\n // mutations are visible to the __ModuleLoader__ wrapper. Otherwise create\n // a fresh Map from a plain object.\n const packageAliases = opts.packageAliases instanceof Map\n ? opts.packageAliases\n : new Map(Object.entries(opts.packageAliases ?? {}));\n\n const api = {\n version: LOADER_VERSION,\n dshVersion: opts.dshVersion,\n adapterVersion: opts.adapterVersion,\n\n require(specifier: string) {\n if (typeof specifier !== 'string') throw new ModuleNotFoundError(String(specifier));\n const target = aliases.get(specifier);\n if (target === undefined) {\n throw new ModuleNotFoundError(specifier);\n }\n return requireImpl(target);\n },\n\n registerModuleAlias(alias: string, target: string) {\n aliases.set(alias, target);\n },\n\n /**\n * Register a package-name alias for the client module loader's\n * require(). When a plugin's bundle calls require('@old/pkg-name'),\n * the loader's wrapped require remaps it to '@new/pkg-name' before\n * hitting the module table. This lets dsh rename client packages\n * across versions without forcing plugin bundles to rebuild.\n */\n registerPackageAlias(oldName: string, newName: string) {\n packageAliases.set(oldName, newName);\n },\n\n /**\n * Read a client-side cordis service by name.\n * Proxies to `clientCtx.get(name)` — the same ctx.get plugins use\n * inside their client `apply(ctx)`, but exposed through the stable\n * dshloader surface so plugins don't depend on the cordis context\n * shape directly.\n *\n * Only available when dshloader's client apply() received a ctx\n * (cordis client boot). Returns undefined when ctx is not wired.\n */\n services: {\n get(name: string) {\n if (clientCtx === undefined || typeof clientCtx.get !== 'function') return undefined;\n return clientCtx.get(name);\n },\n },\n\n rpc: opts.fetchBridge\n ? {\n settings: {\n describe: () => opts.fetchBridge!.describe(),\n update: (ns: string, section: unknown) => opts.fetchBridge!.write('update', { ns, section }),\n replace: (ns: string, section: unknown) => opts.fetchBridge!.write('replace', { ns, section }),\n mutate: (ns: string, ops: unknown) => opts.fetchBridge!.write('mutate', { ns, ops }),\n },\n }\n : undefined,\n };\n\n return api;\n}\n\ninterface InstallClientOpts {\n window?: DshLoaderWindowLike;\n dshVersion?: string;\n exposeAllNamespaces?: boolean;\n requireImpl?: (spec: string) => any;\n hostBridgePrefix?: string;\n packageAliases?: Record<string, string>;\n clientCtx?: { get?: (name: string) => any };\n}\n\n/**\n * Install dshloader into a browser-like environment.\n */\nexport function installClient(opts: InstallClientOpts = {}) {\n const win = opts.window ?? ambientWindow();\n if (win === undefined) return undefined;\n\n const dshVersion = opts.dshVersion ?? win.__DSHLOADER_VERSION__;\n const adapter = pickClientAdapter(dshVersion);\n const moduleAliases = { ...(adapter.moduleAliases ?? {}) };\n // Merge adapter-declared package aliases with any passed via opts (opts\n // win on conflict, so tests / runtime can override adapter defaults).\n const packageAliases = new Map(Object.entries(adapter.packageAliases ?? {}));\n if (opts.packageAliases) {\n for (const [k, v] of Object.entries(opts.packageAliases)) packageAliases.set(k, v);\n }\n\n // fetch bridge (only meaningful when exposeAllNamespaces is on).\n const exposeAllNamespaces = Boolean(\n opts.exposeAllNamespaces ?? win.__DSHLOADER_CONFIG__?.exposeAllNamespaces,\n );\n const bridgePrefix = opts.hostBridgePrefix ?? BRIDGE_PREFIX;\n\n const fetchBridge = exposeAllNamespaces\n ? {\n describe: () =>\n win.fetch(`${bridgePrefix}/settings/describe`, { headers: { accept: 'application/json' } }).then((r) => r.json()),\n write: (mode: string, payload: object) =>\n win.fetch(`${bridgePrefix}/settings/${mode}`, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(payload),\n }).then((r) => r.json()),\n }\n : undefined;\n\n const api = createClientAPI({\n dshVersion,\n adapterVersion: adapter.supports,\n moduleAliases,\n packageAliases,\n requireImpl: opts.requireImpl ?? ((spec) => win.__dshNativeRequire__?.(spec)),\n fetchBridge,\n clientCtx: opts.clientCtx,\n });\n win.__dshLoader__ = api;\n\n // Wrap __ModuleLoader__.load so every factory's require() function\n // applies package-name aliases before hitting the module table. This\n // must happen BEFORE registering module-alias factories below, because\n // those factories also receive the wrapped require.\n const loader = win.__ModuleLoader__;\n if (loader && typeof loader.load === 'function') {\n const originalLoad = loader.load.bind(loader);\n loader.load = function dshloaderLoad(handoff: { id: string; factory: (require: (spec: string) => any) => any }) {\n const wrappedFactory = (require: (spec: string) => any) => {\n const aliasedRequire = (spec: string) => {\n const mapped = packageAliases.get(spec);\n return require(mapped ?? spec);\n };\n return handoff.factory(aliasedRequire);\n };\n return originalLoad({ id: handoff.id, factory: wrappedFactory });\n };\n }\n\n // Register module-alias factories with the client module loader (fix 1).\n if (loader && typeof loader.load === 'function') {\n for (const [aliasId, target] of Object.entries(moduleAliases)) {\n loader.load({\n id: aliasId,\n factory: (require: (spec: string) => any) => {\n const mod = require(target);\n // Preserve the deep import's expected named export shape.\n if (aliasId.endsWith('context-provenance.ts') || aliasId.endsWith('context-provenance')) {\n return { contextProvenance: mod.contextProvenance };\n }\n return mod;\n },\n });\n }\n }\n\n if (exposeAllNamespaces) {\n installSettingsFetchInterceptor(win, bridgePrefix);\n console.warn(`${LOG_PREFIX} exposeAllNamespaces enabled: bypassing official settings whitelist`);\n }\n\n return api;\n}\n\n/**\n * Fetch interceptor for settings namespace whitelist bypass (fix 5, path 2).\n * Mirrors dsh-upstream-fixes/lib/client.js (127-223).\n *\n * - /api/settings.describe: merge non-whitelisted namespaces from the host\n * bridge into the official response (rpcId/official fields preserved).\n * - /api/settings.{update,mutate,replace}: route writes for namespaces the\n * official proxy does NOT expose through the host bridge, and rebuild the\n * response envelope as `{ type: 'server-response', rpcId, result }` so the\n * official client can correlate the response with the request.\n */\nexport function installSettingsFetchInterceptor(\n win: DshLoaderWindowLike,\n bridgePrefix = BRIDGE_PREFIX,\n): () => void {\n if (typeof win.fetch !== 'function') return () => {};\n const originalFetch = win.fetch;\n /** Namespaces the official proxy itself exposed (learned from describe). */\n const officialExposed = new Set<string>();\n\n win.fetch = async function dshloaderFetch(this: unknown, input: any, init?: any) {\n let pathname = '';\n try {\n const urlLike = typeof input === 'string' ? input : (input as { url?: string }).url;\n pathname = new URL(urlLike as string, win.location?.origin ?? 'http://localhost').pathname;\n } catch {\n pathname = String(input).split('?')[0];\n }\n const method = (init?.method ?? 'GET').toUpperCase();\n\n // describe: merge bridge namespaces into the official response.\n if (pathname === '/api/settings.describe') {\n const response = await originalFetch.call(this, input, init);\n try {\n const body = await response.clone().json();\n const namespaces = body?.result?.value?.namespaces;\n if (!Array.isArray(namespaces)) return response;\n for (const row of namespaces) {\n if (typeof row?.ns === 'string') officialExposed.add(row.ns);\n }\n const extra = await originalFetch.call(this, `${bridgePrefix}/settings/describe`, {\n headers: { accept: 'application/json' },\n });\n const extraBody = await extra.json();\n if (extraBody?.ok !== true || !Array.isArray(extraBody.namespaces)) return response;\n const seen = new Set(namespaces.map((row: { ns: string }) => row.ns));\n const merged = [...namespaces, ...extraBody.namespaces.filter((row: { ns: string }) => !seen.has(row.ns))];\n const ResponseCtor = win.Response!;\n return new ResponseCtor(\n JSON.stringify({ ...body, result: { ...body.result, value: { ...body.result.value, namespaces: merged } } }),\n { status: 200, headers: { 'content-type': 'application/json' } },\n );\n } catch {\n return response;\n }\n }\n\n // writes: route non-whitelisted namespaces through the bridge, echo rpcId.\n if (\n (pathname === '/api/settings.update' || pathname === '/api/settings.mutate' || pathname === '/api/settings.replace') &&\n method === 'POST'\n ) {\n let rpcId: unknown = null;\n let payload: { ns?: string; [k: string]: unknown } | null = null;\n try {\n const parsed = JSON.parse(String(init?.body ?? '{}'));\n rpcId = parsed.rpcId;\n payload = parsed.payload;\n } catch {\n /* fall through to the original endpoint */\n }\n const ns = typeof payload?.ns === 'string' ? payload.ns : '';\n if (rpcId !== null && ns !== '' && officialExposed.size > 0 && !officialExposed.has(ns)) {\n try {\n const mode = pathname.slice('/api/settings.'.length);\n const res = await originalFetch.call(this, `${bridgePrefix}/settings/${mode}`, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(payload),\n });\n const body = await res.json();\n if (body?.result) {\n const ResponseCtor = win.Response!;\n return new ResponseCtor(\n JSON.stringify({ type: 'server-response', rpcId, result: body.result }),\n { status: 200, headers: { 'content-type': 'application/json' } },\n );\n }\n } catch {\n /* fall back to the original endpoint */\n }\n }\n }\n\n return originalFetch.call(this, input, init);\n };\n\n return () => {\n win.fetch = originalFetch;\n };\n}\n\n// ── cordis client-plugin entry ─────────────────────────────────────────\n// dsh's client boot applies every registered bundle as a cordis plugin:\n// the module must expose `apply` (third-party plugins / dsh-client-runtime\n// all do `exports.apply = apply`). Without it the client boot fails with\n// \"invalid plugin, expect function or object with an \\\"apply\\\" method\".\n// `installClient` mounts window.__dshLoader__, registers module aliases,\n// wires the client cordis ctx for `services.get`, and (when opted in)\n// installs the settings fetch interceptor.\nexport const name = '@dsh-plugin/dsh-loader'\nexport const inject: string[] = []\nexport function apply(ctx: { get?: (name: string) => any }) {\n const win = ambientWindow();\n if (win !== undefined) installClient({ window: win, clientCtx: ctx });\n}\n","/**\n * The dsh-1-x SHELL ANCHOR TABLE.\n *\n * Every entry is a selector some plugin in this family currently hardcodes.\n * Centralising them here is the whole point of `dshLoader.ui`: when dsh moves\n * its DOM, this table changes and the plugins do not.\n *\n * Each anchor records WHO needed it and WHAT it was before, so a future\n * maintainer can trace an anchor back to the behaviour it supports.\n *\n * @module @dsh-plugin/dsh-loader/ui/anchors\n */\nimport type { AnchorSpec } from './slots.js';\n\n/** Query helper that tolerates an invalid selector (returns nothing). */\nfunction all(selector: string): () => Iterable<Element> {\n return () => {\n if (typeof document === 'undefined') return [];\n try {\n return document.querySelectorAll(selector);\n } catch {\n return [];\n }\n };\n}\n\n/** Anchor names dshloader ships for the dsh 1.x shell. */\nexport const ANCHOR_NAMES = [\n 'conversation.status',\n 'conversation.column',\n 'shell.overlay',\n 'desktop.detailsSurface',\n 'layout.frame',\n 'settings.nav',\n] as const;\n\n/** One of the built-in anchor names. */\nexport type BuiltinAnchor = (typeof ANCHOR_NAMES)[number];\n\n/**\n * The built-in anchors for dsh 1.x (verified against dsh 0.1.0-rc.6).\n *\n * Provenance of each selector:\n *\n * - `conversation.status` — dsh-thought-buddy, `src/client/index.ts:632-637`:\n * `[data-conversation-scroll] [role=\"status\"]` with a whole-document\n * `[role=\"status\"]` fallback. Callers add their own `accept` (thought-buddy\n * matches the status text) via {@link AnchorSpec.accept} on a redefinition,\n * or filter in `MountSpec.when`.\n * - `conversation.column` — dsh-better-sidebar, `src/client/Sidebar.tsx:396`:\n * `#root [data-slot=\"conversation\"]`.\n * - `shell.overlay` — dsh-code-review, `src/client.ts:1930` / `:2528`:\n * `[data-shell-overlay]`.\n * - `desktop.detailsSurface` — dsh-code-review, `src/client.ts:1957`:\n * `.dshDesktopDetailsSurface`. A CSS-module-adjacent CLASS name and therefore\n * the most fragile anchor in the table; kept because the behaviour needs it.\n * - `layout.frame` — dsh-code-review, `src/client.ts:1176` / `:1209` / `:1244`:\n * the frame whose `style.gridTemplateColumns` carries the sidebar width and\n * whose `data-sidebar-collapsed` attribute carries the collapsed state. This\n * anchor is READ (via `ui.hosts('layout.frame')`), never mounted into.\n * - `settings.nav` — dsh-better-sidebar, `src/client/settings-nav-icon.ts`:\n * the settings navigation list that gets an icon synced into it.\n */\nexport const BUILTIN_ANCHORS: Record<BuiltinAnchor, AnchorSpec> = {\n 'conversation.status': {\n describe: 'Conversation turn-status strip ([data-conversation-scroll] [role=\"status\"])',\n find: all('[data-conversation-scroll] [role=\"status\"]'),\n fallback: all('[role=\"status\"]'),\n insert: 'prepend',\n },\n 'conversation.column': {\n describe: 'Conversation centre column (#root [data-slot=\"conversation\"])',\n find: all('#root [data-slot=\"conversation\"]'),\n insert: 'append',\n },\n 'shell.overlay': {\n describe: 'Shell overlay host ([data-shell-overlay])',\n find: all('[data-shell-overlay]'),\n insert: 'append',\n },\n 'desktop.detailsSurface': {\n describe: 'Desktop details surface (.dshDesktopDetailsSurface) — class-based, fragile',\n find: all('.dshDesktopDetailsSurface'),\n insert: 'append',\n },\n 'layout.frame': {\n describe: 'Layout frame carrying sidebar width / collapsed state (read-only anchor)',\n find: all('[data-sidebar-collapsed], [data-shell-frame]'),\n insert: 'append',\n },\n 'settings.nav': {\n describe: 'Settings navigation list',\n find: all('[data-settings-nav]'),\n fallback: all('[role=\"tablist\"]'),\n insert: 'append',\n },\n};\n\n/** Read the sidebar layout state from the `layout.frame` anchor. */\nexport interface LayoutFrameState {\n /** Whether the shell reports the sidebar as collapsed. */\n collapsed: boolean;\n /** First `px` value of the frame's grid template, when present. */\n firstColumnPx: number | undefined;\n}\n\n/**\n * Project one `layout.frame` host into {@link LayoutFrameState}.\n *\n * Encapsulates the `style.gridTemplateColumns` parsing dsh-code-review does at\n * `src/client.ts:1176`, so the regex lives with the anchor it belongs to.\n */\nexport function readLayoutFrame(host: Element): LayoutFrameState {\n const collapsed = host.hasAttribute('data-sidebar-collapsed');\n let firstColumnPx: number | undefined;\n const style = (host as HTMLElement).style;\n const template = typeof style?.gridTemplateColumns === 'string' ? style.gridTemplateColumns : '';\n const match = /^\\s*([\\d.]+)px/.exec(template);\n if (match !== null) {\n const value = Number.parseFloat(match[1]);\n if (Number.isFinite(value)) firstColumnPx = value;\n }\n return { collapsed, firstColumnPx };\n}\n","/**\n * The dshloader UI SLOT engine (`ctx.dshLoader.ui` / `__dshLoader__.ui`).\n *\n * dsh's Web shell offers official slots for a few places (`settings.section`,\n * `conversation.chat.node`, …) but not for everything plugins need to decorate.\n * Today four plugins in this family each hand-roll the same DOM-injection\n * boilerplate against hardcoded shell selectors:\n *\n * - dsh-thought-buddy → `[data-conversation-scroll] [role=\"status\"]`\n * - dsh-auxiliary → the Models page's editable model rows\n * - dsh-code-review → `[data-shell-overlay]`, `.dshDesktopDetailsSurface`\n * - dsh-better-sidebar → `#root [data-slot=\"conversation\"]`, theme root, …\n *\n * Every one of them re-implements: a MutationObserver, requestAnimationFrame\n * coalescing, an idempotence guard, self-healing after a React re-render, and\n * teardown. This module implements that ONCE and moves the shell selectors into\n * a named ANCHOR TABLE the version adapter owns — so when dsh moves its DOM,\n * one anchor entry changes instead of four plugins.\n *\n * What it cannot do: invent an anchor that no longer exists. A vanished anchor\n * turns N silent breakages into ONE diagnosable one (`ui.diagnose()`), which is\n * the honest goal — DOM injection is centralised here, not made robust. The\n * durable fix stays \"get the anchor promoted to an official slot\".\n *\n * @module @dsh-plugin/dsh-loader/ui/slots\n */\nimport * as React from 'react';\nimport { createRoot, type Root } from 'react-dom/client';\n\n/** Where a mount node is placed relative to its host element. */\nexport type InsertMode = 'prepend' | 'append' | 'before' | 'after';\n\n/** How the active adapter locates one shell anchor. */\nexport interface AnchorSpec {\n /** Human-readable description, used by {@link UiAPI.diagnose}. */\n describe: string;\n /** Primary locator. Return every element that should host a mount. */\n find: () => Iterable<Element>;\n /**\n * Fallback locator, tried only when `find` yields nothing. Lets an anchor\n * survive a narrow selector going stale (the pattern thought-buddy uses:\n * scoped selector first, whole-document second).\n */\n fallback?: () => Iterable<Element>;\n /** Extra predicate a candidate must satisfy (e.g. matching text content). */\n accept?: (host: Element) => boolean;\n /** Placement of the mount node. Defaults to `'append'`. */\n insert?: InsertMode;\n /** Tag name for the generated mount node. Defaults to `'span'`. */\n tagName?: string;\n}\n\n/** One plugin-supplied mount against an anchor. */\nexport interface MountSpec {\n /**\n * Unique mount id, `'<plugin>:<what>'`. Doubles as the `data-dshl-slot`\n * attribute value that makes mounting idempotent.\n */\n id: string;\n /**\n * Populate the mount node. Called once per host; return a cleanup that\n * releases whatever was created.\n */\n render: (mount: HTMLElement, host: Element) => (() => void) | void;\n /** Skip this host when the predicate returns false. */\n when?: (host: Element) => boolean;\n}\n\n/** A React flavour of {@link MountSpec}. */\nexport interface ReactMountSpec {\n /** Unique mount id, `'<plugin>:<what>'`. */\n id: string;\n /** Component rendered into the mount node; receives the host element. */\n component: React.ComponentType<{ host: Element }>;\n /** Skip this host when the predicate returns false. */\n when?: (host: Element) => boolean;\n}\n\n/** One live mount instance. */\ninterface Instance {\n mount: HTMLElement;\n cleanup: (() => void) | undefined;\n}\n\n/** Diagnostics for one registered anchor. */\nexport interface AnchorDiagnostic {\n anchor: string;\n describe: string;\n /** Hosts the primary locator currently finds. */\n hosts: number;\n /** Whether the fallback locator had to be used. */\n usedFallback: boolean;\n /** Mount ids currently registered against this anchor. */\n mounts: string[];\n /** Live mount instances across all hosts. */\n live: number;\n}\n\n/** The `ui` facade. */\nexport interface UiAPI {\n /**\n * Register (or replace) an anchor. The adapter seeds the built-ins at boot;\n * a plugin may add its own for shell areas dshloader does not know yet.\n * @returns a disposer removing the anchor and unmounting everything on it.\n */\n defineAnchor(name: string, spec: AnchorSpec): () => void;\n /** Anchor names currently registered. */\n anchors(): string[];\n /**\n * The elements an anchor currently resolves to. Use this for anchors that are\n * READ rather than decorated — e.g. reading the layout frame's collapsed\n * attribute or grid width instead of mounting into it.\n */\n hosts(anchor: string): Element[];\n /**\n * Subscribe to \"the shell's DOM has settled\": called once per coalesced\n * mutation batch, on the same observer and the same rAF frame the mount sweep\n * uses.\n *\n * This exists for injections whose HOST IDENTIFICATION is itself business\n * logic and therefore does not fit the anchor model — dsh-auxiliary's model\n * catalog is the motivating case: it cross-references `aria-label` inputs\n * against a provider directory, re-reads settings on a debounce, and also\n * listens for `input` events, so an `AnchorSpec.find()` could never express\n * it. Such a caller keeps its own sweep but stops running a second\n * MutationObserver over the whole document.\n *\n * The listener MUST be idempotent: it is invoked again after any batch,\n * including batches its own writes caused.\n *\n * @returns an unsubscribe function.\n */\n onDomSettled(listener: () => void): () => void;\n /**\n * Mount imperative content on every element an anchor resolves to, now and\n * whenever the shell re-renders. Idempotent per (host, mount id).\n * @returns a disposer unmounting every instance of this mount.\n */\n mount(anchor: string, spec: MountSpec): () => void;\n /**\n * Mount a React component on every element an anchor resolves to. A React\n * root is created per host and unmounted on teardown.\n * @returns a disposer unmounting every instance of this mount.\n */\n mountReact(anchor: string, spec: ReactMountSpec): () => void;\n /** Snapshot of anchor health — the single place to look when injection stops working. */\n diagnose(): AnchorDiagnostic[];\n /** Stop observing and unmount everything (called by the loader's own teardown). */\n destroy(): void;\n}\n\n/** Attribute marking a generated mount node (and making re-mount idempotent). */\nconst SLOT_ATTR = 'data-dshl-slot';\n\n/** Options for {@link createUiAPI}. */\nexport interface CreateUiOptions {\n /** Root to observe. Defaults to `document.documentElement`. */\n observeRoot?: Element;\n /** Diagnostic sink; defaults to `console.warn`. */\n warn?: (message: string) => void;\n}\n\n/**\n * Build the `ui` facade with its own observer. One engine serves every anchor\n * and every mount, so the shell is observed exactly once regardless of how many\n * plugins inject.\n */\nexport function createUiAPI(options: CreateUiOptions = {}): UiAPI {\n const warn = options.warn ?? ((message: string) => console.warn(message));\n const anchors = new Map<string, AnchorSpec>();\n /** anchor name → mount id → spec */\n const mounts = new Map<string, Map<string, MountSpec>>();\n /** anchor name → mount id → host → instance */\n const live = new Map<string, Map<string, Map<Element, Instance>>>();\n /** Anchors whose primary locator came up empty on the last sweep. */\n const fellBack = new Set<string>();\n /** `onDomSettled` subscribers, notified once per coalesced batch. */\n const settledListeners = new Set<() => void>();\n\n let observer: MutationObserver | undefined;\n let scheduled = false;\n let destroyed = false;\n\n const hasDom = (): boolean => typeof document !== 'undefined' && typeof MutationObserver !== 'undefined';\n\n /** Resolve an anchor to its host elements, recording fallback use. */\n const resolve = (name: string, spec: AnchorSpec): Element[] => {\n const collect = (source: (() => Iterable<Element>) | undefined): Element[] => {\n if (source === undefined) return [];\n try {\n return [...source()];\n } catch {\n return [];\n }\n };\n let hosts = collect(spec.find);\n if (hosts.length === 0) {\n const alt = collect(spec.fallback);\n if (alt.length > 0) {\n fellBack.add(name);\n hosts = alt;\n } else {\n fellBack.delete(name);\n }\n } else {\n fellBack.delete(name);\n }\n if (spec.accept !== undefined) {\n hosts = hosts.filter(host => {\n try {\n return spec.accept!(host);\n } catch {\n return false;\n }\n });\n }\n // De-duplicate: the primary and fallback locators may overlap.\n return [...new Set(hosts)];\n };\n\n /** Insert a freshly created mount node relative to its host. */\n const place = (host: Element, node: HTMLElement, mode: InsertMode): void => {\n switch (mode) {\n case 'prepend':\n host.insertBefore(node, host.firstChild);\n return;\n case 'before':\n host.parentNode?.insertBefore(node, host);\n return;\n case 'after':\n host.parentNode?.insertBefore(node, host.nextSibling);\n return;\n default:\n host.appendChild(node);\n }\n };\n\n /** Tear down one instance, containing any cleanup failure. */\n const teardown = (instance: Instance): void => {\n try {\n instance.cleanup?.();\n } catch (error) {\n warn(`[dshloader.ui] mount cleanup threw: ${error instanceof Error ? error.message : String(error)}`);\n }\n if (instance.mount.parentNode !== null) {\n instance.mount.parentNode.removeChild(instance.mount);\n }\n };\n\n const instancesFor = (anchor: string, mountId: string): Map<Element, Instance> => {\n let byMount = live.get(anchor);\n if (byMount === undefined) {\n byMount = new Map();\n live.set(anchor, byMount);\n }\n let byHost = byMount.get(mountId);\n if (byHost === undefined) {\n byHost = new Map();\n byMount.set(mountId, byHost);\n }\n return byHost;\n };\n\n /** One reconciliation pass over every anchor × mount. */\n const sweep = (): void => {\n if (destroyed || !hasDom()) return;\n for (const [name, spec] of anchors) {\n const specs = mounts.get(name);\n if (specs === undefined || specs.size === 0) continue;\n const hosts = resolve(name, spec);\n const insert = spec.insert ?? 'append';\n const tagName = spec.tagName ?? 'span';\n\n for (const [mountId, mountSpec] of specs) {\n const instances = instancesFor(name, mountId);\n\n // Drop instances whose host left the document, or whose node was\n // detached by a shell re-render (the latter is re-created below).\n for (const [host, instance] of [...instances]) {\n if (!host.isConnected || !instance.mount.isConnected) {\n teardown(instance);\n instances.delete(host);\n }\n }\n\n for (const host of hosts) {\n if (instances.has(host)) continue;\n if (mountSpec.when !== undefined) {\n try {\n if (!mountSpec.when(host)) continue;\n } catch {\n continue;\n }\n }\n // Idempotence net: a node with our slot id already inside the host\n // (e.g. left over from a previous engine) means \"already mounted\".\n if (host.querySelector(`[${SLOT_ATTR}=\"${mountId}\"]`) !== null) continue;\n\n const node = document.createElement(tagName);\n node.setAttribute(SLOT_ATTR, mountId);\n try {\n place(host, node, insert);\n } catch (error) {\n warn(`[dshloader.ui] could not place \"${mountId}\" on anchor \"${name}\": ${error instanceof Error ? error.message : String(error)}`);\n continue;\n }\n let cleanup: (() => void) | undefined;\n try {\n cleanup = mountSpec.render(node, host) ?? undefined;\n } catch (error) {\n warn(`[dshloader.ui] mount \"${mountId}\" render threw: ${error instanceof Error ? error.message : String(error)}`);\n if (node.parentNode !== null) node.parentNode.removeChild(node);\n continue;\n }\n instances.set(host, { mount: node, cleanup });\n }\n }\n }\n };\n\n /** Coalesce mutation bursts into one sweep per frame. */\n const schedule = (): void => {\n if (scheduled || destroyed) return;\n scheduled = true;\n const run = (): void => {\n scheduled = false;\n sweep();\n // Notify DOM-settled subscribers after the mount sweep, so a listener that\n // inspects the document sees this batch's mounts already in place.\n for (const listener of [...settledListeners]) {\n try {\n listener();\n } catch (error) {\n warn(\n `[dshloader.ui] onDomSettled listener threw: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n };\n if (typeof requestAnimationFrame === 'function') requestAnimationFrame(run);\n else setTimeout(run, 16);\n };\n\n /** Start observing on first use; a single observer serves every anchor. */\n const ensureObserver = (): void => {\n if (observer !== undefined || destroyed || !hasDom()) return;\n const root = options.observeRoot ?? document.documentElement;\n observer = new MutationObserver(schedule);\n observer.observe(root, { childList: true, subtree: true });\n };\n\n const removeAllFor = (anchor: string, mountId?: string): void => {\n const byMount = live.get(anchor);\n if (byMount === undefined) return;\n const ids = mountId === undefined ? [...byMount.keys()] : [mountId];\n for (const id of ids) {\n const byHost = byMount.get(id);\n if (byHost === undefined) continue;\n for (const instance of byHost.values()) teardown(instance);\n byHost.clear();\n byMount.delete(id);\n }\n };\n\n return {\n defineAnchor(name, spec) {\n anchors.set(name, spec);\n ensureObserver();\n schedule();\n return () => {\n removeAllFor(name);\n anchors.delete(name);\n mounts.delete(name);\n live.delete(name);\n fellBack.delete(name);\n };\n },\n\n anchors() {\n return [...anchors.keys()];\n },\n\n hosts(anchor) {\n const spec = anchors.get(anchor);\n return spec === undefined ? [] : resolve(anchor, spec);\n },\n\n onDomSettled(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('dshloader.ui.onDomSettled: listener must be a function');\n }\n settledListeners.add(listener);\n // Start observing even when no anchor is registered: a caller may use only\n // this primitive and never mount anything.\n ensureObserver();\n schedule();\n return () => {\n settledListeners.delete(listener);\n };\n },\n\n mount(anchor, spec) {\n if (typeof spec.id !== 'string' || spec.id.length === 0) {\n throw new TypeError('dshloader.ui.mount: spec.id is required');\n }\n if (!anchors.has(anchor)) {\n warn(\n `[dshloader.ui] mount \"${spec.id}\" targets unknown anchor \"${anchor}\" — ` +\n `known anchors: ${[...anchors.keys()].join(', ') || '(none)'}. ` +\n 'The mount stays registered and activates if the anchor is defined later.',\n );\n }\n let specs = mounts.get(anchor);\n if (specs === undefined) {\n specs = new Map();\n mounts.set(anchor, specs);\n }\n if (specs.has(spec.id)) {\n // Re-register (HMR): drop the old instances first so render runs fresh.\n removeAllFor(anchor, spec.id);\n }\n specs.set(spec.id, spec);\n ensureObserver();\n schedule();\n return () => {\n removeAllFor(anchor, spec.id);\n mounts.get(anchor)?.delete(spec.id);\n };\n },\n\n mountReact(anchor, spec) {\n const Component = spec.component;\n return this.mount(anchor, {\n id: spec.id,\n when: spec.when,\n render: (node, host) => {\n let root: Root | undefined;\n try {\n root = createRoot(node);\n root.render(React.createElement(Component, { host }));\n } catch (error) {\n warn(`[dshloader.ui] React mount \"${spec.id}\" failed: ${error instanceof Error ? error.message : String(error)}`);\n return undefined;\n }\n return () => {\n // Unmount runs from a mutation sweep or plugin teardown, never from\n // inside a React commit, so a synchronous unmount is safe here.\n try {\n root?.unmount();\n } catch {\n /* the root may already be gone with its container */\n }\n };\n },\n });\n },\n\n diagnose() {\n const out: AnchorDiagnostic[] = [];\n for (const [name, spec] of anchors) {\n const hosts = resolve(name, spec);\n const specs = mounts.get(name);\n let liveCount = 0;\n const byMount = live.get(name);\n if (byMount !== undefined) for (const byHost of byMount.values()) liveCount += byHost.size;\n out.push({\n anchor: name,\n describe: spec.describe,\n hosts: hosts.length,\n usedFallback: fellBack.has(name),\n mounts: specs === undefined ? [] : [...specs.keys()],\n live: liveCount,\n });\n }\n return out;\n },\n\n destroy() {\n destroyed = true;\n observer?.disconnect();\n observer = undefined;\n settledListeners.clear();\n for (const anchor of [...live.keys()]) removeAllFor(anchor);\n live.clear();\n mounts.clear();\n anchors.clear();\n fellBack.clear();\n },\n };\n}\n","/**\n * Design tokens and the idempotent stylesheet injector shared by every\n * dshloader UI component.\n *\n * Tokens are the DSH shell's own CSS custom properties, each paired with a\n * fallback so a component still renders sanely when the shell changes or the\n * plugin is previewed outside it. The names were harvested from the shell\n * styling the plugins in this family already rely on; when dsh renames one,\n * this file is the single place to fix.\n *\n * @module @dsh-plugin/dsh-loader/ui/style\n */\n\n/** `var(--name, fallback)` — a token reference that degrades instead of breaking. */\nexport function token(name: string, fallback: string): string {\n return `var(${name}, ${fallback})`;\n}\n\n/** The DSH shell tokens dshloader components consume. */\nexport const T = {\n /** Primary body text. */\n labelPrimary: token('--dsw-alias-label-primary', '#1a1a1a'),\n /** Secondary / supporting text. */\n labelSecondary: token('--dsw-alias-label-secondary', '#4a4a4a'),\n /** Tertiary text (hints, units). */\n labelTertiary: token('--dsw-alias-label-tertiary', '#8a8a8a'),\n /** Caption / disabled text. */\n labelCaption: token('--dsw-alias-label-caption', '#a8a8a8'),\n /** Page / card background. */\n bgBase: token('--dsw-alias-bg-base', '#ffffff'),\n /** Raised surface inside a page (shell layer 1). */\n bgLayer1: token('--dsw-alias-bg-layer-1', 'rgba(127,127,127,0.06)'),\n /** Subtle raised surface. */\n bgSubtle: token('--dsw-alias-bg-subtle', 'rgba(127,127,127,0.06)'),\n /** Hover wash for interactive rows. */\n bgHover: token('--dsw-alias-bg-hover', 'rgba(127,127,127,0.10)'),\n /** Default control border. */\n border: token('--dsw-alias-border-l2', '#d9d9d9'),\n /** Lighter divider. */\n borderSubtle: token('--dsw-alias-border-l1', '#ececec'),\n /** Primary button fill — the shell's own button colour, NOT the brand accent. */\n buttonPrimaryFill: token('--dsw-alias-button-primary-fill', '#4f7cff'),\n /** Text placed on top of {@link buttonPrimaryFill}. */\n buttonPrimaryForeground: token('--dsw-alias-label-primary-foreground', '#ffffff'),\n /** Brand accent (checked states, focus rings). */\n accent: token('--dsw-alias-brand-primary', '#4f7cff'),\n /** Accent text placed on top of the accent fill. */\n accentOn: token('--dsw-alias-brand-on-primary', '#ffffff'),\n /** Destructive accent. */\n danger: token('--dsw-alias-status-danger', '#e5484d'),\n /** Success state (saved confirmations). */\n success: token('--dsw-alias-state-success-primary', '#2e7d32'),\n /** Monospace stack for code / paths. */\n fontCode: token('--ds-font-family-code', 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace'),\n} as const;\n\n/**\n * Shared control geometry so every dshloader control lines up.\n *\n * The values mirror the shell's native settings-page metrics (as established by\n * dsh-auxiliary's section): pill-shaped primary buttons at height 32, inputs at\n * height 28 with radius 6, cards with radius 10 and padding 16.\n */\nexport const G = {\n /** Control height for inputs / selects. */\n controlHeight: 28,\n /** Compact control height. */\n controlHeightSm: 24,\n /** Primary button height (the shell's buttons run taller than inputs). */\n buttonHeight: 32,\n /** Standard corner radius (inputs). */\n radius: 6,\n /** Card corner radius. */\n cardRadius: 10,\n /** Pill radius (primary buttons, switches, chips). */\n radiusPill: 999,\n /** Horizontal padding inside an input. */\n padX: 8,\n /** Horizontal padding inside a primary button. */\n padXButton: 14,\n /** Standard row gap. */\n gap: 8,\n /** Base font size. */\n fontSize: 13,\n /** Small font size (descriptions). */\n fontSizeSm: 12,\n} as const;\n\n/**\n * Inject a stylesheet once, tagged with the DSH client-module ownership\n * attributes (`data-plugin` / `data-plugin-css`) so the HMR driver can reclaim\n * it. Calling this repeatedly with the same `cssId` is a no-op.\n *\n * @param pluginId - owning plugin id (package name), for `data-plugin`.\n * @param cssId - stylesheet id within the plugin, e.g. `'ui/components.css'`.\n * @param css - the stylesheet text.\n * @returns a disposer removing the tag, for callers that want one.\n */\nexport function injectStyle(pluginId: string, cssId: string, css: string): () => void {\n if (typeof document === 'undefined') return () => {};\n const tagId = `${pluginId}/${cssId}`;\n const selector = `style[data-plugin-css=\"${tagId}\"]`;\n const existing = document.querySelector(selector);\n if (existing !== null) return () => {};\n const style = document.createElement('style');\n style.dataset.plugin = pluginId;\n style.dataset.pluginCss = tagId;\n style.textContent = css;\n document.head.appendChild(style);\n return () => {\n if (style.parentNode !== null) style.parentNode.removeChild(style);\n };\n}\n\n/** The class-name prefix every dshloader UI class carries. */\nexport const CX = 'dshl';\n\n/** Join truthy class names. */\nexport function cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(' ');\n}\n","var _excluded = [\"size\", \"strokeWidth\", \"strokeLinecap\", \"strokeLinejoin\", \"theme\", \"fill\", \"className\", \"spin\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { createContext, useContext, useMemo } from 'react';\nexport var DEFAULT_ICON_CONFIGS = {\n size: '1em',\n strokeWidth: 4,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n rtl: false,\n theme: 'outline',\n colors: {\n outline: {\n fill: '#333',\n background: 'transparent'\n },\n filled: {\n fill: '#333',\n background: '#FFF'\n },\n twoTone: {\n fill: '#333',\n twoTone: '#2F88FF'\n },\n multiColor: {\n outStrokeColor: '#333',\n outFillColor: '#2F88FF',\n innerStrokeColor: '#FFF',\n innerFillColor: '#43CCF8'\n }\n },\n prefix: 'i'\n};\n\nfunction guid() {\n return 'icon-' + ((1 + Math.random()) * 0x100000000 | 0).toString(16).substring(1);\n}\n\nexport function IconConverter(id, icon, config) {\n var fill = typeof icon.fill === 'string' ? [icon.fill] : icon.fill || [];\n var colors = [];\n var theme = icon.theme || config.theme;\n\n switch (theme) {\n case 'outline':\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push('none');\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push('none');\n break;\n\n case 'filled':\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push('#FFF');\n colors.push('#FFF');\n break;\n\n case 'two-tone':\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push(typeof fill[1] === 'string' ? fill[1] : config.colors.twoTone.twoTone);\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push(typeof fill[1] === 'string' ? fill[1] : config.colors.twoTone.twoTone);\n break;\n\n case 'multi-color':\n colors.push(typeof fill[0] === 'string' ? fill[0] : 'currentColor');\n colors.push(typeof fill[1] === 'string' ? fill[1] : config.colors.multiColor.outFillColor);\n colors.push(typeof fill[2] === 'string' ? fill[2] : config.colors.multiColor.innerStrokeColor);\n colors.push(typeof fill[3] === 'string' ? fill[3] : config.colors.multiColor.innerFillColor);\n break;\n }\n\n return {\n size: icon.size || config.size,\n strokeWidth: icon.strokeWidth || config.strokeWidth,\n strokeLinecap: icon.strokeLinecap || config.strokeLinecap,\n strokeLinejoin: icon.strokeLinejoin || config.strokeLinejoin,\n colors: colors,\n id: id\n };\n}\nvar IconContext = /*#__PURE__*/createContext(DEFAULT_ICON_CONFIGS);\nexport var IconProvider = IconContext.Provider;\nexport function IconWrapper(name, rtl, render) {\n return function (props) {\n var size = props.size,\n strokeWidth = props.strokeWidth,\n strokeLinecap = props.strokeLinecap,\n strokeLinejoin = props.strokeLinejoin,\n theme = props.theme,\n fill = props.fill,\n className = props.className,\n spin = props.spin,\n extra = _objectWithoutProperties(props, _excluded);\n\n var ICON_CONFIGS = useContext(IconContext);\n var id = useMemo(guid, []);\n var svgProps = IconConverter(id, {\n size: size,\n strokeWidth: strokeWidth,\n strokeLinecap: strokeLinecap,\n strokeLinejoin: strokeLinejoin,\n theme: theme,\n fill: fill\n }, ICON_CONFIGS);\n var cls = [ICON_CONFIGS.prefix + '-icon'];\n cls.push(ICON_CONFIGS.prefix + '-icon' + '-' + name);\n\n if (rtl && ICON_CONFIGS.rtl) {\n cls.push(ICON_CONFIGS.prefix + '-icon-rtl');\n }\n\n if (spin) {\n cls.push(ICON_CONFIGS.prefix + '-icon-spin');\n }\n\n if (className) {\n cls.push(className);\n }\n\n return /*#__PURE__*/React.createElement(\"span\", _objectSpread(_objectSpread({}, extra), {}, {\n className: cls.join(' ')\n }), render(svgProps));\n };\n}","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('add', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: \"6\",\n y: \"6\",\n width: \"36\",\n height: \"36\",\n rx: \"3\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 16V32\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 24L32 24\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('alarm', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 25C14 19.4772 18.4772 15 24 15C29.5228 15 34 19.4772 34 25V41H14V25Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 5V8\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.8918 9.32823L33.9634 11.6264\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.2187 20.2873L39.2642 20.8083\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.78116 20.2874L8.73558 20.8083\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.1086 9.32802L14.037 11.6262\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 41H43\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('all-application', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 6H8C6.89543 6 6 6.89543 6 8V18C6 19.1046 6.89543 20 8 20H18C19.1046 20 20 19.1046 20 18V8C20 6.89543 19.1046 6 18 6Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 28H8C6.89543 28 6 28.8954 6 30V40C6 41.1046 6.89543 42 8 42H18C19.1046 42 20 41.1046 20 40V30C20 28.8954 19.1046 28 18 28Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40 6H30C28.8954 6 28 6.89543 28 8V18C28 19.1046 28.8954 20 30 20H40C41.1046 20 42 19.1046 42 18V8C42 6.89543 41.1046 6 40 6Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40 28H30C28.8954 28 28 28.8954 28 30V40C28 41.1046 28.8954 42 30 42H40C41.1046 42 42 41.1046 42 40V30C42 28.8954 41.1046 28 40 28Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('attention', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24 37C25.3807 37 26.5 35.8807 26.5 34.5C26.5 33.1193 25.3807 32 24 32C22.6193 32 21.5 33.1193 21.5 34.5C21.5 35.8807 22.6193 37 24 37Z\",\n fill: props.colors[2]\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 12V28\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('back', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44 40.8361C39.1069 34.8632 34.7617 31.4739 30.9644 30.6682C27.1671 29.8625 23.5517 29.7408 20.1182 30.303V41L4 23.5453L20.1182 7V17.167C26.4667 17.2172 31.8638 19.4948 36.3095 24C40.7553 28.5052 43.3187 34.1172 44 40.8361Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('branch', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40 28C42.2091 28 44 26.2091 44 24C44 21.7909 42.2091 20 40 20C37.7909 20 36 21.7909 36 24C36 26.2091 37.7909 28 40 28Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 12C11.2091 12 13 10.2091 13 8C13 5.79086 11.2091 4 9 4C6.79086 4 5 5.79086 5 8C5 10.2091 6.79086 12 9 12Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 44C11.2091 44 13 42.2091 13 40C13 37.7909 11.2091 36 9 36C6.79086 36 5 37.7909 5 40C5 42.2091 6.79086 44 9 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 12V36V24.0083H36\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('browser', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 18V40C42 41.1046 41.1046 42 40 42H8C6.89543 42 6 41.1046 6 40V18\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 8C6 6.89543 6.89543 6 8 6H40C41.1046 6 42 6.89543 42 8V18H6V8Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10C10.8954 10 10 10.8954 10 12C10 13.1046 10.8954 14 12 14Z\",\n fill: props.colors[2]\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M18 14C19.1046 14 20 13.1046 20 12C20 10.8954 19.1046 10 18 10C16.8954 10 16 10.8954 16 12C16 13.1046 16.8954 14 18 14Z\",\n fill: props.colors[2]\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24 14C25.1046 14 26 13.1046 26 12C26 10.8954 25.1046 10 24 10C22.8954 10 22 10.8954 22 12C22 13.1046 22.8954 14 24 14Z\",\n fill: props.colors[2]\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('check', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 11L16.875 37L5 25.1818\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('check-small', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 24L20 34L40 14\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('close', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 8L40 40\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 40L40 8\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('close-small', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 14L34 34\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 34L34 14\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('code', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 13L4 25.4322L16 37\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 13L44 25.4322L32 37\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 4L21 44\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('config', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 4L18 10H10V18L4 24L10 30V38H18L24 44L30 38H38V30L44 24L38 18V10H30L24 4Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 30C27.3137 30 30 27.3137 30 24C30 20.6863 27.3137 18 24 18C20.6863 18 18 20.6863 18 24C18 27.3137 20.6863 30 24 30Z\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('copy', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 12.4316V7.8125C13 6.2592 14.2592 5 15.8125 5H40.1875C41.7408 5 43 6.2592 43 7.8125V32.1875C43 33.7408 41.7408 35 40.1875 35H35.5163\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.1875 13H7.8125C6.2592 13 5 14.2592 5 15.8125V40.1875C5 41.7408 6.2592 43 7.8125 43H32.1875C33.7408 43 35 41.7408 35 40.1875V15.8125C35 14.2592 33.7408 13 32.1875 13Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('delete', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 10V44H39V10H9Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 20V33\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 20V33\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 10H44\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 10L19.289 4H28.7771L32 10H16Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('diamond', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.6364 5H37.3636L45 18.3L24 43L3 18.3L10.6364 5Z\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.6362 5L23.9999 43L37.3635 5\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 18.3H45\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.4092 18.3L24.0001 5L32.591 18.3\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('down', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 18L24 30L12 18\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('download', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 24.0083V42H42V24\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33 23L24 32L15 23\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.9917 6V32\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('edit', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 42H43\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 26.7199V34H18.3172L39 13.3081L31.6951 6L11 26.7199Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('error', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6 11L11 6L24 19L37 6L42 11L29 24L42 37L37 42L24 29L11 42L6 37L19 24L6 11Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('file-code', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 44H38C39.1046 44 40 43.1046 40 42V14H30V4H10C8.89543 4 8 4.89543 8 6V42C8 43.1046 8.89543 44 10 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 4L40 14\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27 24L32 29L27 34\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 24L16 29L21 34\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('file-text', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 44H38C39.1046 44 40 43.1046 40 42V14H30V4H10C8.89543 4 8 4.89543 8 6V42C8 43.1046 8.89543 44 10 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 4L40 14\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 22V36\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 22H24L30 22\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('folder', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 6C7 4.89543 7.89543 4 9 4H39C40.1046 4 41 4.89543 41 6V42C41 43.1046 40.1046 44 39 44H9C7.89543 44 7 43.1046 7 42V6Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 29H20\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 35H26\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 5C8 5 11.7647 18 24 18C36.2353 18 40 5 40 5\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"24\",\n cy: \"18\",\n r: \"4\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 4H9C7.89543 4 7 4.89543 7 6V12\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33 4H39C40.1046 4 41 4.89543 41 6V12\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('folder-open', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 9V41L9 21H39.5V15C39.5 13.8954 38.6046 13 37.5 13H24L19 7H6C4.89543 7 4 7.89543 4 9Z\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40 41L44 21H8.8125L4 41H40Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('full-screen', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33 6H42V15\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 33V42H33\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 42H6V33\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 15V6H15\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('globe', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.8261 4C41.6276 7.58886 44 12.6753 44 18.3158C44 29.1871 35.1871 38 24.3158 38C18.6753 38 13.5889 35.6276 10 31.8261\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24 32C31.732 32 38 25.732 38 18C38 10.268 31.732 4 24 4C16.268 4 10 10.268 10 18C10 25.732 16.268 32 24 32Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 38V44\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 44H30\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('help', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 28.6248V24.6248C27.3137 24.6248 30 21.9385 30 18.6248C30 15.3111 27.3137 12.6248 24 12.6248C20.6863 12.6248 18 15.3111 18 18.6248\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24 37.6248C25.3807 37.6248 26.5 36.5055 26.5 35.1248C26.5 33.7441 25.3807 32.6248 24 32.6248C22.6193 32.6248 21.5 33.7441 21.5 35.1248C21.5 36.5055 22.6193 37.6248 24 37.6248Z\",\n fill: props.colors[2]\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('info', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24 11C25.3807 11 26.5 12.1193 26.5 13.5C26.5 14.8807 25.3807 16 24 16C22.6193 16 21.5 14.8807 21.5 13.5C21.5 12.1193 22.6193 11 24 11Z\",\n fill: props.colors[2]\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5 34V20H23.5H22.5\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 34H28\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('left', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31 36L19 24L31 12\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('link', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.7073 9.56521L9.85801 24.4145C6.34329 27.9292 6.34329 33.6277 9.85801 37.1424V37.1424C13.3727 40.6571 19.0712 40.6571 22.5859 37.1424L40.2636 19.4647C42.6067 17.1216 42.6067 13.3226 40.2636 10.9794V10.9794C37.9205 8.63628 34.1215 8.63628 31.7783 10.9794L14.1007 28.6571C12.9291 29.8287 12.9291 31.7282 14.1007 32.8997V32.8997C15.2722 34.0713 17.1717 34.0713 18.3433 32.8997L33.1925 18.0505\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('loading', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 24C4 35.0457 12.9543 44 24 44V44C35.0457 44 44 35.0457 44 24C44 12.9543 35.0457 4 24 4\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 24C36 17.3726 30.6274 12 24 12C17.3726 12 12 17.3726 12 24C12 30.6274 17.3726 36 24 36V36\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('lock', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: \"6\",\n y: \"22\",\n width: \"36\",\n height: \"22\",\n rx: \"2\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 22V14C14 8.47715 18.4772 4 24 4C29.5228 4 34 8.47715 34 14V22\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 30V36\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('more', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"24\",\n r: \"3\",\n fill: props.colors[0]\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"24\",\n cy: \"24\",\n r: \"3\",\n fill: props.colors[0]\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"36\",\n cy: \"24\",\n r: \"3\",\n fill: props.colors[0]\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('pause', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 12V36\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 12V36\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('play', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 44C35.0457 44 44 35.0457 44 24C44 12.9543 35.0457 4 24 4C12.9543 4 4 12.9543 4 24C4 35.0457 12.9543 44 24 44Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 24V17.0718L26 20.5359L32 24L26 27.4641L20 30.9282V24Z\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('preview-close', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 16C6.63472 17.2193 7.59646 18.3504 8.82276 19.3554C12.261 22.1733 17.779 24 24 24C30.221 24 35.739 22.1733 39.1772 19.3554C40.4035 18.3504 41.3653 17.2193 42 16\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.9775 24L31.048 31.7274\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.3535 21.3536L43.0103 27.0104\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.00004 27.0103L10.6569 21.3534\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.9278 31.7276L18.9983 24.0001\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('preview-open', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 36C35.0457 36 44 24 44 24C44 24 35.0457 12 24 12C12.9543 12 4 24 4 24C4 24 12.9543 36 24 36Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 29C26.7614 29 29 26.7614 29 24C29 21.2386 26.7614 19 24 19C21.2386 19 19 21.2386 19 24C19 26.7614 21.2386 29 24 29Z\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('redo', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.7279 36.7279C33.4706 39.9853 28.9706 42 24 42C14.0589 42 6 33.9411 6 24C6 14.0589 14.0589 6 24 6C28.9706 6 33.4706 8.01472 36.7279 11.2721C38.3859 12.9301 42 17 42 17\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 8V17H33\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('refresh', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 8V24\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 24L6 40\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 24C42 14.0589 33.9411 6 24 6C18.9145 6 14.3216 8.10896 11.0481 11.5M6 24C6 33.9411 14.0589 42 24 42C28.8556 42 33.2622 40.0774 36.5 36.9519\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('right', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 12L31 24L19 36\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('save', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 9C6 7.34315 7.34315 6 9 6H34.2814L42 13.2065V39C42 40.6569 40.6569 42 39 42H9C7.34315 42 6 40.6569 6 39V9Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24.0083 6L24 13.3846C24 13.7245 23.5523 14 23 14H15C14.4477 14 14 13.7245 14 13.3846L14 6\",\n fill: props.colors[3]\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.0083 6L24 13.3846C24 13.7245 23.5523 14 23 14H15C14.4477 14 14 13.7245 14 13.3846L14 6H24.0083Z\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 6H34.2814\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 26H34\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 34H24.0083\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('search', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 38C30.3888 38 38 30.3888 38 21C38 11.6112 30.3888 4 21 4C11.6112 4 4 11.6112 4 21C4 30.3888 11.6112 38 21 38Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.657 14.3431C25.2093 12.8954 23.2093 12 21.0001 12C18.791 12 16.791 12.8954 15.3433 14.3431\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.2216 33.2217L41.7069 41.707\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('setting', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.686 15.171C37.9364 16.9643 38.8163 19.0352 39.2147 21.2727H44V26.7273H39.2147C38.8163 28.9648 37.9364 31.0357 36.686 32.829L40.0706 36.2137L36.2137 40.0706L32.829 36.686C31.0357 37.9364 28.9648 38.8163 26.7273 39.2147V44H21.2727V39.2147C19.0352 38.8163 16.9643 37.9364 15.171 36.686L11.7863 40.0706L7.92939 36.2137L11.314 32.829C10.0636 31.0357 9.18372 28.9648 8.78533 26.7273H4V21.2727H8.78533C9.18372 19.0352 10.0636 16.9643 11.314 15.171L7.92939 11.7863L11.7863 7.92939L15.171 11.314C16.9643 10.0636 19.0352 9.18372 21.2727 8.78533V4H26.7273V8.78533C28.9648 9.18372 31.0357 10.0636 32.829 11.314L36.2137 7.92939L40.0706 11.7863L36.686 15.171Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 29C26.7614 29 29 26.7614 29 24C29 21.2386 26.7614 19 24 19C21.2386 19 19 21.2386 19 24C19 26.7614 21.2386 29 24 29Z\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('setting-two', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.2838 43.1713C14.9327 42.1736 11.9498 40.3213 9.58787 37.867C10.469 36.8227 11 35.4734 11 34.0001C11 30.6864 8.31371 28.0001 5 28.0001C4.79955 28.0001 4.60139 28.01 4.40599 28.0292C4.13979 26.7277 4 25.3803 4 24.0001C4 21.9095 4.32077 19.8938 4.91579 17.9995C4.94381 17.9999 4.97188 18.0001 5 18.0001C8.31371 18.0001 11 15.3138 11 12.0001C11 11.0488 10.7786 10.1493 10.3846 9.35011C12.6975 7.1995 15.5205 5.59002 18.6521 4.72314C19.6444 6.66819 21.6667 8.00013 24 8.00013C26.3333 8.00013 28.3556 6.66819 29.3479 4.72314C32.4795 5.59002 35.3025 7.1995 37.6154 9.35011C37.2214 10.1493 37 11.0488 37 12.0001C37 15.3138 39.6863 18.0001 43 18.0001C43.0281 18.0001 43.0562 17.9999 43.0842 17.9995C43.6792 19.8938 44 21.9095 44 24.0001C44 25.3803 43.8602 26.7277 43.594 28.0292C43.3986 28.01 43.2005 28.0001 43 28.0001C39.6863 28.0001 37 30.6864 37 34.0001C37 35.4734 37.531 36.8227 38.4121 37.867C36.0502 40.3213 33.0673 42.1736 29.7162 43.1713C28.9428 40.752 26.676 39.0001 24 39.0001C21.324 39.0001 19.0572 40.752 18.2838 43.1713Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 31C27.866 31 31 27.866 31 24C31 20.134 27.866 17 24 17C20.134 17 17 20.134 17 24C17 27.866 20.134 31 24 31Z\",\n fill: props.colors[3],\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('sort', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 42L15 29H33L24 42Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 6L15 19H33L24 6Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('success', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 4L29.2533 7.83204L35.7557 7.81966L37.7533 14.0077L43.0211 17.8197L41 24L43.0211 30.1803L37.7533 33.9923L35.7557 40.1803L29.2533 40.168L24 44L18.7467 40.168L12.2443 40.1803L10.2467 33.9923L4.97887 30.1803L7 24L4.97887 17.8197L10.2467 14.0077L12.2443 7.81966L18.7467 7.83204L24 4Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 24L22 29L32 19\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('terminal', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: \"4\",\n y: \"8\",\n width: \"40\",\n height: \"32\",\n rx: \"2\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 18L19 24L12 30\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23 32H36\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('undo', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.2721 36.7279C14.5294 39.9853 19.0294 42 24 42C33.9411 42 42 33.9411 42 24C42 14.0589 33.9411 6 24 6C19.0294 6 14.5294 8.01472 11.2721 11.2721C9.61407 12.9301 6 17 6 17\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 9V17H14\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('unlock', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: \"7\",\n y: \"22.0476\",\n width: \"34\",\n height: \"22\",\n rx: \"2\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 22V14.0047C13.9948 8.87022 17.9227 4.56718 23.0859 4.05117C28.249 3.53516 32.9673 6.97408 34 12.0059\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 30V36\",\n stroke: props.colors[2],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('up', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 30L25 18L37 30\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('upload', false, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"mask\", {\n id: props.id + '7070702c',\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"48\",\n height: \"48\",\n style: {\n maskType: 'alpha'\n }\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48 0H0V48H48V0Z\",\n fill: props.colors[2]\n })), /*#__PURE__*/React.createElement(\"g\", {\n mask: 'url(#' + props.id + '7070702c' + ')'\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 24.0083V42H42V24\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33 15L24 6L15 15\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.9917 32V6\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n })));\n});","import React from 'react';\nimport { IconWrapper } from '../runtime';\nexport default IconWrapper('write', true, function (props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: props.size,\n height: props.size,\n viewBox: \"0 0 48 48\",\n fill: \"none\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.32497 43.4996L13.81 43.4998L44.9227 12.3871L36.4374 3.90186L5.32471 35.0146L5.32497 43.4996Z\",\n fill: props.colors[1],\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinejoin: props.strokeLinejoin\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.9521 12.3872L36.4374 20.8725\",\n stroke: props.colors[0],\n strokeWidth: props.strokeWidth,\n strokeLinecap: props.strokeLinecap,\n strokeLinejoin: props.strokeLinejoin\n }));\n});","/**\n * The curated dshloader ICON SET.\n *\n * Sourced from `@icon-park/react` so no plugin hand-maintains SVG path data\n * again (dsh-better-sidebar's `src/client/icons.tsx` keeps 10 icons by hand\n * today; every entry here replaces one of those or a\n * `@deepseek-ai/dsh-client-ui-primitives` icon import).\n *\n * WHY A SUBSET, NOT `export *`: IconPark ships ~2000 icons. dshloader's client\n * bundle is materialised through the DSH client module table, and a runtime\n * module boundary cannot be tree-shaken — re-exporting everything would put all\n * ~2000 icons into one bundle every plugin pays for. Naming a subset keeps the\n * cost proportional (only the icons listed here are bundled), and a plugin that\n * needs an exotic glyph can still depend on `@icon-park/react` directly.\n *\n * Adding an icon: import it below and add it to the export block. That is the\n * only change needed — no SVG, no viewBox, no stroke bookkeeping.\n *\n * @module @dsh-plugin/dsh-loader/ui/icons\n */\nimport * as React from 'react';\nimport Add from '@icon-park/react/es/icons/Add';\nimport Alarm from '@icon-park/react/es/icons/Alarm';\nimport AllApplication from '@icon-park/react/es/icons/AllApplication';\nimport Attention from '@icon-park/react/es/icons/Attention';\nimport Back from '@icon-park/react/es/icons/Back';\nimport Branch from '@icon-park/react/es/icons/Branch';\nimport Browser from '@icon-park/react/es/icons/Browser';\nimport Check from '@icon-park/react/es/icons/Check';\nimport CheckSmall from '@icon-park/react/es/icons/CheckSmall';\nimport Close from '@icon-park/react/es/icons/Close';\nimport CloseSmall from '@icon-park/react/es/icons/CloseSmall';\nimport Code from '@icon-park/react/es/icons/Code';\nimport Config from '@icon-park/react/es/icons/Config';\nimport Copy from '@icon-park/react/es/icons/Copy';\nimport Delete from '@icon-park/react/es/icons/Delete';\nimport Diamond from '@icon-park/react/es/icons/Diamond';\nimport Down from '@icon-park/react/es/icons/Down';\nimport Download from '@icon-park/react/es/icons/Download';\nimport Edit from '@icon-park/react/es/icons/Edit';\nimport ErrorIcon from '@icon-park/react/es/icons/Error';\nimport FileCode from '@icon-park/react/es/icons/FileCode';\nimport FileText from '@icon-park/react/es/icons/FileText';\nimport Folder from '@icon-park/react/es/icons/Folder';\nimport FolderOpen from '@icon-park/react/es/icons/FolderOpen';\nimport FullScreen from '@icon-park/react/es/icons/FullScreen';\nimport Globe from '@icon-park/react/es/icons/Globe';\nimport Help from '@icon-park/react/es/icons/Help';\nimport Info from '@icon-park/react/es/icons/Info';\nimport Left from '@icon-park/react/es/icons/Left';\nimport Link from '@icon-park/react/es/icons/Link';\nimport Loading from '@icon-park/react/es/icons/Loading';\nimport Lock from '@icon-park/react/es/icons/Lock';\nimport More from '@icon-park/react/es/icons/More';\nimport Pause from '@icon-park/react/es/icons/Pause';\nimport Play from '@icon-park/react/es/icons/Play';\nimport PreviewClose from '@icon-park/react/es/icons/PreviewClose';\nimport PreviewOpen from '@icon-park/react/es/icons/PreviewOpen';\nimport Redo from '@icon-park/react/es/icons/Redo';\nimport Refresh from '@icon-park/react/es/icons/Refresh';\nimport Right from '@icon-park/react/es/icons/Right';\nimport Save from '@icon-park/react/es/icons/Save';\nimport Search from '@icon-park/react/es/icons/Search';\nimport Setting from '@icon-park/react/es/icons/Setting';\nimport SettingTwo from '@icon-park/react/es/icons/SettingTwo';\nimport Sort from '@icon-park/react/es/icons/Sort';\nimport Success from '@icon-park/react/es/icons/Success';\nimport Terminal from '@icon-park/react/es/icons/Terminal';\nimport Undo from '@icon-park/react/es/icons/Undo';\nimport Unlock from '@icon-park/react/es/icons/Unlock';\nimport Up from '@icon-park/react/es/icons/Up';\nimport Upload from '@icon-park/react/es/icons/Upload';\nimport Write from '@icon-park/react/es/icons/Write';\nimport { IconProvider, DEFAULT_ICON_CONFIGS, type IIconProps, type Theme } from '@icon-park/react/es/runtime';\nimport { G } from './style.js';\n\n/** Props every dshloader icon accepts (IconPark's own prop contract). */\nexport type IconProps = IIconProps;\n\n/** An icon component. */\nexport type IconComponent = (props: IconProps) => React.ReactElement;\n\n/**\n * The curated set, grouped by purpose. Names are intent-based (`Settings`,\n * `Warning`) rather than IconPark's raw names so a glyph can be swapped without\n * touching consumers.\n */\nexport const Icons = {\n // structure / navigation\n ChevronUp: Up,\n ChevronDown: Down,\n ChevronLeft: Left,\n ChevronRight: Right,\n Back,\n Expand: FullScreen,\n More,\n Sort,\n // actions\n Add,\n Edit,\n Write,\n Delete,\n Copy,\n Save,\n Search,\n Refresh,\n Download,\n Upload,\n Undo,\n Redo,\n Play,\n Stop: Pause,\n Close,\n CloseSmall,\n Check,\n CheckSmall,\n // status\n Info,\n Warning: Attention,\n Error: ErrorIcon,\n Success,\n Loading,\n Help,\n // domain\n Settings: Setting,\n SettingsAlt: SettingTwo,\n Config,\n Terminal,\n Code,\n FileCode,\n Doc: FileText,\n Folder,\n FolderOpen,\n GitBranch: Branch,\n Link,\n Web: Globe,\n Browser,\n Lock,\n Unlock,\n EyeOpen: PreviewOpen,\n EyeClosed: PreviewClose,\n Alarm,\n Diamond,\n Apps: AllApplication,\n} as const;\n\n/** Name of a curated icon. */\nexport type IconName = keyof typeof Icons;\n\n/** Every curated icon name, for pickers and tests. */\nexport const ICON_NAMES = Object.keys(Icons) as IconName[];\n\n/**\n * Look one icon up by name. Unknown names resolve to `Help` rather than\n * throwing, so a stale name degrades to a visible placeholder.\n */\nexport function icon(name: IconName): IconComponent {\n return (Icons[name] ?? Icons.Help) as IconComponent;\n}\n\n/**\n * `<Icon name=\"Settings\" />` — the ergonomic form for data-driven icon choices\n * (menu descriptors, settings rows) where a component reference is awkward.\n */\nexport function Icon({ name, ...rest }: { name: IconName } & IconProps): React.ReactElement {\n const Component = icon(name);\n return React.createElement(Component, rest);\n}\n\n/** The icon defaults dshloader components render with. */\nexport const DSH_ICON_CONFIG = {\n ...DEFAULT_ICON_CONFIGS,\n size: G.fontSize + 3,\n strokeWidth: 3,\n theme: 'outline' as Theme,\n // `currentColor` is what makes icons follow DSH's theme tokens: the icon\n // inherits the colour of the text around it instead of pinning a hex value.\n colors: {\n ...DEFAULT_ICON_CONFIGS.colors,\n outline: { fill: 'currentColor', background: 'transparent' },\n },\n};\n\n/**\n * Wrap a subtree so every dshloader icon inside inherits the DSH defaults\n * (outline theme, `currentColor` fill, matching size). Plugins that render\n * dshloader components inside their own React tree should mount this once near\n * the root; the components in `./components.js` do not require it, but they look\n * consistent with the rest of DSH when it is present.\n */\nexport function DshIconProvider({ children }: { children?: React.ReactNode }): React.ReactElement {\n return React.createElement(IconProvider, { value: DSH_ICON_CONFIG }, children);\n}\n\nexport { IconProvider };\n","/**\n * The wrapped platform MENU (`DshMenu`).\n *\n * Consumers import this from `@dsh-plugin/dsh-loader/client` instead of\n * importing `@deepseek-ai/dsh-client-ui-primitives` directly. The wrapper exists\n * so that changes to the platform primitive — a renamed export, a moved package,\n * an altered prop shape — are absorbed HERE, in one line's distance, instead of\n * breaking every plugin that renders a dropdown.\n *\n * Two deliberate properties:\n *\n * 1. TYPES ARE HAND-WRITTEN, not re-exported. A shipped `.d.ts` that says\n * `export { Menu } from '@deepseek-ai/...'` resolves from dshloader's own\n * install — which consumers do not have (see docs/ui-kit.md, 铁律三) — so\n * re-exported types break consumer typecheck the moment dshloader is\n * published without devDependencies. These interfaces are written out and\n * must be kept in sync with upstream BY HAND when a prop the plugins use\n * changes; that maintenance cost is the price of consumer-side purity.\n * 2. THE PLATFORM IMPORT IS STATIC AND SINGULAR. This file is the only place in\n * dshloader that names the primitives package for menus. If it disappears or\n * renames, the fix is contained here. The static import means dshloader's\n * client bundle hard-depends on the primitive seed module — the same failure\n * mode the direct imports had, so no regression — which is also why the\n * missing-module degradation path is NOT attempted: with ESM compiled into\n * the CJS closure factory there is no clean way to defer the require, and a\n * half-working menu would be worse than an honest load error.\n *\n * @module @dsh-plugin/dsh-loader/ui/menu\n */\nimport * as React from 'react';\n// The SINGLE site that names the platform primitives package for menus.\nimport { Menu as PlatformMenu } from '@deepseek-ai/dsh-client-ui-primitives';\n\n/** One selectable row (optionally with a nested submenu). */\nexport interface MenuItem {\n id: string;\n label: React.ReactNode;\n disabled?: boolean;\n /** Leading icon. */\n icon?: React.ReactNode;\n /** Destructive row: error-coloured text/icon and danger hover fill. */\n danger?: boolean;\n /** Nested card opened to the right on hover/focus. */\n submenu?: readonly MenuItem[];\n}\n\n/** Hairline between item groups (not selectable). */\nexport interface MenuSeparator {\n type: 'separator';\n id: string;\n}\n\n/** Non-interactive heading row above a group of items. */\nexport interface MenuLabel {\n type: 'label';\n id: string;\n text: string;\n}\n\n/** One primary-menu entry: a row, a separator, or a heading label. */\nexport type MenuEntry = MenuItem | MenuSeparator | MenuLabel;\n\n/** {@link DshMenu} props — structurally the platform Menu's contract. */\nexport interface DshMenuProps {\n /** Whether the list is showing (owner-controlled). */\n open: boolean;\n /** The trigger element (rendered in place). */\n anchor: React.ReactNode;\n /** Selectable rows and optional separators/labels. */\n items: readonly MenuEntry[];\n /** Rows pinned below the scrolling items area. */\n footer?: readonly MenuEntry[];\n /** Row shown as selected. */\n selectedId?: string | undefined;\n /** Rows shown as selected with independent option groups. */\n selectedIds?: readonly string[] | undefined;\n /** Row click callback (not called for disabled rows). */\n onSelect: (id: string) => void;\n /** Invoked on outside click or Escape. */\n onClose: () => void;\n /** List alignment against the anchor (default `'start'`). */\n align?: 'start' | 'end';\n /** Open below (`'bottom'`, default), above, or to the right of the anchor. */\n side?: 'bottom' | 'top' | 'right';\n /**\n * Render the list into `document.body`, fixed-positioned from the anchor rect.\n * Use when an ancestor's overflow clipping would crop the in-place list.\n */\n portal?: boolean;\n /**\n * Close once the pointer has left both trigger and list for the grace period\n * (default `false` keeps it open until outside click/Escape/selection).\n */\n closeOnPointerLeave?: boolean;\n /** Reduce vertical row spacing only. */\n dense?: boolean;\n /** Reduced typography and spacing overall. */\n compact?: boolean;\n /** Portal mode only: supply the anchor rect directly. */\n getAnchorRect?: () => DOMRect | null;\n /** Extra class on the anchor wrapper. */\n className?: string;\n}\n\n/** Whether the platform primitive is already known to be missing. */\nlet platformMissing = false;\n\n/**\n * The stable menu surface for dshloader consumers.\n *\n * Forwards every prop verbatim to the platform primitive — this wrapper's job\n * is ISOLATION (one import site, hand-owned types), not behaviour change. When\n * the platform evolves, adaptation code goes here and consumers stay put.\n */\nexport function DshMenu(props: DshMenuProps): React.ReactElement | null {\n if (platformMissing) return null;\n try {\n // Forward verbatim. `PlatformMenu` is typed against upstream; the cast keeps\n // our hand-written contract authoritative on the consumer-facing side.\n return (PlatformMenu as unknown as (p: DshMenuProps) => React.ReactElement)(props);\n } catch (error) {\n // Render-time failures (prop-shape drift) degrade to an empty menu with one\n // loud warning rather than tearing down the host plugin's tree.\n platformMissing = true;\n console.warn(\n `[dshloader] DshMenu: the platform menu primitive failed (${error instanceof Error ? error.message : String(error)}); rendering nothing. ` +\n 'Update src/ui/menu.tsx to adapt to the new platform contract.',\n );\n return null;\n }\n}\n","/**\n * The dshloader BASE CONTROLS.\n *\n * A small, deliberately unopinionated control set so every plugin in this family\n * renders the same design language instead of each hand-rolling inline styles\n * (dsh-network-settings alone carries ~40 inline style objects today, and\n * dsh-auxiliary / dsh-code-review each maintain their own button and input\n * looks).\n *\n * Design rules:\n * - Styling is ONE injected stylesheet with `dshl-` prefixed classes, tagged\n * with the DSH `data-plugin` / `data-plugin-css` ownership attributes so HMR\n * can reclaim it. No CSS Modules, so consumers need no build-time CSS setup.\n * - Every colour is a DSH token with a fallback (see `./style.js`), so controls\n * follow the shell's theme, including dark mode, with no JS theme plumbing.\n * - Icons come from the curated set and inherit `currentColor`.\n * - Every control forwards native props and `className`, so a plugin can always\n * escape the defaults without forking the component.\n *\n * @module @dsh-plugin/dsh-loader/ui/components\n */\nimport * as React from 'react';\nimport { CX, G, T, cx, injectStyle } from './style.js';\nimport { Icon, type IconName } from './icons.js';\nimport { DshMenu, type MenuEntry } from './menu.js';\n\n/** Owner id used on the injected `<style>` tag. */\nconst OWNER = '@dsh-plugin/dsh-loader';\n\n/** The single stylesheet backing every control. */\nconst CSS = `\n.${CX}-row{display:flex;align-items:center;gap:${G.gap}px}\n.${CX}-col{display:flex;flex-direction:column;gap:${G.gap}px}\n.${CX}-btn{\n display:inline-flex;align-items:center;justify-content:center;gap:6px;\n height:${G.buttonHeight}px;padding:0 ${G.padXButton}px;\n font-size:14px;font-family:inherit;line-height:22px;\n border-radius:${G.radiusPill}px;border:none;\n background:${T.bgBase};color:${T.labelPrimary};\n cursor:pointer;box-sizing:border-box;white-space:nowrap;\n transition:background .12s ease,border-color .12s ease,opacity .12s ease;\n}\n.${CX}-btn:hover:not(:disabled){background:${T.bgHover}}\n.${CX}-btn:disabled{opacity:.5;cursor:not-allowed}\n.${CX}-btn--primary{\n background:${T.buttonPrimaryFill};\n color:${T.buttonPrimaryForeground};\n}\n.${CX}-btn--primary:hover:not(:disabled){filter:brightness(1.07);background:${T.buttonPrimaryFill}}\n.${CX}-btn--ghost{background:transparent;border-color:transparent;color:${T.labelSecondary}}\n.${CX}-btn--ghost:hover:not(:disabled){background:${T.bgHover};color:${T.labelPrimary}}\n.${CX}-btn--danger{background:transparent;border:1px solid ${T.danger};color:${T.danger};border-radius:${G.radius}px}\n.${CX}-btn--sm{height:${G.controlHeightSm}px;padding:0 ${G.padX + 2}px;font-size:${G.fontSizeSm}px;border-radius:${G.radius}px}\n.${CX}-iconbtn{\n display:inline-flex;align-items:center;justify-content:center;\n width:${G.controlHeight}px;height:${G.controlHeight}px;padding:0;\n border-radius:${G.radius}px;border:1px solid transparent;\n background:transparent;color:${T.labelSecondary};cursor:pointer;\n}\n.${CX}-iconbtn:hover:not(:disabled){background:${T.bgHover};color:${T.labelPrimary}}\n.${CX}-iconbtn:disabled{opacity:.5;cursor:not-allowed}\n.${CX}-input,.${CX}-textarea,.${CX}-select{\n width:100%;box-sizing:border-box;font-family:inherit;font-size:${G.fontSize}px;\n color:${T.labelPrimary};background:${T.bgLayer1};\n border:1px solid ${T.border};border-radius:${G.radius}px;\n padding:0 ${G.padX}px;height:${G.controlHeight}px;\n transition:border-color .12s ease;\n}\n.${CX}-textarea{height:auto;min-height:72px;padding:7px ${G.padX}px;line-height:1.5;resize:vertical}\n.${CX}-input:focus,.${CX}-textarea:focus,.${CX}-select:focus{outline:none;border-color:${T.accent}}\n.${CX}-input:disabled,.${CX}-textarea:disabled,.${CX}-select:disabled{opacity:.55;cursor:not-allowed}\n.${CX}-input--mono,.${CX}-textarea--mono{font-family:${T.fontCode}}\n.${CX}-input--invalid,.${CX}-textarea--invalid{border-color:${T.danger}}\n.${CX}-select{appearance:none;padding-right:26px;cursor:pointer;background-color:${T.bgBase}}\n.${CX}-selectwrap{position:relative;display:block;width:100%}\n.${CX}-selectwrap>.${CX}-caret{\n position:absolute;right:8px;top:50%;transform:translateY(-50%);\n pointer-events:none;color:${T.labelTertiary};display:inline-flex;\n}\n.${CX}-mselect{position:relative;width:100%}\n.${CX}-mselect__trigger{\n display:flex;align-items:center;justify-content:space-between;gap:8px;\n width:100%;box-sizing:border-box;min-height:36px;padding:7px 10px;\n font-family:inherit;font-size:14px;line-height:20px;text-align:left;\n color:${T.labelPrimary};background:${T.bgLayer1};\n border:1px solid ${T.border};border-radius:8px;cursor:pointer;appearance:none;\n}\n.${CX}-mselect__trigger:disabled{opacity:.45;cursor:not-allowed}\n.${CX}-mselect__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.${CX}-mselect__text--ph{color:${T.labelTertiary}}\n.${CX}-mselect__caret{display:inline-flex;align-items:center;flex:none;color:${T.labelTertiary}}\n.${CX}-check{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-size:13px;color:${T.labelPrimary};line-height:20px}\n.${CX}-check input{\n position:relative;margin:0;width:16px;height:16px;flex:none;\n appearance:auto;-webkit-appearance:checkbox;cursor:pointer;\n accent-color:${T.accent};\n}\n.${CX}-check input[disabled]{cursor:not-allowed}\n.${CX}-check--disabled{opacity:.55;cursor:not-allowed}\n.${CX}-switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:${G.fontSize}px;color:${T.labelPrimary}}\n.${CX}-switch input{position:absolute;opacity:0;width:0;height:0}\n.${CX}-switch__track{\n position:relative;flex:none;width:34px;height:20px;border-radius:${G.radiusPill}px;\n background:${T.border};transition:background .16s ease;\n}\n.${CX}-switch__knob{\n position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;\n background:${T.bgBase};box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .16s ease;\n}\n.${CX}-switch input:checked+.${CX}-switch__track{background:${T.accent}}\n.${CX}-switch input:checked+.${CX}-switch__track>.${CX}-switch__knob{transform:translateX(14px)}\n.${CX}-switch input:focus-visible+.${CX}-switch__track{box-shadow:0 0 0 2px ${T.accent}55}\n.${CX}-switch--disabled{opacity:.55;cursor:not-allowed}\n.${CX}-field{display:flex;flex-direction:column;gap:6px}\n.${CX}-field__label{font-size:12px;font-weight:500;color:${T.labelSecondary};line-height:18px}\n.${CX}-field__desc{font-size:${G.fontSizeSm}px;color:${T.labelTertiary};line-height:18px}\n.${CX}-field__error{font-size:${G.fontSizeSm}px;color:${T.danger}}\n.${CX}-card{\n display:flex;flex-direction:column;gap:10px;\n padding:16px;border:1px solid ${T.border};border-radius:${G.cardRadius}px;\n background:transparent;box-sizing:border-box;\n}\n.${CX}-card__title{margin:0;font-size:15px;font-weight:500;line-height:22px;color:${T.labelPrimary}}\n.${CX}-spin{display:inline-flex;animation:${CX}-spin 1s linear infinite}\n@keyframes ${CX}-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}\n@media (prefers-reduced-motion:reduce){\n .${CX}-spin{animation:none}\n .${CX}-btn,.${CX}-input,.${CX}-switch__track,.${CX}-switch__knob,.${CX}-check__box{transition:none}\n}\n`;\n\n/** Inject the control stylesheet once (idempotent, safe to call from any component). */\nexport function ensureStyles(): void {\n injectStyle(OWNER, 'ui/controls.css', CSS);\n}\n\n/** Call `ensureStyles` on first render of any control. */\nfunction useStyles(): void {\n // Runs during render on purpose: the stylesheet must exist before first paint,\n // and `injectStyle` is idempotent so repeated calls are free.\n ensureStyles();\n}\n\n/* ────────────────────────────── Button ────────────────────────────── */\n\n/** Visual weight of a {@link Button}. */\nexport type ButtonVariant = 'default' | 'primary' | 'ghost' | 'danger';\n\n/** {@link Button} props. */\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n /** Compact height. */\n small?: boolean;\n /** Leading icon from the curated set. */\n icon?: IconName;\n /** Replace the label with a spinner and disable interaction. */\n loading?: boolean;\n}\n\n/** A button in the DSH design language. */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { variant = 'default', small, icon, loading, className, children, disabled, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement(\n 'button',\n {\n ref,\n type: rest.type ?? 'button',\n className: cx(\n `${CX}-btn`,\n variant !== 'default' && `${CX}-btn--${variant}`,\n small && `${CX}-btn--sm`,\n className,\n ),\n disabled: disabled === true || loading === true,\n ...rest,\n },\n loading === true\n ? React.createElement('span', { className: `${CX}-spin`, key: 'spin' }, React.createElement(Icon, { name: 'Loading' }))\n : icon !== undefined\n ? React.createElement(Icon, { name: icon, key: 'icon' })\n : null,\n children,\n );\n});\n\n/** {@link IconButton} props. */\nexport interface IconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Icon from the curated set. */\n icon: IconName;\n /** Accessible name — required, since the button has no visible text. */\n label: string;\n}\n\n/** A square icon-only button. `label` becomes its accessible name. */\nexport const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { icon, label, className, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement(\n 'button',\n {\n ref,\n type: rest.type ?? 'button',\n className: cx(`${CX}-iconbtn`, className),\n 'aria-label': label,\n title: rest.title ?? label,\n ...rest,\n },\n React.createElement(Icon, { name: icon }),\n );\n});\n\n/* ────────────────────────────── Inputs ────────────────────────────── */\n\n/** {@link TextInput} props. */\nexport interface TextInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Render with the monospace stack (paths, commands, tokens). */\n mono?: boolean;\n /** Mark the field as failing validation. */\n invalid?: boolean;\n}\n\n/** A single-line text input. */\nexport const TextInput = React.forwardRef<HTMLInputElement, TextInputProps>(function TextInput(\n { mono, invalid, className, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement('input', {\n ref,\n type: rest.type ?? 'text',\n className: cx(`${CX}-input`, mono && `${CX}-input--mono`, invalid && `${CX}-input--invalid`, className),\n 'aria-invalid': invalid === true ? true : undefined,\n ...rest,\n });\n});\n\n/** {@link Textarea} props. */\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n mono?: boolean;\n invalid?: boolean;\n}\n\n/** A multi-line text area. */\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { mono, invalid, className, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement('textarea', {\n ref,\n className: cx(`${CX}-textarea`, mono && `${CX}-textarea--mono`, invalid && `${CX}-textarea--invalid`, className),\n 'aria-invalid': invalid === true ? true : undefined,\n ...rest,\n });\n});\n\n/* ────────────────────────────── Select ────────────────────────────── */\n\n/** One option of a {@link Select}. */\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\n/** {@link Select} props. */\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'children'> {\n options: readonly SelectOption[];\n /** Optional leading placeholder rendered as a disabled empty option. */\n placeholder?: string;\n}\n\n/**\n * A dropdown built on the native `<select>`.\n *\n * Native on purpose: it inherits the platform's keyboard handling, mobile\n * pickers, and accessibility for free. Plugins needing DSH's rich popup should\n * use `Menu` from `@dsh-plugin/dsh-loader/ui-primitives` instead.\n */\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(function Select(\n { options, placeholder, className, value, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement(\n 'span',\n { className: `${CX}-selectwrap` },\n React.createElement(\n 'select',\n { ref, className: cx(`${CX}-select`, className), value, ...rest },\n placeholder !== undefined\n ? React.createElement('option', { key: '__ph', value: '', disabled: true }, placeholder)\n : null,\n options.map(option =>\n React.createElement('option', { key: option.value, value: option.value, disabled: option.disabled }, option.label),\n ),\n ),\n React.createElement('span', { className: `${CX}-caret` }, React.createElement(Icon, { name: 'ChevronDown' })),\n );\n});\n\n/* ─────────────────────────── MenuSelect ─────────────────────────── */\n\n/** {@link MenuSelect} props — a value dropdown rendered with the platform menu. */\nexport interface MenuSelectProps {\n options: readonly SelectOption[];\n /** Currently selected value; renders {@link placeholder} when unmatched. */\n value?: string;\n placeholder?: string;\n disabled?: boolean;\n /** Called with the chosen option's value. */\n onChange?: (value: string) => void;\n id?: string;\n /** Field label, used for the trigger's accessible name. */\n label?: string;\n className?: string;\n}\n\n/** Height budget used when deciding whether the popup opens above the trigger. */\nconst MENU_SELECT_MAX_HEIGHT = 264;\n\n/**\n * A dropdown whose trigger and popup match the shell's own pickers (the\n * dsh-auxiliary model picker look): a bordered layer-1 trigger button plus the\n * platform menu popup via {@link DshMenu}.\n *\n * Prefer this over {@link Select} on settings pages: the native `<select>`\n * popup is OS-styled and cannot follow the shell theme, which is exactly the\n * visual drift this component removes. `Select` remains for dense/inline forms\n * where the native control's compactness matters.\n */\nexport function MenuSelect({\n options,\n value,\n placeholder,\n disabled,\n onChange,\n id,\n label,\n className,\n}: MenuSelectProps): React.ReactElement {\n useStyles();\n const [open, setOpen] = React.useState(false);\n const [side, setSide] = React.useState<'bottom' | 'top'>('bottom');\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const updateSide = React.useCallback((): void => {\n const trigger = triggerRef.current;\n if (trigger === null) return;\n const rect = trigger.getBoundingClientRect();\n const below = window.innerHeight - rect.bottom - 12;\n const above = rect.top - 12;\n setSide(below >= Math.min(MENU_SELECT_MAX_HEIGHT, above) ? 'bottom' : 'top');\n }, []);\n React.useEffect(() => {\n if (!open) return undefined;\n updateSide();\n window.addEventListener('scroll', updateSide, true);\n window.addEventListener('resize', updateSide);\n return () => {\n window.removeEventListener('scroll', updateSide, true);\n window.removeEventListener('resize', updateSide);\n };\n }, [open, updateSide]);\n\n const selected = options.find(option => option.value === value);\n const text = selected !== undefined ? selected.label : placeholder ?? '';\n const items = React.useMemo<readonly MenuEntry[]>(\n () => options.map(option => ({ id: option.value, label: option.label, disabled: option.disabled })),\n [options],\n );\n\n return React.createElement(\n 'div',\n { className: cx(`${CX}-mselect`, className) },\n React.createElement(DshMenu, {\n open,\n anchor: React.createElement(\n 'button',\n {\n ref: triggerRef,\n type: 'button',\n id,\n disabled: disabled === true,\n className: `${CX}-mselect__trigger`,\n 'aria-label': label !== undefined ? `${label}: ${text}` : text,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n title: text,\n onClick: () => setOpen(previous => !previous),\n },\n React.createElement(\n 'span',\n { className: cx(`${CX}-mselect__text`, selected === undefined && `${CX}-mselect__text--ph`) },\n text,\n ),\n React.createElement(\n 'span',\n { className: `${CX}-mselect__caret`, 'aria-hidden': true },\n React.createElement(Icon, { name: 'ChevronDown', size: 14 }),\n ),\n ),\n items,\n selectedId: value,\n onSelect: (chosen: string) => {\n onChange?.(chosen);\n setOpen(false);\n },\n onClose: () => setOpen(false),\n align: 'start',\n side,\n dense: true,\n }),\n );\n}\n\n/* ──────────────────────── Checkbox / Switch ───────────────────────── */\n\n/** {@link Checkbox} props. */\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Text beside the box. */\n label?: React.ReactNode;\n}\n\n/** A checkbox with an optional label. Native input styled via `accent-color`,\n * matching the shell's own settings pages. */\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { label, className, disabled, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement(\n 'label',\n { className: cx(`${CX}-check`, disabled === true && `${CX}-check--disabled`, className) },\n React.createElement('input', { ref, type: 'checkbox', disabled, ...rest }),\n label === undefined ? null : React.createElement('span', null, label),\n );\n});\n\n/** {@link Switch} props. */\nexport interface SwitchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: React.ReactNode;\n}\n\n/** A toggle switch — use for \"applies immediately\" settings. */\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { label, className, disabled, ...rest },\n ref,\n) {\n useStyles();\n return React.createElement(\n 'label',\n { className: cx(`${CX}-switch`, disabled === true && `${CX}-switch--disabled`, className) },\n React.createElement('input', { ref, type: 'checkbox', role: 'switch', disabled, ...rest }),\n React.createElement(\n 'span',\n { className: `${CX}-switch__track`, 'aria-hidden': true },\n React.createElement('span', { className: `${CX}-switch__knob` }),\n ),\n label === undefined ? null : React.createElement('span', null, label),\n );\n});\n\n/* ─────────────────────── Layout / composition ─────────────────────── */\n\n/** {@link Field} props. */\nexport interface FieldProps {\n label?: React.ReactNode;\n /** Supporting description under the control. */\n description?: React.ReactNode;\n /** Validation message; renders in the danger colour. */\n error?: React.ReactNode;\n /** Associates the label with the control. */\n htmlFor?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\n/** Label + control + description/error, the standard settings row. */\nexport function Field({ label, description, error, htmlFor, children, className }: FieldProps): React.ReactElement {\n useStyles();\n return React.createElement(\n 'div',\n { className: cx(`${CX}-field`, className) },\n label === undefined ? null : React.createElement('label', { className: `${CX}-field__label`, htmlFor }, label),\n children,\n description === undefined ? null : React.createElement('span', { className: `${CX}-field__desc` }, description),\n error === undefined || error === null || error === false\n ? null\n : React.createElement('span', { className: `${CX}-field__error`, role: 'alert' }, error),\n );\n}\n\n/** {@link Card} props. */\nexport interface CardProps {\n title?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\n/** A bordered section container — the settings-page card look. */\nexport function Card({ title, children, className }: CardProps): React.ReactElement {\n useStyles();\n return React.createElement(\n 'section',\n { className: cx(`${CX}-card`, className) },\n title === undefined ? null : React.createElement('h3', { className: `${CX}-card__title` }, title),\n children,\n );\n}\n\n/** A horizontal flex row with the standard gap. */\nexport function Row({ children, className }: { children?: React.ReactNode; className?: string }): React.ReactElement {\n useStyles();\n return React.createElement('div', { className: cx(`${CX}-row`, className) }, children);\n}\n\n/** A vertical flex column with the standard gap. */\nexport function Col({ children, className }: { children?: React.ReactNode; className?: string }): React.ReactElement {\n useStyles();\n return React.createElement('div', { className: cx(`${CX}-col`, className) }, children);\n}\n\n/** An inline spinner. */\nexport function Spinner({ size }: { size?: number }): React.ReactElement {\n useStyles();\n return React.createElement(\n 'span',\n { className: `${CX}-spin`, role: 'status', 'aria-label': 'loading' },\n React.createElement(Icon, { name: 'Loading', size }),\n );\n}\n","/**\n * The dshloader UI surface: virtual slots, the curated icon set, and the base\n * controls, wrapped as one `ui` facade.\n *\n * Consumers reach this at runtime through `@dsh-plugin/dsh-loader/client`, which\n * the DSH client module table resolves by stripping the `/client` suffix to\n * dshloader's registered bundle id — so no alias and no load-order coordination\n * is needed (see docs/ui.md).\n *\n * @module @dsh-plugin/dsh-loader/ui\n */\nimport { BUILTIN_ANCHORS, readLayoutFrame, type BuiltinAnchor, type LayoutFrameState } from './anchors.js';\nimport { createUiAPI, type CreateUiOptions, type UiAPI } from './slots.js';\n\nexport * from './slots.js';\nexport * from './anchors.js';\nexport * from './style.js';\nexport * from './icons.js';\nexport * from './components.js';\nexport * from './menu.js';\n\n/** The `ui` facade plus the built-in anchor helpers. */\nexport interface DshLoaderUi extends UiAPI {\n /** Read the shell's sidebar layout state, when the anchor resolves. */\n layoutFrame(): LayoutFrameState | undefined;\n}\n\n/**\n * Build the UI facade and seed it with the dsh 1.x anchor table.\n *\n * @param options - forwarded to {@link createUiAPI} (observe root, warn sink).\n */\nexport function createUi(options: CreateUiOptions = {}): DshLoaderUi {\n const api = createUiAPI(options);\n for (const [name, spec] of Object.entries(BUILTIN_ANCHORS)) {\n api.defineAnchor(name as BuiltinAnchor, spec);\n }\n return {\n ...api,\n // Methods that close over engine state must be re-bound, not spread-copied\n // as plain values — `mountReact` calls `this.mount`, so keep the object.\n mount: api.mount.bind(api),\n mountReact: api.mountReact.bind(api),\n defineAnchor: api.defineAnchor.bind(api),\n anchors: api.anchors.bind(api),\n hosts: api.hosts.bind(api),\n onDomSettled: api.onDomSettled.bind(api),\n diagnose: api.diagnose.bind(api),\n destroy: api.destroy.bind(api),\n layoutFrame(): LayoutFrameState | undefined {\n const [host] = api.hosts('layout.frame');\n return host === undefined ? undefined : readLayoutFrame(host);\n },\n };\n}\n","/**\n * dshloader BROWSER BUNDLE ENTRY.\n *\n * Composes the two browser halves of dshloader:\n *\n * 1. the compatibility infrastructure in `./client.ts` — `window.__dshLoader__`,\n * the `__ModuleLoader__.load` wrapper that applies package aliases, the\n * module-alias factories, and the optional settings fetch interceptor;\n * 2. the UI surface in `./ui/` — the virtual slot engine, the curated icon set,\n * and the base controls.\n *\n * WHY A SEPARATE ENTRY FROM `client.ts`: `client.ts` must keep compiling in the\n * NODE program (`tsconfig.build.json` → `dist/client.js`), because the client\n * unit tests import it from there. The UI modules need `lib.dom` and JSX, which\n * that program does not have. Keeping the entry separate lets each half compile\n * under the program that suits it while both land in one bundle.\n *\n * Consumers import from `@dsh-plugin/dsh-loader/client`, marked external in\n * their bundler: the DSH client module table strips the `/client` suffix to\n * dshloader's registered bundle id and materialises this module recursively, so\n * no package alias and no load-order coordination is required.\n *\n * @module @dsh-plugin/dsh-loader/client\n */\nimport { installClient } from './client.js';\nimport { createUi, type DshLoaderUi } from './ui/index.js';\n\n// Re-export the whole UI surface so a consumer's\n// `import { Button, Switch, Field } from '@dsh-plugin/dsh-loader/client'`\n// resolves against this bundle at runtime.\nexport * from './ui/index.js';\n// Re-export the infrastructure surface consumers and tests rely on.\nexport {\n createClientAPI,\n installClient,\n installSettingsFetchInterceptor,\n ModuleNotFoundError,\n} from './client.js';\n\n/** cordis plugin name (matches the npm package name and the bundle id). */\nexport const name = '@dsh-plugin/dsh-loader';\n\n/** dshloader consumes no cordis service; it only provides. */\nexport const inject: string[] = [];\n\n/** The live UI facade, once `apply` has run. */\nlet ui: DshLoaderUi | undefined;\n\n/**\n * The UI facade for callers that reach dshloader through the module table rather\n * than `window.__dshLoader__`.\n *\n * @returns the facade, or `undefined` before the client plugin has applied.\n */\nexport function getUi(): DshLoaderUi | undefined {\n return ui;\n}\n\n/** The browser `window`, read off `globalThis` so no DOM lib is assumed here. */\nfunction ambientWindow(): (Record<string, unknown> & { __dshLoader__?: Record<string, unknown> }) | undefined {\n const scope = globalThis as { window?: unknown };\n const found = scope.window;\n return typeof found === 'object' && found !== null\n ? (found as Record<string, unknown> & { __dshLoader__?: Record<string, unknown> })\n : undefined;\n}\n\n/**\n * The cordis client service name dshloader publishes its UI facade under.\n *\n * Consumers should declare `inject: ['dshLoaderUi']` and read `ctx.dshLoaderUi`:\n * cordis then activates them only after dshloader's client half has applied,\n * which is the only ordering guarantee available on the browser side.\n * `dsh.client.immediately` guarantees the bundle's factory is REGISTERED early,\n * not that its `apply` has run — so a plugin that reads\n * `window.__dshLoader__.ui` without injecting can observe `undefined`.\n */\nexport const UI_SERVICE = 'dshLoaderUi';\n\n/** Minimal cordis client context surface this entry touches. */\ninterface ClientContextLike {\n get?: (name: string) => unknown;\n effect?: (fn: () => unknown) => unknown;\n provide?: (name: string, value: unknown) => unknown;\n}\n\n/**\n * cordis client-plugin entry.\n *\n * Mounts the infrastructure first (so the `__ModuleLoader__` wrapper is in place\n * before any sibling bundle materialises), then the UI facade, then publishes it\n * both as the `dshLoaderUi` cordis service (ordered access) and on\n * `window.__dshLoader__.ui` (ad-hoc access from non-cordis code).\n */\nexport function apply(ctx: ClientContextLike): void {\n const win = ambientWindow();\n if (win === undefined) return;\n\n const api = installClient({ window: win as never, clientCtx: ctx as never });\n\n ui = createUi();\n if (api !== undefined) (api as Record<string, unknown>).ui = ui;\n else if (win.__dshLoader__ !== undefined) win.__dshLoader__.ui = ui;\n\n // Ordered access for consumers that inject the service.\n ctx.provide?.(UI_SERVICE, ui);\n\n // Tear the observer down with the fiber when the host provides `effect`.\n ctx.effect?.(() => () => {\n ui?.destroy();\n ui = undefined;\n });\n}\n"],"x_google_ignoreList":[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60],"mappings":"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"}
|