@nextop-os/ui-system 0.0.17 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/AGENTS.md +30 -8
  2. package/README.md +11 -14
  3. package/agent/install-skill.mjs +65 -5
  4. package/agent/nextop-ui-system/SKILL.md +119 -8
  5. package/agent/nextop-ui-system/references/extract-base-component.md +50 -6
  6. package/agent/nextop-ui-system/references/maintain-inventory.md +5 -0
  7. package/agent/nextop-ui-system/references/promote-business-component.md +94 -208
  8. package/dist/chunk-GE5YVRTV.js +859 -0
  9. package/dist/chunk-GE5YVRTV.js.map +1 -0
  10. package/dist/chunk-KJQ366TA.js +70 -0
  11. package/dist/chunk-KJQ366TA.js.map +1 -0
  12. package/dist/chunk-LVHEV755.js +2553 -0
  13. package/dist/chunk-LVHEV755.js.map +1 -0
  14. package/dist/components/index.d.ts +162 -11
  15. package/dist/components/index.js +62 -2
  16. package/dist/date-format.d.ts +6 -0
  17. package/dist/date-format.js +11 -0
  18. package/dist/date-format.js.map +1 -0
  19. package/dist/dev-vite.js +12 -5
  20. package/dist/dev-vite.js.map +1 -1
  21. package/dist/icons/index.d.ts +90 -47
  22. package/dist/icons/index.js +91 -11
  23. package/dist/index.d.ts +3 -2
  24. package/dist/index.js +159 -11
  25. package/dist/metadata/components.json +1320 -265
  26. package/dist/metadata/components.schema.json +4 -0
  27. package/dist/metadata/index.d.ts +3 -1
  28. package/dist/metadata/index.js +1320 -265
  29. package/dist/metadata/index.js.map +1 -1
  30. package/dist/styles/base.css +85 -0
  31. package/dist/styles/index.css +1 -0
  32. package/dist/styles/semantic.css +7 -0
  33. package/dist/styles/theme.css +82 -1
  34. package/package.json +10 -3
  35. package/ui-system.md +640 -0
  36. package/UI_SYSTEM_GUIDELINES.md +0 -148
  37. package/dist/chunk-FT633NLJ.js +0 -1159
  38. package/dist/chunk-FT633NLJ.js.map +0 -1
  39. package/dist/chunk-NFSMZKML.js +0 -208
  40. package/dist/chunk-NFSMZKML.js.map +0 -1
