@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.
- package/AGENTS.md +30 -8
- package/README.md +11 -14
- package/agent/install-skill.mjs +65 -5
- package/agent/nextop-ui-system/SKILL.md +119 -8
- package/agent/nextop-ui-system/references/extract-base-component.md +50 -6
- package/agent/nextop-ui-system/references/maintain-inventory.md +5 -0
- package/agent/nextop-ui-system/references/promote-business-component.md +94 -208
- package/dist/chunk-GE5YVRTV.js +859 -0
- package/dist/chunk-GE5YVRTV.js.map +1 -0
- package/dist/chunk-KJQ366TA.js +70 -0
- package/dist/chunk-KJQ366TA.js.map +1 -0
- package/dist/chunk-LVHEV755.js +2553 -0
- package/dist/chunk-LVHEV755.js.map +1 -0
- package/dist/components/index.d.ts +162 -11
- package/dist/components/index.js +62 -2
- package/dist/date-format.d.ts +6 -0
- package/dist/date-format.js +11 -0
- package/dist/date-format.js.map +1 -0
- package/dist/dev-vite.js +12 -5
- package/dist/dev-vite.js.map +1 -1
- package/dist/icons/index.d.ts +90 -47
- package/dist/icons/index.js +91 -11
- package/dist/index.d.ts +3 -2
- package/dist/index.js +159 -11
- package/dist/metadata/components.json +1320 -265
- package/dist/metadata/components.schema.json +4 -0
- package/dist/metadata/index.d.ts +3 -1
- package/dist/metadata/index.js +1320 -265
- package/dist/metadata/index.js.map +1 -1
- package/dist/styles/base.css +85 -0
- package/dist/styles/index.css +1 -0
- package/dist/styles/semantic.css +7 -0
- package/dist/styles/theme.css +82 -1
- package/package.json +10 -3
- package/ui-system.md +640 -0
- package/UI_SYSTEM_GUIDELINES.md +0 -148
- package/dist/chunk-FT633NLJ.js +0 -1159
- package/dist/chunk-FT633NLJ.js.map +0 -1
- package/dist/chunk-NFSMZKML.js +0 -208
- package/dist/chunk-NFSMZKML.js.map +0 -1
package/dist/components/index.js
CHANGED
|
@@ -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-
|
|
64
|
-
import "../chunk-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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);
|
package/dist/dev-vite.js.map
CHANGED
|
@@ -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":"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","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":[]}
|
package/dist/icons/index.d.ts
CHANGED
|
@@ -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
|
|
19
|
-
declare
|
|
20
|
-
declare
|
|
21
|
-
declare
|
|
22
|
-
declare
|
|
23
|
-
declare
|
|
24
|
-
declare
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
declare
|
|
29
|
-
declare
|
|
30
|
-
declare
|
|
31
|
-
declare
|
|
32
|
-
declare
|
|
33
|
-
declare
|
|
34
|
-
declare
|
|
35
|
-
declare
|
|
36
|
-
declare
|
|
37
|
-
declare
|
|
38
|
-
declare
|
|
39
|
-
declare
|
|
40
|
-
declare
|
|
41
|
-
declare
|
|
42
|
-
declare
|
|
43
|
-
declare
|
|
44
|
-
declare
|
|
45
|
-
declare
|
|
46
|
-
declare
|
|
47
|
-
declare
|
|
48
|
-
declare
|
|
49
|
-
declare
|
|
50
|
-
declare
|
|
51
|
-
declare
|
|
52
|
-
declare
|
|
53
|
-
declare
|
|
54
|
-
declare
|
|
55
|
-
declare
|
|
56
|
-
declare
|
|
57
|
-
declare
|
|
58
|
-
declare
|
|
59
|
-
declare
|
|
60
|
-
declare
|
|
61
|
-
declare
|
|
62
|
-
declare function
|
|
63
|
-
declare function
|
|
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,
|
|
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 };
|