@iota-uz/sdk 0.4.41 → 0.4.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/applet/vite.cjs +5 -0
- package/dist/applet/vite.cjs.map +1 -1
- package/dist/applet/vite.mjs +5 -0
- package/dist/applet/vite.mjs.map +1 -1
- package/dist/bichat/index.css +10 -0
- package/dist/bichat/index.css.map +1 -1
- package/dist/bichat/styles.css +10 -0
- package/dist/bichat/tailwind.cjs +10 -0
- package/dist/bichat/tailwind.cjs.map +1 -1
- package/dist/bichat/tailwind.mjs +10 -0
- package/dist/bichat/tailwind.mjs.map +1 -1
- package/package.json +1 -1
- package/tailwind/compiled.css +1 -1
package/dist/applet/vite.cjs
CHANGED
|
@@ -172,6 +172,11 @@ function createAppletStylesVirtualModulePlugin(options = {}) {
|
|
|
172
172
|
fs__default.default.unlinkSync(tmpFile);
|
|
173
173
|
} catch {
|
|
174
174
|
}
|
|
175
|
+
} else if (result.error === void 0) {
|
|
176
|
+
const stderr = result.stderr?.toString().trim();
|
|
177
|
+
const detail = stderr ? `
|
|
178
|
+
${stderr}` : "";
|
|
179
|
+
throw new Error(`[applet-styles] Tailwind CSS compilation failed.${detail}`);
|
|
175
180
|
}
|
|
176
181
|
}
|
|
177
182
|
if (mainCss === null) {
|
package/dist/applet/vite.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../ui/src/applet-vite/vite.ts","../../ui/src/applet-vite/styles-plugin.ts"],"names":["path","createRequire","fs","os","crypto","spawnSync"],"mappings":"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","file":"vite.cjs","sourcesContent":["/**\n * Applet Frontend Kit: Vite config helpers for applets running behind a base path\n * with dev proxy and optional local SDK aliasing.\n */\nimport type { UserConfig } from 'vite';\nimport path from 'node:path';\n\nexport type AppletViteOptions = {\n /** Applet base path (e.g. \"/admin/ali/chat\" or \"/bi-chat\"). */\n basePath: string\n /** Backend URL for proxy (e.g. \"http://localhost:3200\"). */\n backendUrl: string\n /** Enable Vite aliases to a local SDK dist during dev iteration. Rare: prefer applet dev's managed local package. */\n enableLocalSdkAliases?: boolean\n /** Override SDK dist directory when enableLocalSdkAliases is true. */\n sdkDistDir?: string\n /** Merge additional Vite config */\n extend?: UserConfig\n}\n\nconst DEFAULT_DEDUPE = ['react', 'react-dom', 'react-router-dom', 'react-is'];\n\n/**\n * Returns base URL for assets (with trailing slash). Uses APPLET_ASSETS_BASE env if set, otherwise derives from basePath.\n */\nexport function getAppletAssetsBase(basePath: string): string {\n const base = process.env.APPLET_ASSETS_BASE ?? basePath + '/assets/';\n return base.endsWith('/') ? base : base + '/';\n}\n\n/**\n * Returns dev server port from APPLET_VITE_PORT env, or the given default.\n */\nexport function getAppletVitePort(defaultPort = 5173): number {\n const p = process.env.APPLET_VITE_PORT;\n if (p === undefined || p === '') {return defaultPort;}\n const n = Number(p);\n return Number.isFinite(n) ? n : defaultPort;\n}\n\n/**\n * Builds a full Vite config for an applet: base, port, dedupe, proxy, optional local SDK aliases.\n *\n * **Merge semantics for `extend`:** When you pass `extend`, it is merged with the base config as follows:\n * - **resolve.alias**: arrays are concatenated (base aliases first, then extend aliases).\n * - **plugins**: arrays are concatenated (base plugins first, then extend plugins).\n * - **server**, **base**, **resolve.dedupe** and other scalar/object fields: extend overrides base (Object.assign-style).\n * To fully override the base config, spread first: `defineConfig({ ...createAppletViteConfig(opts), ...yourOverrides })`.\n */\nexport function createAppletViteConfig(opts: AppletViteOptions): UserConfig {\n const base = getAppletAssetsBase(opts.basePath);\n const port = getAppletVitePort(5173);\n const config: UserConfig = {\n base,\n resolve: {\n dedupe: DEFAULT_DEDUPE,\n alias: createLocalSdkAliases({\n enabled: opts.enableLocalSdkAliases,\n sdkDistDir: opts.sdkDistDir,\n }),\n },\n server: {\n port,\n strictPort: true,\n proxy: createAppletBackendProxy({\n basePath: opts.basePath,\n backendUrl: opts.backendUrl,\n }),\n },\n };\n if (opts.extend) {\n return mergeConfig(config, opts.extend);\n }\n return config;\n}\n\n/**\n * Returns proxy entries for applet RPC and stream under basePath.\n * Use as server.proxy in Vite config.\n * Note: /stream is SSE; plain string targets do not set ws or changeOrigin. If WebSocket upgrade or SSE proxying issues arise, configure proxy with ws: true or a custom configure.\n */\nexport function createAppletBackendProxy(opts: {\n basePath: string\n backendUrl: string\n}): Record<string, string> {\n const base = opts.basePath.replace(/\\/+$/, '');\n const target = opts.backendUrl.replace(/\\/+$/, '');\n return {\n [base + '/rpc']: target,\n [base + '/stream']: target,\n };\n}\n\n/**\n * Returns resolve.alias entries to point @iota-uz/sdk and @iota-uz/sdk/bichat to a local dist.\n * Rare escape hatch for non-standard local SDK layouts. Prefer applet dev's managed local package flow.\n */\nexport function createLocalSdkAliases(opts?: {\n enabled?: boolean\n sdkDistDir?: string\n}): Array<{ find: string | RegExp; replacement: string }> {\n const dir = opts?.sdkDistDir;\n const enabled = opts?.enabled ?? Boolean(dir);\n if (!enabled || !dir) {return [];}\n const sdkDist = path.resolve(dir);\n return [\n { find: /^@iota-uz\\/sdk\\/bichat$/, replacement: path.join(sdkDist, 'bichat/index.mjs') },\n { find: /^@iota-uz\\/sdk$/, replacement: path.join(sdkDist, 'index.mjs') },\n ];\n}\n\n/**\n * Merges base config with extend. Start with merged = { ...a, ...b } so no Vite fields from b are dropped.\n * We capture a.resolve, b.resolve, a.server, b.server, a.plugins, b.plugins before the spread so we never\n * read b's values as \"original\" a when merging. resolve.alias: only coerce to array when both sides are\n * actually arrays (concat); otherwise leave Record/object as-is and prefer b's value then a's.\n */\nfunction mergeConfig(a: UserConfig, b: UserConfig): UserConfig {\n const aResolve = a.resolve;\n const bResolve = b.resolve;\n const aServer = a.server;\n const bServer = b.server;\n const aPlugins = a.plugins;\n const bPlugins = b.plugins;\n\n const merged: UserConfig = { ...a, ...b };\n\n if (bResolve) {\n const aAlias = aResolve?.alias;\n const bAlias = bResolve.alias;\n const aIsArray = Array.isArray(aAlias);\n const bIsArray = Array.isArray(bAlias);\n const alias =\n aIsArray && bIsArray\n ? [...(aAlias as Array<{ find: string | RegExp; replacement: string }>), ...(bAlias as Array<{ find: string | RegExp; replacement: string }>)]\n : (bAlias !== undefined ? bAlias : aResolve?.alias);\n merged.resolve = {\n ...aResolve,\n ...bResolve,\n alias,\n dedupe: bResolve.dedupe ?? merged.resolve?.dedupe ?? aResolve?.dedupe,\n };\n }\n if (bServer) {\n merged.server = { ...aServer, ...bServer };\n }\n if (bPlugins) {\n merged.plugins = [...(aPlugins ?? []), ...bPlugins];\n }\n return merged;\n}\n","/**\n * Vite plugin that provides a virtual module exporting the compiled applet CSS string\n * for Shadow DOM injection (defineReactAppletElement({ styles })).\n * Can compile CSS via Tailwind CLI in the plugin or fall back to reading a prebuilt file.\n */\nimport type { Plugin } from 'vite';\nimport { spawnSync } from 'node:child_process';\nimport crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport const VIRTUAL_APPLET_STYLES_ID = 'virtual:applet-styles';\nconst RESOLVED_ID = '\\0' + VIRTUAL_APPLET_STYLES_ID;\n\nexport type AppletStylesVirtualModuleOptions = {\n /**\n * Input CSS for Tailwind (e.g. src/index.css). When set, the plugin tries to run Tailwind CLI to compile.\n * Default: \"src/index.css\"\n */\n inputCss?: string\n /**\n * Path to Tailwind config (optional). If not set, CLI uses its default lookup.\n */\n tailwindConfigPath?: string\n /**\n * Path to the compiled CSS file when not using Tailwind CLI (fallback), or when Tailwind is not available.\n * Default: \"dist/style.css\"\n */\n outputCssPath?: string\n /**\n * CSS to prepend: package specifiers (e.g. \"@iota-uz/sdk/bichat/styles.css\") or paths relative to project root.\n * Specifiers are resolved via Node resolution from the project root.\n * Default: []\n */\n prependCss?: string[]\n}\n\n/**\n * Resolves a prepend CSS entry: absolute paths returned as-is; non-relative, non-absolute\n * specifiers (e.g. @iota-uz/sdk/bichat/styles.css or some-lib/styles.css) are resolved via\n * Node module resolution first; relative paths are joined to root.\n */\nfunction resolvePrependPath(specifierOrPath: string, root: string): string | null {\n if (path.isAbsolute(specifierOrPath)) {\n return specifierOrPath;\n }\n if (!specifierOrPath.startsWith('.') && !specifierOrPath.startsWith('/')) {\n try {\n const req = createRequire(path.join(root, 'package.json'));\n return req.resolve(specifierOrPath);\n } catch {\n return null;\n }\n }\n return path.join(root, specifierOrPath);\n}\n\n/**\n * Creates a Vite plugin that registers virtual:applet-styles and exports the compiled CSS string.\n * When inputCss is set, tries to run Tailwind CLI to compile; if Tailwind is not available, falls back to reading outputCssPath.\n */\nexport function createAppletStylesVirtualModulePlugin(\n options: AppletStylesVirtualModuleOptions = {}\n): Plugin {\n const inputCss = options.inputCss ?? 'src/index.css';\n const outputCssPath = options.outputCssPath ?? 'dist/style.css';\n const tailwindConfigPath = options.tailwindConfigPath;\n const prependCss = options.prependCss ?? [];\n let root = process.cwd();\n\n return {\n name: 'applet-styles-virtual-module',\n configResolved(config) {\n root = config.root;\n },\n resolveId(id: string) {\n if (id === VIRTUAL_APPLET_STYLES_ID) {return RESOLVED_ID;}\n return null;\n },\n load(id: string) {\n if (id !== RESOLVED_ID) {return null;}\n\n const parts: string[] = [];\n\n for (const p of prependCss) {\n const full = resolvePrependPath(p, root);\n if (full) {\n try {\n parts.push(fs.readFileSync(full, 'utf-8'));\n } catch {\n // Prepend file missing (e.g. optional SDK styles); skip\n }\n }\n }\n\n const inputPath = path.join(root, inputCss);\n let mainCss: string | null = null;\n\n // Try Tailwind CLI if input file exists. spawnSync blocks the event loop; for parallel builds consider a random suffix (e.g. crypto.randomUUID()).\n if (fs.existsSync(inputPath)) {\n const tmpFile = path.join(os.tmpdir(), `applet-styles-${Date.now()}-${crypto.randomUUID()}.css`);\n const args = ['-i', inputPath, '-o', tmpFile];\n if (tailwindConfigPath) {\n const configPath = path.join(root, tailwindConfigPath);\n if (fs.existsSync(configPath)) {\n args.push('-c', configPath);\n }\n }\n // Use platform-specific executable and no shell so args (paths with spaces) are passed safely on Windows.\n const pnpmCmd = process.platform === 'win32' ? 'pnpm.cmd' : 'pnpm';\n const result = spawnSync(pnpmCmd, ['exec', 'tailwindcss', ...args], {\n cwd: root,\n stdio: 'pipe',\n });\n if (result.status === 0 && fs.existsSync(tmpFile)) {\n mainCss = fs.readFileSync(tmpFile, 'utf-8');\n try {\n fs.unlinkSync(tmpFile);\n } catch {\n /* ignore */\n }\n }\n }\n\n if (mainCss === null) {\n const fallbackPath = path.isAbsolute(outputCssPath) ? outputCssPath : path.join(root, outputCssPath);\n try {\n mainCss = fs.readFileSync(fallbackPath, 'utf-8');\n } catch {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[applet-styles] Could not compile via Tailwind CLI and ${fallbackPath} not found; export empty string. Install tailwindcss in the project or build CSS first.`\n );\n }\n mainCss = '';\n }\n }\n\n parts.push(mainCss);\n const css = parts.join('\\n');\n return `export default ${JSON.stringify(css)}`;\n },\n };\n}\n\n/**\n * Convenience plugin for BiChat applets: compiles app CSS and prepends SDK BiChat styles.\n * Uses default input src/index.css and package specifier @iota-uz/sdk/bichat/styles.css.\n */\nexport function createBichatStylesPlugin(\n options: Omit<AppletStylesVirtualModuleOptions, 'prependCss'> = {}\n): Plugin {\n return createAppletStylesVirtualModulePlugin({\n ...options,\n inputCss: options.inputCss ?? 'src/index.css',\n outputCssPath: options.outputCssPath ?? 'dist/style.css',\n prependCss: ['@iota-uz/sdk/bichat/styles.css'],\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../ui/src/applet-vite/vite.ts","../../ui/src/applet-vite/styles-plugin.ts"],"names":["path","createRequire","fs","os","crypto","spawnSync"],"mappings":"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","file":"vite.cjs","sourcesContent":["/**\n * Applet Frontend Kit: Vite config helpers for applets running behind a base path\n * with dev proxy and optional local SDK aliasing.\n */\nimport type { UserConfig } from 'vite';\nimport path from 'node:path';\n\nexport type AppletViteOptions = {\n /** Applet base path (e.g. \"/admin/ali/chat\" or \"/bi-chat\"). */\n basePath: string\n /** Backend URL for proxy (e.g. \"http://localhost:3200\"). */\n backendUrl: string\n /** Enable Vite aliases to a local SDK dist during dev iteration. Rare: prefer applet dev's managed local package. */\n enableLocalSdkAliases?: boolean\n /** Override SDK dist directory when enableLocalSdkAliases is true. */\n sdkDistDir?: string\n /** Merge additional Vite config */\n extend?: UserConfig\n}\n\nconst DEFAULT_DEDUPE = ['react', 'react-dom', 'react-router-dom', 'react-is'];\n\n/**\n * Returns base URL for assets (with trailing slash). Uses APPLET_ASSETS_BASE env if set, otherwise derives from basePath.\n */\nexport function getAppletAssetsBase(basePath: string): string {\n const base = process.env.APPLET_ASSETS_BASE ?? basePath + '/assets/';\n return base.endsWith('/') ? base : base + '/';\n}\n\n/**\n * Returns dev server port from APPLET_VITE_PORT env, or the given default.\n */\nexport function getAppletVitePort(defaultPort = 5173): number {\n const p = process.env.APPLET_VITE_PORT;\n if (p === undefined || p === '') {return defaultPort;}\n const n = Number(p);\n return Number.isFinite(n) ? n : defaultPort;\n}\n\n/**\n * Builds a full Vite config for an applet: base, port, dedupe, proxy, optional local SDK aliases.\n *\n * **Merge semantics for `extend`:** When you pass `extend`, it is merged with the base config as follows:\n * - **resolve.alias**: arrays are concatenated (base aliases first, then extend aliases).\n * - **plugins**: arrays are concatenated (base plugins first, then extend plugins).\n * - **server**, **base**, **resolve.dedupe** and other scalar/object fields: extend overrides base (Object.assign-style).\n * To fully override the base config, spread first: `defineConfig({ ...createAppletViteConfig(opts), ...yourOverrides })`.\n */\nexport function createAppletViteConfig(opts: AppletViteOptions): UserConfig {\n const base = getAppletAssetsBase(opts.basePath);\n const port = getAppletVitePort(5173);\n const config: UserConfig = {\n base,\n resolve: {\n dedupe: DEFAULT_DEDUPE,\n alias: createLocalSdkAliases({\n enabled: opts.enableLocalSdkAliases,\n sdkDistDir: opts.sdkDistDir,\n }),\n },\n server: {\n port,\n strictPort: true,\n proxy: createAppletBackendProxy({\n basePath: opts.basePath,\n backendUrl: opts.backendUrl,\n }),\n },\n };\n if (opts.extend) {\n return mergeConfig(config, opts.extend);\n }\n return config;\n}\n\n/**\n * Returns proxy entries for applet RPC and stream under basePath.\n * Use as server.proxy in Vite config.\n * Note: /stream is SSE; plain string targets do not set ws or changeOrigin. If WebSocket upgrade or SSE proxying issues arise, configure proxy with ws: true or a custom configure.\n */\nexport function createAppletBackendProxy(opts: {\n basePath: string\n backendUrl: string\n}): Record<string, string> {\n const base = opts.basePath.replace(/\\/+$/, '');\n const target = opts.backendUrl.replace(/\\/+$/, '');\n return {\n [base + '/rpc']: target,\n [base + '/stream']: target,\n };\n}\n\n/**\n * Returns resolve.alias entries to point @iota-uz/sdk and @iota-uz/sdk/bichat to a local dist.\n * Rare escape hatch for non-standard local SDK layouts. Prefer applet dev's managed local package flow.\n */\nexport function createLocalSdkAliases(opts?: {\n enabled?: boolean\n sdkDistDir?: string\n}): Array<{ find: string | RegExp; replacement: string }> {\n const dir = opts?.sdkDistDir;\n const enabled = opts?.enabled ?? Boolean(dir);\n if (!enabled || !dir) {return [];}\n const sdkDist = path.resolve(dir);\n return [\n { find: /^@iota-uz\\/sdk\\/bichat$/, replacement: path.join(sdkDist, 'bichat/index.mjs') },\n { find: /^@iota-uz\\/sdk$/, replacement: path.join(sdkDist, 'index.mjs') },\n ];\n}\n\n/**\n * Merges base config with extend. Start with merged = { ...a, ...b } so no Vite fields from b are dropped.\n * We capture a.resolve, b.resolve, a.server, b.server, a.plugins, b.plugins before the spread so we never\n * read b's values as \"original\" a when merging. resolve.alias: only coerce to array when both sides are\n * actually arrays (concat); otherwise leave Record/object as-is and prefer b's value then a's.\n */\nfunction mergeConfig(a: UserConfig, b: UserConfig): UserConfig {\n const aResolve = a.resolve;\n const bResolve = b.resolve;\n const aServer = a.server;\n const bServer = b.server;\n const aPlugins = a.plugins;\n const bPlugins = b.plugins;\n\n const merged: UserConfig = { ...a, ...b };\n\n if (bResolve) {\n const aAlias = aResolve?.alias;\n const bAlias = bResolve.alias;\n const aIsArray = Array.isArray(aAlias);\n const bIsArray = Array.isArray(bAlias);\n const alias =\n aIsArray && bIsArray\n ? [...(aAlias as Array<{ find: string | RegExp; replacement: string }>), ...(bAlias as Array<{ find: string | RegExp; replacement: string }>)]\n : (bAlias !== undefined ? bAlias : aResolve?.alias);\n merged.resolve = {\n ...aResolve,\n ...bResolve,\n alias,\n dedupe: bResolve.dedupe ?? merged.resolve?.dedupe ?? aResolve?.dedupe,\n };\n }\n if (bServer) {\n merged.server = { ...aServer, ...bServer };\n }\n if (bPlugins) {\n merged.plugins = [...(aPlugins ?? []), ...bPlugins];\n }\n return merged;\n}\n","/**\n * Vite plugin that provides a virtual module exporting the compiled applet CSS string\n * for Shadow DOM injection (defineReactAppletElement({ styles })).\n * Can compile CSS via Tailwind CLI in the plugin or fall back to reading a prebuilt file.\n */\nimport type { Plugin } from 'vite';\nimport { spawnSync } from 'node:child_process';\nimport crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport const VIRTUAL_APPLET_STYLES_ID = 'virtual:applet-styles';\nconst RESOLVED_ID = '\\0' + VIRTUAL_APPLET_STYLES_ID;\n\nexport type AppletStylesVirtualModuleOptions = {\n /**\n * Input CSS for Tailwind (e.g. src/index.css). When set, the plugin tries to run Tailwind CLI to compile.\n * Default: \"src/index.css\"\n */\n inputCss?: string\n /**\n * Path to Tailwind config (optional). If not set, CLI uses its default lookup.\n */\n tailwindConfigPath?: string\n /**\n * Path to the compiled CSS file when not using Tailwind CLI (fallback), or when Tailwind is not available.\n * Default: \"dist/style.css\"\n */\n outputCssPath?: string\n /**\n * CSS to prepend: package specifiers (e.g. \"@iota-uz/sdk/bichat/styles.css\") or paths relative to project root.\n * Specifiers are resolved via Node resolution from the project root.\n * Default: []\n */\n prependCss?: string[]\n}\n\n/**\n * Resolves a prepend CSS entry: absolute paths returned as-is; non-relative, non-absolute\n * specifiers (e.g. @iota-uz/sdk/bichat/styles.css or some-lib/styles.css) are resolved via\n * Node module resolution first; relative paths are joined to root.\n */\nfunction resolvePrependPath(specifierOrPath: string, root: string): string | null {\n if (path.isAbsolute(specifierOrPath)) {\n return specifierOrPath;\n }\n if (!specifierOrPath.startsWith('.') && !specifierOrPath.startsWith('/')) {\n try {\n const req = createRequire(path.join(root, 'package.json'));\n return req.resolve(specifierOrPath);\n } catch {\n return null;\n }\n }\n return path.join(root, specifierOrPath);\n}\n\n/**\n * Creates a Vite plugin that registers virtual:applet-styles and exports the compiled CSS string.\n * When inputCss is set, tries to run Tailwind CLI to compile; if Tailwind is not available, falls back to reading outputCssPath.\n */\nexport function createAppletStylesVirtualModulePlugin(\n options: AppletStylesVirtualModuleOptions = {}\n): Plugin {\n const inputCss = options.inputCss ?? 'src/index.css';\n const outputCssPath = options.outputCssPath ?? 'dist/style.css';\n const tailwindConfigPath = options.tailwindConfigPath;\n const prependCss = options.prependCss ?? [];\n let root = process.cwd();\n\n return {\n name: 'applet-styles-virtual-module',\n configResolved(config) {\n root = config.root;\n },\n resolveId(id: string) {\n if (id === VIRTUAL_APPLET_STYLES_ID) {return RESOLVED_ID;}\n return null;\n },\n load(id: string) {\n if (id !== RESOLVED_ID) {return null;}\n\n const parts: string[] = [];\n\n for (const p of prependCss) {\n const full = resolvePrependPath(p, root);\n if (full) {\n try {\n parts.push(fs.readFileSync(full, 'utf-8'));\n } catch {\n // Prepend file missing (e.g. optional SDK styles); skip\n }\n }\n }\n\n const inputPath = path.join(root, inputCss);\n let mainCss: string | null = null;\n\n // Try Tailwind CLI if input file exists. spawnSync blocks the event loop; for parallel builds consider a random suffix (e.g. crypto.randomUUID()).\n if (fs.existsSync(inputPath)) {\n const tmpFile = path.join(os.tmpdir(), `applet-styles-${Date.now()}-${crypto.randomUUID()}.css`);\n const args = ['-i', inputPath, '-o', tmpFile];\n if (tailwindConfigPath) {\n const configPath = path.join(root, tailwindConfigPath);\n if (fs.existsSync(configPath)) {\n args.push('-c', configPath);\n }\n }\n // Use platform-specific executable and no shell so args (paths with spaces) are passed safely on Windows.\n const pnpmCmd = process.platform === 'win32' ? 'pnpm.cmd' : 'pnpm';\n const result = spawnSync(pnpmCmd, ['exec', 'tailwindcss', ...args], {\n cwd: root,\n stdio: 'pipe',\n });\n if (result.status === 0 && fs.existsSync(tmpFile)) {\n mainCss = fs.readFileSync(tmpFile, 'utf-8');\n try {\n fs.unlinkSync(tmpFile);\n } catch {\n /* ignore */\n }\n } else if (result.error === undefined) {\n const stderr = result.stderr?.toString().trim();\n const detail = stderr ? `\\n${stderr}` : '';\n throw new Error(`[applet-styles] Tailwind CSS compilation failed.${detail}`);\n }\n }\n\n if (mainCss === null) {\n const fallbackPath = path.isAbsolute(outputCssPath) ? outputCssPath : path.join(root, outputCssPath);\n try {\n mainCss = fs.readFileSync(fallbackPath, 'utf-8');\n } catch {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[applet-styles] Could not compile via Tailwind CLI and ${fallbackPath} not found; export empty string. Install tailwindcss in the project or build CSS first.`\n );\n }\n mainCss = '';\n }\n }\n\n parts.push(mainCss);\n const css = parts.join('\\n');\n return `export default ${JSON.stringify(css)}`;\n },\n };\n}\n\n/**\n * Convenience plugin for BiChat applets: compiles app CSS and prepends SDK BiChat styles.\n * Uses default input src/index.css and package specifier @iota-uz/sdk/bichat/styles.css.\n */\nexport function createBichatStylesPlugin(\n options: Omit<AppletStylesVirtualModuleOptions, 'prependCss'> = {}\n): Plugin {\n return createAppletStylesVirtualModulePlugin({\n ...options,\n inputCss: options.inputCss ?? 'src/index.css',\n outputCssPath: options.outputCssPath ?? 'dist/style.css',\n prependCss: ['@iota-uz/sdk/bichat/styles.css'],\n });\n}\n"]}
|
package/dist/applet/vite.mjs
CHANGED
|
@@ -163,6 +163,11 @@ function createAppletStylesVirtualModulePlugin(options = {}) {
|
|
|
163
163
|
fs.unlinkSync(tmpFile);
|
|
164
164
|
} catch {
|
|
165
165
|
}
|
|
166
|
+
} else if (result.error === void 0) {
|
|
167
|
+
const stderr = result.stderr?.toString().trim();
|
|
168
|
+
const detail = stderr ? `
|
|
169
|
+
${stderr}` : "";
|
|
170
|
+
throw new Error(`[applet-styles] Tailwind CSS compilation failed.${detail}`);
|
|
166
171
|
}
|
|
167
172
|
}
|
|
168
173
|
if (mainCss === null) {
|
package/dist/applet/vite.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../ui/src/applet-vite/vite.ts","../../ui/src/applet-vite/styles-plugin.ts"],"names":["path"],"mappings":"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","file":"vite.mjs","sourcesContent":["/**\n * Applet Frontend Kit: Vite config helpers for applets running behind a base path\n * with dev proxy and optional local SDK aliasing.\n */\nimport type { UserConfig } from 'vite';\nimport path from 'node:path';\n\nexport type AppletViteOptions = {\n /** Applet base path (e.g. \"/admin/ali/chat\" or \"/bi-chat\"). */\n basePath: string\n /** Backend URL for proxy (e.g. \"http://localhost:3200\"). */\n backendUrl: string\n /** Enable Vite aliases to a local SDK dist during dev iteration. Rare: prefer applet dev's managed local package. */\n enableLocalSdkAliases?: boolean\n /** Override SDK dist directory when enableLocalSdkAliases is true. */\n sdkDistDir?: string\n /** Merge additional Vite config */\n extend?: UserConfig\n}\n\nconst DEFAULT_DEDUPE = ['react', 'react-dom', 'react-router-dom', 'react-is'];\n\n/**\n * Returns base URL for assets (with trailing slash). Uses APPLET_ASSETS_BASE env if set, otherwise derives from basePath.\n */\nexport function getAppletAssetsBase(basePath: string): string {\n const base = process.env.APPLET_ASSETS_BASE ?? basePath + '/assets/';\n return base.endsWith('/') ? base : base + '/';\n}\n\n/**\n * Returns dev server port from APPLET_VITE_PORT env, or the given default.\n */\nexport function getAppletVitePort(defaultPort = 5173): number {\n const p = process.env.APPLET_VITE_PORT;\n if (p === undefined || p === '') {return defaultPort;}\n const n = Number(p);\n return Number.isFinite(n) ? n : defaultPort;\n}\n\n/**\n * Builds a full Vite config for an applet: base, port, dedupe, proxy, optional local SDK aliases.\n *\n * **Merge semantics for `extend`:** When you pass `extend`, it is merged with the base config as follows:\n * - **resolve.alias**: arrays are concatenated (base aliases first, then extend aliases).\n * - **plugins**: arrays are concatenated (base plugins first, then extend plugins).\n * - **server**, **base**, **resolve.dedupe** and other scalar/object fields: extend overrides base (Object.assign-style).\n * To fully override the base config, spread first: `defineConfig({ ...createAppletViteConfig(opts), ...yourOverrides })`.\n */\nexport function createAppletViteConfig(opts: AppletViteOptions): UserConfig {\n const base = getAppletAssetsBase(opts.basePath);\n const port = getAppletVitePort(5173);\n const config: UserConfig = {\n base,\n resolve: {\n dedupe: DEFAULT_DEDUPE,\n alias: createLocalSdkAliases({\n enabled: opts.enableLocalSdkAliases,\n sdkDistDir: opts.sdkDistDir,\n }),\n },\n server: {\n port,\n strictPort: true,\n proxy: createAppletBackendProxy({\n basePath: opts.basePath,\n backendUrl: opts.backendUrl,\n }),\n },\n };\n if (opts.extend) {\n return mergeConfig(config, opts.extend);\n }\n return config;\n}\n\n/**\n * Returns proxy entries for applet RPC and stream under basePath.\n * Use as server.proxy in Vite config.\n * Note: /stream is SSE; plain string targets do not set ws or changeOrigin. If WebSocket upgrade or SSE proxying issues arise, configure proxy with ws: true or a custom configure.\n */\nexport function createAppletBackendProxy(opts: {\n basePath: string\n backendUrl: string\n}): Record<string, string> {\n const base = opts.basePath.replace(/\\/+$/, '');\n const target = opts.backendUrl.replace(/\\/+$/, '');\n return {\n [base + '/rpc']: target,\n [base + '/stream']: target,\n };\n}\n\n/**\n * Returns resolve.alias entries to point @iota-uz/sdk and @iota-uz/sdk/bichat to a local dist.\n * Rare escape hatch for non-standard local SDK layouts. Prefer applet dev's managed local package flow.\n */\nexport function createLocalSdkAliases(opts?: {\n enabled?: boolean\n sdkDistDir?: string\n}): Array<{ find: string | RegExp; replacement: string }> {\n const dir = opts?.sdkDistDir;\n const enabled = opts?.enabled ?? Boolean(dir);\n if (!enabled || !dir) {return [];}\n const sdkDist = path.resolve(dir);\n return [\n { find: /^@iota-uz\\/sdk\\/bichat$/, replacement: path.join(sdkDist, 'bichat/index.mjs') },\n { find: /^@iota-uz\\/sdk$/, replacement: path.join(sdkDist, 'index.mjs') },\n ];\n}\n\n/**\n * Merges base config with extend. Start with merged = { ...a, ...b } so no Vite fields from b are dropped.\n * We capture a.resolve, b.resolve, a.server, b.server, a.plugins, b.plugins before the spread so we never\n * read b's values as \"original\" a when merging. resolve.alias: only coerce to array when both sides are\n * actually arrays (concat); otherwise leave Record/object as-is and prefer b's value then a's.\n */\nfunction mergeConfig(a: UserConfig, b: UserConfig): UserConfig {\n const aResolve = a.resolve;\n const bResolve = b.resolve;\n const aServer = a.server;\n const bServer = b.server;\n const aPlugins = a.plugins;\n const bPlugins = b.plugins;\n\n const merged: UserConfig = { ...a, ...b };\n\n if (bResolve) {\n const aAlias = aResolve?.alias;\n const bAlias = bResolve.alias;\n const aIsArray = Array.isArray(aAlias);\n const bIsArray = Array.isArray(bAlias);\n const alias =\n aIsArray && bIsArray\n ? [...(aAlias as Array<{ find: string | RegExp; replacement: string }>), ...(bAlias as Array<{ find: string | RegExp; replacement: string }>)]\n : (bAlias !== undefined ? bAlias : aResolve?.alias);\n merged.resolve = {\n ...aResolve,\n ...bResolve,\n alias,\n dedupe: bResolve.dedupe ?? merged.resolve?.dedupe ?? aResolve?.dedupe,\n };\n }\n if (bServer) {\n merged.server = { ...aServer, ...bServer };\n }\n if (bPlugins) {\n merged.plugins = [...(aPlugins ?? []), ...bPlugins];\n }\n return merged;\n}\n","/**\n * Vite plugin that provides a virtual module exporting the compiled applet CSS string\n * for Shadow DOM injection (defineReactAppletElement({ styles })).\n * Can compile CSS via Tailwind CLI in the plugin or fall back to reading a prebuilt file.\n */\nimport type { Plugin } from 'vite';\nimport { spawnSync } from 'node:child_process';\nimport crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport const VIRTUAL_APPLET_STYLES_ID = 'virtual:applet-styles';\nconst RESOLVED_ID = '\\0' + VIRTUAL_APPLET_STYLES_ID;\n\nexport type AppletStylesVirtualModuleOptions = {\n /**\n * Input CSS for Tailwind (e.g. src/index.css). When set, the plugin tries to run Tailwind CLI to compile.\n * Default: \"src/index.css\"\n */\n inputCss?: string\n /**\n * Path to Tailwind config (optional). If not set, CLI uses its default lookup.\n */\n tailwindConfigPath?: string\n /**\n * Path to the compiled CSS file when not using Tailwind CLI (fallback), or when Tailwind is not available.\n * Default: \"dist/style.css\"\n */\n outputCssPath?: string\n /**\n * CSS to prepend: package specifiers (e.g. \"@iota-uz/sdk/bichat/styles.css\") or paths relative to project root.\n * Specifiers are resolved via Node resolution from the project root.\n * Default: []\n */\n prependCss?: string[]\n}\n\n/**\n * Resolves a prepend CSS entry: absolute paths returned as-is; non-relative, non-absolute\n * specifiers (e.g. @iota-uz/sdk/bichat/styles.css or some-lib/styles.css) are resolved via\n * Node module resolution first; relative paths are joined to root.\n */\nfunction resolvePrependPath(specifierOrPath: string, root: string): string | null {\n if (path.isAbsolute(specifierOrPath)) {\n return specifierOrPath;\n }\n if (!specifierOrPath.startsWith('.') && !specifierOrPath.startsWith('/')) {\n try {\n const req = createRequire(path.join(root, 'package.json'));\n return req.resolve(specifierOrPath);\n } catch {\n return null;\n }\n }\n return path.join(root, specifierOrPath);\n}\n\n/**\n * Creates a Vite plugin that registers virtual:applet-styles and exports the compiled CSS string.\n * When inputCss is set, tries to run Tailwind CLI to compile; if Tailwind is not available, falls back to reading outputCssPath.\n */\nexport function createAppletStylesVirtualModulePlugin(\n options: AppletStylesVirtualModuleOptions = {}\n): Plugin {\n const inputCss = options.inputCss ?? 'src/index.css';\n const outputCssPath = options.outputCssPath ?? 'dist/style.css';\n const tailwindConfigPath = options.tailwindConfigPath;\n const prependCss = options.prependCss ?? [];\n let root = process.cwd();\n\n return {\n name: 'applet-styles-virtual-module',\n configResolved(config) {\n root = config.root;\n },\n resolveId(id: string) {\n if (id === VIRTUAL_APPLET_STYLES_ID) {return RESOLVED_ID;}\n return null;\n },\n load(id: string) {\n if (id !== RESOLVED_ID) {return null;}\n\n const parts: string[] = [];\n\n for (const p of prependCss) {\n const full = resolvePrependPath(p, root);\n if (full) {\n try {\n parts.push(fs.readFileSync(full, 'utf-8'));\n } catch {\n // Prepend file missing (e.g. optional SDK styles); skip\n }\n }\n }\n\n const inputPath = path.join(root, inputCss);\n let mainCss: string | null = null;\n\n // Try Tailwind CLI if input file exists. spawnSync blocks the event loop; for parallel builds consider a random suffix (e.g. crypto.randomUUID()).\n if (fs.existsSync(inputPath)) {\n const tmpFile = path.join(os.tmpdir(), `applet-styles-${Date.now()}-${crypto.randomUUID()}.css`);\n const args = ['-i', inputPath, '-o', tmpFile];\n if (tailwindConfigPath) {\n const configPath = path.join(root, tailwindConfigPath);\n if (fs.existsSync(configPath)) {\n args.push('-c', configPath);\n }\n }\n // Use platform-specific executable and no shell so args (paths with spaces) are passed safely on Windows.\n const pnpmCmd = process.platform === 'win32' ? 'pnpm.cmd' : 'pnpm';\n const result = spawnSync(pnpmCmd, ['exec', 'tailwindcss', ...args], {\n cwd: root,\n stdio: 'pipe',\n });\n if (result.status === 0 && fs.existsSync(tmpFile)) {\n mainCss = fs.readFileSync(tmpFile, 'utf-8');\n try {\n fs.unlinkSync(tmpFile);\n } catch {\n /* ignore */\n }\n }\n }\n\n if (mainCss === null) {\n const fallbackPath = path.isAbsolute(outputCssPath) ? outputCssPath : path.join(root, outputCssPath);\n try {\n mainCss = fs.readFileSync(fallbackPath, 'utf-8');\n } catch {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[applet-styles] Could not compile via Tailwind CLI and ${fallbackPath} not found; export empty string. Install tailwindcss in the project or build CSS first.`\n );\n }\n mainCss = '';\n }\n }\n\n parts.push(mainCss);\n const css = parts.join('\\n');\n return `export default ${JSON.stringify(css)}`;\n },\n };\n}\n\n/**\n * Convenience plugin for BiChat applets: compiles app CSS and prepends SDK BiChat styles.\n * Uses default input src/index.css and package specifier @iota-uz/sdk/bichat/styles.css.\n */\nexport function createBichatStylesPlugin(\n options: Omit<AppletStylesVirtualModuleOptions, 'prependCss'> = {}\n): Plugin {\n return createAppletStylesVirtualModulePlugin({\n ...options,\n inputCss: options.inputCss ?? 'src/index.css',\n outputCssPath: options.outputCssPath ?? 'dist/style.css',\n prependCss: ['@iota-uz/sdk/bichat/styles.css'],\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../ui/src/applet-vite/vite.ts","../../ui/src/applet-vite/styles-plugin.ts"],"names":["path"],"mappings":"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","file":"vite.mjs","sourcesContent":["/**\n * Applet Frontend Kit: Vite config helpers for applets running behind a base path\n * with dev proxy and optional local SDK aliasing.\n */\nimport type { UserConfig } from 'vite';\nimport path from 'node:path';\n\nexport type AppletViteOptions = {\n /** Applet base path (e.g. \"/admin/ali/chat\" or \"/bi-chat\"). */\n basePath: string\n /** Backend URL for proxy (e.g. \"http://localhost:3200\"). */\n backendUrl: string\n /** Enable Vite aliases to a local SDK dist during dev iteration. Rare: prefer applet dev's managed local package. */\n enableLocalSdkAliases?: boolean\n /** Override SDK dist directory when enableLocalSdkAliases is true. */\n sdkDistDir?: string\n /** Merge additional Vite config */\n extend?: UserConfig\n}\n\nconst DEFAULT_DEDUPE = ['react', 'react-dom', 'react-router-dom', 'react-is'];\n\n/**\n * Returns base URL for assets (with trailing slash). Uses APPLET_ASSETS_BASE env if set, otherwise derives from basePath.\n */\nexport function getAppletAssetsBase(basePath: string): string {\n const base = process.env.APPLET_ASSETS_BASE ?? basePath + '/assets/';\n return base.endsWith('/') ? base : base + '/';\n}\n\n/**\n * Returns dev server port from APPLET_VITE_PORT env, or the given default.\n */\nexport function getAppletVitePort(defaultPort = 5173): number {\n const p = process.env.APPLET_VITE_PORT;\n if (p === undefined || p === '') {return defaultPort;}\n const n = Number(p);\n return Number.isFinite(n) ? n : defaultPort;\n}\n\n/**\n * Builds a full Vite config for an applet: base, port, dedupe, proxy, optional local SDK aliases.\n *\n * **Merge semantics for `extend`:** When you pass `extend`, it is merged with the base config as follows:\n * - **resolve.alias**: arrays are concatenated (base aliases first, then extend aliases).\n * - **plugins**: arrays are concatenated (base plugins first, then extend plugins).\n * - **server**, **base**, **resolve.dedupe** and other scalar/object fields: extend overrides base (Object.assign-style).\n * To fully override the base config, spread first: `defineConfig({ ...createAppletViteConfig(opts), ...yourOverrides })`.\n */\nexport function createAppletViteConfig(opts: AppletViteOptions): UserConfig {\n const base = getAppletAssetsBase(opts.basePath);\n const port = getAppletVitePort(5173);\n const config: UserConfig = {\n base,\n resolve: {\n dedupe: DEFAULT_DEDUPE,\n alias: createLocalSdkAliases({\n enabled: opts.enableLocalSdkAliases,\n sdkDistDir: opts.sdkDistDir,\n }),\n },\n server: {\n port,\n strictPort: true,\n proxy: createAppletBackendProxy({\n basePath: opts.basePath,\n backendUrl: opts.backendUrl,\n }),\n },\n };\n if (opts.extend) {\n return mergeConfig(config, opts.extend);\n }\n return config;\n}\n\n/**\n * Returns proxy entries for applet RPC and stream under basePath.\n * Use as server.proxy in Vite config.\n * Note: /stream is SSE; plain string targets do not set ws or changeOrigin. If WebSocket upgrade or SSE proxying issues arise, configure proxy with ws: true or a custom configure.\n */\nexport function createAppletBackendProxy(opts: {\n basePath: string\n backendUrl: string\n}): Record<string, string> {\n const base = opts.basePath.replace(/\\/+$/, '');\n const target = opts.backendUrl.replace(/\\/+$/, '');\n return {\n [base + '/rpc']: target,\n [base + '/stream']: target,\n };\n}\n\n/**\n * Returns resolve.alias entries to point @iota-uz/sdk and @iota-uz/sdk/bichat to a local dist.\n * Rare escape hatch for non-standard local SDK layouts. Prefer applet dev's managed local package flow.\n */\nexport function createLocalSdkAliases(opts?: {\n enabled?: boolean\n sdkDistDir?: string\n}): Array<{ find: string | RegExp; replacement: string }> {\n const dir = opts?.sdkDistDir;\n const enabled = opts?.enabled ?? Boolean(dir);\n if (!enabled || !dir) {return [];}\n const sdkDist = path.resolve(dir);\n return [\n { find: /^@iota-uz\\/sdk\\/bichat$/, replacement: path.join(sdkDist, 'bichat/index.mjs') },\n { find: /^@iota-uz\\/sdk$/, replacement: path.join(sdkDist, 'index.mjs') },\n ];\n}\n\n/**\n * Merges base config with extend. Start with merged = { ...a, ...b } so no Vite fields from b are dropped.\n * We capture a.resolve, b.resolve, a.server, b.server, a.plugins, b.plugins before the spread so we never\n * read b's values as \"original\" a when merging. resolve.alias: only coerce to array when both sides are\n * actually arrays (concat); otherwise leave Record/object as-is and prefer b's value then a's.\n */\nfunction mergeConfig(a: UserConfig, b: UserConfig): UserConfig {\n const aResolve = a.resolve;\n const bResolve = b.resolve;\n const aServer = a.server;\n const bServer = b.server;\n const aPlugins = a.plugins;\n const bPlugins = b.plugins;\n\n const merged: UserConfig = { ...a, ...b };\n\n if (bResolve) {\n const aAlias = aResolve?.alias;\n const bAlias = bResolve.alias;\n const aIsArray = Array.isArray(aAlias);\n const bIsArray = Array.isArray(bAlias);\n const alias =\n aIsArray && bIsArray\n ? [...(aAlias as Array<{ find: string | RegExp; replacement: string }>), ...(bAlias as Array<{ find: string | RegExp; replacement: string }>)]\n : (bAlias !== undefined ? bAlias : aResolve?.alias);\n merged.resolve = {\n ...aResolve,\n ...bResolve,\n alias,\n dedupe: bResolve.dedupe ?? merged.resolve?.dedupe ?? aResolve?.dedupe,\n };\n }\n if (bServer) {\n merged.server = { ...aServer, ...bServer };\n }\n if (bPlugins) {\n merged.plugins = [...(aPlugins ?? []), ...bPlugins];\n }\n return merged;\n}\n","/**\n * Vite plugin that provides a virtual module exporting the compiled applet CSS string\n * for Shadow DOM injection (defineReactAppletElement({ styles })).\n * Can compile CSS via Tailwind CLI in the plugin or fall back to reading a prebuilt file.\n */\nimport type { Plugin } from 'vite';\nimport { spawnSync } from 'node:child_process';\nimport crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport const VIRTUAL_APPLET_STYLES_ID = 'virtual:applet-styles';\nconst RESOLVED_ID = '\\0' + VIRTUAL_APPLET_STYLES_ID;\n\nexport type AppletStylesVirtualModuleOptions = {\n /**\n * Input CSS for Tailwind (e.g. src/index.css). When set, the plugin tries to run Tailwind CLI to compile.\n * Default: \"src/index.css\"\n */\n inputCss?: string\n /**\n * Path to Tailwind config (optional). If not set, CLI uses its default lookup.\n */\n tailwindConfigPath?: string\n /**\n * Path to the compiled CSS file when not using Tailwind CLI (fallback), or when Tailwind is not available.\n * Default: \"dist/style.css\"\n */\n outputCssPath?: string\n /**\n * CSS to prepend: package specifiers (e.g. \"@iota-uz/sdk/bichat/styles.css\") or paths relative to project root.\n * Specifiers are resolved via Node resolution from the project root.\n * Default: []\n */\n prependCss?: string[]\n}\n\n/**\n * Resolves a prepend CSS entry: absolute paths returned as-is; non-relative, non-absolute\n * specifiers (e.g. @iota-uz/sdk/bichat/styles.css or some-lib/styles.css) are resolved via\n * Node module resolution first; relative paths are joined to root.\n */\nfunction resolvePrependPath(specifierOrPath: string, root: string): string | null {\n if (path.isAbsolute(specifierOrPath)) {\n return specifierOrPath;\n }\n if (!specifierOrPath.startsWith('.') && !specifierOrPath.startsWith('/')) {\n try {\n const req = createRequire(path.join(root, 'package.json'));\n return req.resolve(specifierOrPath);\n } catch {\n return null;\n }\n }\n return path.join(root, specifierOrPath);\n}\n\n/**\n * Creates a Vite plugin that registers virtual:applet-styles and exports the compiled CSS string.\n * When inputCss is set, tries to run Tailwind CLI to compile; if Tailwind is not available, falls back to reading outputCssPath.\n */\nexport function createAppletStylesVirtualModulePlugin(\n options: AppletStylesVirtualModuleOptions = {}\n): Plugin {\n const inputCss = options.inputCss ?? 'src/index.css';\n const outputCssPath = options.outputCssPath ?? 'dist/style.css';\n const tailwindConfigPath = options.tailwindConfigPath;\n const prependCss = options.prependCss ?? [];\n let root = process.cwd();\n\n return {\n name: 'applet-styles-virtual-module',\n configResolved(config) {\n root = config.root;\n },\n resolveId(id: string) {\n if (id === VIRTUAL_APPLET_STYLES_ID) {return RESOLVED_ID;}\n return null;\n },\n load(id: string) {\n if (id !== RESOLVED_ID) {return null;}\n\n const parts: string[] = [];\n\n for (const p of prependCss) {\n const full = resolvePrependPath(p, root);\n if (full) {\n try {\n parts.push(fs.readFileSync(full, 'utf-8'));\n } catch {\n // Prepend file missing (e.g. optional SDK styles); skip\n }\n }\n }\n\n const inputPath = path.join(root, inputCss);\n let mainCss: string | null = null;\n\n // Try Tailwind CLI if input file exists. spawnSync blocks the event loop; for parallel builds consider a random suffix (e.g. crypto.randomUUID()).\n if (fs.existsSync(inputPath)) {\n const tmpFile = path.join(os.tmpdir(), `applet-styles-${Date.now()}-${crypto.randomUUID()}.css`);\n const args = ['-i', inputPath, '-o', tmpFile];\n if (tailwindConfigPath) {\n const configPath = path.join(root, tailwindConfigPath);\n if (fs.existsSync(configPath)) {\n args.push('-c', configPath);\n }\n }\n // Use platform-specific executable and no shell so args (paths with spaces) are passed safely on Windows.\n const pnpmCmd = process.platform === 'win32' ? 'pnpm.cmd' : 'pnpm';\n const result = spawnSync(pnpmCmd, ['exec', 'tailwindcss', ...args], {\n cwd: root,\n stdio: 'pipe',\n });\n if (result.status === 0 && fs.existsSync(tmpFile)) {\n mainCss = fs.readFileSync(tmpFile, 'utf-8');\n try {\n fs.unlinkSync(tmpFile);\n } catch {\n /* ignore */\n }\n } else if (result.error === undefined) {\n const stderr = result.stderr?.toString().trim();\n const detail = stderr ? `\\n${stderr}` : '';\n throw new Error(`[applet-styles] Tailwind CSS compilation failed.${detail}`);\n }\n }\n\n if (mainCss === null) {\n const fallbackPath = path.isAbsolute(outputCssPath) ? outputCssPath : path.join(root, outputCssPath);\n try {\n mainCss = fs.readFileSync(fallbackPath, 'utf-8');\n } catch {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[applet-styles] Could not compile via Tailwind CLI and ${fallbackPath} not found; export empty string. Install tailwindcss in the project or build CSS first.`\n );\n }\n mainCss = '';\n }\n }\n\n parts.push(mainCss);\n const css = parts.join('\\n');\n return `export default ${JSON.stringify(css)}`;\n },\n };\n}\n\n/**\n * Convenience plugin for BiChat applets: compiles app CSS and prepends SDK BiChat styles.\n * Uses default input src/index.css and package specifier @iota-uz/sdk/bichat/styles.css.\n */\nexport function createBichatStylesPlugin(\n options: Omit<AppletStylesVirtualModuleOptions, 'prependCss'> = {}\n): Plugin {\n return createAppletStylesVirtualModulePlugin({\n ...options,\n inputCss: options.inputCss ?? 'src/index.css',\n outputCssPath: options.outputCssPath ?? 'dist/style.css',\n prependCss: ['@iota-uz/sdk/bichat/styles.css'],\n });\n}\n"]}
|
package/dist/bichat/index.css
CHANGED
|
@@ -81,6 +81,11 @@
|
|
|
81
81
|
--bichat-color-border: var(--bichat-color-gray-200);
|
|
82
82
|
--bichat-color-border-subtle: var(--bichat-color-gray-100);
|
|
83
83
|
--bichat-color-border-strong: var(--bichat-color-gray-300);
|
|
84
|
+
--bichat-color-border-brand: var(--bichat-color-primary-500);
|
|
85
|
+
--bichat-color-border-danger: var(--bichat-color-error-500);
|
|
86
|
+
--bichat-color-border-warning: var(--bichat-color-warning-500);
|
|
87
|
+
--bichat-color-border-success: var(--bichat-color-success-500);
|
|
88
|
+
--bichat-color-border-disabled: var(--bichat-color-gray-200);
|
|
84
89
|
--bichat-color-accent: var(--bichat-color-primary-600);
|
|
85
90
|
--bichat-color-accent-hover: var(--bichat-color-primary-700);
|
|
86
91
|
--bichat-color-accent-muted: var(--bichat-color-primary-100);
|
|
@@ -214,6 +219,11 @@
|
|
|
214
219
|
--bichat-color-border: var(--bichat-color-gray-700);
|
|
215
220
|
--bichat-color-border-subtle: var(--bichat-color-gray-800);
|
|
216
221
|
--bichat-color-border-strong: var(--bichat-color-gray-600);
|
|
222
|
+
--bichat-color-border-brand: var(--bichat-color-primary-400);
|
|
223
|
+
--bichat-color-border-danger: var(--bichat-color-error-600);
|
|
224
|
+
--bichat-color-border-warning: var(--bichat-color-warning-500);
|
|
225
|
+
--bichat-color-border-success: var(--bichat-color-success-600);
|
|
226
|
+
--bichat-color-border-disabled: var(--bichat-color-gray-800);
|
|
217
227
|
--bichat-color-accent-muted: var(--bichat-color-primary-900);
|
|
218
228
|
--bichat-color-user-bubble-bg: var(--bichat-color-primary-700);
|
|
219
229
|
--bichat-color-assistant-bubble-bg: var(--bichat-color-gray-800);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../ui/src/bichat/styles.css"],"sourcesContent":["/**\n * BI-Chat UI Styles\n * Comprehensive CSS variable system for theming and customization\n */\n\n/* =============================================================================\n CSS Variables - Design Tokens\n ============================================================================= */\n\n:root,\n:host {\n /* -------------------------------------------------------------------------\n Spacing Scale\n ------------------------------------------------------------------------- */\n --bichat-spacing-0: 0;\n --bichat-spacing-px: 1px;\n --bichat-spacing-0_5: 0.125rem;\n --bichat-spacing-1: 0.25rem;\n --bichat-spacing-1_5: 0.375rem;\n --bichat-spacing-2: 0.5rem;\n --bichat-spacing-2_5: 0.625rem;\n --bichat-spacing-3: 0.75rem;\n --bichat-spacing-3_5: 0.875rem;\n --bichat-spacing-4: 1rem;\n --bichat-spacing-5: 1.25rem;\n --bichat-spacing-6: 1.5rem;\n --bichat-spacing-7: 1.75rem;\n --bichat-spacing-8: 2rem;\n --bichat-spacing-9: 2.25rem;\n --bichat-spacing-10: 2.5rem;\n --bichat-spacing-12: 3rem;\n --bichat-spacing-14: 3.5rem;\n --bichat-spacing-16: 4rem;\n\n /* Semantic spacing aliases */\n --bichat-spacing-xs: var(--bichat-spacing-1);\n --bichat-spacing-sm: var(--bichat-spacing-2);\n --bichat-spacing-md: var(--bichat-spacing-4);\n --bichat-spacing-lg: var(--bichat-spacing-6);\n --bichat-spacing-xl: var(--bichat-spacing-8);\n --bichat-spacing-2xl: var(--bichat-spacing-12);\n\n /* -------------------------------------------------------------------------\n Color Palette - Gray Scale\n ------------------------------------------------------------------------- */\n --bichat-color-gray-50: #f9fafb;\n --bichat-color-gray-100: #f3f4f6;\n --bichat-color-gray-200: #e5e7eb;\n --bichat-color-gray-300: #d1d5db;\n --bichat-color-gray-400: #9ca3af;\n --bichat-color-gray-500: #6b7280;\n --bichat-color-gray-600: #4b5563;\n --bichat-color-gray-700: #374151;\n --bichat-color-gray-800: #1f2937;\n --bichat-color-gray-900: #111827;\n --bichat-color-gray-950: #030712;\n\n /* -------------------------------------------------------------------------\n Color Palette - Primary (Blue)\n ------------------------------------------------------------------------- */\n --bichat-color-primary-50: #eff6ff;\n --bichat-color-primary-100: #dbeafe;\n --bichat-color-primary-200: #bfdbfe;\n --bichat-color-primary-300: #93c5fd;\n --bichat-color-primary-400: #60a5fa;\n --bichat-color-primary-500: #3b82f6;\n --bichat-color-primary-600: #2563eb;\n --bichat-color-primary-700: #1d4ed8;\n --bichat-color-primary-800: #1e40af;\n --bichat-color-primary-900: #1e3a8a;\n --bichat-color-primary-950: #172554;\n\n /* -------------------------------------------------------------------------\n Color Palette - Semantic Colors\n ------------------------------------------------------------------------- */\n --bichat-color-success-50: #f0fdf4;\n --bichat-color-success-500: #22c55e;\n --bichat-color-success-600: #16a34a;\n --bichat-color-success-700: #15803d;\n\n --bichat-color-error-50: #fef2f2;\n --bichat-color-error-500: #ef4444;\n --bichat-color-error-600: #dc2626;\n --bichat-color-error-700: #b91c1c;\n\n --bichat-color-warning-50: #fffbeb;\n --bichat-color-warning-500: #f59e0b;\n --bichat-color-warning-600: #d97706;\n --bichat-color-warning-700: #b45309;\n\n --bichat-color-info-50: #eff6ff;\n --bichat-color-info-500: #3b82f6;\n --bichat-color-info-600: #2563eb;\n --bichat-color-info-700: #1d4ed8;\n\n /* -------------------------------------------------------------------------\n Semantic Color Tokens (Light Mode)\n ------------------------------------------------------------------------- */\n --bichat-color-bg: var(--bichat-color-gray-50);\n --bichat-color-bg-subtle: var(--bichat-color-gray-100);\n --bichat-color-bg-muted: var(--bichat-color-gray-200);\n\n --bichat-color-surface: #ffffff;\n --bichat-color-surface-raised: #ffffff;\n --bichat-color-surface-overlay: rgba(255, 255, 255, 0.9);\n\n --bichat-color-text: var(--bichat-color-gray-900);\n --bichat-color-text-secondary: var(--bichat-color-gray-600);\n --bichat-color-text-muted: var(--bichat-color-gray-500);\n --bichat-color-text-disabled: var(--bichat-color-gray-400);\n --bichat-color-text-inverse: #ffffff;\n --bichat-color-code-text: var(--bichat-color-gray-800);\n --bichat-color-code-bg: var(--bichat-color-gray-100);\n --bichat-color-text-icon: var(--bichat-color-gray-500);\n\n --bichat-color-border: var(--bichat-color-gray-200);\n --bichat-color-border-subtle: var(--bichat-color-gray-100);\n --bichat-color-border-strong: var(--bichat-color-gray-300);\n\n --bichat-color-accent: var(--bichat-color-primary-600);\n --bichat-color-accent-hover: var(--bichat-color-primary-700);\n --bichat-color-accent-muted: var(--bichat-color-primary-100);\n\n /* Chat-specific semantic tokens */\n --bichat-color-user-bubble-bg: var(--bichat-color-primary-600);\n --bichat-color-user-bubble-text: #ffffff;\n --bichat-color-user-bubble-border: transparent;\n\n --bichat-color-assistant-bubble-bg: var(--bichat-color-surface);\n --bichat-color-assistant-bubble-text: var(--bichat-color-text);\n --bichat-color-assistant-bubble-border: var(--bichat-color-border);\n\n --bichat-color-system-bubble-bg: var(--bichat-color-bg-subtle);\n --bichat-color-system-bubble-text: var(--bichat-color-text-secondary);\n\n --bichat-color-input-bg: var(--bichat-color-surface);\n --bichat-color-input-text: var(--bichat-color-text);\n --bichat-color-input-border: var(--bichat-color-border);\n --bichat-color-input-focus-border: var(--bichat-color-accent);\n --bichat-color-input-placeholder: var(--bichat-color-text-muted);\n\n /* -------------------------------------------------------------------------\n Typography\n ------------------------------------------------------------------------- */\n --bichat-font-family: 'Gilroy', -apple-system, BlinkMacSystemFont, 'Segoe UI',\n 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans',\n 'Helvetica Neue', sans-serif;\n --bichat-font-family-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo,\n Consolas, 'Liberation Mono', monospace;\n\n --bichat-font-size-xs: 0.75rem;\n --bichat-font-size-sm: 0.875rem;\n --bichat-font-size-base: 1rem;\n --bichat-font-size-lg: 1.125rem;\n --bichat-font-size-xl: 1.25rem;\n --bichat-font-size-2xl: 1.5rem;\n --bichat-font-size-3xl: 1.875rem;\n\n --bichat-font-weight-normal: 400;\n --bichat-font-weight-medium: 500;\n --bichat-font-weight-semibold: 600;\n --bichat-font-weight-bold: 700;\n\n --bichat-line-height-tight: 1.25;\n --bichat-line-height-normal: 1.5;\n --bichat-line-height-relaxed: 1.625;\n\n --bichat-letter-spacing-tight: -0.025em;\n --bichat-letter-spacing-normal: 0;\n --bichat-letter-spacing-wide: 0.025em;\n\n /* -------------------------------------------------------------------------\n Border Radius\n ------------------------------------------------------------------------- */\n --bichat-radius-none: 0;\n --bichat-radius-sm: 0.125rem;\n --bichat-radius-default: 0.25rem;\n --bichat-radius-md: 0.375rem;\n --bichat-radius-lg: 0.5rem;\n --bichat-radius-xl: 0.75rem;\n --bichat-radius-2xl: 1rem;\n --bichat-radius-3xl: 1.5rem;\n --bichat-radius-full: 9999px;\n\n /* Semantic radius aliases */\n --bichat-radius-bubble: var(--bichat-radius-2xl);\n --bichat-radius-bubble-tail: var(--bichat-radius-sm);\n --bichat-radius-button: var(--bichat-radius-lg);\n --bichat-radius-input: var(--bichat-radius-lg);\n --bichat-radius-card: var(--bichat-radius-xl);\n --bichat-radius-modal: var(--bichat-radius-2xl);\n\n /* -------------------------------------------------------------------------\n Shadows\n ------------------------------------------------------------------------- */\n --bichat-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --bichat-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);\n --bichat-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n --bichat-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);\n --bichat-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);\n --bichat-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n --bichat-shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);\n --bichat-shadow-none: 0 0 #0000;\n\n /* Focus ring (WCAG 2.4.7 Focus Visible - high contrast for keyboard users) */\n --bichat-ring-width: 2px;\n --bichat-ring-offset: 2px;\n --bichat-ring-color: var(--bichat-color-primary-500);\n --bichat-focus-ring: 0 0 0 var(--bichat-ring-width) var(--bichat-ring-color);\n --bichat-focus-ring-offset: 0 0 0 var(--bichat-ring-offset) var(--bichat-color-surface);\n\n /* -------------------------------------------------------------------------\n Transitions & Animation\n ------------------------------------------------------------------------- */\n --bichat-transition-fast: 100ms;\n --bichat-transition-normal: 150ms;\n --bichat-transition-slow: 200ms;\n --bichat-transition-slower: 300ms;\n\n --bichat-ease-default: cubic-bezier(0.4, 0, 0.2, 1);\n --bichat-ease-in: cubic-bezier(0.4, 0, 1, 1);\n --bichat-ease-out: cubic-bezier(0, 0, 0.2, 1);\n --bichat-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --bichat-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n\n /* -------------------------------------------------------------------------\n Z-Index Scale\n ------------------------------------------------------------------------- */\n --bichat-z-base: 0;\n --bichat-z-dropdown: 10;\n --bichat-z-sticky: 20;\n --bichat-z-overlay: 30;\n --bichat-z-modal: 40;\n --bichat-z-popover: 50;\n --bichat-z-toast: 60;\n --bichat-z-tooltip: 70;\n\n /* -------------------------------------------------------------------------\n Component-Specific Sizes\n ------------------------------------------------------------------------- */\n --bichat-avatar-size-sm: 1.5rem;\n --bichat-avatar-size-md: 2rem;\n --bichat-avatar-size-lg: 2.5rem;\n --bichat-avatar-size-xl: 3rem;\n\n --bichat-bubble-max-width: 75%;\n --bichat-bubble-assistant-max-width: 85%;\n\n --bichat-input-min-height: 2.5rem;\n --bichat-input-max-height: 12rem;\n\n --bichat-color-chart-grid: rgba(148, 163, 184, 0.15);\n\n /* Legacy compatibility (keep for backward compat) */\n --bichat-primary: var(--bichat-color-primary-500);\n --bichat-bg: var(--bichat-color-bg);\n --bichat-text: var(--bichat-color-text);\n --bichat-border: var(--bichat-color-border);\n --bichat-bubble-user: var(--bichat-color-user-bubble-bg);\n --bichat-bubble-assistant: var(--bichat-color-assistant-bubble-bg);\n}\n\n/* =============================================================================\n Dark Mode Overrides\n ============================================================================= */\n\n/* Class-based dark mode (for Tailwind .dark class) */\n.dark,\n[data-theme=\"dark\"] {\n --bichat-color-bg: var(--bichat-color-gray-900);\n --bichat-color-bg-subtle: var(--bichat-color-gray-800);\n --bichat-color-bg-muted: var(--bichat-color-gray-700);\n\n --bichat-color-surface: var(--bichat-color-gray-800);\n --bichat-color-surface-raised: var(--bichat-color-gray-750, #2d3748);\n --bichat-color-surface-overlay: rgba(31, 41, 55, 0.9);\n\n --bichat-color-text: var(--bichat-color-gray-100);\n --bichat-color-text-secondary: var(--bichat-color-gray-300);\n --bichat-color-text-muted: var(--bichat-color-gray-400);\n --bichat-color-text-disabled: var(--bichat-color-gray-500);\n --bichat-color-code-text: var(--bichat-color-gray-200);\n --bichat-color-code-bg: var(--bichat-color-gray-800);\n --bichat-color-text-icon: var(--bichat-color-gray-400);\n\n --bichat-color-border: var(--bichat-color-gray-700);\n --bichat-color-border-subtle: var(--bichat-color-gray-800);\n --bichat-color-border-strong: var(--bichat-color-gray-600);\n\n --bichat-color-accent-muted: var(--bichat-color-primary-900);\n\n /* Chat-specific dark mode */\n --bichat-color-user-bubble-bg: var(--bichat-color-primary-700);\n --bichat-color-assistant-bubble-bg: var(--bichat-color-gray-800);\n --bichat-color-assistant-bubble-border: var(--bichat-color-gray-700);\n --bichat-color-system-bubble-bg: var(--bichat-color-gray-800);\n\n --bichat-color-input-bg: var(--bichat-color-gray-800);\n --bichat-color-input-border: var(--bichat-color-gray-700);\n\n /* Legacy compatibility */\n --bichat-bg: var(--bichat-color-bg);\n --bichat-text: var(--bichat-color-text);\n --bichat-border: var(--bichat-color-border);\n --bichat-bubble-assistant: var(--bichat-color-assistant-bubble-bg);\n\n --bichat-color-chart-grid: rgba(148, 163, 184, 0.1);\n\n /* Adjust shadows for dark mode */\n --bichat-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.3);\n --bichat-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.3);\n --bichat-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -4px rgba(0, 0, 0, 0.4);\n}\n\n/* =============================================================================\n Base Styles\n ============================================================================= */\n\n.bichat-session {\n background-color: var(--bichat-color-bg);\n color: var(--bichat-color-text);\n font-family: var(--bichat-font-family);\n font-size: var(--bichat-font-size-base);\n line-height: var(--bichat-line-height-normal);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Buttons and button-like elements: pointer cursor; disabled: not-allowed\n :host is required when styles are injected into the applet shadow root (bi-chat-root) */\n:host button,\n:host [role=\"button\"],\n:host [role=\"tab\"],\n.bichat-session button,\n.bichat-session [role=\"button\"],\n.bichat-session [role=\"tab\"],\nbi-chat-root button,\nbi-chat-root [role=\"button\"],\nbi-chat-root [role=\"tab\"] {\n cursor: pointer;\n}\n:host button:disabled,\n:host [role=\"button\"][aria-disabled=\"true\"],\n.bichat-session button:disabled,\n.bichat-session [role=\"button\"][aria-disabled=\"true\"],\nbi-chat-root button:disabled,\nbi-chat-root [role=\"button\"][aria-disabled=\"true\"] {\n cursor: not-allowed;\n}\n\n/* Focus visible: high-contrast focus rings for keyboard navigation (WCAG 2.4.7) */\n.bichat-session button:focus-visible,\n.bichat-session a:focus-visible,\n.bichat-session input:focus-visible,\n.bichat-session textarea:focus-visible,\n.bichat-session [role=\"button\"]:focus-visible,\n.bichat-session [role=\"menuitem\"]:focus-visible,\n.bichat-session [role=\"tab\"]:focus-visible,\n.bichat-session select:focus-visible,\n.bichat-session [tabindex]:not([tabindex=\"-1\"]):focus-visible,\nbi-chat-root button:focus-visible,\nbi-chat-root a:focus-visible,\nbi-chat-root input:focus-visible,\nbi-chat-root textarea:focus-visible,\nbi-chat-root [role=\"button\"]:focus-visible,\nbi-chat-root [role=\"menuitem\"]:focus-visible,\nbi-chat-root [role=\"tab\"]:focus-visible,\nbi-chat-root select:focus-visible,\nbi-chat-root [tabindex]:not([tabindex=\"-1\"]):focus-visible {\n outline: none;\n box-shadow: var(--bichat-focus-ring-offset), var(--bichat-focus-ring);\n border-radius: inherit;\n}\n\n.dark .bichat-session button:focus-visible,\n.dark .bichat-session a:focus-visible,\n.dark .bichat-session input:focus-visible,\n.dark .bichat-session textarea:focus-visible,\n.dark .bichat-session [role=\"button\"]:focus-visible,\n.dark .bichat-session [role=\"menuitem\"]:focus-visible,\n.dark .bichat-session [role=\"tab\"]:focus-visible,\n.dark .bichat-session select:focus-visible,\n.dark .bichat-session [tabindex]:not([tabindex=\"-1\"]):focus-visible,\n.dark bi-chat-root button:focus-visible,\n.dark bi-chat-root a:focus-visible,\n.dark bi-chat-root input:focus-visible,\n.dark bi-chat-root textarea:focus-visible,\n.dark bi-chat-root [role=\"button\"]:focus-visible,\n.dark bi-chat-root [role=\"menuitem\"]:focus-visible,\n.dark bi-chat-root [role=\"tab\"]:focus-visible,\n.dark bi-chat-root select:focus-visible,\n.dark bi-chat-root [tabindex]:not([tabindex=\"-1\"]):focus-visible {\n --bichat-focus-ring: 0 0 0 var(--bichat-ring-width) var(--bichat-color-primary-400);\n}\n\n/* =============================================================================\n Scrollbar Styles\n ============================================================================= */\n\n.bichat-messages::-webkit-scrollbar {\n width: 8px;\n}\n\n.bichat-messages::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.bichat-messages::-webkit-scrollbar-thumb {\n background: var(--bichat-color-gray-300);\n border-radius: var(--bichat-radius-full);\n}\n\n.bichat-messages::-webkit-scrollbar-thumb:hover {\n background: var(--bichat-color-gray-400);\n}\n\n.dark .bichat-messages::-webkit-scrollbar-thumb {\n background: var(--bichat-color-gray-600);\n}\n\n.dark .bichat-messages::-webkit-scrollbar-thumb:hover {\n background: var(--bichat-color-gray-500);\n}\n\n/* =============================================================================\n Animations\n ============================================================================= */\n\n@keyframes bichat-pulse {\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n}\n\n@keyframes bichat-bounce {\n 0%, 100% {\n transform: translateY(0);\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n }\n 50% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n\n@keyframes bichat-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes bichat-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes bichat-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.animate-pulse {\n animation: bichat-pulse 1s var(--bichat-ease-in-out) infinite;\n}\n\n.animate-bounce {\n animation: bichat-bounce 1s infinite;\n}\n\n.animate-spin {\n animation: bichat-spin 1s linear infinite;\n}\n\n.animate-fade-in {\n animation: bichat-fade-in var(--bichat-transition-normal) var(--bichat-ease-out);\n}\n\n.animate-slide-up {\n animation: bichat-slide-up var(--bichat-transition-slow) var(--bichat-ease-out);\n}\n\n/* =============================================================================\n Thinking Shimmer Animation\n ============================================================================= */\n\n.bichat-thinking-shimmer {\n -webkit-mask-image: linear-gradient(\n -45deg,\n rgba(0, 0, 0, 1) 20%,\n rgba(0, 0, 0, 1) 40%,\n rgba(0, 0, 0, 0.2) 50%,\n rgba(0, 0, 0, 1) 60%,\n rgba(0, 0, 0, 1) 80%\n );\n mask-image: linear-gradient(\n -45deg,\n rgba(0, 0, 0, 1) 20%,\n rgba(0, 0, 0, 1) 40%,\n rgba(0, 0, 0, 0.2) 50%,\n rgba(0, 0, 0, 1) 60%,\n rgba(0, 0, 0, 1) 80%\n );\n -webkit-mask-size: 300% 100%;\n mask-size: 300% 100%;\n animation: bichat-thinking-shimmer 4.5s linear infinite;\n}\n\n.dark .bichat-thinking-shimmer {\n -webkit-mask-image: linear-gradient(\n -45deg,\n rgba(0, 0, 0, 1) 15%,\n rgba(0, 0, 0, 1) 35%,\n rgba(0, 0, 0, 0.3) 50%,\n rgba(0, 0, 0, 1) 65%,\n rgba(0, 0, 0, 1) 85%\n );\n mask-image: linear-gradient(\n -45deg,\n rgba(0, 0, 0, 1) 15%,\n rgba(0, 0, 0, 1) 35%,\n rgba(0, 0, 0, 0.3) 50%,\n rgba(0, 0, 0, 1) 65%,\n rgba(0, 0, 0, 1) 85%\n );\n}\n\n@keyframes bichat-toast-progress {\n from { transform: scaleX(1); }\n to { transform: scaleX(0); }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .bichat-thinking-shimmer,\n .animate-pulse,\n .animate-bounce,\n .animate-spin,\n .animate-fade-in,\n .animate-slide-up {\n animation: none;\n }\n}\n\n@keyframes bichat-thinking-shimmer {\n 0% { -webkit-mask-position: 130% 0; mask-position: 130% 0; }\n 100% { -webkit-mask-position: -30% 0; mask-position: -30% 0; }\n}\n\n/* =============================================================================\n Prose / Markdown Styles\n ============================================================================= */\n\n.prose {\n color: var(--bichat-color-text);\n font-size: var(--bichat-font-size-base);\n line-height: var(--bichat-line-height-relaxed);\n}\n\n.prose > :first-child {\n margin-top: 0;\n}\n\n.prose > :last-child {\n margin-bottom: 0;\n}\n\n.prose h1,\n.prose h2,\n.prose h3,\n.prose h4,\n.prose h5,\n.prose h6 {\n color: var(--bichat-color-text);\n font-weight: var(--bichat-font-weight-semibold);\n margin-top: 1.5em;\n margin-bottom: 0.5em;\n line-height: var(--bichat-line-height-tight);\n}\n\n.prose h1 {\n font-size: 1.625rem;\n font-weight: var(--bichat-font-weight-bold);\n}\n\n.prose h2 {\n font-size: 1.375rem;\n margin-top: 2em;\n}\n\n.prose h3 {\n font-size: var(--bichat-font-size-lg);\n font-weight: var(--bichat-font-weight-semibold);\n}\n\n.prose h4 { font-size: var(--bichat-font-size-base); }\n\n.prose > * + h2 {\n margin-top: 2em;\n}\n\n.prose p {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n}\n\n.prose strong {\n font-weight: var(--bichat-font-weight-semibold);\n color: var(--bichat-color-text);\n}\n\n.prose code {\n background-color: var(--bichat-color-code-bg);\n color: var(--bichat-color-code-text);\n padding: 0.2em 0.5em;\n border-radius: var(--bichat-radius-md);\n border: 1px solid var(--bichat-color-border-subtle);\n font-family: var(--bichat-font-family-mono);\n font-size: 0.875em;\n}\n\n.prose pre {\n background-color: var(--bichat-color-code-bg);\n color: var(--bichat-color-gray-100);\n padding: var(--bichat-spacing-4);\n border-radius: var(--bichat-radius-lg);\n overflow-x: auto;\n margin-top: 1em;\n margin-bottom: 1em;\n font-family: var(--bichat-font-family-mono);\n font-size: var(--bichat-font-size-sm);\n line-height: var(--bichat-line-height-relaxed);\n}\n\n.prose pre code {\n background-color: transparent;\n padding: 0;\n color: inherit;\n font-size: inherit;\n border-radius: 0;\n border: none;\n}\n\n.prose a {\n color: var(--bichat-color-accent);\n text-decoration: none;\n font-weight: var(--bichat-font-weight-medium);\n}\n\n.prose a:hover {\n text-decoration: underline;\n}\n\n.prose ul,\n.prose ol {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n padding-left: 1.5em;\n}\n\n.prose ul {\n list-style-type: disc;\n}\n\n.prose ol {\n list-style-type: decimal;\n}\n\n.prose li {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n\n.prose li > ul,\n.prose li > ol {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n\n.prose blockquote {\n border-left: 4px solid var(--bichat-color-border-strong);\n padding-left: var(--bichat-spacing-4);\n margin-left: 0;\n font-style: italic;\n color: var(--bichat-color-text-secondary);\n}\n\n.prose hr {\n border: 0;\n border-top: 1px solid var(--bichat-color-border);\n margin: 2em 0;\n}\n\n.prose table {\n width: 100%;\n border-collapse: collapse;\n margin-top: 1em;\n margin-bottom: 1em;\n font-size: var(--bichat-font-size-sm);\n}\n\n.prose th,\n.prose td {\n border: 1px solid var(--bichat-color-border);\n padding: var(--bichat-spacing-2) var(--bichat-spacing-3);\n text-align: left;\n}\n\n.prose th {\n background-color: var(--bichat-color-bg-subtle);\n font-weight: var(--bichat-font-weight-semibold);\n}\n\n.prose tbody tr:nth-child(even) {\n background-color: var(--bichat-color-bg-subtle);\n}\n\n/* Keep rendered formulas readable within chat bubbles. */\n.markdown-content math[display='block'] {\n display: block;\n overflow-x: auto;\n overflow-y: hidden;\n padding: 0.25rem 0;\n}\n\n/* =============================================================================\n Focus Styles\n ============================================================================= */\n\n.bichat-focus-ring:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--bichat-ring-offset) var(--bichat-color-bg),\n 0 0 0 calc(var(--bichat-ring-offset) + var(--bichat-ring-width)) var(--bichat-ring-color);\n}\n\n/* =============================================================================\n Utility Classes\n ============================================================================= */\n\n.bichat-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../ui/src/bichat/styles.css"],"sourcesContent":["/**\n * BI-Chat UI Styles\n * Comprehensive CSS variable system for theming and customization\n */\n\n/* =============================================================================\n CSS Variables - Design Tokens\n ============================================================================= */\n\n:root,\n:host {\n /* -------------------------------------------------------------------------\n Spacing Scale\n ------------------------------------------------------------------------- */\n --bichat-spacing-0: 0;\n --bichat-spacing-px: 1px;\n --bichat-spacing-0_5: 0.125rem;\n --bichat-spacing-1: 0.25rem;\n --bichat-spacing-1_5: 0.375rem;\n --bichat-spacing-2: 0.5rem;\n --bichat-spacing-2_5: 0.625rem;\n --bichat-spacing-3: 0.75rem;\n --bichat-spacing-3_5: 0.875rem;\n --bichat-spacing-4: 1rem;\n --bichat-spacing-5: 1.25rem;\n --bichat-spacing-6: 1.5rem;\n --bichat-spacing-7: 1.75rem;\n --bichat-spacing-8: 2rem;\n --bichat-spacing-9: 2.25rem;\n --bichat-spacing-10: 2.5rem;\n --bichat-spacing-12: 3rem;\n --bichat-spacing-14: 3.5rem;\n --bichat-spacing-16: 4rem;\n\n /* Semantic spacing aliases */\n --bichat-spacing-xs: var(--bichat-spacing-1);\n --bichat-spacing-sm: var(--bichat-spacing-2);\n --bichat-spacing-md: var(--bichat-spacing-4);\n --bichat-spacing-lg: var(--bichat-spacing-6);\n --bichat-spacing-xl: var(--bichat-spacing-8);\n --bichat-spacing-2xl: var(--bichat-spacing-12);\n\n /* -------------------------------------------------------------------------\n Color Palette - Gray Scale\n ------------------------------------------------------------------------- */\n --bichat-color-gray-50: #f9fafb;\n --bichat-color-gray-100: #f3f4f6;\n --bichat-color-gray-200: #e5e7eb;\n --bichat-color-gray-300: #d1d5db;\n --bichat-color-gray-400: #9ca3af;\n --bichat-color-gray-500: #6b7280;\n --bichat-color-gray-600: #4b5563;\n --bichat-color-gray-700: #374151;\n --bichat-color-gray-800: #1f2937;\n --bichat-color-gray-900: #111827;\n --bichat-color-gray-950: #030712;\n\n /* -------------------------------------------------------------------------\n Color Palette - Primary (Blue)\n ------------------------------------------------------------------------- */\n --bichat-color-primary-50: #eff6ff;\n --bichat-color-primary-100: #dbeafe;\n --bichat-color-primary-200: #bfdbfe;\n --bichat-color-primary-300: #93c5fd;\n --bichat-color-primary-400: #60a5fa;\n --bichat-color-primary-500: #3b82f6;\n --bichat-color-primary-600: #2563eb;\n --bichat-color-primary-700: #1d4ed8;\n --bichat-color-primary-800: #1e40af;\n --bichat-color-primary-900: #1e3a8a;\n --bichat-color-primary-950: #172554;\n\n /* -------------------------------------------------------------------------\n Color Palette - Semantic Colors\n ------------------------------------------------------------------------- */\n --bichat-color-success-50: #f0fdf4;\n --bichat-color-success-500: #22c55e;\n --bichat-color-success-600: #16a34a;\n --bichat-color-success-700: #15803d;\n\n --bichat-color-error-50: #fef2f2;\n --bichat-color-error-500: #ef4444;\n --bichat-color-error-600: #dc2626;\n --bichat-color-error-700: #b91c1c;\n\n --bichat-color-warning-50: #fffbeb;\n --bichat-color-warning-500: #f59e0b;\n --bichat-color-warning-600: #d97706;\n --bichat-color-warning-700: #b45309;\n\n --bichat-color-info-50: #eff6ff;\n --bichat-color-info-500: #3b82f6;\n --bichat-color-info-600: #2563eb;\n --bichat-color-info-700: #1d4ed8;\n\n /* -------------------------------------------------------------------------\n Semantic Color Tokens (Light Mode)\n ------------------------------------------------------------------------- */\n --bichat-color-bg: var(--bichat-color-gray-50);\n --bichat-color-bg-subtle: var(--bichat-color-gray-100);\n --bichat-color-bg-muted: var(--bichat-color-gray-200);\n\n --bichat-color-surface: #ffffff;\n --bichat-color-surface-raised: #ffffff;\n --bichat-color-surface-overlay: rgba(255, 255, 255, 0.9);\n\n --bichat-color-text: var(--bichat-color-gray-900);\n --bichat-color-text-secondary: var(--bichat-color-gray-600);\n --bichat-color-text-muted: var(--bichat-color-gray-500);\n --bichat-color-text-disabled: var(--bichat-color-gray-400);\n --bichat-color-text-inverse: #ffffff;\n --bichat-color-code-text: var(--bichat-color-gray-800);\n --bichat-color-code-bg: var(--bichat-color-gray-100);\n --bichat-color-text-icon: var(--bichat-color-gray-500);\n\n --bichat-color-border: var(--bichat-color-gray-200);\n --bichat-color-border-subtle: var(--bichat-color-gray-100);\n --bichat-color-border-strong: var(--bichat-color-gray-300);\n --bichat-color-border-brand: var(--bichat-color-primary-500);\n --bichat-color-border-danger: var(--bichat-color-error-500);\n --bichat-color-border-warning: var(--bichat-color-warning-500);\n --bichat-color-border-success: var(--bichat-color-success-500);\n --bichat-color-border-disabled: var(--bichat-color-gray-200);\n\n --bichat-color-accent: var(--bichat-color-primary-600);\n --bichat-color-accent-hover: var(--bichat-color-primary-700);\n --bichat-color-accent-muted: var(--bichat-color-primary-100);\n\n /* Chat-specific semantic tokens */\n --bichat-color-user-bubble-bg: var(--bichat-color-primary-600);\n --bichat-color-user-bubble-text: #ffffff;\n --bichat-color-user-bubble-border: transparent;\n\n --bichat-color-assistant-bubble-bg: var(--bichat-color-surface);\n --bichat-color-assistant-bubble-text: var(--bichat-color-text);\n --bichat-color-assistant-bubble-border: var(--bichat-color-border);\n\n --bichat-color-system-bubble-bg: var(--bichat-color-bg-subtle);\n --bichat-color-system-bubble-text: var(--bichat-color-text-secondary);\n\n --bichat-color-input-bg: var(--bichat-color-surface);\n --bichat-color-input-text: var(--bichat-color-text);\n --bichat-color-input-border: var(--bichat-color-border);\n --bichat-color-input-focus-border: var(--bichat-color-accent);\n --bichat-color-input-placeholder: var(--bichat-color-text-muted);\n\n /* -------------------------------------------------------------------------\n Typography\n ------------------------------------------------------------------------- */\n --bichat-font-family: 'Gilroy', -apple-system, BlinkMacSystemFont, 'Segoe UI',\n 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans',\n 'Helvetica Neue', sans-serif;\n --bichat-font-family-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo,\n Consolas, 'Liberation Mono', monospace;\n\n --bichat-font-size-xs: 0.75rem;\n --bichat-font-size-sm: 0.875rem;\n --bichat-font-size-base: 1rem;\n --bichat-font-size-lg: 1.125rem;\n --bichat-font-size-xl: 1.25rem;\n --bichat-font-size-2xl: 1.5rem;\n --bichat-font-size-3xl: 1.875rem;\n\n --bichat-font-weight-normal: 400;\n --bichat-font-weight-medium: 500;\n --bichat-font-weight-semibold: 600;\n --bichat-font-weight-bold: 700;\n\n --bichat-line-height-tight: 1.25;\n --bichat-line-height-normal: 1.5;\n --bichat-line-height-relaxed: 1.625;\n\n --bichat-letter-spacing-tight: -0.025em;\n --bichat-letter-spacing-normal: 0;\n --bichat-letter-spacing-wide: 0.025em;\n\n /* -------------------------------------------------------------------------\n Border Radius\n ------------------------------------------------------------------------- */\n --bichat-radius-none: 0;\n --bichat-radius-sm: 0.125rem;\n --bichat-radius-default: 0.25rem;\n --bichat-radius-md: 0.375rem;\n --bichat-radius-lg: 0.5rem;\n --bichat-radius-xl: 0.75rem;\n --bichat-radius-2xl: 1rem;\n --bichat-radius-3xl: 1.5rem;\n --bichat-radius-full: 9999px;\n\n /* Semantic radius aliases */\n --bichat-radius-bubble: var(--bichat-radius-2xl);\n --bichat-radius-bubble-tail: var(--bichat-radius-sm);\n --bichat-radius-button: var(--bichat-radius-lg);\n --bichat-radius-input: var(--bichat-radius-lg);\n --bichat-radius-card: var(--bichat-radius-xl);\n --bichat-radius-modal: var(--bichat-radius-2xl);\n\n /* -------------------------------------------------------------------------\n Shadows\n ------------------------------------------------------------------------- */\n --bichat-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --bichat-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);\n --bichat-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n --bichat-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);\n --bichat-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);\n --bichat-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n --bichat-shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);\n --bichat-shadow-none: 0 0 #0000;\n\n /* Focus ring (WCAG 2.4.7 Focus Visible - high contrast for keyboard users) */\n --bichat-ring-width: 2px;\n --bichat-ring-offset: 2px;\n --bichat-ring-color: var(--bichat-color-primary-500);\n --bichat-focus-ring: 0 0 0 var(--bichat-ring-width) var(--bichat-ring-color);\n --bichat-focus-ring-offset: 0 0 0 var(--bichat-ring-offset) var(--bichat-color-surface);\n\n /* -------------------------------------------------------------------------\n Transitions & Animation\n ------------------------------------------------------------------------- */\n --bichat-transition-fast: 100ms;\n --bichat-transition-normal: 150ms;\n --bichat-transition-slow: 200ms;\n --bichat-transition-slower: 300ms;\n\n --bichat-ease-default: cubic-bezier(0.4, 0, 0.2, 1);\n --bichat-ease-in: cubic-bezier(0.4, 0, 1, 1);\n --bichat-ease-out: cubic-bezier(0, 0, 0.2, 1);\n --bichat-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --bichat-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n\n /* -------------------------------------------------------------------------\n Z-Index Scale\n ------------------------------------------------------------------------- */\n --bichat-z-base: 0;\n --bichat-z-dropdown: 10;\n --bichat-z-sticky: 20;\n --bichat-z-overlay: 30;\n --bichat-z-modal: 40;\n --bichat-z-popover: 50;\n --bichat-z-toast: 60;\n --bichat-z-tooltip: 70;\n\n /* -------------------------------------------------------------------------\n Component-Specific Sizes\n ------------------------------------------------------------------------- */\n --bichat-avatar-size-sm: 1.5rem;\n --bichat-avatar-size-md: 2rem;\n --bichat-avatar-size-lg: 2.5rem;\n --bichat-avatar-size-xl: 3rem;\n\n --bichat-bubble-max-width: 75%;\n --bichat-bubble-assistant-max-width: 85%;\n\n --bichat-input-min-height: 2.5rem;\n --bichat-input-max-height: 12rem;\n\n --bichat-color-chart-grid: rgba(148, 163, 184, 0.15);\n\n /* Legacy compatibility (keep for backward compat) */\n --bichat-primary: var(--bichat-color-primary-500);\n --bichat-bg: var(--bichat-color-bg);\n --bichat-text: var(--bichat-color-text);\n --bichat-border: var(--bichat-color-border);\n --bichat-bubble-user: var(--bichat-color-user-bubble-bg);\n --bichat-bubble-assistant: var(--bichat-color-assistant-bubble-bg);\n}\n\n/* =============================================================================\n Dark Mode Overrides\n ============================================================================= */\n\n/* Class-based dark mode (for Tailwind .dark class) */\n.dark,\n[data-theme=\"dark\"] {\n --bichat-color-bg: var(--bichat-color-gray-900);\n --bichat-color-bg-subtle: var(--bichat-color-gray-800);\n --bichat-color-bg-muted: var(--bichat-color-gray-700);\n\n --bichat-color-surface: var(--bichat-color-gray-800);\n --bichat-color-surface-raised: var(--bichat-color-gray-750, #2d3748);\n --bichat-color-surface-overlay: rgba(31, 41, 55, 0.9);\n\n --bichat-color-text: var(--bichat-color-gray-100);\n --bichat-color-text-secondary: var(--bichat-color-gray-300);\n --bichat-color-text-muted: var(--bichat-color-gray-400);\n --bichat-color-text-disabled: var(--bichat-color-gray-500);\n --bichat-color-code-text: var(--bichat-color-gray-200);\n --bichat-color-code-bg: var(--bichat-color-gray-800);\n --bichat-color-text-icon: var(--bichat-color-gray-400);\n\n --bichat-color-border: var(--bichat-color-gray-700);\n --bichat-color-border-subtle: var(--bichat-color-gray-800);\n --bichat-color-border-strong: var(--bichat-color-gray-600);\n --bichat-color-border-brand: var(--bichat-color-primary-400);\n --bichat-color-border-danger: var(--bichat-color-error-600);\n --bichat-color-border-warning: var(--bichat-color-warning-500);\n --bichat-color-border-success: var(--bichat-color-success-600);\n --bichat-color-border-disabled: var(--bichat-color-gray-800);\n\n --bichat-color-accent-muted: var(--bichat-color-primary-900);\n\n /* Chat-specific dark mode */\n --bichat-color-user-bubble-bg: var(--bichat-color-primary-700);\n --bichat-color-assistant-bubble-bg: var(--bichat-color-gray-800);\n --bichat-color-assistant-bubble-border: var(--bichat-color-gray-700);\n --bichat-color-system-bubble-bg: var(--bichat-color-gray-800);\n\n --bichat-color-input-bg: var(--bichat-color-gray-800);\n --bichat-color-input-border: var(--bichat-color-gray-700);\n\n /* Legacy compatibility */\n --bichat-bg: var(--bichat-color-bg);\n --bichat-text: var(--bichat-color-text);\n --bichat-border: var(--bichat-color-border);\n --bichat-bubble-assistant: var(--bichat-color-assistant-bubble-bg);\n\n --bichat-color-chart-grid: rgba(148, 163, 184, 0.1);\n\n /* Adjust shadows for dark mode */\n --bichat-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.3);\n --bichat-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.3);\n --bichat-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -4px rgba(0, 0, 0, 0.4);\n}\n\n/* =============================================================================\n Base Styles\n ============================================================================= */\n\n.bichat-session {\n background-color: var(--bichat-color-bg);\n color: var(--bichat-color-text);\n font-family: var(--bichat-font-family);\n font-size: var(--bichat-font-size-base);\n line-height: var(--bichat-line-height-normal);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Buttons and button-like elements: pointer cursor; disabled: not-allowed\n :host is required when styles are injected into the applet shadow root (bi-chat-root) */\n:host button,\n:host [role=\"button\"],\n:host [role=\"tab\"],\n.bichat-session button,\n.bichat-session [role=\"button\"],\n.bichat-session [role=\"tab\"],\nbi-chat-root button,\nbi-chat-root [role=\"button\"],\nbi-chat-root [role=\"tab\"] {\n cursor: pointer;\n}\n:host button:disabled,\n:host [role=\"button\"][aria-disabled=\"true\"],\n.bichat-session button:disabled,\n.bichat-session [role=\"button\"][aria-disabled=\"true\"],\nbi-chat-root button:disabled,\nbi-chat-root [role=\"button\"][aria-disabled=\"true\"] {\n cursor: not-allowed;\n}\n\n/* Focus visible: high-contrast focus rings for keyboard navigation (WCAG 2.4.7) */\n.bichat-session button:focus-visible,\n.bichat-session a:focus-visible,\n.bichat-session input:focus-visible,\n.bichat-session textarea:focus-visible,\n.bichat-session [role=\"button\"]:focus-visible,\n.bichat-session [role=\"menuitem\"]:focus-visible,\n.bichat-session [role=\"tab\"]:focus-visible,\n.bichat-session select:focus-visible,\n.bichat-session [tabindex]:not([tabindex=\"-1\"]):focus-visible,\nbi-chat-root button:focus-visible,\nbi-chat-root a:focus-visible,\nbi-chat-root input:focus-visible,\nbi-chat-root textarea:focus-visible,\nbi-chat-root [role=\"button\"]:focus-visible,\nbi-chat-root [role=\"menuitem\"]:focus-visible,\nbi-chat-root [role=\"tab\"]:focus-visible,\nbi-chat-root select:focus-visible,\nbi-chat-root [tabindex]:not([tabindex=\"-1\"]):focus-visible {\n outline: none;\n box-shadow: var(--bichat-focus-ring-offset), var(--bichat-focus-ring);\n border-radius: inherit;\n}\n\n.dark .bichat-session button:focus-visible,\n.dark .bichat-session a:focus-visible,\n.dark .bichat-session input:focus-visible,\n.dark .bichat-session textarea:focus-visible,\n.dark .bichat-session [role=\"button\"]:focus-visible,\n.dark .bichat-session [role=\"menuitem\"]:focus-visible,\n.dark .bichat-session [role=\"tab\"]:focus-visible,\n.dark .bichat-session select:focus-visible,\n.dark .bichat-session [tabindex]:not([tabindex=\"-1\"]):focus-visible,\n.dark bi-chat-root button:focus-visible,\n.dark bi-chat-root a:focus-visible,\n.dark bi-chat-root input:focus-visible,\n.dark bi-chat-root textarea:focus-visible,\n.dark bi-chat-root [role=\"button\"]:focus-visible,\n.dark bi-chat-root [role=\"menuitem\"]:focus-visible,\n.dark bi-chat-root [role=\"tab\"]:focus-visible,\n.dark bi-chat-root select:focus-visible,\n.dark bi-chat-root [tabindex]:not([tabindex=\"-1\"]):focus-visible {\n --bichat-focus-ring: 0 0 0 var(--bichat-ring-width) var(--bichat-color-primary-400);\n}\n\n/* =============================================================================\n Scrollbar Styles\n ============================================================================= */\n\n.bichat-messages::-webkit-scrollbar {\n width: 8px;\n}\n\n.bichat-messages::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.bichat-messages::-webkit-scrollbar-thumb {\n background: var(--bichat-color-gray-300);\n border-radius: var(--bichat-radius-full);\n}\n\n.bichat-messages::-webkit-scrollbar-thumb:hover {\n background: var(--bichat-color-gray-400);\n}\n\n.dark .bichat-messages::-webkit-scrollbar-thumb {\n background: var(--bichat-color-gray-600);\n}\n\n.dark .bichat-messages::-webkit-scrollbar-thumb:hover {\n background: var(--bichat-color-gray-500);\n}\n\n/* =============================================================================\n Animations\n ============================================================================= */\n\n@keyframes bichat-pulse {\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n}\n\n@keyframes bichat-bounce {\n 0%, 100% {\n transform: translateY(0);\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n }\n 50% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n\n@keyframes bichat-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes bichat-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes bichat-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.animate-pulse {\n animation: bichat-pulse 1s var(--bichat-ease-in-out) infinite;\n}\n\n.animate-bounce {\n animation: bichat-bounce 1s infinite;\n}\n\n.animate-spin {\n animation: bichat-spin 1s linear infinite;\n}\n\n.animate-fade-in {\n animation: bichat-fade-in var(--bichat-transition-normal) var(--bichat-ease-out);\n}\n\n.animate-slide-up {\n animation: bichat-slide-up var(--bichat-transition-slow) var(--bichat-ease-out);\n}\n\n/* =============================================================================\n Thinking Shimmer Animation\n ============================================================================= */\n\n.bichat-thinking-shimmer {\n -webkit-mask-image: linear-gradient(\n -45deg,\n rgba(0, 0, 0, 1) 20%,\n rgba(0, 0, 0, 1) 40%,\n rgba(0, 0, 0, 0.2) 50%,\n rgba(0, 0, 0, 1) 60%,\n rgba(0, 0, 0, 1) 80%\n );\n mask-image: linear-gradient(\n -45deg,\n rgba(0, 0, 0, 1) 20%,\n rgba(0, 0, 0, 1) 40%,\n rgba(0, 0, 0, 0.2) 50%,\n rgba(0, 0, 0, 1) 60%,\n rgba(0, 0, 0, 1) 80%\n );\n -webkit-mask-size: 300% 100%;\n mask-size: 300% 100%;\n animation: bichat-thinking-shimmer 4.5s linear infinite;\n}\n\n.dark .bichat-thinking-shimmer {\n -webkit-mask-image: linear-gradient(\n -45deg,\n rgba(0, 0, 0, 1) 15%,\n rgba(0, 0, 0, 1) 35%,\n rgba(0, 0, 0, 0.3) 50%,\n rgba(0, 0, 0, 1) 65%,\n rgba(0, 0, 0, 1) 85%\n );\n mask-image: linear-gradient(\n -45deg,\n rgba(0, 0, 0, 1) 15%,\n rgba(0, 0, 0, 1) 35%,\n rgba(0, 0, 0, 0.3) 50%,\n rgba(0, 0, 0, 1) 65%,\n rgba(0, 0, 0, 1) 85%\n );\n}\n\n@keyframes bichat-toast-progress {\n from { transform: scaleX(1); }\n to { transform: scaleX(0); }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .bichat-thinking-shimmer,\n .animate-pulse,\n .animate-bounce,\n .animate-spin,\n .animate-fade-in,\n .animate-slide-up {\n animation: none;\n }\n}\n\n@keyframes bichat-thinking-shimmer {\n 0% { -webkit-mask-position: 130% 0; mask-position: 130% 0; }\n 100% { -webkit-mask-position: -30% 0; mask-position: -30% 0; }\n}\n\n/* =============================================================================\n Prose / Markdown Styles\n ============================================================================= */\n\n.prose {\n color: var(--bichat-color-text);\n font-size: var(--bichat-font-size-base);\n line-height: var(--bichat-line-height-relaxed);\n}\n\n.prose > :first-child {\n margin-top: 0;\n}\n\n.prose > :last-child {\n margin-bottom: 0;\n}\n\n.prose h1,\n.prose h2,\n.prose h3,\n.prose h4,\n.prose h5,\n.prose h6 {\n color: var(--bichat-color-text);\n font-weight: var(--bichat-font-weight-semibold);\n margin-top: 1.5em;\n margin-bottom: 0.5em;\n line-height: var(--bichat-line-height-tight);\n}\n\n.prose h1 {\n font-size: 1.625rem;\n font-weight: var(--bichat-font-weight-bold);\n}\n\n.prose h2 {\n font-size: 1.375rem;\n margin-top: 2em;\n}\n\n.prose h3 {\n font-size: var(--bichat-font-size-lg);\n font-weight: var(--bichat-font-weight-semibold);\n}\n\n.prose h4 { font-size: var(--bichat-font-size-base); }\n\n.prose > * + h2 {\n margin-top: 2em;\n}\n\n.prose p {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n}\n\n.prose strong {\n font-weight: var(--bichat-font-weight-semibold);\n color: var(--bichat-color-text);\n}\n\n.prose code {\n background-color: var(--bichat-color-code-bg);\n color: var(--bichat-color-code-text);\n padding: 0.2em 0.5em;\n border-radius: var(--bichat-radius-md);\n border: 1px solid var(--bichat-color-border-subtle);\n font-family: var(--bichat-font-family-mono);\n font-size: 0.875em;\n}\n\n.prose pre {\n background-color: var(--bichat-color-code-bg);\n color: var(--bichat-color-gray-100);\n padding: var(--bichat-spacing-4);\n border-radius: var(--bichat-radius-lg);\n overflow-x: auto;\n margin-top: 1em;\n margin-bottom: 1em;\n font-family: var(--bichat-font-family-mono);\n font-size: var(--bichat-font-size-sm);\n line-height: var(--bichat-line-height-relaxed);\n}\n\n.prose pre code {\n background-color: transparent;\n padding: 0;\n color: inherit;\n font-size: inherit;\n border-radius: 0;\n border: none;\n}\n\n.prose a {\n color: var(--bichat-color-accent);\n text-decoration: none;\n font-weight: var(--bichat-font-weight-medium);\n}\n\n.prose a:hover {\n text-decoration: underline;\n}\n\n.prose ul,\n.prose ol {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n padding-left: 1.5em;\n}\n\n.prose ul {\n list-style-type: disc;\n}\n\n.prose ol {\n list-style-type: decimal;\n}\n\n.prose li {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n\n.prose li > ul,\n.prose li > ol {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n\n.prose blockquote {\n border-left: 4px solid var(--bichat-color-border-strong);\n padding-left: var(--bichat-spacing-4);\n margin-left: 0;\n font-style: italic;\n color: var(--bichat-color-text-secondary);\n}\n\n.prose hr {\n border: 0;\n border-top: 1px solid var(--bichat-color-border);\n margin: 2em 0;\n}\n\n.prose table {\n width: 100%;\n border-collapse: collapse;\n margin-top: 1em;\n margin-bottom: 1em;\n font-size: var(--bichat-font-size-sm);\n}\n\n.prose th,\n.prose td {\n border: 1px solid var(--bichat-color-border);\n padding: var(--bichat-spacing-2) var(--bichat-spacing-3);\n text-align: left;\n}\n\n.prose th {\n background-color: var(--bichat-color-bg-subtle);\n font-weight: var(--bichat-font-weight-semibold);\n}\n\n.prose tbody tr:nth-child(even) {\n background-color: var(--bichat-color-bg-subtle);\n}\n\n/* Keep rendered formulas readable within chat bubbles. */\n.markdown-content math[display='block'] {\n display: block;\n overflow-x: auto;\n overflow-y: hidden;\n padding: 0.25rem 0;\n}\n\n/* =============================================================================\n Focus Styles\n ============================================================================= */\n\n.bichat-focus-ring:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--bichat-ring-offset) var(--bichat-color-bg),\n 0 0 0 calc(var(--bichat-ring-offset) + var(--bichat-ring-width)) var(--bichat-ring-color);\n}\n\n/* =============================================================================\n Utility Classes\n ============================================================================= */\n\n.bichat-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n"],"mappings":"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","names":[]}
|
package/dist/bichat/styles.css
CHANGED
|
@@ -116,6 +116,11 @@
|
|
|
116
116
|
--bichat-color-border: var(--bichat-color-gray-200);
|
|
117
117
|
--bichat-color-border-subtle: var(--bichat-color-gray-100);
|
|
118
118
|
--bichat-color-border-strong: var(--bichat-color-gray-300);
|
|
119
|
+
--bichat-color-border-brand: var(--bichat-color-primary-500);
|
|
120
|
+
--bichat-color-border-danger: var(--bichat-color-error-500);
|
|
121
|
+
--bichat-color-border-warning: var(--bichat-color-warning-500);
|
|
122
|
+
--bichat-color-border-success: var(--bichat-color-success-500);
|
|
123
|
+
--bichat-color-border-disabled: var(--bichat-color-gray-200);
|
|
119
124
|
|
|
120
125
|
--bichat-color-accent: var(--bichat-color-primary-600);
|
|
121
126
|
--bichat-color-accent-hover: var(--bichat-color-primary-700);
|
|
@@ -286,6 +291,11 @@
|
|
|
286
291
|
--bichat-color-border: var(--bichat-color-gray-700);
|
|
287
292
|
--bichat-color-border-subtle: var(--bichat-color-gray-800);
|
|
288
293
|
--bichat-color-border-strong: var(--bichat-color-gray-600);
|
|
294
|
+
--bichat-color-border-brand: var(--bichat-color-primary-400);
|
|
295
|
+
--bichat-color-border-danger: var(--bichat-color-error-600);
|
|
296
|
+
--bichat-color-border-warning: var(--bichat-color-warning-500);
|
|
297
|
+
--bichat-color-border-success: var(--bichat-color-success-600);
|
|
298
|
+
--bichat-color-border-disabled: var(--bichat-color-gray-800);
|
|
289
299
|
|
|
290
300
|
--bichat-color-accent-muted: var(--bichat-color-primary-900);
|
|
291
301
|
|
package/dist/bichat/tailwind.cjs
CHANGED
|
@@ -52,6 +52,16 @@ var bichatTailwindPreset = {
|
|
|
52
52
|
900: "var(--primary-900, var(--bichat-color-primary-900, #1e3a8a))"
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
|
+
borderColor: {
|
|
56
|
+
subtle: "var(--bichat-color-border-subtle)",
|
|
57
|
+
default: "var(--bichat-color-border)",
|
|
58
|
+
strong: "var(--bichat-color-border-strong)",
|
|
59
|
+
brand: "var(--bichat-color-border-brand)",
|
|
60
|
+
danger: "var(--bichat-color-border-danger)",
|
|
61
|
+
warning: "var(--bichat-color-border-warning)",
|
|
62
|
+
success: "var(--bichat-color-border-success)",
|
|
63
|
+
disabled: "var(--bichat-color-border-disabled)"
|
|
64
|
+
},
|
|
55
65
|
fontFamily: {
|
|
56
66
|
sans: ['"Gilroy"', "system-ui", "-apple-system", "sans-serif"]
|
|
57
67
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../ui/src/bichat/tailwind.ts"],"names":["require","createRequire","path"],"mappings":"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","file":"tailwind.cjs","sourcesContent":["/**\n * BiChat Tailwind preset and content helper for downstream applets.\n * Use these so Tailwind generates utilities for SDK BiChat components and so\n * theme tokens stay consistent. Always import @iota-uz/sdk/bichat/styles.css\n * in your applet CSS for design tokens.\n */\nimport path from 'node:path';\nimport { createRequire } from 'node:module';\n\n/** Tailwind v3 config preset type (minimal shape we extend). */\nexport type TailwindPreset = {\n darkMode?: 'class' | 'selector' | 'media'\n theme?: { extend?: Record<string, unknown> }\n plugins?: unknown[]\n}\n\n/**\n * Preset for BiChat UI: theme extensions and dark mode.\n * Stable and minimal; apps can override via their own theme or CSS variables.\n */\nexport const bichatTailwindPreset: TailwindPreset = {\n darkMode: 'selector',\n theme: {\n extend: {\n colors: {\n red: {\n 50: '#fef2f2',\n 100: '#fee2e2',\n 200: '#fecaca',\n 300: '#fca5a5',\n 400: '#f87171',\n 500: '#ef4444',\n 600: '#dc2626',\n 700: '#b91c1c',\n 800: '#991b1b',\n 900: '#7f1d1d',\n },\n gray: {\n 50: '#f9fafb',\n 100: '#f3f4f6',\n 200: '#e5e7eb',\n 300: '#d1d5db',\n 400: '#9ca3af',\n 500: '#6b7280',\n 600: '#4b5563',\n 700: '#374151',\n 800: '#1f2937',\n 900: '#111827',\n 950: '#0d1117',\n },\n primary: {\n 50: 'var(--primary-50, var(--bichat-color-primary-50, #eff6ff))',\n 100: 'var(--primary-100, var(--bichat-color-primary-100, #dbeafe))',\n 200: 'var(--primary-200, var(--bichat-color-primary-200, #bfdbfe))',\n 300: 'var(--primary-300, var(--bichat-color-primary-300, #93c5fd))',\n 400: 'var(--primary-400, var(--bichat-color-primary-400, #60a5fa))',\n 500: 'var(--primary-500, var(--bichat-color-primary-500, #3b82f6))',\n 600: 'var(--primary-600, var(--bichat-color-primary-600, #2563eb))',\n 700: 'var(--primary-700, var(--bichat-color-primary-700, #1d4ed8))',\n 800: 'var(--primary-800, var(--bichat-color-primary-800, #1e40af))',\n 900: 'var(--primary-900, var(--bichat-color-primary-900, #1e3a8a))',\n },\n },\n fontFamily: {\n sans: ['\"Gilroy\"', 'system-ui', '-apple-system', 'sans-serif'],\n },\n boxShadow: {\n xs: 'var(--shadow-xs, 0 1px 2px 0 rgb(0 0 0 / 0.05))',\n sm: 'var(--shadow-sm, 0 1px 3px 0 rgb(0 0 0 / 0.1))',\n md: 'var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1))',\n lg: 'var(--shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1))',\n xl: 'var(--shadow-xl, 0 20px 25px -5px rgb(0 0 0 / 0.1))',\n },\n borderRadius: {\n '2xl': '1rem',\n '3xl': '1.5rem',\n },\n },\n },\n plugins: [],\n};\n\n/**\n * Returns absolute paths to SDK BiChat bundle files so Tailwind can scan them\n * for class names. Include the result in your Tailwind config content array.\n * Resolves via @iota-uz/sdk/package.json when available so the package root is unambiguous.\n */\nexport function bichatTailwindContent(): string[] {\n const require = createRequire(import.meta.url);\n let pkgDir: string;\n try {\n const pkgJsonPath = require.resolve('@iota-uz/sdk/package.json');\n pkgDir = path.dirname(pkgJsonPath);\n } catch {\n const entryPath = require.resolve('@iota-uz/sdk');\n pkgDir = path.dirname(entryPath); // when \".\" resolves to dist/index.mjs, dirname is dist\n }\n const distBichat = pkgDir.endsWith(path.sep + 'dist') || pkgDir.endsWith('/dist')\n ? path.join(pkgDir, 'bichat')\n : path.join(pkgDir, 'dist', 'bichat');\n return [\n path.join(distBichat, 'index.mjs'),\n path.join(distBichat, 'index.cjs'),\n ];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../ui/src/bichat/tailwind.ts"],"names":["require","createRequire","path"],"mappings":"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","file":"tailwind.cjs","sourcesContent":["/**\n * BiChat Tailwind preset and content helper for downstream applets.\n * Use these so Tailwind generates utilities for SDK BiChat components and so\n * theme tokens stay consistent. Always import @iota-uz/sdk/bichat/styles.css\n * in your applet CSS for design tokens.\n */\nimport path from 'node:path';\nimport { createRequire } from 'node:module';\n\n/** Tailwind v3 config preset type (minimal shape we extend). */\nexport type TailwindPreset = {\n darkMode?: 'class' | 'selector' | 'media'\n theme?: { extend?: Record<string, unknown> }\n plugins?: unknown[]\n}\n\n/**\n * Preset for BiChat UI: theme extensions and dark mode.\n * Stable and minimal; apps can override via their own theme or CSS variables.\n */\nexport const bichatTailwindPreset: TailwindPreset = {\n darkMode: 'selector',\n theme: {\n extend: {\n colors: {\n red: {\n 50: '#fef2f2',\n 100: '#fee2e2',\n 200: '#fecaca',\n 300: '#fca5a5',\n 400: '#f87171',\n 500: '#ef4444',\n 600: '#dc2626',\n 700: '#b91c1c',\n 800: '#991b1b',\n 900: '#7f1d1d',\n },\n gray: {\n 50: '#f9fafb',\n 100: '#f3f4f6',\n 200: '#e5e7eb',\n 300: '#d1d5db',\n 400: '#9ca3af',\n 500: '#6b7280',\n 600: '#4b5563',\n 700: '#374151',\n 800: '#1f2937',\n 900: '#111827',\n 950: '#0d1117',\n },\n primary: {\n 50: 'var(--primary-50, var(--bichat-color-primary-50, #eff6ff))',\n 100: 'var(--primary-100, var(--bichat-color-primary-100, #dbeafe))',\n 200: 'var(--primary-200, var(--bichat-color-primary-200, #bfdbfe))',\n 300: 'var(--primary-300, var(--bichat-color-primary-300, #93c5fd))',\n 400: 'var(--primary-400, var(--bichat-color-primary-400, #60a5fa))',\n 500: 'var(--primary-500, var(--bichat-color-primary-500, #3b82f6))',\n 600: 'var(--primary-600, var(--bichat-color-primary-600, #2563eb))',\n 700: 'var(--primary-700, var(--bichat-color-primary-700, #1d4ed8))',\n 800: 'var(--primary-800, var(--bichat-color-primary-800, #1e40af))',\n 900: 'var(--primary-900, var(--bichat-color-primary-900, #1e3a8a))',\n },\n },\n borderColor: {\n subtle: 'var(--bichat-color-border-subtle)',\n default: 'var(--bichat-color-border)',\n strong: 'var(--bichat-color-border-strong)',\n brand: 'var(--bichat-color-border-brand)',\n danger: 'var(--bichat-color-border-danger)',\n warning: 'var(--bichat-color-border-warning)',\n success: 'var(--bichat-color-border-success)',\n disabled: 'var(--bichat-color-border-disabled)',\n },\n fontFamily: {\n sans: ['\"Gilroy\"', 'system-ui', '-apple-system', 'sans-serif'],\n },\n boxShadow: {\n xs: 'var(--shadow-xs, 0 1px 2px 0 rgb(0 0 0 / 0.05))',\n sm: 'var(--shadow-sm, 0 1px 3px 0 rgb(0 0 0 / 0.1))',\n md: 'var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1))',\n lg: 'var(--shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1))',\n xl: 'var(--shadow-xl, 0 20px 25px -5px rgb(0 0 0 / 0.1))',\n },\n borderRadius: {\n '2xl': '1rem',\n '3xl': '1.5rem',\n },\n },\n },\n plugins: [],\n};\n\n/**\n * Returns absolute paths to SDK BiChat bundle files so Tailwind can scan them\n * for class names. Include the result in your Tailwind config content array.\n * Resolves via @iota-uz/sdk/package.json when available so the package root is unambiguous.\n */\nexport function bichatTailwindContent(): string[] {\n const require = createRequire(import.meta.url);\n let pkgDir: string;\n try {\n const pkgJsonPath = require.resolve('@iota-uz/sdk/package.json');\n pkgDir = path.dirname(pkgJsonPath);\n } catch {\n const entryPath = require.resolve('@iota-uz/sdk');\n pkgDir = path.dirname(entryPath); // when \".\" resolves to dist/index.mjs, dirname is dist\n }\n const distBichat = pkgDir.endsWith(path.sep + 'dist') || pkgDir.endsWith('/dist')\n ? path.join(pkgDir, 'bichat')\n : path.join(pkgDir, 'dist', 'bichat');\n return [\n path.join(distBichat, 'index.mjs'),\n path.join(distBichat, 'index.cjs'),\n ];\n}\n"]}
|
package/dist/bichat/tailwind.mjs
CHANGED
|
@@ -45,6 +45,16 @@ var bichatTailwindPreset = {
|
|
|
45
45
|
900: "var(--primary-900, var(--bichat-color-primary-900, #1e3a8a))"
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
|
+
borderColor: {
|
|
49
|
+
subtle: "var(--bichat-color-border-subtle)",
|
|
50
|
+
default: "var(--bichat-color-border)",
|
|
51
|
+
strong: "var(--bichat-color-border-strong)",
|
|
52
|
+
brand: "var(--bichat-color-border-brand)",
|
|
53
|
+
danger: "var(--bichat-color-border-danger)",
|
|
54
|
+
warning: "var(--bichat-color-border-warning)",
|
|
55
|
+
success: "var(--bichat-color-border-success)",
|
|
56
|
+
disabled: "var(--bichat-color-border-disabled)"
|
|
57
|
+
},
|
|
48
58
|
fontFamily: {
|
|
49
59
|
sans: ['"Gilroy"', "system-ui", "-apple-system", "sans-serif"]
|
|
50
60
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../ui/src/bichat/tailwind.ts"],"names":["require"],"mappings":";;;;AAoBO,IAAM,oBAAA,GAAuC;AAAA,EAClD,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ;AAAA,QACN,GAAA,EAAK;AAAA,UACH,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,OAAA,EAAS;AAAA,UACP,EAAA,EAAI,4DAAA;AAAA,UACJ,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK;AAAA;AACP,OACF;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,CAAC,UAAA,EAAY,WAAA,EAAa,iBAAiB,YAAY;AAAA,OAC/D;AAAA,MACA,SAAA,EAAW;AAAA,QACT,EAAA,EAAI,iDAAA;AAAA,QACJ,EAAA,EAAI,gDAAA;AAAA,QACJ,EAAA,EAAI,mDAAA;AAAA,QACJ,EAAA,EAAI,qDAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,YAAA,EAAc;AAAA,QACZ,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO;AAAA;AACT;AACF,GACF;AAAA,EACA,SAAS;AACX;AAOO,SAAS,qBAAA,GAAkC;AAChD,EAAA,MAAMA,QAAAA,GAAU,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AAC7C,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI;AACF,IAAA,MAAM,WAAA,GAAcA,QAAAA,CAAQ,OAAA,CAAQ,2BAA2B,CAAA;AAC/D,IAAA,MAAA,GAAS,IAAA,CAAK,QAAQ,WAAW,CAAA;AAAA,EACnC,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,SAAA,GAAYA,QAAAA,CAAQ,OAAA,CAAQ,cAAc,CAAA;AAChD,IAAA,MAAA,GAAS,IAAA,CAAK,QAAQ,SAAS,CAAA;AAAA,EACjC;AACA,EAAA,MAAM,UAAA,GAAa,OAAO,QAAA,CAAS,IAAA,CAAK,MAAM,MAAM,CAAA,IAAK,OAAO,QAAA,CAAS,OAAO,IAC5E,IAAA,CAAK,IAAA,CAAK,QAAQ,QAAQ,CAAA,GAC1B,KAAK,IAAA,CAAK,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AACtC,EAAA,OAAO;AAAA,IACL,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY,WAAW,CAAA;AAAA,IACjC,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY,WAAW;AAAA,GACnC;AACF","file":"tailwind.mjs","sourcesContent":["/**\n * BiChat Tailwind preset and content helper for downstream applets.\n * Use these so Tailwind generates utilities for SDK BiChat components and so\n * theme tokens stay consistent. Always import @iota-uz/sdk/bichat/styles.css\n * in your applet CSS for design tokens.\n */\nimport path from 'node:path';\nimport { createRequire } from 'node:module';\n\n/** Tailwind v3 config preset type (minimal shape we extend). */\nexport type TailwindPreset = {\n darkMode?: 'class' | 'selector' | 'media'\n theme?: { extend?: Record<string, unknown> }\n plugins?: unknown[]\n}\n\n/**\n * Preset for BiChat UI: theme extensions and dark mode.\n * Stable and minimal; apps can override via their own theme or CSS variables.\n */\nexport const bichatTailwindPreset: TailwindPreset = {\n darkMode: 'selector',\n theme: {\n extend: {\n colors: {\n red: {\n 50: '#fef2f2',\n 100: '#fee2e2',\n 200: '#fecaca',\n 300: '#fca5a5',\n 400: '#f87171',\n 500: '#ef4444',\n 600: '#dc2626',\n 700: '#b91c1c',\n 800: '#991b1b',\n 900: '#7f1d1d',\n },\n gray: {\n 50: '#f9fafb',\n 100: '#f3f4f6',\n 200: '#e5e7eb',\n 300: '#d1d5db',\n 400: '#9ca3af',\n 500: '#6b7280',\n 600: '#4b5563',\n 700: '#374151',\n 800: '#1f2937',\n 900: '#111827',\n 950: '#0d1117',\n },\n primary: {\n 50: 'var(--primary-50, var(--bichat-color-primary-50, #eff6ff))',\n 100: 'var(--primary-100, var(--bichat-color-primary-100, #dbeafe))',\n 200: 'var(--primary-200, var(--bichat-color-primary-200, #bfdbfe))',\n 300: 'var(--primary-300, var(--bichat-color-primary-300, #93c5fd))',\n 400: 'var(--primary-400, var(--bichat-color-primary-400, #60a5fa))',\n 500: 'var(--primary-500, var(--bichat-color-primary-500, #3b82f6))',\n 600: 'var(--primary-600, var(--bichat-color-primary-600, #2563eb))',\n 700: 'var(--primary-700, var(--bichat-color-primary-700, #1d4ed8))',\n 800: 'var(--primary-800, var(--bichat-color-primary-800, #1e40af))',\n 900: 'var(--primary-900, var(--bichat-color-primary-900, #1e3a8a))',\n },\n },\n fontFamily: {\n sans: ['\"Gilroy\"', 'system-ui', '-apple-system', 'sans-serif'],\n },\n boxShadow: {\n xs: 'var(--shadow-xs, 0 1px 2px 0 rgb(0 0 0 / 0.05))',\n sm: 'var(--shadow-sm, 0 1px 3px 0 rgb(0 0 0 / 0.1))',\n md: 'var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1))',\n lg: 'var(--shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1))',\n xl: 'var(--shadow-xl, 0 20px 25px -5px rgb(0 0 0 / 0.1))',\n },\n borderRadius: {\n '2xl': '1rem',\n '3xl': '1.5rem',\n },\n },\n },\n plugins: [],\n};\n\n/**\n * Returns absolute paths to SDK BiChat bundle files so Tailwind can scan them\n * for class names. Include the result in your Tailwind config content array.\n * Resolves via @iota-uz/sdk/package.json when available so the package root is unambiguous.\n */\nexport function bichatTailwindContent(): string[] {\n const require = createRequire(import.meta.url);\n let pkgDir: string;\n try {\n const pkgJsonPath = require.resolve('@iota-uz/sdk/package.json');\n pkgDir = path.dirname(pkgJsonPath);\n } catch {\n const entryPath = require.resolve('@iota-uz/sdk');\n pkgDir = path.dirname(entryPath); // when \".\" resolves to dist/index.mjs, dirname is dist\n }\n const distBichat = pkgDir.endsWith(path.sep + 'dist') || pkgDir.endsWith('/dist')\n ? path.join(pkgDir, 'bichat')\n : path.join(pkgDir, 'dist', 'bichat');\n return [\n path.join(distBichat, 'index.mjs'),\n path.join(distBichat, 'index.cjs'),\n ];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../ui/src/bichat/tailwind.ts"],"names":["require"],"mappings":";;;;AAoBO,IAAM,oBAAA,GAAuC;AAAA,EAClD,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ;AAAA,QACN,GAAA,EAAK;AAAA,UACH,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK,SAAA;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,OAAA,EAAS;AAAA,UACP,EAAA,EAAI,4DAAA;AAAA,UACJ,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK,8DAAA;AAAA,UACL,GAAA,EAAK;AAAA;AACP,OACF;AAAA,MACA,WAAA,EAAa;AAAA,QACX,MAAA,EAAQ,mCAAA;AAAA,QACR,OAAA,EAAS,4BAAA;AAAA,QACT,MAAA,EAAQ,mCAAA;AAAA,QACR,KAAA,EAAO,kCAAA;AAAA,QACP,MAAA,EAAQ,mCAAA;AAAA,QACR,OAAA,EAAS,oCAAA;AAAA,QACT,OAAA,EAAS,oCAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,CAAC,UAAA,EAAY,WAAA,EAAa,iBAAiB,YAAY;AAAA,OAC/D;AAAA,MACA,SAAA,EAAW;AAAA,QACT,EAAA,EAAI,iDAAA;AAAA,QACJ,EAAA,EAAI,gDAAA;AAAA,QACJ,EAAA,EAAI,mDAAA;AAAA,QACJ,EAAA,EAAI,qDAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,YAAA,EAAc;AAAA,QACZ,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO;AAAA;AACT;AACF,GACF;AAAA,EACA,SAAS;AACX;AAOO,SAAS,qBAAA,GAAkC;AAChD,EAAA,MAAMA,QAAAA,GAAU,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AAC7C,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI;AACF,IAAA,MAAM,WAAA,GAAcA,QAAAA,CAAQ,OAAA,CAAQ,2BAA2B,CAAA;AAC/D,IAAA,MAAA,GAAS,IAAA,CAAK,QAAQ,WAAW,CAAA;AAAA,EACnC,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,SAAA,GAAYA,QAAAA,CAAQ,OAAA,CAAQ,cAAc,CAAA;AAChD,IAAA,MAAA,GAAS,IAAA,CAAK,QAAQ,SAAS,CAAA;AAAA,EACjC;AACA,EAAA,MAAM,UAAA,GAAa,OAAO,QAAA,CAAS,IAAA,CAAK,MAAM,MAAM,CAAA,IAAK,OAAO,QAAA,CAAS,OAAO,IAC5E,IAAA,CAAK,IAAA,CAAK,QAAQ,QAAQ,CAAA,GAC1B,KAAK,IAAA,CAAK,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AACtC,EAAA,OAAO;AAAA,IACL,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY,WAAW,CAAA;AAAA,IACjC,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY,WAAW;AAAA,GACnC;AACF","file":"tailwind.mjs","sourcesContent":["/**\n * BiChat Tailwind preset and content helper for downstream applets.\n * Use these so Tailwind generates utilities for SDK BiChat components and so\n * theme tokens stay consistent. Always import @iota-uz/sdk/bichat/styles.css\n * in your applet CSS for design tokens.\n */\nimport path from 'node:path';\nimport { createRequire } from 'node:module';\n\n/** Tailwind v3 config preset type (minimal shape we extend). */\nexport type TailwindPreset = {\n darkMode?: 'class' | 'selector' | 'media'\n theme?: { extend?: Record<string, unknown> }\n plugins?: unknown[]\n}\n\n/**\n * Preset for BiChat UI: theme extensions and dark mode.\n * Stable and minimal; apps can override via their own theme or CSS variables.\n */\nexport const bichatTailwindPreset: TailwindPreset = {\n darkMode: 'selector',\n theme: {\n extend: {\n colors: {\n red: {\n 50: '#fef2f2',\n 100: '#fee2e2',\n 200: '#fecaca',\n 300: '#fca5a5',\n 400: '#f87171',\n 500: '#ef4444',\n 600: '#dc2626',\n 700: '#b91c1c',\n 800: '#991b1b',\n 900: '#7f1d1d',\n },\n gray: {\n 50: '#f9fafb',\n 100: '#f3f4f6',\n 200: '#e5e7eb',\n 300: '#d1d5db',\n 400: '#9ca3af',\n 500: '#6b7280',\n 600: '#4b5563',\n 700: '#374151',\n 800: '#1f2937',\n 900: '#111827',\n 950: '#0d1117',\n },\n primary: {\n 50: 'var(--primary-50, var(--bichat-color-primary-50, #eff6ff))',\n 100: 'var(--primary-100, var(--bichat-color-primary-100, #dbeafe))',\n 200: 'var(--primary-200, var(--bichat-color-primary-200, #bfdbfe))',\n 300: 'var(--primary-300, var(--bichat-color-primary-300, #93c5fd))',\n 400: 'var(--primary-400, var(--bichat-color-primary-400, #60a5fa))',\n 500: 'var(--primary-500, var(--bichat-color-primary-500, #3b82f6))',\n 600: 'var(--primary-600, var(--bichat-color-primary-600, #2563eb))',\n 700: 'var(--primary-700, var(--bichat-color-primary-700, #1d4ed8))',\n 800: 'var(--primary-800, var(--bichat-color-primary-800, #1e40af))',\n 900: 'var(--primary-900, var(--bichat-color-primary-900, #1e3a8a))',\n },\n },\n borderColor: {\n subtle: 'var(--bichat-color-border-subtle)',\n default: 'var(--bichat-color-border)',\n strong: 'var(--bichat-color-border-strong)',\n brand: 'var(--bichat-color-border-brand)',\n danger: 'var(--bichat-color-border-danger)',\n warning: 'var(--bichat-color-border-warning)',\n success: 'var(--bichat-color-border-success)',\n disabled: 'var(--bichat-color-border-disabled)',\n },\n fontFamily: {\n sans: ['\"Gilroy\"', 'system-ui', '-apple-system', 'sans-serif'],\n },\n boxShadow: {\n xs: 'var(--shadow-xs, 0 1px 2px 0 rgb(0 0 0 / 0.05))',\n sm: 'var(--shadow-sm, 0 1px 3px 0 rgb(0 0 0 / 0.1))',\n md: 'var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1))',\n lg: 'var(--shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1))',\n xl: 'var(--shadow-xl, 0 20px 25px -5px rgb(0 0 0 / 0.1))',\n },\n borderRadius: {\n '2xl': '1rem',\n '3xl': '1.5rem',\n },\n },\n },\n plugins: [],\n};\n\n/**\n * Returns absolute paths to SDK BiChat bundle files so Tailwind can scan them\n * for class names. Include the result in your Tailwind config content array.\n * Resolves via @iota-uz/sdk/package.json when available so the package root is unambiguous.\n */\nexport function bichatTailwindContent(): string[] {\n const require = createRequire(import.meta.url);\n let pkgDir: string;\n try {\n const pkgJsonPath = require.resolve('@iota-uz/sdk/package.json');\n pkgDir = path.dirname(pkgJsonPath);\n } catch {\n const entryPath = require.resolve('@iota-uz/sdk');\n pkgDir = path.dirname(entryPath); // when \".\" resolves to dist/index.mjs, dirname is dist\n }\n const distBichat = pkgDir.endsWith(path.sep + 'dist') || pkgDir.endsWith('/dist')\n ? path.join(pkgDir, 'bichat')\n : path.join(pkgDir, 'dist', 'bichat');\n return [\n path.join(distBichat, 'index.mjs'),\n path.join(distBichat, 'index.cjs'),\n ];\n}\n"]}
|