@@ -8,7 +8,9 @@ import {
8
8
  CardFooter,
9
9
  CardHeader,
10
10
  CardTitle,
11
+ Checkbox,
11
12
  ConfirmationDialog,
13
+ DatePicker,
12
14
  Dialog,
13
15
  DialogClose,
14
16
  DialogContent,
@@ -35,6 +37,13 @@ import {
35
37
  DropdownMenuSubTrigger,
36
38
  DropdownMenuTrigger,
37
39
  Input,
40
+ MenuSurface,
41
+ Popover,
42
+ PopoverAnchor,
43
+ PopoverClose,
44
+ PopoverContent,
45
+ PopoverPortal,
46
+ PopoverTrigger,
38
47
  ResizableHandle,
39
48
  ResizablePanel,
40
49
  ResizablePanelGroup,
@@ -48,20 +57,41 @@ import {
48
57
  SelectScrollDownButton,
49
58
  SelectScrollUpButton,
50
59
  SelectSeparator,
60
+ SelectSplitColumn,
61
+ SelectSplitColumnItems,
62
+ SelectSplitColumnLabel,
63
+ SelectSplitDivider,
64
+ SelectSplitLayout,
51
65
  SelectTrigger,
52
66
  SelectValue,
53
67
  Separator,
68
+ Spinner,
69
+ StatusDot,
70
+ Switch,
71
+ Textarea,
54
72
  ToastClose,
55
73
  ToastDescription,
56
74
  ToastProvider,
57
75
  ToastRoot,
58
76
  ToastTitle,
59
77
  ToastViewport,
78
+ Tooltip,
79
+ TooltipContent,
80
+ TooltipPortal,
81
+ TooltipProvider,
82
+ TooltipTrigger,
83
+ UnderlineTabs,
84
+ ViewportMenuSurface,
60
85
  badgeVariants,
61
86
  buttonVariants,
87
+ menuItemClassName,
88
+ menuItemIndicatorClassName,
89
+ menuItemWithIndicatorClassName,
90
+ menuSurfaceClassName,
91
+ statusDotVariants,
62
92
  toastVariants
63
- } from "../chunk-FT633NLJ.js";
64
- import "../chunk-NFSMZKML.js";
93
+ } from "../chunk-LVHEV755.js";
94
+ import "../chunk-GE5YVRTV.js";
65
95
  import "../chunk-DGPY4WP3.js";
66
96
  export {
67
97
  Badge,
@@ -73,7 +103,9 @@ export {
73
103
  CardFooter,
74
104
  CardHeader,
75
105
  CardTitle,
106
+ Checkbox,
76
107
  ConfirmationDialog,
108
+ DatePicker,
77
109
  Dialog,
78
110
  DialogClose,
79
111
  DialogContent,
@@ -100,6 +132,13 @@ export {
100
132
  DropdownMenuSubTrigger,
101
133
  DropdownMenuTrigger,
102
134
  Input,
135
+ MenuSurface,
136
+ Popover,
137
+ PopoverAnchor,
138
+ PopoverClose,
139
+ PopoverContent,
140
+ PopoverPortal,
141
+ PopoverTrigger,
103
142
  ResizableHandle,
104
143
  ResizablePanel,
105
144
  ResizablePanelGroup,
@@ -113,17 +152,38 @@ export {
113
152
  SelectScrollDownButton,
114
153
  SelectScrollUpButton,
115
154
  SelectSeparator,
155
+ SelectSplitColumn,
156
+ SelectSplitColumnItems,
157
+ SelectSplitColumnLabel,
158
+ SelectSplitDivider,
159
+ SelectSplitLayout,
116
160
  SelectTrigger,
117
161
  SelectValue,
118
162
  Separator,
163
+ Spinner,
164
+ StatusDot,
165
+ Switch,
166
+ Textarea,
119
167
  ToastClose,
120
168
  ToastDescription,
121
169
  ToastProvider,
122
170
  ToastRoot,
123
171
  ToastTitle,
124
172
  ToastViewport,
173
+ Tooltip,
174
+ TooltipContent,
175
+ TooltipPortal,
176
+ TooltipProvider,
177
+ TooltipTrigger,
178
+ UnderlineTabs,
179
+ ViewportMenuSurface,
125
180
  badgeVariants,
126
181
  buttonVariants,
182
+ menuItemClassName,
183
+ menuItemIndicatorClassName,
184
+ menuItemWithIndicatorClassName,
185
+ menuSurfaceClassName,
186
+ statusDotVariants,
127
187
  toastVariants
128
188
  };
129
189
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ type NextopDateLocale = "en" | "zh-CN";
2
+ declare function getCurrentNextopDateLocale(): NextopDateLocale;
3
+ declare function formatNextopDateTime(value: Date | number, locale?: NextopDateLocale): string;
4
+ declare function formatNextopShortDateTime(value: Date | number, locale?: NextopDateLocale): string;
5
+
6
+ export { formatNextopDateTime, formatNextopShortDateTime, getCurrentNextopDateLocale };
@@ -0,0 +1,11 @@
1
+ import {
2
+ formatNextopDateTime,
3
+ formatNextopShortDateTime,
4
+ getCurrentNextopDateLocale
5
+ } from "./chunk-KJQ366TA.js";
6
+ export {
7
+ formatNextopDateTime,
8
+ formatNextopShortDateTime,
9
+ getCurrentNextopDateLocale
10
+ };
11
+ //# sourceMappingURL=date-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/dev-vite.js CHANGED
@@ -29,7 +29,6 @@ var stableEntrypoints = [
29
29
  var packageDependencyAliases = [
30
30
  "class-variance-authority",
31
31
  "clsx",
32
- "lucide-react",
33
32
  "radix-ui",
34
33
  "react-resizable-panels",
35
34
  "tailwind-merge"
@@ -120,7 +119,9 @@ async function probeHealth(serverUrl) {
120
119
  async function syncFiles(serverUrl, cacheState) {
121
120
  const files = await fetchJson(serverUrl, "/files");
122
121
  if (!Array.isArray(files)) {
123
- throw new Error("@nextop-os/ui-system dev server returned invalid files list");
122
+ throw new Error(
123
+ "@nextop-os/ui-system dev server returned invalid files list"
124
+ );
124
125
  }
125
126
  const syncPaths = /* @__PURE__ */ new Set();
126
127
  await Promise.all(
@@ -293,7 +294,9 @@ async function readCachedHash(filePath) {
293
294
  }
294
295
  function validateManifest(manifest) {
295
296
  if (manifest === null || typeof manifest !== "object" || manifest.packageName !== packageName || typeof manifest.entrypoints !== "object" || manifest.entrypoints === null) {
296
- throw new Error("@nextop-os/ui-system dev server returned invalid manifest");
297
+ throw new Error(
298
+ "@nextop-os/ui-system dev server returned invalid manifest"
299
+ );
297
300
  }
298
301
  for (const entrypoint of stableEntrypoints) {
299
302
  const syncPath = manifest.entrypoints[entrypoint];
@@ -306,7 +309,9 @@ function validateManifest(manifest) {
306
309
  }
307
310
  function validateSyncFile(file) {
308
311
  if (file === null || typeof file !== "object" || typeof file.path !== "string" || typeof file.hash !== "string" || typeof file.size !== "number" || normalizeSyncPath(file.path) === null) {
309
- throw new Error("@nextop-os/ui-system dev server returned invalid file entry");
312
+ throw new Error(
313
+ "@nextop-os/ui-system dev server returned invalid file entry"
314
+ );
310
315
  }
311
316
  }
312
317
  function validateEventPath(syncPath) {
@@ -323,7 +328,9 @@ async function prepareCacheRoot(projectRoot, cacheDir) {
323
328
  await ensureNoSymlinkAncestors(projectRoot, cacheRoot);
324
329
  const cacheStat = await lstat(cacheRoot);
325
330
  if (!cacheStat.isDirectory() || cacheStat.isSymbolicLink()) {
326
- throw new Error("@nextop-os/ui-system dev cacheDir must be a real directory");
331
+ throw new Error(
332
+ "@nextop-os/ui-system dev cacheDir must be a real directory"
333
+ );
327
334
  }
328
335
  const realProjectRoot = await realpath(projectRoot);
329
336
  const realCacheRoot = await realpath(cacheRoot);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugins/vite.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport {\n lstat,\n mkdir,\n readdir,\n readFile,\n realpath,\n rm,\n writeFile\n} from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport type { Plugin, ViteDevServer } from \"vite\";\nimport { WebSocket } from \"ws\";\n\nimport type {\n UISystemDevEvent,\n UISystemDevFile,\n UISystemDevManifest\n} from \"../dev-server/protocol.js\";\n\nexport type NextopUISystemDevOptions = {\n serverUrl?: string;\n cacheDir?: string;\n};\n\nconst defaultServerUrl = \"http://127.0.0.1:4100\";\nconst defaultCacheDir = \".nextop-ui-system-dev\";\nconst cacheMarkerFileName = \".nextop-ui-system-dev-cache\";\nconst packageName = \"@nextop-os/ui-system\";\nconst packageRequire = createRequire(import.meta.url);\nconst stableEntrypoints = [\n \".\",\n \"./components\",\n \"./icons\",\n \"./styles.css\",\n \"./utils\"\n] as const;\nconst packageDependencyAliases = [\n \"class-variance-authority\",\n \"clsx\",\n \"lucide-react\",\n \"radix-ui\",\n \"react-resizable-panels\",\n \"tailwind-merge\"\n] as const;\nconst packageStyleDependencyAliases = [\"tw-animate-css\"] as const;\nconst packageDependencyAliasSet = new Set<string>(packageDependencyAliases);\nconst packageStyleDependencyAliasSet = new Set<string>(\n packageStyleDependencyAliases\n);\n\ntype StableEntrypoint = (typeof stableEntrypoints)[number];\ntype DevSyncState = {\n cacheRoot: string;\n realCacheRoot: string;\n serverUrl: URL;\n};\n\nexport function nextopUISystemDev(\n options: NextopUISystemDevOptions = {}\n): Plugin {\n const serverUrl = normalizeServerUrl(options.serverUrl ?? defaultServerUrl);\n const cacheDir = options.cacheDir ?? defaultCacheDir;\n let syncState: DevSyncState | null = null;\n\n return {\n name: \"nextop-ui-system-dev\",\n async config(config, env) {\n if (env.command !== \"serve\") {\n syncState = null;\n return {};\n }\n\n if (!(await probeHealth(serverUrl))) {\n syncState = null;\n return {};\n }\n\n const projectRoot = path.resolve(config.root ?? process.cwd());\n const cacheState = await prepareCacheRoot(projectRoot, cacheDir);\n const manifest = await fetchJson<UISystemDevManifest>(\n serverUrl,\n \"/manifest\"\n );\n\n validateManifest(manifest);\n await syncFiles(serverUrl, cacheState);\n await fetchComponentsMetadata(serverUrl);\n syncState = { ...cacheState, serverUrl };\n\n return {\n resolve: {\n alias: stableEntrypoints\n .map((entrypoint) => ({\n find: entrypointAlias(entrypoint),\n replacement: path.join(\n cacheState.cacheRoot,\n manifest.entrypoints[entrypoint]\n )\n }))\n .concat(\n packageStyleDependencyAliases.map((dependencyName) => ({\n find: dependencyAlias(dependencyName),\n replacement: dependencyName,\n customResolver: (\n _source: string,\n importer: string | undefined\n ) =>\n isCacheImporter(syncState, importer)\n ? resolvePackageStyleDependency(dependencyName)\n : null\n }))\n )\n }\n };\n },\n async resolveId(source, importer) {\n if (syncState === null || !isCacheImporter(syncState, importer)) {\n return null;\n }\n\n if (packageDependencyAliasSet.has(source)) {\n return packageRequire.resolve(source);\n }\n\n if (packageStyleDependencyAliasSet.has(source)) {\n const resolved = await this.resolve(source, packageContextImporter(), {\n skipSelf: true\n });\n\n return resolved?.id ?? null;\n }\n\n return null;\n },\n configureServer(server) {\n if (syncState === null) {\n return;\n }\n\n subscribeToEvents(server, syncState);\n }\n };\n}\n\nasync function probeHealth(serverUrl: URL): Promise<boolean> {\n try {\n const response = await fetch(new URL(\"/health\", serverUrl));\n\n if (!response.ok) {\n return false;\n }\n\n const payload = (await response.json()) as { packageName?: unknown };\n\n return payload.packageName === packageName;\n } catch {\n return false;\n }\n}\n\nasync function syncFiles(\n serverUrl: URL,\n cacheState: Pick<DevSyncState, \"cacheRoot\" | \"realCacheRoot\">\n): Promise<void> {\n const files = await fetchJson<UISystemDevFile[]>(serverUrl, \"/files\");\n\n if (!Array.isArray(files)) {\n throw new Error(\"@nextop-os/ui-system dev server returned invalid files list\");\n }\n\n const syncPaths = new Set<string>();\n\n await Promise.all(\n files.map(async (file) => {\n validateSyncFile(file);\n syncPaths.add(file.path);\n\n const destination = resolveCacheFile(cacheState.cacheRoot, file.path);\n await prepareCacheFileTarget(cacheState, destination);\n\n const currentHash = await readCachedHash(destination);\n\n if (currentHash === file.hash) {\n return;\n }\n\n const bytes = await fetchFile(serverUrl, file.path);\n const downloadedHash = hashBytes(bytes);\n\n if (downloadedHash !== file.hash) {\n throw new Error(\n `Hash mismatch while syncing @nextop-os/ui-system file: ${file.path}`\n );\n }\n\n await writeFile(destination, bytes);\n })\n );\n\n await removeStaleCacheFiles(cacheState, syncPaths);\n}\n\nasync function syncChangedFile(\n server: ViteDevServer,\n state: DevSyncState,\n event: Extract<UISystemDevEvent, { type: \"fileChanged\" }>\n): Promise<void> {\n validateEventPath(event.path);\n\n const destination = resolveCacheFile(state.cacheRoot, event.path);\n await prepareCacheFileTarget(state, destination);\n\n const bytes = await fetchFile(state.serverUrl, event.path);\n const downloadedHash = hashBytes(bytes);\n\n if (downloadedHash !== event.hash) {\n throw new Error(\n `Hash mismatch while syncing @nextop-os/ui-system file: ${event.path}`\n );\n }\n\n await writeFile(destination, bytes);\n invalidateFile(server, destination);\n}\n\nasync function removeDeletedFile(\n server: ViteDevServer,\n state: DevSyncState,\n event: Extract<UISystemDevEvent, { type: \"fileDeleted\" }>\n): Promise<void> {\n validateEventPath(event.path);\n\n const destination = resolveCacheFile(state.cacheRoot, event.path);\n\n invalidateFile(server, destination);\n await removeCacheFile(state, destination);\n}\n\nfunction subscribeToEvents(server: ViteDevServer, state: DevSyncState): void {\n let closed = false;\n let reconnectTimer: NodeJS.Timeout | null = null;\n let websocket: WebSocket | null = null;\n\n const close = (): void => {\n closed = true;\n\n if (reconnectTimer !== null) {\n clearTimeout(reconnectTimer);\n reconnectTimer = null;\n }\n\n websocket?.close();\n websocket = null;\n };\n\n const reconnect = (): void => {\n if (closed || reconnectTimer !== null) {\n return;\n }\n\n reconnectTimer = setTimeout(() => {\n reconnectTimer = null;\n connect();\n }, 1000);\n };\n\n const connect = (): void => {\n if (closed) {\n return;\n }\n\n websocket = new WebSocket(eventUrl(state.serverUrl));\n\n websocket.on(\"message\", (message) => {\n void handleEventMessage(server, state, message).catch(() => {\n // Event sync is best-effort; the initial HTTP sync remains authoritative.\n });\n });\n\n websocket.on(\"close\", reconnect);\n websocket.on(\"error\", () => {\n websocket?.close();\n });\n };\n\n connect();\n server.httpServer?.once(\"close\", close);\n}\n\nasync function handleEventMessage(\n server: ViteDevServer,\n state: DevSyncState,\n message: WebSocket.RawData\n): Promise<void> {\n const event = parseEvent(message);\n\n if (event === null) {\n return;\n }\n\n if (event.type === \"fileChanged\") {\n await syncChangedFile(server, state, event);\n return;\n }\n\n if (event.type === \"fileDeleted\") {\n await removeDeletedFile(server, state, event);\n }\n}\n\nfunction parseEvent(message: WebSocket.RawData): UISystemDevEvent | null {\n try {\n const event = JSON.parse(rawMessageToString(message)) as UISystemDevEvent;\n\n if (!isDevEvent(event)) {\n return null;\n }\n\n return event;\n } catch {\n return null;\n }\n}\n\nfunction rawMessageToString(message: WebSocket.RawData): string {\n if (Buffer.isBuffer(message)) {\n return message.toString(\"utf8\");\n }\n\n if (Array.isArray(message)) {\n return Buffer.concat(message).toString(\"utf8\");\n }\n\n return Buffer.from(message).toString(\"utf8\");\n}\n\nfunction isDevEvent(event: UISystemDevEvent): event is UISystemDevEvent {\n if (event === null || typeof event !== \"object\") {\n return false;\n }\n\n if (event.type === \"fileChanged\") {\n return typeof event.path === \"string\" && typeof event.hash === \"string\";\n }\n\n if (event.type === \"fileDeleted\") {\n return typeof event.path === \"string\";\n }\n\n return event.type === \"manifestChanged\" || event.type === \"componentsChanged\";\n}\n\nfunction invalidateFile(server: ViteDevServer, filePath: string): void {\n const modules = server.moduleGraph.getModulesByFile(filePath);\n\n if (modules === undefined) {\n return;\n }\n\n for (const moduleNode of modules) {\n server.moduleGraph.invalidateModule(moduleNode);\n }\n}\n\nasync function fetchComponentsMetadata(serverUrl: URL): Promise<void> {\n try {\n await fetchJson<unknown>(serverUrl, \"/components\");\n } catch {\n // Component diagnostics are best-effort; source sync and aliases are sufficient.\n }\n}\n\nasync function fetchJson<T>(serverUrl: URL, endpoint: string): Promise<T> {\n const response = await fetch(new URL(endpoint, serverUrl));\n\n if (!response.ok) {\n throw new Error(\n `@nextop-os/ui-system dev server ${endpoint} failed with ${response.status}`\n );\n }\n\n return (await response.json()) as T;\n}\n\nasync function fetchFile(serverUrl: URL, syncPath: string): Promise<Buffer> {\n const response = await fetch(\n new URL(`/files/${encodeSyncPath(syncPath)}`, serverUrl)\n );\n\n if (!response.ok) {\n throw new Error(\n `@nextop-os/ui-system dev server file fetch failed for ${syncPath}`\n );\n }\n\n return Buffer.from(await response.arrayBuffer());\n}\n\nasync function readCachedHash(filePath: string): Promise<string | null> {\n try {\n return hashBytes(await readFile(filePath));\n } catch {\n return null;\n }\n}\n\nfunction validateManifest(\n manifest: UISystemDevManifest\n): asserts manifest is UISystemDevManifest & {\n entrypoints: Record<StableEntrypoint, string>;\n} {\n if (\n manifest === null ||\n typeof manifest !== \"object\" ||\n manifest.packageName !== packageName ||\n typeof manifest.entrypoints !== \"object\" ||\n manifest.entrypoints === null\n ) {\n throw new Error(\"@nextop-os/ui-system dev server returned invalid manifest\");\n }\n\n for (const entrypoint of stableEntrypoints) {\n const syncPath = manifest.entrypoints[entrypoint];\n\n if (typeof syncPath !== \"string\" || normalizeSyncPath(syncPath) === null) {\n throw new Error(\n `@nextop-os/ui-system dev server manifest is missing ${entrypoint}`\n );\n }\n }\n}\n\nfunction validateSyncFile(file: UISystemDevFile): void {\n if (\n file === null ||\n typeof file !== \"object\" ||\n typeof file.path !== \"string\" ||\n typeof file.hash !== \"string\" ||\n typeof file.size !== \"number\" ||\n normalizeSyncPath(file.path) === null\n ) {\n throw new Error(\"@nextop-os/ui-system dev server returned invalid file entry\");\n }\n}\n\nfunction validateEventPath(syncPath: string): void {\n if (normalizeSyncPath(syncPath) === null) {\n throw new Error(\n `Refusing unsafe @nextop-os/ui-system event path: ${syncPath}`\n );\n }\n}\n\nasync function prepareCacheRoot(\n projectRoot: string,\n cacheDir: string\n): Promise<Pick<DevSyncState, \"cacheRoot\" | \"realCacheRoot\">> {\n const cacheRoot = resolveCacheRoot(projectRoot, cacheDir);\n\n await ensureNoSymlinkAncestors(projectRoot, path.dirname(cacheRoot));\n await mkdir(cacheRoot, { recursive: true });\n await ensureNoSymlinkAncestors(projectRoot, cacheRoot);\n\n const cacheStat = await lstat(cacheRoot);\n\n if (!cacheStat.isDirectory() || cacheStat.isSymbolicLink()) {\n throw new Error(\"@nextop-os/ui-system dev cacheDir must be a real directory\");\n }\n\n const realProjectRoot = await realpath(projectRoot);\n const realCacheRoot = await realpath(cacheRoot);\n\n if (!isPathInside(realProjectRoot, realCacheRoot)) {\n throw new Error(\n \"@nextop-os/ui-system dev cacheDir must resolve inside the Vite project root\"\n );\n }\n\n await ensureOwnedCacheRoot(cacheRoot);\n\n return { cacheRoot, realCacheRoot };\n}\n\nfunction resolveCacheRoot(projectRoot: string, cacheDir: string): string {\n const cacheRoot = path.resolve(projectRoot, cacheDir);\n const relative = path.relative(projectRoot, cacheRoot);\n\n if (\n relative === \"\" ||\n relative.startsWith(\"..\") ||\n path.isAbsolute(relative)\n ) {\n throw new Error(\n \"@nextop-os/ui-system dev cacheDir must resolve inside the Vite project root\"\n );\n }\n\n return cacheRoot;\n}\n\nasync function prepareCacheFileTarget(\n cacheState: Pick<DevSyncState, \"cacheRoot\" | \"realCacheRoot\">,\n destination: string\n): Promise<void> {\n const parent = path.dirname(destination);\n\n await ensureNoSymlinkAncestors(cacheState.cacheRoot, parent);\n await mkdir(parent, { recursive: true });\n await ensureNoSymlinkAncestors(cacheState.cacheRoot, parent);\n\n const realParent = await realpath(parent);\n\n if (!isPathInside(cacheState.realCacheRoot, realParent)) {\n throw new Error(\n \"@nextop-os/ui-system dev cache file resolved outside cacheDir\"\n );\n }\n\n await rejectExistingSymlink(destination);\n}\n\nasync function removeCacheFile(\n cacheState: Pick<DevSyncState, \"cacheRoot\" | \"realCacheRoot\">,\n destination: string\n): Promise<void> {\n const parent = path.dirname(destination);\n\n await ensureNoSymlinkAncestors(cacheState.cacheRoot, parent);\n\n const realParent = await realpath(parent).catch(() => null);\n\n if (\n realParent === null ||\n !isPathInside(cacheState.realCacheRoot, realParent)\n ) {\n throw new Error(\n \"@nextop-os/ui-system dev cache file resolved outside cacheDir\"\n );\n }\n\n await rejectExistingSymlink(destination);\n await rm(destination, { force: true });\n}\n\nasync function removeStaleCacheFiles(\n cacheState: Pick<DevSyncState, \"cacheRoot\" | \"realCacheRoot\">,\n authoritativePaths: Set<string>\n): Promise<void> {\n await ensureOwnedCacheRoot(cacheState.cacheRoot);\n\n const cachedFiles = await listCacheFiles(cacheState.cacheRoot);\n\n await Promise.all(\n cachedFiles.map(async (cachedFile) => {\n if (authoritativePaths.has(cachedFile)) {\n return;\n }\n\n await removeCacheFile(\n cacheState,\n resolveCacheFile(cacheState.cacheRoot, cachedFile)\n );\n })\n );\n}\n\nasync function listCacheFiles(\n directory: string,\n prefix = \"\"\n): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true });\n const paths = await Promise.all(\n entries.map(async (entry) => {\n const syncPath = prefix === \"\" ? entry.name : `${prefix}/${entry.name}`;\n const absolutePath = path.join(directory, entry.name);\n\n if (syncPath === cacheMarkerFileName) {\n return [];\n }\n\n if (entry.isSymbolicLink()) {\n throw new Error(\n `Refusing symlink in @nextop-os/ui-system dev cache: ${syncPath}`\n );\n }\n\n if (entry.isDirectory()) {\n return listCacheFiles(absolutePath, syncPath);\n }\n\n return entry.isFile() ? [syncPath] : [];\n })\n );\n\n return paths.flat();\n}\n\nasync function ensureOwnedCacheRoot(cacheRoot: string): Promise<void> {\n const markerPath = path.join(cacheRoot, cacheMarkerFileName);\n\n try {\n const markerStat = await lstat(markerPath);\n\n if (markerStat.isSymbolicLink() || !markerStat.isFile()) {\n throw new Error(\n \"@nextop-os/ui-system dev cacheDir contains an unsafe ownership marker\"\n );\n }\n\n return;\n } catch (error) {\n if (!isNotFoundError(error)) {\n throw error;\n }\n }\n\n const entries = await readdir(cacheRoot);\n\n if (entries.length > 0) {\n throw new Error(\n \"@nextop-os/ui-system dev cacheDir must be empty or contain a Nextop UI cache marker before stale cleanup\"\n );\n }\n\n await writeFile(\n markerPath,\n JSON.stringify({ packageName, cache: \"ui-system-dev\" }, null, 2)\n );\n}\n\nfunction resolveCacheFile(cacheRoot: string, syncPath: string): string {\n const normalized = normalizeSyncPath(syncPath);\n\n if (normalized === null) {\n throw new Error(\n `Refusing to sync unsafe @nextop-os/ui-system path: ${syncPath}`\n );\n }\n\n const destination = path.resolve(cacheRoot, normalized);\n const relative = path.relative(cacheRoot, destination);\n\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n throw new Error(`Refusing to sync @nextop-os/ui-system path: ${syncPath}`);\n }\n\n return destination;\n}\n\nasync function ensureNoSymlinkAncestors(\n root: string,\n target: string\n): Promise<void> {\n const relative = path.relative(root, target);\n\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n throw new Error(\"@nextop-os/ui-system dev cache path escaped cacheDir\");\n }\n\n const segments = relative === \"\" ? [] : relative.split(path.sep);\n let current = root;\n\n for (const segment of segments) {\n current = path.join(current, segment);\n\n try {\n const stat = await lstat(current);\n\n if (stat.isSymbolicLink()) {\n throw new Error(\n `Refusing symlink in @nextop-os/ui-system dev cache path: ${current}`\n );\n }\n } catch (error) {\n if (\n error instanceof Error &&\n \"code\" in error &&\n error.code === \"ENOENT\"\n ) {\n return;\n }\n\n throw error;\n }\n }\n}\n\nasync function rejectExistingSymlink(filePath: string): Promise<void> {\n try {\n const stat = await lstat(filePath);\n\n if (stat.isSymbolicLink() || !stat.isFile()) {\n throw new Error(\n `Refusing unsafe @nextop-os/ui-system cache file: ${filePath}`\n );\n }\n } catch (error) {\n if (isNotFoundError(error)) {\n return;\n }\n\n throw error;\n }\n}\n\nfunction isNotFoundError(error: unknown): boolean {\n return error instanceof Error && \"code\" in error && error.code === \"ENOENT\";\n}\n\nfunction isPathInside(root: string, target: string): boolean {\n const relative = path.relative(root, target);\n\n return (\n relative === \"\" ||\n (!relative.startsWith(\"..\") && !path.isAbsolute(relative))\n );\n}\n\nfunction normalizeSyncPath(input: string): string | null {\n if (input.includes(\"\\0\")) {\n return null;\n }\n\n const slashPath = input.replaceAll(\"\\\\\", \"/\").replace(/^\\/+/, \"\");\n const normalized = path.posix.normalize(slashPath);\n\n if (\n normalized === \".\" ||\n normalized.startsWith(\"../\") ||\n normalized.split(\"/\").includes(\"..\")\n ) {\n return null;\n }\n\n return normalized;\n}\n\nfunction encodeSyncPath(syncPath: string): string {\n return syncPath.split(\"/\").map(encodeURIComponent).join(\"/\");\n}\n\nfunction hashBytes(bytes: Buffer): string {\n return `sha256:${createHash(\"sha256\").update(bytes).digest(\"hex\")}`;\n}\n\nfunction normalizeServerUrl(serverUrl: string): URL {\n return new URL(serverUrl);\n}\n\nfunction eventUrl(serverUrl: URL): string {\n const url = new URL(\"/events\", serverUrl);\n\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n\n return url.href;\n}\n\nfunction entrypointAlias(entrypoint: StableEntrypoint): RegExp {\n const specifier =\n entrypoint === \".\" ? packageName : `${packageName}${entrypoint.slice(1)}`;\n\n return new RegExp(`^${escapeRegExp(specifier)}$`);\n}\n\nfunction isCacheImporter(\n state: DevSyncState | null,\n importer: string | undefined\n): boolean {\n if (state === null || importer === undefined) {\n return false;\n }\n\n const importerPath = stripViteIdQuery(importer);\n\n if (!path.isAbsolute(importerPath)) {\n return false;\n }\n\n return isPathInside(state.cacheRoot, path.resolve(importerPath));\n}\n\nfunction stripViteIdQuery(id: string): string {\n const [pathWithoutQuery = \"\"] = id.split(\"?\", 1);\n\n return pathWithoutQuery;\n}\n\nfunction packageContextImporter(): string {\n return fileURLToPath(new URL(\"../styles/index.css\", import.meta.url));\n}\n\nfunction resolvePackageStyleDependency(dependencyName: string): string {\n const packageDirectory = findDependencyPackageDirectory(dependencyName);\n const manifest = JSON.parse(\n readFileSync(path.join(packageDirectory, \"package.json\"), \"utf8\")\n ) as {\n exports?: {\n \".\"?: {\n style?: unknown;\n };\n };\n };\n const styleExport = manifest.exports?.[\".\"]?.style;\n\n if (typeof styleExport !== \"string\") {\n throw new Error(`${dependencyName} does not expose a style export`);\n }\n\n return path.join(packageDirectory, styleExport);\n}\n\nfunction findDependencyPackageDirectory(dependencyName: string): string {\n const searchPaths = packageRequire.resolve.paths(dependencyName) ?? [];\n\n for (const searchPath of searchPaths) {\n const packageDirectory = path.join(searchPath, dependencyName);\n\n try {\n const manifest = JSON.parse(\n readFileSync(path.join(packageDirectory, \"package.json\"), \"utf8\")\n ) as { name?: unknown };\n\n if (manifest.name === dependencyName) {\n return packageDirectory;\n }\n } catch {\n // Try the next Node resolution search path.\n }\n }\n\n throw new Error(`Could not resolve ${dependencyName} from ${packageName}`);\n}\n\nfunction dependencyAlias(dependencyName: string): RegExp {\n return new RegExp(`^${escapeRegExp(dependencyName)}$`);\n}\n\nfunction escapeRegExp(input: string): string {\n return input.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n"],"mappings":";AAAA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAG9B,SAAS,iBAAiB;AAa1B,IAAM,mBAAmB;AACzB,IAAM,kBAAkB;AACxB,IAAM,sBAAsB;AAC5B,IAAM,cAAc;AACpB,IAAM,iBAAiB,cAAc,YAAY,GAAG;AACpD,IAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,2BAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,gCAAgC,CAAC,gBAAgB;AACvD,IAAM,4BAA4B,IAAI,IAAY,wBAAwB;AAC1E,IAAM,iCAAiC,IAAI;AAAA,EACzC;AACF;AASO,SAAS,kBACd,UAAoC,CAAC,GAC7B;AACR,QAAM,YAAY,mBAAmB,QAAQ,aAAa,gBAAgB;AAC1E,QAAM,WAAW,QAAQ,YAAY;AACrC,MAAI,YAAiC;AAErC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,OAAO,QAAQ,KAAK;AACxB,UAAI,IAAI,YAAY,SAAS;AAC3B,oBAAY;AACZ,eAAO,CAAC;AAAA,MACV;AAEA,UAAI,CAAE,MAAM,YAAY,SAAS,GAAI;AACnC,oBAAY;AACZ,eAAO,CAAC;AAAA,MACV;AAEA,YAAM,cAAc,KAAK,QAAQ,OAAO,QAAQ,QAAQ,IAAI,CAAC;AAC7D,YAAM,aAAa,MAAM,iBAAiB,aAAa,QAAQ;AAC/D,YAAM,WAAW,MAAM;AAAA,QACrB;AAAA,QACA;AAAA,MACF;AAEA,uBAAiB,QAAQ;AACzB,YAAM,UAAU,WAAW,UAAU;AACrC,YAAM,wBAAwB,SAAS;AACvC,kBAAY,EAAE,GAAG,YAAY,UAAU;AAEvC,aAAO;AAAA,QACL,SAAS;AAAA,UACP,OAAO,kBACJ,IAAI,CAAC,gBAAgB;AAAA,YACpB,MAAM,gBAAgB,UAAU;AAAA,YAChC,aAAa,KAAK;AAAA,cAChB,WAAW;AAAA,cACX,SAAS,YAAY,UAAU;AAAA,YACjC;AAAA,UACF,EAAE,EACD;AAAA,YACC,8BAA8B,IAAI,CAAC,oBAAoB;AAAA,cACrD,MAAM,gBAAgB,cAAc;AAAA,cACpC,aAAa;AAAA,cACb,gBAAgB,CACd,SACA,aAEA,gBAAgB,WAAW,QAAQ,IAC/B,8BAA8B,cAAc,IAC5C;AAAA,YACR,EAAE;AAAA,UACJ;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,UAAU,QAAQ,UAAU;AAChC,UAAI,cAAc,QAAQ,CAAC,gBAAgB,WAAW,QAAQ,GAAG;AAC/D,eAAO;AAAA,MACT;AAEA,UAAI,0BAA0B,IAAI,MAAM,GAAG;AACzC,eAAO,eAAe,QAAQ,MAAM;AAAA,MACtC;AAEA,UAAI,+BAA+B,IAAI,MAAM,GAAG;AAC9C,cAAM,WAAW,MAAM,KAAK,QAAQ,QAAQ,uBAAuB,GAAG;AAAA,UACpE,UAAU;AAAA,QACZ,CAAC;AAED,eAAO,UAAU,MAAM;AAAA,MACzB;AAEA,aAAO;AAAA,IACT;AAAA,IACA,gBAAgB,QAAQ;AACtB,UAAI,cAAc,MAAM;AACtB;AAAA,MACF;AAEA,wBAAkB,QAAQ,SAAS;AAAA,IACrC;AAAA,EACF;AACF;AAEA,eAAe,YAAY,WAAkC;AAC3D,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,IAAI,IAAI,WAAW,SAAS,CAAC;AAE1D,QAAI,CAAC,SAAS,IAAI;AAChB,aAAO;AAAA,IACT;AAEA,UAAM,UAAW,MAAM,SAAS,KAAK;AAErC,WAAO,QAAQ,gBAAgB;AAAA,EACjC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAe,UACb,WACA,YACe;AACf,QAAM,QAAQ,MAAM,UAA6B,WAAW,QAAQ;AAEpE,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,UAAM,IAAI,MAAM,6DAA6D;AAAA,EAC/E;AAEA,QAAM,YAAY,oBAAI,IAAY;AAElC,QAAM,QAAQ;AAAA,IACZ,MAAM,IAAI,OAAO,SAAS;AACxB,uBAAiB,IAAI;AACrB,gBAAU,IAAI,KAAK,IAAI;AAEvB,YAAM,cAAc,iBAAiB,WAAW,WAAW,KAAK,IAAI;AACpE,YAAM,uBAAuB,YAAY,WAAW;AAEpD,YAAM,cAAc,MAAM,eAAe,WAAW;AAEpD,UAAI,gBAAgB,KAAK,MAAM;AAC7B;AAAA,MACF;AAEA,YAAM,QAAQ,MAAM,UAAU,WAAW,KAAK,IAAI;AAClD,YAAM,iBAAiB,UAAU,KAAK;AAEtC,UAAI,mBAAmB,KAAK,MAAM;AAChC,cAAM,IAAI;AAAA,UACR,0DAA0D,KAAK,IAAI;AAAA,QACrE;AAAA,MACF;AAEA,YAAM,UAAU,aAAa,KAAK;AAAA,IACpC,CAAC;AAAA,EACH;AAEA,QAAM,sBAAsB,YAAY,SAAS;AACnD;AAEA,eAAe,gBACb,QACA,OACA,OACe;AACf,oBAAkB,MAAM,IAAI;AAE5B,QAAM,cAAc,iBAAiB,MAAM,WAAW,MAAM,IAAI;AAChE,QAAM,uBAAuB,OAAO,WAAW;AAE/C,QAAM,QAAQ,MAAM,UAAU,MAAM,WAAW,MAAM,IAAI;AACzD,QAAM,iBAAiB,UAAU,KAAK;AAEtC,MAAI,mBAAmB,MAAM,MAAM;AACjC,UAAM,IAAI;AAAA,MACR,0DAA0D,MAAM,IAAI;AAAA,IACtE;AAAA,EACF;AAEA,QAAM,UAAU,aAAa,KAAK;AAClC,iBAAe,QAAQ,WAAW;AACpC;AAEA,eAAe,kBACb,QACA,OACA,OACe;AACf,oBAAkB,MAAM,IAAI;AAE5B,QAAM,cAAc,iBAAiB,MAAM,WAAW,MAAM,IAAI;AAEhE,iBAAe,QAAQ,WAAW;AAClC,QAAM,gBAAgB,OAAO,WAAW;AAC1C;AAEA,SAAS,kBAAkB,QAAuB,OAA2B;AAC3E,MAAI,SAAS;AACb,MAAI,iBAAwC;AAC5C,MAAI,YAA8B;AAElC,QAAM,QAAQ,MAAY;AACxB,aAAS;AAET,QAAI,mBAAmB,MAAM;AAC3B,mBAAa,cAAc;AAC3B,uBAAiB;AAAA,IACnB;AAEA,eAAW,MAAM;AACjB,gBAAY;AAAA,EACd;AAEA,QAAM,YAAY,MAAY;AAC5B,QAAI,UAAU,mBAAmB,MAAM;AACrC;AAAA,IACF;AAEA,qBAAiB,WAAW,MAAM;AAChC,uBAAiB;AACjB,cAAQ;AAAA,IACV,GAAG,GAAI;AAAA,EACT;AAEA,QAAM,UAAU,MAAY;AAC1B,QAAI,QAAQ;AACV;AAAA,IACF;AAEA,gBAAY,IAAI,UAAU,SAAS,MAAM,SAAS,CAAC;AAEnD,cAAU,GAAG,WAAW,CAAC,YAAY;AACnC,WAAK,mBAAmB,QAAQ,OAAO,OAAO,EAAE,MAAM,MAAM;AAAA,MAE5D,CAAC;AAAA,IACH,CAAC;AAED,cAAU,GAAG,SAAS,SAAS;AAC/B,cAAU,GAAG,SAAS,MAAM;AAC1B,iBAAW,MAAM;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,UAAQ;AACR,SAAO,YAAY,KAAK,SAAS,KAAK;AACxC;AAEA,eAAe,mBACb,QACA,OACA,SACe;AACf,QAAM,QAAQ,WAAW,OAAO;AAEhC,MAAI,UAAU,MAAM;AAClB;AAAA,EACF;AAEA,MAAI,MAAM,SAAS,eAAe;AAChC,UAAM,gBAAgB,QAAQ,OAAO,KAAK;AAC1C;AAAA,EACF;AAEA,MAAI,MAAM,SAAS,eAAe;AAChC,UAAM,kBAAkB,QAAQ,OAAO,KAAK;AAAA,EAC9C;AACF;AAEA,SAAS,WAAW,SAAqD;AACvE,MAAI;AACF,UAAM,QAAQ,KAAK,MAAM,mBAAmB,OAAO,CAAC;AAEpD,QAAI,CAAC,WAAW,KAAK,GAAG;AACtB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,mBAAmB,SAAoC;AAC9D,MAAI,OAAO,SAAS,OAAO,GAAG;AAC5B,WAAO,QAAQ,SAAS,MAAM;AAAA,EAChC;AAEA,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,WAAO,OAAO,OAAO,OAAO,EAAE,SAAS,MAAM;AAAA,EAC/C;AAEA,SAAO,OAAO,KAAK,OAAO,EAAE,SAAS,MAAM;AAC7C;AAEA,SAAS,WAAW,OAAoD;AACtE,MAAI,UAAU,QAAQ,OAAO,UAAU,UAAU;AAC/C,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,SAAS,eAAe;AAChC,WAAO,OAAO,MAAM,SAAS,YAAY,OAAO,MAAM,SAAS;AAAA,EACjE;AAEA,MAAI,MAAM,SAAS,eAAe;AAChC,WAAO,OAAO,MAAM,SAAS;AAAA,EAC/B;AAEA,SAAO,MAAM,SAAS,qBAAqB,MAAM,SAAS;AAC5D;AAEA,SAAS,eAAe,QAAuB,UAAwB;AACrE,QAAM,UAAU,OAAO,YAAY,iBAAiB,QAAQ;AAE5D,MAAI,YAAY,QAAW;AACzB;AAAA,EACF;AAEA,aAAW,cAAc,SAAS;AAChC,WAAO,YAAY,iBAAiB,UAAU;AAAA,EAChD;AACF;AAEA,eAAe,wBAAwB,WAA+B;AACpE,MAAI;AACF,UAAM,UAAmB,WAAW,aAAa;AAAA,EACnD,QAAQ;AAAA,EAER;AACF;AAEA,eAAe,UAAa,WAAgB,UAA8B;AACxE,QAAM,WAAW,MAAM,MAAM,IAAI,IAAI,UAAU,SAAS,CAAC;AAEzD,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI;AAAA,MACR,mCAAmC,QAAQ,gBAAgB,SAAS,MAAM;AAAA,IAC5E;AAAA,EACF;AAEA,SAAQ,MAAM,SAAS,KAAK;AAC9B;AAEA,eAAe,UAAU,WAAgB,UAAmC;AAC1E,QAAM,WAAW,MAAM;AAAA,IACrB,IAAI,IAAI,UAAU,eAAe,QAAQ,CAAC,IAAI,SAAS;AAAA,EACzD;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI;AAAA,MACR,yDAAyD,QAAQ;AAAA,IACnE;AAAA,EACF;AAEA,SAAO,OAAO,KAAK,MAAM,SAAS,YAAY,CAAC;AACjD;AAEA,eAAe,eAAe,UAA0C;AACtE,MAAI;AACF,WAAO,UAAU,MAAM,SAAS,QAAQ,CAAC;AAAA,EAC3C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,iBACP,UAGA;AACA,MACE,aAAa,QACb,OAAO,aAAa,YACpB,SAAS,gBAAgB,eACzB,OAAO,SAAS,gBAAgB,YAChC,SAAS,gBAAgB,MACzB;AACA,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AAEA,aAAW,cAAc,mBAAmB;AAC1C,UAAM,WAAW,SAAS,YAAY,UAAU;AAEhD,QAAI,OAAO,aAAa,YAAY,kBAAkB,QAAQ,MAAM,MAAM;AACxE,YAAM,IAAI;AAAA,QACR,uDAAuD,UAAU;AAAA,MACnE;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,MAA6B;AACrD,MACE,SAAS,QACT,OAAO,SAAS,YAChB,OAAO,KAAK,SAAS,YACrB,OAAO,KAAK,SAAS,YACrB,OAAO,KAAK,SAAS,YACrB,kBAAkB,KAAK,IAAI,MAAM,MACjC;AACA,UAAM,IAAI,MAAM,6DAA6D;AAAA,EAC/E;AACF;AAEA,SAAS,kBAAkB,UAAwB;AACjD,MAAI,kBAAkB,QAAQ,MAAM,MAAM;AACxC,UAAM,IAAI;AAAA,MACR,oDAAoD,QAAQ;AAAA,IAC9D;AAAA,EACF;AACF;AAEA,eAAe,iBACb,aACA,UAC4D;AAC5D,QAAM,YAAY,iBAAiB,aAAa,QAAQ;AAExD,QAAM,yBAAyB,aAAa,KAAK,QAAQ,SAAS,CAAC;AACnE,QAAM,MAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAC1C,QAAM,yBAAyB,aAAa,SAAS;AAErD,QAAM,YAAY,MAAM,MAAM,SAAS;AAEvC,MAAI,CAAC,UAAU,YAAY,KAAK,UAAU,eAAe,GAAG;AAC1D,UAAM,IAAI,MAAM,4DAA4D;AAAA,EAC9E;AAEA,QAAM,kBAAkB,MAAM,SAAS,WAAW;AAClD,QAAM,gBAAgB,MAAM,SAAS,SAAS;AAE9C,MAAI,CAAC,aAAa,iBAAiB,aAAa,GAAG;AACjD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAAqB,SAAS;AAEpC,SAAO,EAAE,WAAW,cAAc;AACpC;AAEA,SAAS,iBAAiB,aAAqB,UAA0B;AACvE,QAAM,YAAY,KAAK,QAAQ,aAAa,QAAQ;AACpD,QAAM,WAAW,KAAK,SAAS,aAAa,SAAS;AAErD,MACE,aAAa,MACb,SAAS,WAAW,IAAI,KACxB,KAAK,WAAW,QAAQ,GACxB;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,uBACb,YACA,aACe;AACf,QAAM,SAAS,KAAK,QAAQ,WAAW;AAEvC,QAAM,yBAAyB,WAAW,WAAW,MAAM;AAC3D,QAAM,MAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AACvC,QAAM,yBAAyB,WAAW,WAAW,MAAM;AAE3D,QAAM,aAAa,MAAM,SAAS,MAAM;AAExC,MAAI,CAAC,aAAa,WAAW,eAAe,UAAU,GAAG;AACvD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,sBAAsB,WAAW;AACzC;AAEA,eAAe,gBACb,YACA,aACe;AACf,QAAM,SAAS,KAAK,QAAQ,WAAW;AAEvC,QAAM,yBAAyB,WAAW,WAAW,MAAM;AAE3D,QAAM,aAAa,MAAM,SAAS,MAAM,EAAE,MAAM,MAAM,IAAI;AAE1D,MACE,eAAe,QACf,CAAC,aAAa,WAAW,eAAe,UAAU,GAClD;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,sBAAsB,WAAW;AACvC,QAAM,GAAG,aAAa,EAAE,OAAO,KAAK,CAAC;AACvC;AAEA,eAAe,sBACb,YACA,oBACe;AACf,QAAM,qBAAqB,WAAW,SAAS;AAE/C,QAAM,cAAc,MAAM,eAAe,WAAW,SAAS;AAE7D,QAAM,QAAQ;AAAA,IACZ,YAAY,IAAI,OAAO,eAAe;AACpC,UAAI,mBAAmB,IAAI,UAAU,GAAG;AACtC;AAAA,MACF;AAEA,YAAM;AAAA,QACJ;AAAA,QACA,iBAAiB,WAAW,WAAW,UAAU;AAAA,MACnD;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,eAAe,eACb,WACA,SAAS,IACU;AACnB,QAAM,UAAU,MAAM,QAAQ,WAAW,EAAE,eAAe,KAAK,CAAC;AAChE,QAAM,QAAQ,MAAM,QAAQ;AAAA,IAC1B,QAAQ,IAAI,OAAO,UAAU;AAC3B,YAAM,WAAW,WAAW,KAAK,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,IAAI;AACrE,YAAM,eAAe,KAAK,KAAK,WAAW,MAAM,IAAI;AAEpD,UAAI,aAAa,qBAAqB;AACpC,eAAO,CAAC;AAAA,MACV;AAEA,UAAI,MAAM,eAAe,GAAG;AAC1B,cAAM,IAAI;AAAA,UACR,uDAAuD,QAAQ;AAAA,QACjE;AAAA,MACF;AAEA,UAAI,MAAM,YAAY,GAAG;AACvB,eAAO,eAAe,cAAc,QAAQ;AAAA,MAC9C;AAEA,aAAO,MAAM,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC;AAAA,IACxC,CAAC;AAAA,EACH;AAEA,SAAO,MAAM,KAAK;AACpB;AAEA,eAAe,qBAAqB,WAAkC;AACpE,QAAM,aAAa,KAAK,KAAK,WAAW,mBAAmB;AAE3D,MAAI;AACF,UAAM,aAAa,MAAM,MAAM,UAAU;AAEzC,QAAI,WAAW,eAAe,KAAK,CAAC,WAAW,OAAO,GAAG;AACvD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA;AAAA,EACF,SAAS,OAAO;AACd,QAAI,CAAC,gBAAgB,KAAK,GAAG;AAC3B,YAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,UAAU,MAAM,QAAQ,SAAS;AAEvC,MAAI,QAAQ,SAAS,GAAG;AACtB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM;AAAA,IACJ;AAAA,IACA,KAAK,UAAU,EAAE,aAAa,OAAO,gBAAgB,GAAG,MAAM,CAAC;AAAA,EACjE;AACF;AAEA,SAAS,iBAAiB,WAAmB,UAA0B;AACrE,QAAM,aAAa,kBAAkB,QAAQ;AAE7C,MAAI,eAAe,MAAM;AACvB,UAAM,IAAI;AAAA,MACR,sDAAsD,QAAQ;AAAA,IAChE;AAAA,EACF;AAEA,QAAM,cAAc,KAAK,QAAQ,WAAW,UAAU;AACtD,QAAM,WAAW,KAAK,SAAS,WAAW,WAAW;AAErD,MAAI,SAAS,WAAW,IAAI,KAAK,KAAK,WAAW,QAAQ,GAAG;AAC1D,UAAM,IAAI,MAAM,+CAA+C,QAAQ,EAAE;AAAA,EAC3E;AAEA,SAAO;AACT;AAEA,eAAe,yBACb,MACA,QACe;AACf,QAAM,WAAW,KAAK,SAAS,MAAM,MAAM;AAE3C,MAAI,SAAS,WAAW,IAAI,KAAK,KAAK,WAAW,QAAQ,GAAG;AAC1D,UAAM,IAAI,MAAM,sDAAsD;AAAA,EACxE;AAEA,QAAM,WAAW,aAAa,KAAK,CAAC,IAAI,SAAS,MAAM,KAAK,GAAG;AAC/D,MAAI,UAAU;AAEd,aAAW,WAAW,UAAU;AAC9B,cAAU,KAAK,KAAK,SAAS,OAAO;AAEpC,QAAI;AACF,YAAM,OAAO,MAAM,MAAM,OAAO;AAEhC,UAAI,KAAK,eAAe,GAAG;AACzB,cAAM,IAAI;AAAA,UACR,4DAA4D,OAAO;AAAA,QACrE;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,UACE,iBAAiB,SACjB,UAAU,SACV,MAAM,SAAS,UACf;AACA;AAAA,MACF;AAEA,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,eAAe,sBAAsB,UAAiC;AACpE,MAAI;AACF,UAAM,OAAO,MAAM,MAAM,QAAQ;AAEjC,QAAI,KAAK,eAAe,KAAK,CAAC,KAAK,OAAO,GAAG;AAC3C,YAAM,IAAI;AAAA,QACR,oDAAoD,QAAQ;AAAA,MAC9D;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,QAAI,gBAAgB,KAAK,GAAG;AAC1B;AAAA,IACF;AAEA,UAAM;AAAA,EACR;AACF;AAEA,SAAS,gBAAgB,OAAyB;AAChD,SAAO,iBAAiB,SAAS,UAAU,SAAS,MAAM,SAAS;AACrE;AAEA,SAAS,aAAa,MAAc,QAAyB;AAC3D,QAAM,WAAW,KAAK,SAAS,MAAM,MAAM;AAE3C,SACE,aAAa,MACZ,CAAC,SAAS,WAAW,IAAI,KAAK,CAAC,KAAK,WAAW,QAAQ;AAE5D;AAEA,SAAS,kBAAkB,OAA8B;AACvD,MAAI,MAAM,SAAS,IAAI,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,MAAM,WAAW,MAAM,GAAG,EAAE,QAAQ,QAAQ,EAAE;AAChE,QAAM,aAAa,KAAK,MAAM,UAAU,SAAS;AAEjD,MACE,eAAe,OACf,WAAW,WAAW,KAAK,KAC3B,WAAW,MAAM,GAAG,EAAE,SAAS,IAAI,GACnC;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,eAAe,UAA0B;AAChD,SAAO,SAAS,MAAM,GAAG,EAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG;AAC7D;AAEA,SAAS,UAAU,OAAuB;AACxC,SAAO,UAAU,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,CAAC;AACnE;AAEA,SAAS,mBAAmB,WAAwB;AAClD,SAAO,IAAI,IAAI,SAAS;AAC1B;AAEA,SAAS,SAAS,WAAwB;AACxC,QAAM,MAAM,IAAI,IAAI,WAAW,SAAS;AAExC,MAAI,WAAW,IAAI,aAAa,WAAW,SAAS;AAEpD,SAAO,IAAI;AACb;AAEA,SAAS,gBAAgB,YAAsC;AAC7D,QAAM,YACJ,eAAe,MAAM,cAAc,GAAG,WAAW,GAAG,WAAW,MAAM,CAAC,CAAC;AAEzE,SAAO,IAAI,OAAO,IAAI,aAAa,SAAS,CAAC,GAAG;AAClD;AAEA,SAAS,gBACP,OACA,UACS;AACT,MAAI,UAAU,QAAQ,aAAa,QAAW;AAC5C,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,iBAAiB,QAAQ;AAE9C,MAAI,CAAC,KAAK,WAAW,YAAY,GAAG;AAClC,WAAO;AAAA,EACT;AAEA,SAAO,aAAa,MAAM,WAAW,KAAK,QAAQ,YAAY,CAAC;AACjE;AAEA,SAAS,iBAAiB,IAAoB;AAC5C,QAAM,CAAC,mBAAmB,EAAE,IAAI,GAAG,MAAM,KAAK,CAAC;AAE/C,SAAO;AACT;AAEA,SAAS,yBAAiC;AACxC,SAAO,cAAc,IAAI,IAAI,uBAAuB,YAAY,GAAG,CAAC;AACtE;AAEA,SAAS,8BAA8B,gBAAgC;AACrE,QAAM,mBAAmB,+BAA+B,cAAc;AACtE,QAAM,WAAW,KAAK;AAAA,IACpB,aAAa,KAAK,KAAK,kBAAkB,cAAc,GAAG,MAAM;AAAA,EAClE;AAOA,QAAM,cAAc,SAAS,UAAU,GAAG,GAAG;AAE7C,MAAI,OAAO,gBAAgB,UAAU;AACnC,UAAM,IAAI,MAAM,GAAG,cAAc,iCAAiC;AAAA,EACpE;AAEA,SAAO,KAAK,KAAK,kBAAkB,WAAW;AAChD;AAEA,SAAS,+BAA+B,gBAAgC;AACtE,QAAM,cAAc,eAAe,QAAQ,MAAM,cAAc,KAAK,CAAC;AAErE,aAAW,cAAc,aAAa;AACpC,UAAM,mBAAmB,KAAK,KAAK,YAAY,cAAc;AAE7D,QAAI;AACF,YAAM,WAAW,KAAK;AAAA,QACpB,aAAa,KAAK,KAAK,kBAAkB,cAAc,GAAG,MAAM;AAAA,MAClE;AAEA,UAAI,SAAS,SAAS,gBAAgB;AACpC,eAAO;AAAA,MACT;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,QAAM,IAAI,MAAM,qBAAqB,cAAc,SAAS,WAAW,EAAE;AAC3E;AAEA,SAAS,gBAAgB,gBAAgC;AACvD,SAAO,IAAI,OAAO,IAAI,aAAa,cAAc,CAAC,GAAG;AACvD;AAEA,SAAS,aAAa,OAAuB;AAC3C,SAAO,MAAM,QAAQ,uBAAuB,MAAM;AACpD;","names":[]}
1
+ {"version":3,"sources":["../src/plugins/vite.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport {\n lstat,\n mkdir,\n readdir,\n readFile,\n realpath,\n rm,\n writeFile\n} from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport type { Plugin, ViteDevServer } from \"vite\";\nimport { WebSocket } from \"ws\";\n\nimport type {\n UISystemDevEvent,\n UISystemDevFile,\n UISystemDevManifest\n} from \"../dev-server/protocol.js\";\n\nexport type NextopUISystemDevOptions = {\n serverUrl?: string;\n cacheDir?: string;\n};\n\nconst defaultServerUrl = \"http://127.0.0.1:4100\";\nconst defaultCacheDir = \".nextop-ui-system-dev\";\nconst cacheMarkerFileName = \".nextop-ui-system-dev-cache\";\nconst packageName = \"@nextop-os/ui-system\";\nconst packageRequire = createRequire(import.meta.url);\nconst stableEntrypoints = [\n \".\",\n \"./components\",\n \"./icons\",\n \"./styles.css\",\n \"./utils\"\n] as const;\nconst packageDependencyAliases = [\n \"class-variance-authority\",\n \"clsx\",\n \"radix-ui\",\n \"react-resizable-panels\",\n \"tailwind-merge\"\n] as const;\nconst packageStyleDependencyAliases = [\"tw-animate-css\"] as const;\nconst packageDependencyAliasSet = new Set<string>(packageDependencyAliases);\nconst packageStyleDependencyAliasSet = new Set<string>(\n packageStyleDependencyAliases\n);\n\ntype StableEntrypoint = (typeof stableEntrypoints)[number];\ntype DevSyncState = {\n cacheRoot: string;\n realCacheRoot: string;\n serverUrl: URL;\n};\n\nexport function nextopUISystemDev(\n options: NextopUISystemDevOptions = {}\n): Plugin {\n const serverUrl = normalizeServerUrl(options.serverUrl ?? defaultServerUrl);\n const cacheDir = options.cacheDir ?? defaultCacheDir;\n let syncState: DevSyncState | null = null;\n\n return {\n name: \"nextop-ui-system-dev\",\n async config(config, env) {\n if (env.command !== \"serve\") {\n syncState = null;\n return {};\n }\n\n if (!(await probeHealth(serverUrl))) {\n syncState = null;\n return {};\n }\n\n const projectRoot = path.resolve(config.root ?? process.cwd());\n const cacheState = await prepareCacheRoot(projectRoot, cacheDir);\n const manifest = await fetchJson<UISystemDevManifest>(\n serverUrl,\n \"/manifest\"\n );\n\n validateManifest(manifest);\n await syncFiles(serverUrl, cacheState);\n await fetchComponentsMetadata(serverUrl);\n syncState = { ...cacheState, serverUrl };\n\n return {\n resolve: {\n alias: stableEntrypoints\n .map((entrypoint) => ({\n find: entrypointAlias(entrypoint),\n replacement: path.join(\n cacheState.cacheRoot,\n manifest.entrypoints[entrypoint]\n )\n }))\n .concat(\n packageStyleDependencyAliases.map((dependencyName) => ({\n find: dependencyAlias(dependencyName),\n replacement: dependencyName,\n customResolver: (\n _source: string,\n importer: string | undefined\n ) =>\n isCacheImporter(syncState, importer)\n ? resolvePackageStyleDependency(dependencyName)\n : null\n }))\n )\n }\n };\n },\n async resolveId(source, importer) {\n if (syncState === null || !isCacheImporter(syncState, importer)) {\n return null;\n }\n\n if (packageDependencyAliasSet.has(source)) {\n return packageRequire.resolve(source);\n }\n\n if (packageStyleDependencyAliasSet.has(source)) {\n const resolved = await this.resolve(source, packageContextImporter(), {\n skipSelf: true\n });\n\n return resolved?.id ?? null;\n }\n\n return null;\n },\n configureServer(server) {\n if (syncState === null) {\n return;\n }\n\n subscribeToEvents(server, syncState);\n }\n };\n}\n\nasync function probeHealth(serverUrl: URL): Promise<boolean> {\n try {\n const response = await fetch(new URL(\"/health\", serverUrl));\n\n if (!response.ok) {\n return false;\n }\n\n const payload = (await response.json()) as { packageName?: unknown };\n\n return payload.packageName === packageName;\n } catch {\n return false;\n }\n}\n\nasync function syncFiles(\n serverUrl: URL,\n cacheState: Pick<DevSyncState, \"cacheRoot\" | \"realCacheRoot\">\n): Promise<void> {\n const files = await fetchJson<UISystemDevFile[]>(serverUrl, \"/files\");\n\n if (!Array.isArray(files)) {\n throw new Error(\n \"@nextop-os/ui-system dev server returned invalid files list\"\n );\n }\n\n const syncPaths = new Set<string>();\n\n await Promise.all(\n files.map(async (file) => {\n validateSyncFile(file);\n syncPaths.add(file.path);\n\n const destination = resolveCacheFile(cacheState.cacheRoot, file.path);\n await prepareCacheFileTarget(cacheState, destination);\n\n const currentHash = await readCachedHash(destination);\n\n if (currentHash === file.hash) {\n return;\n }\n\n const bytes = await fetchFile(serverUrl, file.path);\n const downloadedHash = hashBytes(bytes);\n\n if (downloadedHash !== file.hash) {\n throw new Error(\n `Hash mismatch while syncing @nextop-os/ui-system file: ${file.path}`\n );\n }\n\n await writeFile(destination, bytes);\n })\n );\n\n await removeStaleCacheFiles(cacheState, syncPaths);\n}\n\nasync function syncChangedFile(\n server: ViteDevServer,\n state: DevSyncState,\n event: Extract<UISystemDevEvent, { type: \"fileChanged\" }>\n): Promise<void> {\n validateEventPath(event.path);\n\n const destination = resolveCacheFile(state.cacheRoot, event.path);\n await prepareCacheFileTarget(state, destination);\n\n const bytes = await fetchFile(state.serverUrl, event.path);\n const downloadedHash = hashBytes(bytes);\n\n if (downloadedHash !== event.hash) {\n throw new Error(\n `Hash mismatch while syncing @nextop-os/ui-system file: ${event.path}`\n );\n }\n\n await writeFile(destination, bytes);\n invalidateFile(server, destination);\n}\n\nasync function removeDeletedFile(\n server: ViteDevServer,\n state: DevSyncState,\n event: Extract<UISystemDevEvent, { type: \"fileDeleted\" }>\n): Promise<void> {\n validateEventPath(event.path);\n\n const destination = resolveCacheFile(state.cacheRoot, event.path);\n\n invalidateFile(server, destination);\n await removeCacheFile(state, destination);\n}\n\nfunction subscribeToEvents(server: ViteDevServer, state: DevSyncState): void {\n let closed = false;\n let reconnectTimer: NodeJS.Timeout | null = null;\n let websocket: WebSocket | null = null;\n\n const close = (): void => {\n closed = true;\n\n if (reconnectTimer !== null) {\n clearTimeout(reconnectTimer);\n reconnectTimer = null;\n }\n\n websocket?.close();\n websocket = null;\n };\n\n const reconnect = (): void => {\n if (closed || reconnectTimer !== null) {\n return;\n }\n\n reconnectTimer = setTimeout(() => {\n reconnectTimer = null;\n connect();\n }, 1000);\n };\n\n const connect = (): void => {\n if (closed) {\n return;\n }\n\n websocket = new WebSocket(eventUrl(state.serverUrl));\n\n websocket.on(\"message\", (message) => {\n void handleEventMessage(server, state, message).catch(() => {\n // Event sync is best-effort; the initial HTTP sync remains authoritative.\n });\n });\n\n websocket.on(\"close\", reconnect);\n websocket.on(\"error\", () => {\n websocket?.close();\n });\n };\n\n connect();\n server.httpServer?.once(\"close\", close);\n}\n\nasync function handleEventMessage(\n server: ViteDevServer,\n state: DevSyncState,\n message: WebSocket.RawData\n): Promise<void> {\n const event = parseEvent(message);\n\n if (event === null) {\n return;\n }\n\n if (event.type === \"fileChanged\") {\n await syncChangedFile(server, state, event);\n return;\n }\n\n if (event.type === \"fileDeleted\") {\n await removeDeletedFile(server, state, event);\n }\n}\n\nfunction parseEvent(message: WebSocket.RawData): UISystemDevEvent | null {\n try {\n const event = JSON.parse(rawMessageToString(message)) as UISystemDevEvent;\n\n if (!isDevEvent(event)) {\n return null;\n }\n\n return event;\n } catch {\n return null;\n }\n}\n\nfunction rawMessageToString(message: WebSocket.RawData): string {\n if (Buffer.isBuffer(message)) {\n return message.toString(\"utf8\");\n }\n\n if (Array.isArray(message)) {\n return Buffer.concat(message).toString(\"utf8\");\n }\n\n return Buffer.from(message).toString(\"utf8\");\n}\n\nfunction isDevEvent(event: UISystemDevEvent): event is UISystemDevEvent {\n if (event === null || typeof event !== \"object\") {\n return false;\n }\n\n if (event.type === \"fileChanged\") {\n return typeof event.path === \"string\" && typeof event.hash === \"string\";\n }\n\n if (event.type === \"fileDeleted\") {\n return typeof event.path === \"string\";\n }\n\n return event.type === \"manifestChanged\" || event.type === \"componentsChanged\";\n}\n\nfunction invalidateFile(server: ViteDevServer, filePath: string): void {\n const modules = server.moduleGraph.getModulesByFile(filePath);\n\n if (modules === undefined) {\n return;\n }\n\n for (const moduleNode of modules) {\n server.moduleGraph.invalidateModule(moduleNode);\n }\n}\n\nasync function fetchComponentsMetadata(serverUrl: URL): Promise<void> {\n try {\n await fetchJson<unknown>(serverUrl, \"/components\");\n } catch {\n // Component diagnostics are best-effort; source sync and aliases are sufficient.\n }\n}\n\nasync function fetchJson<T>(serverUrl: URL, endpoint: string): Promise<T> {\n const response = await fetch(new URL(endpoint, serverUrl));\n\n if (!response.ok) {\n throw new Error(\n `@nextop-os/ui-system dev server ${endpoint} failed with ${response.status}`\n );\n }\n\n return (await response.json()) as T;\n}\n\nasync function fetchFile(serverUrl: URL, syncPath: string): Promise<Buffer> {\n const response = await fetch(\n new URL(`/files/${encodeSyncPath(syncPath)}`, serverUrl)\n );\n\n if (!response.ok) {\n throw new Error(\n `@nextop-os/ui-system dev server file fetch failed for ${syncPath}`\n );\n }\n\n return Buffer.from(await response.arrayBuffer());\n}\n\nasync function readCachedHash(filePath: string): Promise<string | null> {\n try {\n return hashBytes(await readFile(filePath));\n } catch {\n return null;\n }\n}\n\nfunction validateManifest(\n manifest: UISystemDevManifest\n): asserts manifest is UISystemDevManifest & {\n entrypoints: Record<StableEntrypoint, string>;\n} {\n if (\n manifest === null ||\n typeof manifest !== \"object\" ||\n manifest.packageName !== packageName ||\n typeof manifest.entrypoints !== \"object\" ||\n manifest.entrypoints === null\n ) {\n throw new Error(\n \"@nextop-os/ui-system dev server returned invalid manifest\"\n );\n }\n\n for (const entrypoint of stableEntrypoints) {\n const syncPath = manifest.entrypoints[entrypoint];\n\n if (typeof syncPath !== \"string\" || normalizeSyncPath(syncPath) === null) {\n throw new Error(\n `@nextop-os/ui-system dev server manifest is missing ${entrypoint}`\n );\n }\n }\n}\n\nfunction validateSyncFile(file: UISystemDevFile): void {\n if (\n file === null ||\n typeof file !== \"object\" ||\n typeof file.path !== \"string\" ||\n typeof file.hash !== \"string\" ||\n typeof file.size !== \"number\" ||\n normalizeSyncPath(file.path) === null\n ) {\n throw new Error(\n \"@nextop-os/ui-system dev server returned invalid file entry\"\n );\n }\n}\n\nfunction validateEventPath(syncPath: string): void {\n if (normalizeSyncPath(syncPath) === null) {\n throw new Error(\n `Refusing unsafe @nextop-os/ui-system event path: ${syncPath}`\n );\n }\n}\n\nasync function prepareCacheRoot(\n projectRoot: string,\n cacheDir: string\n): Promise<Pick<DevSyncState, \"cacheRoot\" | \"realCacheRoot\">> {\n const cacheRoot = resolveCacheRoot(projectRoot, cacheDir);\n\n await ensureNoSymlinkAncestors(projectRoot, path.dirname(cacheRoot));\n await mkdir(cacheRoot, { recursive: true });\n await ensureNoSymlinkAncestors(projectRoot, cacheRoot);\n\n const cacheStat = await lstat(cacheRoot);\n\n if (!cacheStat.isDirectory() || cacheStat.isSymbolicLink()) {\n throw new Error(\n \"@nextop-os/ui-system dev cacheDir must be a real directory\"\n );\n }\n\n const realProjectRoot = await realpath(projectRoot);\n const realCacheRoot = await realpath(cacheRoot);\n\n if (!isPathInside(realProjectRoot, realCacheRoot)) {\n throw new Error(\n \"@nextop-os/ui-system dev cacheDir must resolve inside the Vite project root\"\n );\n }\n\n await ensureOwnedCacheRoot(cacheRoot);\n\n return { cacheRoot, realCacheRoot };\n}\n\nfunction resolveCacheRoot(projectRoot: string, cacheDir: string): string {\n const cacheRoot = path.resolve(projectRoot, cacheDir);\n const relative = path.relative(projectRoot, cacheRoot);\n\n if (\n relative === \"\" ||\n relative.startsWith(\"..\") ||\n path.isAbsolute(relative)\n ) {\n throw new Error(\n \"@nextop-os/ui-system dev cacheDir must resolve inside the Vite project root\"\n );\n }\n\n return cacheRoot;\n}\n\nasync function prepareCacheFileTarget(\n cacheState: Pick<DevSyncState, \"cacheRoot\" | \"realCacheRoot\">,\n destination: string\n): Promise<void> {\n const parent = path.dirname(destination);\n\n await ensureNoSymlinkAncestors(cacheState.cacheRoot, parent);\n await mkdir(parent, { recursive: true });\n await ensureNoSymlinkAncestors(cacheState.cacheRoot, parent);\n\n const realParent = await realpath(parent);\n\n if (!isPathInside(cacheState.realCacheRoot, realParent)) {\n throw new Error(\n \"@nextop-os/ui-system dev cache file resolved outside cacheDir\"\n );\n }\n\n await rejectExistingSymlink(destination);\n}\n\nasync function removeCacheFile(\n cacheState: Pick<DevSyncState, \"cacheRoot\" | \"realCacheRoot\">,\n destination: string\n): Promise<void> {\n const parent = path.dirname(destination);\n\n await ensureNoSymlinkAncestors(cacheState.cacheRoot, parent);\n\n const realParent = await realpath(parent).catch(() => null);\n\n if (\n realParent === null ||\n !isPathInside(cacheState.realCacheRoot, realParent)\n ) {\n throw new Error(\n \"@nextop-os/ui-system dev cache file resolved outside cacheDir\"\n );\n }\n\n await rejectExistingSymlink(destination);\n await rm(destination, { force: true });\n}\n\nasync function removeStaleCacheFiles(\n cacheState: Pick<DevSyncState, \"cacheRoot\" | \"realCacheRoot\">,\n authoritativePaths: Set<string>\n): Promise<void> {\n await ensureOwnedCacheRoot(cacheState.cacheRoot);\n\n const cachedFiles = await listCacheFiles(cacheState.cacheRoot);\n\n await Promise.all(\n cachedFiles.map(async (cachedFile) => {\n if (authoritativePaths.has(cachedFile)) {\n return;\n }\n\n await removeCacheFile(\n cacheState,\n resolveCacheFile(cacheState.cacheRoot, cachedFile)\n );\n })\n );\n}\n\nasync function listCacheFiles(\n directory: string,\n prefix = \"\"\n): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true });\n const paths = await Promise.all(\n entries.map(async (entry) => {\n const syncPath = prefix === \"\" ? entry.name : `${prefix}/${entry.name}`;\n const absolutePath = path.join(directory, entry.name);\n\n if (syncPath === cacheMarkerFileName) {\n return [];\n }\n\n if (entry.isSymbolicLink()) {\n throw new Error(\n `Refusing symlink in @nextop-os/ui-system dev cache: ${syncPath}`\n );\n }\n\n if (entry.isDirectory()) {\n return listCacheFiles(absolutePath, syncPath);\n }\n\n return entry.isFile() ? [syncPath] : [];\n })\n );\n\n return paths.flat();\n}\n\nasync function ensureOwnedCacheRoot(cacheRoot: string): Promise<void> {\n const markerPath = path.join(cacheRoot, cacheMarkerFileName);\n\n try {\n const markerStat = await lstat(markerPath);\n\n if (markerStat.isSymbolicLink() || !markerStat.isFile()) {\n throw new Error(\n \"@nextop-os/ui-system dev cacheDir contains an unsafe ownership marker\"\n );\n }\n\n return;\n } catch (error) {\n if (!isNotFoundError(error)) {\n throw error;\n }\n }\n\n const entries = await readdir(cacheRoot);\n\n if (entries.length > 0) {\n throw new Error(\n \"@nextop-os/ui-system dev cacheDir must be empty or contain a Nextop UI cache marker before stale cleanup\"\n );\n }\n\n await writeFile(\n markerPath,\n JSON.stringify({ packageName, cache: \"ui-system-dev\" }, null, 2)\n );\n}\n\nfunction resolveCacheFile(cacheRoot: string, syncPath: string): string {\n const normalized = normalizeSyncPath(syncPath);\n\n if (normalized === null) {\n throw new Error(\n `Refusing to sync unsafe @nextop-os/ui-system path: ${syncPath}`\n );\n }\n\n const destination = path.resolve(cacheRoot, normalized);\n const relative = path.relative(cacheRoot, destination);\n\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n throw new Error(`Refusing to sync @nextop-os/ui-system path: ${syncPath}`);\n }\n\n return destination;\n}\n\nasync function ensureNoSymlinkAncestors(\n root: string,\n target: string\n): Promise<void> {\n const relative = path.relative(root, target);\n\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n throw new Error(\"@nextop-os/ui-system dev cache path escaped cacheDir\");\n }\n\n const segments = relative === \"\" ? [] : relative.split(path.sep);\n let current = root;\n\n for (const segment of segments) {\n current = path.join(current, segment);\n\n try {\n const stat = await lstat(current);\n\n if (stat.isSymbolicLink()) {\n throw new Error(\n `Refusing symlink in @nextop-os/ui-system dev cache path: ${current}`\n );\n }\n } catch (error) {\n if (\n error instanceof Error &&\n \"code\" in error &&\n error.code === \"ENOENT\"\n ) {\n return;\n }\n\n throw error;\n }\n }\n}\n\nasync function rejectExistingSymlink(filePath: string): Promise<void> {\n try {\n const stat = await lstat(filePath);\n\n if (stat.isSymbolicLink() || !stat.isFile()) {\n throw new Error(\n `Refusing unsafe @nextop-os/ui-system cache file: ${filePath}`\n );\n }\n } catch (error) {\n if (isNotFoundError(error)) {\n return;\n }\n\n throw error;\n }\n}\n\nfunction isNotFoundError(error: unknown): boolean {\n return error instanceof Error && \"code\" in error && error.code === \"ENOENT\";\n}\n\nfunction isPathInside(root: string, target: string): boolean {\n const relative = path.relative(root, target);\n\n return (\n relative === \"\" ||\n (!relative.startsWith(\"..\") && !path.isAbsolute(relative))\n );\n}\n\nfunction normalizeSyncPath(input: string): string | null {\n if (input.includes(\"\\0\")) {\n return null;\n }\n\n const slashPath = input.replaceAll(\"\\\\\", \"/\").replace(/^\\/+/, \"\");\n const normalized = path.posix.normalize(slashPath);\n\n if (\n normalized === \".\" ||\n normalized.startsWith(\"../\") ||\n normalized.split(\"/\").includes(\"..\")\n ) {\n return null;\n }\n\n return normalized;\n}\n\nfunction encodeSyncPath(syncPath: string): string {\n return syncPath.split(\"/\").map(encodeURIComponent).join(\"/\");\n}\n\nfunction hashBytes(bytes: Buffer): string {\n return `sha256:${createHash(\"sha256\").update(bytes).digest(\"hex\")}`;\n}\n\nfunction normalizeServerUrl(serverUrl: string): URL {\n return new URL(serverUrl);\n}\n\nfunction eventUrl(serverUrl: URL): string {\n const url = new URL(\"/events\", serverUrl);\n\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n\n return url.href;\n}\n\nfunction entrypointAlias(entrypoint: StableEntrypoint): RegExp {\n const specifier =\n entrypoint === \".\" ? packageName : `${packageName}${entrypoint.slice(1)}`;\n\n return new RegExp(`^${escapeRegExp(specifier)}$`);\n}\n\nfunction isCacheImporter(\n state: DevSyncState | null,\n importer: string | undefined\n): boolean {\n if (state === null || importer === undefined) {\n return false;\n }\n\n const importerPath = stripViteIdQuery(importer);\n\n if (!path.isAbsolute(importerPath)) {\n return false;\n }\n\n return isPathInside(state.cacheRoot, path.resolve(importerPath));\n}\n\nfunction stripViteIdQuery(id: string): string {\n const [pathWithoutQuery = \"\"] = id.split(\"?\", 1);\n\n return pathWithoutQuery;\n}\n\nfunction packageContextImporter(): string {\n return fileURLToPath(new URL(\"../styles/index.css\", import.meta.url));\n}\n\nfunction resolvePackageStyleDependency(dependencyName: string): string {\n const packageDirectory = findDependencyPackageDirectory(dependencyName);\n const manifest = JSON.parse(\n readFileSync(path.join(packageDirectory, \"package.json\"), \"utf8\")\n ) as {\n exports?: {\n \".\"?: {\n style?: unknown;\n };\n };\n };\n const styleExport = manifest.exports?.[\".\"]?.style;\n\n if (typeof styleExport !== \"string\") {\n throw new Error(`${dependencyName} does not expose a style export`);\n }\n\n return path.join(packageDirectory, styleExport);\n}\n\nfunction findDependencyPackageDirectory(dependencyName: string): string {\n const searchPaths = packageRequire.resolve.paths(dependencyName) ?? [];\n\n for (const searchPath of searchPaths) {\n const packageDirectory = path.join(searchPath, dependencyName);\n\n try {\n const manifest = JSON.parse(\n readFileSync(path.join(packageDirectory, \"package.json\"), \"utf8\")\n ) as { name?: unknown };\n\n if (manifest.name === dependencyName) {\n return packageDirectory;\n }\n } catch {\n // Try the next Node resolution search path.\n }\n }\n\n throw new Error(`Could not resolve ${dependencyName} from ${packageName}`);\n}\n\nfunction dependencyAlias(dependencyName: string): RegExp {\n return new RegExp(`^${escapeRegExp(dependencyName)}$`);\n}\n\nfunction escapeRegExp(input: string): string {\n return input.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n"],"mappings":"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","names":[]}
@@ -15,51 +15,94 @@ declare function LayoutPresetIcon({ className, selectedCount, size, title, varia
15
15
 
16
16
  declare function NextopMark({ className, size, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
17
17
 
18
- declare const LaunchIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
19
- declare const FolderIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
20
- declare const DashboardIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
21
- declare const NewWorkspaceIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
22
- declare const HealthIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
23
- declare const AlertIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
24
- declare const LoadingIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
25
- declare const PlatformIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
26
- declare const SparkIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
27
- declare const SettingsIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
28
- declare const CloseIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
29
- declare const MinimizeIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
30
- declare const MaximizeIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
31
- declare const RestoreIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
32
- declare const LayoutMenuIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
33
- declare const QuickLayoutLeftIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
34
- declare const QuickLayoutRightIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
35
- declare const QuickLayoutTopIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
36
- declare const QuickLayoutBottomIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
37
- declare const AppWindowIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
38
- declare const ArrowLeftIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
39
- declare const ArrowRightIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
40
- declare const CheckIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
41
- declare const ChevronDownIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
42
- declare const ChevronRightIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
43
- declare const ChevronUpIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
44
- declare const CopyIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
45
- declare const DirectoryIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
46
- declare const EyeIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
47
- declare const FileIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
48
- declare const FileCodeIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
49
- declare const FileCreateIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
50
- declare const FileSearchIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
51
- declare const FileSpreadsheetIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
52
- declare const FileTextIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
53
- declare const ImageFileIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
54
- declare const EditIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
55
- declare const LayoutGridIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
56
- declare const MoreHorizontalIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
57
- declare const RefreshIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
58
- declare const SearchIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
59
- declare const DeleteIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
60
- declare const UploadIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
61
- declare const VideoFileIcon: ({ size, title, ...props }: IconProps) => react_jsx_runtime.JSX.Element;
62
- declare function GoogleBrandIcon({ size, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
63
- declare function GitHubBrandIcon({ size, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
18
+ declare function LaunchIcon(props: IconProps): react_jsx_runtime.JSX.Element;
19
+ declare function FolderIcon(props: IconProps): react_jsx_runtime.JSX.Element;
20
+ declare function FolderFilledIcon(props: IconProps): react_jsx_runtime.JSX.Element;
21
+ declare function DashboardIcon(props: IconProps): react_jsx_runtime.JSX.Element;
22
+ declare function NewWorkspaceIcon(props: IconProps): react_jsx_runtime.JSX.Element;
23
+ declare function HealthIcon(props: IconProps): react_jsx_runtime.JSX.Element;
24
+ declare function AlertIcon(props: IconProps): react_jsx_runtime.JSX.Element;
25
+ interface LoadingIconProps extends IconProps {
26
+ trackColor?: string;
27
+ }
28
+ declare function LoadingIcon({ size, title, strokeWidth, trackColor, ...props }: LoadingIconProps): react_jsx_runtime.JSX.Element;
29
+ declare function PlatformIcon(props: IconProps): react_jsx_runtime.JSX.Element;
30
+ declare function SparkIcon(props: IconProps): react_jsx_runtime.JSX.Element;
31
+ declare function SettingsIcon(props: IconProps): react_jsx_runtime.JSX.Element;
32
+ declare function CloseIcon(props: IconProps): react_jsx_runtime.JSX.Element;
33
+ declare function MinimizeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
34
+ declare function MaximizeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
35
+ declare function RestoreIcon(props: IconProps): react_jsx_runtime.JSX.Element;
36
+ declare function LayoutMenuIcon(props: IconProps): react_jsx_runtime.JSX.Element;
37
+ declare function GridLeftLinedIcon(props: IconProps): react_jsx_runtime.JSX.Element;
38
+ declare function GridRightLinedIcon(props: IconProps): react_jsx_runtime.JSX.Element;
39
+ declare function GridTopLinedIcon(props: IconProps): react_jsx_runtime.JSX.Element;
40
+ declare function GridBottomLinedIcon(props: IconProps): react_jsx_runtime.JSX.Element;
41
+ declare function GridHorizontalLinedIcon(props: IconProps): react_jsx_runtime.JSX.Element;
42
+ declare function GridVerticalLinedIcon(props: IconProps): react_jsx_runtime.JSX.Element;
43
+ declare function AppWindowIcon(props: IconProps): react_jsx_runtime.JSX.Element;
44
+ declare function ArrowLeftIcon(props: IconProps): react_jsx_runtime.JSX.Element;
45
+ declare function ArrowRightIcon(props: IconProps): react_jsx_runtime.JSX.Element;
46
+ declare function CheckIcon(props: IconProps): react_jsx_runtime.JSX.Element;
47
+ declare function ChevronDownIcon(props: IconProps): react_jsx_runtime.JSX.Element;
48
+ declare function ChevronRightIcon(props: IconProps): react_jsx_runtime.JSX.Element;
49
+ declare function ChevronUpIcon(props: IconProps): react_jsx_runtime.JSX.Element;
50
+ declare function AddIcon(props: IconProps): react_jsx_runtime.JSX.Element;
51
+ declare function CopyIcon(props: IconProps): react_jsx_runtime.JSX.Element;
52
+ declare function DirectoryIcon(props: IconProps): react_jsx_runtime.JSX.Element;
53
+ declare function EyeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
54
+ declare function FileIcon(props: IconProps): react_jsx_runtime.JSX.Element;
55
+ declare function FileTextIcon(props: IconProps): react_jsx_runtime.JSX.Element;
56
+ declare function FileCodeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
57
+ declare function FileCreateIcon(props: IconProps): react_jsx_runtime.JSX.Element;
58
+ declare function FileSearchIcon(props: IconProps): react_jsx_runtime.JSX.Element;
59
+ declare function FileSpreadsheetIcon(props: IconProps): react_jsx_runtime.JSX.Element;
60
+ declare function ImageFileIcon(props: IconProps): react_jsx_runtime.JSX.Element;
61
+ declare function EditIcon(props: IconProps): react_jsx_runtime.JSX.Element;
62
+ declare function LayoutGridIcon(props: IconProps): react_jsx_runtime.JSX.Element;
63
+ declare function OverviewLayoutIcon(props: IconProps): react_jsx_runtime.JSX.Element;
64
+ declare function MoreHorizontalIcon(props: IconProps): react_jsx_runtime.JSX.Element;
65
+ declare function RefreshIcon(props: IconProps): react_jsx_runtime.JSX.Element;
66
+ declare function SearchIcon(props: IconProps): react_jsx_runtime.JSX.Element;
67
+ declare function DownloadIcon(props: IconProps): react_jsx_runtime.JSX.Element;
68
+ declare function DarkModeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
69
+ declare function LightModeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
70
+ declare function DeleteIcon(props: IconProps): react_jsx_runtime.JSX.Element;
71
+ declare function UploadIcon(props: IconProps): react_jsx_runtime.JSX.Element;
72
+ declare function VideoFileIcon(props: IconProps): react_jsx_runtime.JSX.Element;
73
+ declare function AgentSessionsIcon(props: IconProps): react_jsx_runtime.JSX.Element;
74
+ declare function CreateChatIcon(props: IconProps): react_jsx_runtime.JSX.Element;
75
+ declare function FolderFailedIcon(props: IconProps): react_jsx_runtime.JSX.Element;
76
+ declare function GuideIcon(props: IconProps): react_jsx_runtime.JSX.Element;
77
+ declare function ImageGenerateIcon(props: IconProps): react_jsx_runtime.JSX.Element;
78
+ declare function IssueIcon(props: IconProps): react_jsx_runtime.JSX.Element;
79
+ declare function KeyboardIcon(props: IconProps): react_jsx_runtime.JSX.Element;
80
+ declare function LinkIcon(props: IconProps): react_jsx_runtime.JSX.Element;
81
+ declare function LocateFolderIcon(props: IconProps): react_jsx_runtime.JSX.Element;
82
+ declare function NavAgentsIcon(props: IconProps): react_jsx_runtime.JSX.Element;
83
+ declare function NavLaunchIcon(props: IconProps): react_jsx_runtime.JSX.Element;
84
+ declare function NavTemplatesIcon(props: IconProps): react_jsx_runtime.JSX.Element;
85
+ declare function OpenSessionsIcon(props: IconProps): react_jsx_runtime.JSX.Element;
86
+ declare function PanelIcon(props: IconProps): react_jsx_runtime.JSX.Element;
87
+ declare function ProductIcon(props: IconProps): react_jsx_runtime.JSX.Element;
88
+ declare function ProductDocIcon(props: IconProps): react_jsx_runtime.JSX.Element;
89
+ declare function WebIcon(props: IconProps): react_jsx_runtime.JSX.Element;
90
+ declare function CapabilityIcon(props: IconProps): react_jsx_runtime.JSX.Element;
91
+ declare function TaskIcon(props: IconProps): react_jsx_runtime.JSX.Element;
92
+ declare function ThinkingIcon(props: IconProps): react_jsx_runtime.JSX.Element;
93
+ declare function WebScrapeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
94
+ declare function ChatIcon(props: IconProps): react_jsx_runtime.JSX.Element;
95
+ declare function RoomsHintIcon(props: IconProps): react_jsx_runtime.JSX.Element;
96
+ declare function ToolsIcon(props: IconProps): react_jsx_runtime.JSX.Element;
97
+ declare function UnavailableChatIcon(props: IconProps): react_jsx_runtime.JSX.Element;
98
+ declare function UploadFolderIcon(props: IconProps): react_jsx_runtime.JSX.Element;
99
+ declare function FailedFilledIcon(props: IconProps): react_jsx_runtime.JSX.Element;
100
+ declare function FailedLinedIcon(props: IconProps): react_jsx_runtime.JSX.Element;
101
+ declare function SuccessFilledIcon(props: IconProps): react_jsx_runtime.JSX.Element;
102
+ declare function SuccessLinedIcon(props: IconProps): react_jsx_runtime.JSX.Element;
103
+ declare function WarningFilledIcon(props: IconProps): react_jsx_runtime.JSX.Element;
104
+ declare function WarningLinedIcon(props: IconProps): react_jsx_runtime.JSX.Element;
105
+ declare function GoogleBrandIcon(props: IconProps): react_jsx_runtime.JSX.Element;
106
+ declare function GitHubBrandIcon(props: IconProps): react_jsx_runtime.JSX.Element;
64
107
 
65
- export { AlertIcon, AppWindowIcon, ArrowLeftIcon, ArrowRightIcon, CheckIcon, ChevronDownIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, CopyIcon, DashboardIcon, DeleteIcon, DirectoryIcon, EditIcon, EyeIcon, FileCodeIcon, FileCreateIcon, FileIcon, FileSearchIcon, FileSpreadsheetIcon, FileTextIcon, FolderIcon, GitHubBrandIcon, GoogleBrandIcon, HealthIcon, type IconProps, ImageFileIcon, LaunchIcon, LayoutGridIcon, LayoutMenuIcon, LayoutPresetIcon, type LayoutPresetIconProps, LoadingIcon, MaximizeIcon, MinimizeIcon, MoreHorizontalIcon, NewWorkspaceIcon, NextopMark, PlatformIcon, QuickLayoutBottomIcon, QuickLayoutLeftIcon, QuickLayoutRightIcon, QuickLayoutTopIcon, RefreshIcon, RestoreIcon, SearchIcon, SettingsIcon, SparkIcon, UploadIcon, VideoFileIcon };
108
+ export { AddIcon, AgentSessionsIcon, AlertIcon, AppWindowIcon, ArrowLeftIcon, ArrowRightIcon, CapabilityIcon, ChatIcon, CheckIcon, ChevronDownIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, CopyIcon, CreateChatIcon, DarkModeIcon, DashboardIcon, DeleteIcon, DirectoryIcon, DownloadIcon, EditIcon, EyeIcon, FailedFilledIcon, FailedLinedIcon, FileCodeIcon, FileCreateIcon, FileIcon, FileSearchIcon, FileSpreadsheetIcon, FileTextIcon, FolderFailedIcon, FolderFilledIcon, FolderIcon, GitHubBrandIcon, GoogleBrandIcon, GridBottomLinedIcon, GridHorizontalLinedIcon, GridLeftLinedIcon, GridRightLinedIcon, GridTopLinedIcon, GridVerticalLinedIcon, GuideIcon, HealthIcon, type IconProps, ImageFileIcon, ImageGenerateIcon, IssueIcon, KeyboardIcon, LaunchIcon, LayoutGridIcon, LayoutMenuIcon, LayoutPresetIcon, type LayoutPresetIconProps, LightModeIcon, LinkIcon, LoadingIcon, type LoadingIconProps, LocateFolderIcon, MaximizeIcon, MinimizeIcon, MoreHorizontalIcon, NavAgentsIcon, NavLaunchIcon, NavTemplatesIcon, NewWorkspaceIcon, NextopMark, OpenSessionsIcon, OverviewLayoutIcon, PanelIcon, PlatformIcon, ProductDocIcon, ProductIcon, RefreshIcon, RestoreIcon, RoomsHintIcon, SearchIcon, SettingsIcon, SparkIcon, SuccessFilledIcon, SuccessLinedIcon, TaskIcon, ThinkingIcon, ToolsIcon, UnavailableChatIcon, UploadFolderIcon, UploadIcon, VideoFileIcon, WarningFilledIcon, WarningLinedIcon, WebIcon, WebScrapeIcon };