@clickhouse/click-ui 0.0.234-sc-deprecation.8 → 0.0.234-sc-deprecation.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +26 -152
  2. package/bin/commands/init.js +78 -115
  3. package/dist/click-ui.bundled.es.js +3580 -3627
  4. package/dist/click-ui.bundled.umd.js +31 -31
  5. package/dist/click-ui.es.js +3580 -3627
  6. package/dist/click-ui.umd.js +31 -31
  7. package/dist/config/core.d.ts +49 -0
  8. package/dist/config/core.d.ts.map +1 -0
  9. package/dist/config/core.js +180 -0
  10. package/dist/config/core.js.map +1 -0
  11. package/dist/config/index.d.ts +51 -0
  12. package/dist/config/index.d.ts.map +1 -0
  13. package/dist/config/index.js +53 -0
  14. package/dist/config/index.js.map +1 -0
  15. package/dist/config/next.d.ts +8 -0
  16. package/dist/config/next.d.ts.map +1 -0
  17. package/dist/config/next.js +61 -0
  18. package/dist/config/next.js.map +1 -0
  19. package/dist/config/rollup.d.ts +8 -0
  20. package/dist/config/rollup.d.ts.map +1 -0
  21. package/dist/config/rollup.js +75 -0
  22. package/dist/config/rollup.js.map +1 -0
  23. package/dist/config/types.d.ts +34 -0
  24. package/dist/config/types.d.ts.map +1 -0
  25. package/dist/config/types.js +5 -0
  26. package/dist/config/types.js.map +1 -0
  27. package/dist/config/vite.d.ts +8 -0
  28. package/dist/config/vite.d.ts.map +1 -0
  29. package/dist/config/vite.js +69 -0
  30. package/dist/config/vite.js.map +1 -0
  31. package/dist/config/webpack.d.ts +8 -0
  32. package/dist/config/webpack.d.ts.map +1 -0
  33. package/dist/config/webpack.js +68 -0
  34. package/dist/config/webpack.js.map +1 -0
  35. package/dist/theme/ClickUIProvider/ServerClickUIProvider.d.ts +3 -4
  36. package/dist/theme/config.d.ts +1 -1
  37. package/dist/theme/index.d.ts +2 -2
  38. package/dist/theme/types.d.ts +13 -6
  39. package/dist/theme/utils.d.ts +7 -0
  40. package/package.json +30 -3
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Shared core logic for Click UI bundler plugins
3
+ * This core is used by all bundler-specific wrappers (Vite, Webpack, Rollup, Next.js)
4
+ */
5
+ import type { PluginOptions, LoadedConfig, BundlerDefines } from './types';
6
+ export declare class ClickUIConfigCore {
7
+ private options;
8
+ private cachedConfig;
9
+ constructor(options?: PluginOptions);
10
+ /**
11
+ * Auto-discover config file in project root
12
+ * Tries multiple file extensions in order of preference
13
+ */
14
+ findConfigFile(root: string): string | null;
15
+ /**
16
+ * Load and parse config file
17
+ */
18
+ loadConfig(configFile: string): Promise<any>;
19
+ /**
20
+ * Generate CSS variables from theme config
21
+ */
22
+ generateCSS(config: any): string;
23
+ /**
24
+ * Recursively generate CSS variables from nested config object
25
+ */
26
+ private generateVariables;
27
+ /**
28
+ * Create define/globals for build-time injection
29
+ */
30
+ createDefines(config: any): BundlerDefines;
31
+ /**
32
+ * Main initialization method used by all bundlers
33
+ * Returns everything needed for bundler-specific implementation
34
+ */
35
+ initialize(root: string): Promise<LoadedConfig>;
36
+ /**
37
+ * Clear cache (useful for watch mode)
38
+ */
39
+ clearCache(): void;
40
+ /**
41
+ * Get verbose flag
42
+ */
43
+ isVerbose(): boolean;
44
+ /**
45
+ * Get CSS output filename
46
+ */
47
+ getCSSOutputFilename(): string;
48
+ }
49
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../config/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE3E,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAA6B;gBAErC,OAAO,GAAE,aAAkB;IAIvC;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA0C3C;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiBlD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM;IAqChC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,cAAc;IAO1C;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkCrD;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,oBAAoB,IAAI,MAAM;CAG/B"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Shared core logic for Click UI bundler plugins
3
+ * This core is used by all bundler-specific wrappers (Vite, Webpack, Rollup, Next.js)
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ export class ClickUIConfigCore {
8
+ constructor(options = {}) {
9
+ this.cachedConfig = null;
10
+ this.options = options;
11
+ }
12
+ /**
13
+ * Auto-discover config file in project root
14
+ * Tries multiple file extensions in order of preference
15
+ */
16
+ findConfigFile(root) {
17
+ // If user specified a custom path, use it
18
+ if (this.options.configPath) {
19
+ const fullPath = path.resolve(root, this.options.configPath);
20
+ if (fs.existsSync(fullPath)) {
21
+ return fullPath;
22
+ }
23
+ if (this.options.verbose) {
24
+ console.warn(`⚠️ Config file not found at: ${this.options.configPath}`);
25
+ }
26
+ return null;
27
+ }
28
+ // Skip discovery if requested
29
+ if (this.options.skipConfigDiscovery) {
30
+ return null;
31
+ }
32
+ // Auto-discover config file
33
+ const possibleFiles = [
34
+ 'click-ui.config.ts',
35
+ 'click-ui.config.mts',
36
+ 'click-ui.config.cts',
37
+ 'click-ui.config.js',
38
+ 'click-ui.config.mjs',
39
+ 'click-ui.config.cjs',
40
+ ];
41
+ for (const file of possibleFiles) {
42
+ const fullPath = path.resolve(root, file);
43
+ if (fs.existsSync(fullPath)) {
44
+ if (this.options.verbose) {
45
+ console.log(`✅ Found config file: ${file}`);
46
+ }
47
+ return fullPath;
48
+ }
49
+ }
50
+ return null;
51
+ }
52
+ /**
53
+ * Load and parse config file
54
+ */
55
+ async loadConfig(configFile) {
56
+ try {
57
+ // Use cache-busting for hot reload support
58
+ const imported = await import(configFile + '?t=' + Date.now());
59
+ const config = imported.default || imported;
60
+ if (this.options.verbose) {
61
+ console.log('📦 Loaded config:', JSON.stringify(config, null, 2));
62
+ }
63
+ return config;
64
+ }
65
+ catch (error) {
66
+ console.warn(`⚠️ Failed to load config from ${configFile}:`, error);
67
+ return {};
68
+ }
69
+ }
70
+ /**
71
+ * Generate CSS variables from theme config
72
+ */
73
+ generateCSS(config) {
74
+ if (!config || Object.keys(config).length === 0) {
75
+ return '';
76
+ }
77
+ const prefix = config.cssPrefix || '--click';
78
+ let css = '';
79
+ // Generate light theme CSS (theme config is the light mode theme)
80
+ if (config.theme) {
81
+ const lightVars = this.generateVariables(config.theme, prefix);
82
+ if (lightVars) {
83
+ css += `/* Light Theme */\n`;
84
+ css += `@media (prefers-color-scheme: light) {\n :root {\n${lightVars} }\n}\n\n`;
85
+ css += `:root[data-theme="light"] {\n${lightVars}}\n\n`;
86
+ }
87
+ }
88
+ // Generate dark theme CSS (theme + dark overrides)
89
+ // If dark is not defined, theme values are used for dark mode too
90
+ if (config.theme || config.dark) {
91
+ const darkVars = this.generateVariables({ ...config.theme, ...config.dark }, prefix);
92
+ if (darkVars) {
93
+ css += `/* Dark Theme */\n`;
94
+ css += `@media (prefers-color-scheme: dark) {\n :root {\n${darkVars} }\n}\n\n`;
95
+ css += `:root[data-theme="dark"] {\n${darkVars}}\n`;
96
+ }
97
+ }
98
+ return css;
99
+ }
100
+ /**
101
+ * Recursively generate CSS variables from nested config object
102
+ */
103
+ generateVariables(obj, prefix, path = []) {
104
+ let vars = '';
105
+ if (!obj || typeof obj !== 'object') {
106
+ return vars;
107
+ }
108
+ Object.entries(obj).forEach(([key, value]) => {
109
+ if (value === null || value === undefined) {
110
+ return;
111
+ }
112
+ if (typeof value === 'string' || typeof value === 'number') {
113
+ const varName = `${prefix}-${[...path, key].join('-')}`;
114
+ vars += ` ${varName}: ${value};\n`;
115
+ }
116
+ else if (typeof value === 'object' && !Array.isArray(value)) {
117
+ vars += this.generateVariables(value, prefix, [...path, key]);
118
+ }
119
+ });
120
+ return vars;
121
+ }
122
+ /**
123
+ * Create define/globals for build-time injection
124
+ */
125
+ createDefines(config) {
126
+ return {
127
+ '__CLICK_UI_CONFIG__': JSON.stringify(config || {}),
128
+ '__CLICK_UI_PREFIX__': JSON.stringify(config?.cssPrefix || '--click'),
129
+ };
130
+ }
131
+ /**
132
+ * Main initialization method used by all bundlers
133
+ * Returns everything needed for bundler-specific implementation
134
+ */
135
+ async initialize(root) {
136
+ // Return cached config if available
137
+ if (this.cachedConfig) {
138
+ return this.cachedConfig;
139
+ }
140
+ const configFile = this.findConfigFile(root);
141
+ if (!configFile) {
142
+ if (!this.options.skipConfigDiscovery) {
143
+ console.log('ℹ️ No click-ui config found, using defaults');
144
+ }
145
+ this.cachedConfig = {
146
+ configFile: null,
147
+ config: {},
148
+ cssVariables: '',
149
+ };
150
+ return this.cachedConfig;
151
+ }
152
+ const config = await this.loadConfig(configFile);
153
+ const cssVariables = this.generateCSS(config);
154
+ this.cachedConfig = {
155
+ configFile,
156
+ config,
157
+ cssVariables,
158
+ };
159
+ return this.cachedConfig;
160
+ }
161
+ /**
162
+ * Clear cache (useful for watch mode)
163
+ */
164
+ clearCache() {
165
+ this.cachedConfig = null;
166
+ }
167
+ /**
168
+ * Get verbose flag
169
+ */
170
+ isVerbose() {
171
+ return this.options.verbose || false;
172
+ }
173
+ /**
174
+ * Get CSS output filename
175
+ */
176
+ getCSSOutputFilename() {
177
+ return this.options.cssOutput || 'theme-vars.css';
178
+ }
179
+ }
180
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../config/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Click UI Bundler Plugins
3
+ *
4
+ * Universal configuration plugins for Vite, Webpack, Rollup, and Next.js
5
+ *
6
+ * @example Vite
7
+ * ```ts
8
+ * import { clickUIConfig } from '@clickhouse/click-ui/config';
9
+ * // or
10
+ * import { viteClickUIConfig } from '@clickhouse/click-ui/config';
11
+ *
12
+ * export default defineConfig({
13
+ * plugins: [clickUIConfig()],
14
+ * });
15
+ * ```
16
+ *
17
+ * @example Webpack
18
+ * ```ts
19
+ * import { webpackClickUIConfig } from '@clickhouse/click-ui/config';
20
+ *
21
+ * module.exports = {
22
+ * plugins: [webpackClickUIConfig()],
23
+ * };
24
+ * ```
25
+ *
26
+ * @example Rollup
27
+ * ```ts
28
+ * import { rollupClickUIConfig } from '@clickhouse/click-ui/config';
29
+ *
30
+ * export default {
31
+ * plugins: [rollupClickUIConfig()],
32
+ * };
33
+ * ```
34
+ *
35
+ * @example Next.js
36
+ * ```ts
37
+ * import { nextClickUIConfig } from '@clickhouse/click-ui/config';
38
+ *
39
+ * export default nextClickUIConfig()({
40
+ * // your next config
41
+ * });
42
+ * ```
43
+ */
44
+ export { clickUIConfig as viteClickUIConfig } from './vite';
45
+ export { clickUIConfig as webpackClickUIConfig } from './webpack';
46
+ export { clickUIConfig as rollupClickUIConfig } from './rollup';
47
+ export { clickUIConfig as nextClickUIConfig } from './next';
48
+ export { clickUIConfig } from './vite';
49
+ export type { PluginOptions, LoadedConfig, BundlerDefines } from './types';
50
+ export { ClickUIConfigCore } from './core';
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Click UI Bundler Plugins
3
+ *
4
+ * Universal configuration plugins for Vite, Webpack, Rollup, and Next.js
5
+ *
6
+ * @example Vite
7
+ * ```ts
8
+ * import { clickUIConfig } from '@clickhouse/click-ui/config';
9
+ * // or
10
+ * import { viteClickUIConfig } from '@clickhouse/click-ui/config';
11
+ *
12
+ * export default defineConfig({
13
+ * plugins: [clickUIConfig()],
14
+ * });
15
+ * ```
16
+ *
17
+ * @example Webpack
18
+ * ```ts
19
+ * import { webpackClickUIConfig } from '@clickhouse/click-ui/config';
20
+ *
21
+ * module.exports = {
22
+ * plugins: [webpackClickUIConfig()],
23
+ * };
24
+ * ```
25
+ *
26
+ * @example Rollup
27
+ * ```ts
28
+ * import { rollupClickUIConfig } from '@clickhouse/click-ui/config';
29
+ *
30
+ * export default {
31
+ * plugins: [rollupClickUIConfig()],
32
+ * };
33
+ * ```
34
+ *
35
+ * @example Next.js
36
+ * ```ts
37
+ * import { nextClickUIConfig } from '@clickhouse/click-ui/config';
38
+ *
39
+ * export default nextClickUIConfig()({
40
+ * // your next config
41
+ * });
42
+ * ```
43
+ */
44
+ // Export bundler-specific plugins
45
+ export { clickUIConfig as viteClickUIConfig } from './vite';
46
+ export { clickUIConfig as webpackClickUIConfig } from './webpack';
47
+ export { clickUIConfig as rollupClickUIConfig } from './rollup';
48
+ export { clickUIConfig as nextClickUIConfig } from './next';
49
+ // Export default (Vite) for convenience
50
+ export { clickUIConfig } from './vite';
51
+ // Export core for advanced usage
52
+ export { ClickUIConfigCore } from './core';
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,kCAAkC;AAClC,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAE5D,wCAAwC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAKvC,iCAAiC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Next.js plugin for Click UI configuration
3
+ * Uses shared core for config discovery and CSS generation
4
+ */
5
+ import type { NextConfig } from 'next';
6
+ import type { PluginOptions } from './types';
7
+ export declare function clickUIConfig(options?: PluginOptions): (nextConfig?: NextConfig) => NextConfig;
8
+ //# sourceMappingURL=next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../config/next.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,wBAAgB,aAAa,CAAC,OAAO,GAAE,aAAkB,iBACnC,UAAU,KAAQ,UAAU,CAgEjD"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Next.js plugin for Click UI configuration
3
+ * Uses shared core for config discovery and CSS generation
4
+ */
5
+ import { ClickUIConfigCore } from './core';
6
+ import * as path from 'path';
7
+ import * as fs from 'fs';
8
+ export function clickUIConfig(options = {}) {
9
+ return (nextConfig = {}) => {
10
+ const core = new ClickUIConfigCore(options);
11
+ return {
12
+ ...nextConfig,
13
+ // Extend webpack configuration
14
+ webpack(config, context) {
15
+ const { isServer, dev, dir } = context;
16
+ const root = dir || process.cwd();
17
+ // Initialize Click UI config
18
+ (async () => {
19
+ try {
20
+ const result = await core.initialize(root);
21
+ const loadedConfig = result.config;
22
+ const cssVariables = result.cssVariables;
23
+ // Add webpack DefinePlugin for global constants
24
+ const webpack = await import('webpack');
25
+ const defines = core.createDefines(loadedConfig);
26
+ config.plugins = config.plugins || [];
27
+ config.plugins.push(new webpack.DefinePlugin(defines));
28
+ // Write CSS file to public directory (Next.js specific)
29
+ if (!isServer && cssVariables && cssVariables.length > 0) {
30
+ const publicDir = path.join(root, 'public');
31
+ const cssFilePath = path.join(publicDir, core.getCSSOutputFilename());
32
+ // Ensure public directory exists
33
+ if (!fs.existsSync(publicDir)) {
34
+ fs.mkdirSync(publicDir, { recursive: true });
35
+ }
36
+ // Write CSS file
37
+ fs.writeFileSync(cssFilePath, cssVariables, 'utf-8');
38
+ if (core.isVerbose()) {
39
+ console.log(`✅ Generated ${core.getCSSOutputFilename()} in public/`);
40
+ }
41
+ }
42
+ }
43
+ catch (error) {
44
+ console.error('❌ Failed to initialize Click UI config:', error);
45
+ }
46
+ })();
47
+ // Call original webpack config if it exists
48
+ if (typeof nextConfig.webpack === 'function') {
49
+ return nextConfig.webpack(config, context);
50
+ }
51
+ return config;
52
+ },
53
+ // Add env variables for build-time access
54
+ env: {
55
+ ...nextConfig.env,
56
+ CLICK_UI_CONFIG_LOADED: 'true',
57
+ },
58
+ };
59
+ };
60
+ }
61
+ //# sourceMappingURL=next.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.js","sourceRoot":"","sources":["../../config/next.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,MAAM,UAAU,aAAa,CAAC,UAAyB,EAAE;IACvD,OAAO,CAAC,aAAyB,EAAE,EAAc,EAAE;QACjD,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE5C,OAAO;YACL,GAAG,UAAU;YAEb,+BAA+B;YAC/B,OAAO,CAAC,MAAM,EAAE,OAAO;gBACrB,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;gBACvC,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAElC,6BAA6B;gBAC7B,CAAC,KAAK,IAAI,EAAE;oBACV,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;wBACnC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;wBAEzC,gDAAgD;wBAChD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;wBACxC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;wBAEjD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;wBACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CACjB,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAClC,CAAC;wBAEF,wDAAwD;wBACxD,IAAI,CAAC,QAAQ,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;4BAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;4BAEtE,iCAAiC;4BACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC/C,CAAC;4BAED,iBAAiB;4BACjB,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;4BAErD,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;gCACrB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;4BACvE,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;gBAEL,4CAA4C;gBAC5C,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBAC7C,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC7C,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,0CAA0C;YAC1C,GAAG,EAAE;gBACH,GAAG,UAAU,CAAC,GAAG;gBACjB,sBAAsB,EAAE,MAAM;aAC/B;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Rollup plugin for Click UI configuration
3
+ * Uses shared core for config discovery and CSS generation
4
+ */
5
+ import type { Plugin } from 'rollup';
6
+ import type { PluginOptions } from './types';
7
+ export declare function clickUIConfig(options?: PluginOptions): Plugin;
8
+ //# sourceMappingURL=rollup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../config/rollup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CAgFjE"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Rollup plugin for Click UI configuration
3
+ * Uses shared core for config discovery and CSS generation
4
+ */
5
+ import { ClickUIConfigCore } from './core';
6
+ export function clickUIConfig(options = {}) {
7
+ const core = new ClickUIConfigCore(options);
8
+ let loadedConfig = null;
9
+ let cssVariables = '';
10
+ let resolvedRoot;
11
+ return {
12
+ name: 'click-ui-config',
13
+ // Build start hook - initialize config
14
+ async buildStart() {
15
+ try {
16
+ resolvedRoot = process.cwd();
17
+ const result = await core.initialize(resolvedRoot);
18
+ loadedConfig = result.config;
19
+ cssVariables = result.cssVariables;
20
+ // Watch config file for changes
21
+ if (result.configFile) {
22
+ this.addWatchFile(result.configFile);
23
+ }
24
+ if (core.isVerbose()) {
25
+ console.log('✅ Click UI config loaded for Rollup');
26
+ }
27
+ }
28
+ catch (error) {
29
+ console.error('❌ Failed to initialize Click UI config:', error);
30
+ loadedConfig = {};
31
+ cssVariables = '';
32
+ }
33
+ },
34
+ // Transform code to inject defines
35
+ transform(code, id) {
36
+ // Skip non-JS/TS files
37
+ if (!id.match(/\.(js|ts|jsx|tsx|mjs|cjs)$/)) {
38
+ return null;
39
+ }
40
+ // Replace global constants
41
+ const defines = core.createDefines(loadedConfig);
42
+ let transformedCode = code;
43
+ let hasReplacement = false;
44
+ Object.entries(defines).forEach(([key, value]) => {
45
+ const regex = new RegExp(`\\b${key}\\b`, 'g');
46
+ if (regex.test(transformedCode)) {
47
+ transformedCode = transformedCode.replace(regex, value);
48
+ hasReplacement = true;
49
+ }
50
+ });
51
+ if (hasReplacement) {
52
+ return {
53
+ code: transformedCode,
54
+ map: null,
55
+ };
56
+ }
57
+ return null;
58
+ },
59
+ // Generate bundle hook - emit CSS file
60
+ generateBundle() {
61
+ if (cssVariables && cssVariables.length > 0) {
62
+ const filename = core.getCSSOutputFilename();
63
+ this.emitFile({
64
+ type: 'asset',
65
+ fileName: filename,
66
+ source: cssVariables,
67
+ });
68
+ if (core.isVerbose()) {
69
+ console.log(`✅ Generated ${filename}`);
70
+ }
71
+ }
72
+ },
73
+ };
74
+ }
75
+ //# sourceMappingURL=rollup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup.js","sourceRoot":"","sources":["../../config/rollup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAG3C,MAAM,UAAU,aAAa,CAAC,UAAyB,EAAE;IACvD,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,YAAY,GAAQ,IAAI,CAAC;IAC7B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,YAAoB,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,iBAAiB;QAEvB,uCAAuC;QACvC,KAAK,CAAC,UAAU;YACd,IAAI,CAAC;gBACH,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBAEnD,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC7B,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBAEnC,gCAAgC;gBAChC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACvC,CAAC;gBAED,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;gBAChE,YAAY,GAAG,EAAE,CAAC;gBAClB,YAAY,GAAG,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,uBAAuB;YACvB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,2BAA2B;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACjD,IAAI,eAAe,GAAG,IAAI,CAAC;YAC3B,IAAI,cAAc,GAAG,KAAK,CAAC;YAE3B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC/C,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9C,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;oBAChC,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACxD,cAAc,GAAG,IAAI,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO;oBACL,IAAI,EAAE,eAAe;oBACrB,GAAG,EAAE,IAAI;iBACV,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uCAAuC;QACvC,cAAc;YACZ,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAE7C,IAAI,CAAC,QAAQ,CAAC;oBACZ,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,QAAQ;oBAClB,MAAM,EAAE,YAAY;iBACrB,CAAC,CAAC;gBAEH,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Shared types for Click UI bundler plugins
3
+ */
4
+ export interface PluginOptions {
5
+ /**
6
+ * Path to config file (relative to project root)
7
+ * @default 'click-ui.config.ts'
8
+ */
9
+ configPath?: string;
10
+ /**
11
+ * Custom CSS output filename
12
+ * @default 'theme-vars.css'
13
+ */
14
+ cssOutput?: string;
15
+ /**
16
+ * Enable verbose logging
17
+ * @default false
18
+ */
19
+ verbose?: boolean;
20
+ /**
21
+ * Skip config file discovery (use defaults)
22
+ * @default false
23
+ */
24
+ skipConfigDiscovery?: boolean;
25
+ }
26
+ export interface LoadedConfig {
27
+ configFile: string | null;
28
+ config: any;
29
+ cssVariables: string;
30
+ }
31
+ export interface BundlerDefines {
32
+ [key: string]: string;
33
+ }
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,GAAG,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared types for Click UI bundler plugins
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../config/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Vite plugin for Click UI configuration
3
+ * Uses shared core for config discovery and CSS generation
4
+ */
5
+ import type { Plugin } from 'vite';
6
+ import type { PluginOptions } from './types';
7
+ export declare function clickUIConfig(options?: PluginOptions): Plugin;
8
+ //# sourceMappingURL=vite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../../config/vite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,MAAM,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CAwEjE"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Vite plugin for Click UI configuration
3
+ * Uses shared core for config discovery and CSS generation
4
+ */
5
+ import { ClickUIConfigCore } from './core';
6
+ export function clickUIConfig(options = {}) {
7
+ const core = new ClickUIConfigCore(options);
8
+ let resolvedRoot;
9
+ let loadedConfig = null;
10
+ let cssVariables = '';
11
+ return {
12
+ name: 'click-ui-config',
13
+ // Load config during Vite config resolution
14
+ async config(config) {
15
+ const root = config.root || process.cwd();
16
+ resolvedRoot = root;
17
+ try {
18
+ const result = await core.initialize(root);
19
+ loadedConfig = result.config;
20
+ cssVariables = result.cssVariables;
21
+ // Return Vite config modifications
22
+ return {
23
+ define: core.createDefines(loadedConfig),
24
+ };
25
+ }
26
+ catch (error) {
27
+ console.error('❌ Failed to initialize Click UI config:', error);
28
+ return {
29
+ define: core.createDefines({}),
30
+ };
31
+ }
32
+ },
33
+ // Store resolved config for later use
34
+ configResolved(config) {
35
+ resolvedRoot = config.root;
36
+ },
37
+ // Emit CSS file with theme variables
38
+ generateBundle() {
39
+ if (cssVariables && cssVariables.length > 0) {
40
+ this.emitFile({
41
+ type: 'asset',
42
+ fileName: core.getCSSOutputFilename(),
43
+ source: cssVariables,
44
+ });
45
+ if (core.isVerbose()) {
46
+ console.log(`✅ Generated ${core.getCSSOutputFilename()}`);
47
+ }
48
+ }
49
+ },
50
+ // Watch config file for changes in dev mode
51
+ async handleHotUpdate({ file, server }) {
52
+ const configFile = core.findConfigFile(resolvedRoot);
53
+ if (configFile && file === configFile) {
54
+ console.log('🔄 Config file changed, reloading...');
55
+ core.clearCache();
56
+ // Re-initialize with new config
57
+ const result = await core.initialize(resolvedRoot);
58
+ loadedConfig = result.config;
59
+ cssVariables = result.cssVariables;
60
+ // Trigger full reload
61
+ server.ws.send({
62
+ type: 'full-reload',
63
+ path: '*',
64
+ });
65
+ }
66
+ },
67
+ };
68
+ }
69
+ //# sourceMappingURL=vite.js.map