lapikit 0.0.0-insiders.f0512a6 → 0.0.0-insiders.f206df2
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/bin/configuration.js +7 -3
- package/bin/presets.js +1 -0
- package/dist/actions/index.d.ts +0 -1
- package/dist/actions/index.js +0 -1
- package/dist/colors.css +0 -0
- package/dist/plugin/css.d.ts +1 -0
- package/dist/plugin/css.js +79 -0
- package/dist/plugin/preset-v2.d.ts +108 -0
- package/dist/plugin/preset-v2.js +126 -0
- package/dist/plugin/vitejs.d.ts +1 -2
- package/dist/plugin/vitejs.js +31 -7
- package/package.json +3 -2
package/bin/configuration.js
CHANGED
|
@@ -137,7 +137,7 @@ async function addLapikitToViteConfig(viteConfigFile, pathConfig, typescript) {
|
|
|
137
137
|
try {
|
|
138
138
|
const content = await fs.readFile(viteConfigFile, 'utf-8');
|
|
139
139
|
const lapikitImport = `import { lapikit } from 'lapikit/vite';`;
|
|
140
|
-
const configPath = `${pathConfig
|
|
140
|
+
const configPath = `${pathConfig}/lapikit.${typescript ? 'ts' : 'js'}`;
|
|
141
141
|
const lapikitPlugin = `lapikit({ config: '${configPath}' })`;
|
|
142
142
|
|
|
143
143
|
// Check if lapikit import already exists
|
|
@@ -248,7 +248,7 @@ async function addLapikitToViteConfig(viteConfigFile, pathConfig, typescript) {
|
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
export async function initConfiguration(options) {
|
|
251
|
-
const { typescript, pathConfig, formatCSS } = options;
|
|
251
|
+
const { typescript, pathConfig, formatCSS, pathCSS } = options;
|
|
252
252
|
const ext = typescript ? 'ts' : 'js';
|
|
253
253
|
const targetDir = path.resolve(process.cwd(), pathConfig);
|
|
254
254
|
const targetFile = path.join(targetDir, `lapikit.${ext}`);
|
|
@@ -289,10 +289,14 @@ export async function initConfiguration(options) {
|
|
|
289
289
|
throw error;
|
|
290
290
|
}
|
|
291
291
|
|
|
292
|
+
// Add Import Lapikit css
|
|
293
|
+
if (formatCSS !== 'css') {
|
|
294
|
+
console.log('need custom import (Preview)', pathCSS);
|
|
295
|
+
}
|
|
292
296
|
// Add lapikit to vite.config file
|
|
293
297
|
try {
|
|
294
298
|
const viteConfigFile = await findViteConfigFile(process.cwd(), typescript);
|
|
295
|
-
await addLapikitToViteConfig(viteConfigFile);
|
|
299
|
+
await addLapikitToViteConfig(viteConfigFile, pathConfig, typescript);
|
|
296
300
|
} catch (error) {
|
|
297
301
|
terminal('warn', `Warning: Could not update vite.config file: ${error.message}`);
|
|
298
302
|
terminal('error', `Error adding lapikit to vite config: ${error.message}`);
|
package/bin/presets.js
CHANGED
package/dist/actions/index.d.ts
CHANGED
package/dist/actions/index.js
CHANGED
package/dist/colors.css
ADDED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function css(configuration: any): Promise<void>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { deepMerge } from '../internal/deepMerge.js';
|
|
2
|
+
import { preset } from './preset-v2.js';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { dirname } from 'path';
|
|
5
|
+
import fsPromises from 'fs/promises';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = dirname(__filename);
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
|
+
export async function css(configuration) {
|
|
11
|
+
console.log('VALUE configuration', configuration);
|
|
12
|
+
console.log('configuration?.theme?.themes', configuration?.theme?.themes);
|
|
13
|
+
// states
|
|
14
|
+
const defaultTheme = configuration?.theme?.defaultTheme || preset.theme.defaultTheme;
|
|
15
|
+
const themesMerged = deepMerge(preset.theme.themes, configuration?.theme?.themes || {});
|
|
16
|
+
let response = '';
|
|
17
|
+
console.log('VALUE themesMerged', themesMerged);
|
|
18
|
+
for (const [name, values] of Object.entries(themesMerged)) {
|
|
19
|
+
let css = defaultTheme === name ? `:root,\n.${name} {\n` : `.${name} {\n`;
|
|
20
|
+
// ref
|
|
21
|
+
const ref = values?.dark ? preset.theme.themes.dark : preset.theme.themes.light;
|
|
22
|
+
// colors
|
|
23
|
+
css += ` color-scheme: ${values?.dark ? 'dark' : 'light'};\n`;
|
|
24
|
+
for (const [varName, varValue] of Object.entries(deepMerge(ref.colors, values?.colors) || {})) {
|
|
25
|
+
css += ` --system-${varName}: ${varValue};\n`;
|
|
26
|
+
}
|
|
27
|
+
// console.log('VALUE', values, deepMerge(values?.variables, ref.variables));
|
|
28
|
+
// variables
|
|
29
|
+
for (const [name, varValue] of Object.entries(deepMerge(ref.variables, values?.variables) || {})) {
|
|
30
|
+
css += ` --kit-${name}: ${varValue};\n`;
|
|
31
|
+
}
|
|
32
|
+
css += '}\n';
|
|
33
|
+
// console.log(`Themes colors (${name}):`, css);
|
|
34
|
+
response += css;
|
|
35
|
+
}
|
|
36
|
+
// console.log('All themes CSS:', response);
|
|
37
|
+
//typography
|
|
38
|
+
// states
|
|
39
|
+
const defaultTypography = configuration?.typography?.defaultTypography || preset.typography.defaultTypography;
|
|
40
|
+
for (const [name, values] of Object.entries(deepMerge(preset.typography.fonts, configuration?.typography?.fonts || {}))) {
|
|
41
|
+
let css = '';
|
|
42
|
+
css += defaultTypography === name ? `:root {\n` : `.${name} {\n`;
|
|
43
|
+
// fonts
|
|
44
|
+
for (const [fontName, fontValue] of Object.entries(values || {})) {
|
|
45
|
+
css += ` --kit-font-${fontName}: ${parser(fontValue)};\n`;
|
|
46
|
+
}
|
|
47
|
+
css += '}\n';
|
|
48
|
+
response += css;
|
|
49
|
+
}
|
|
50
|
+
//styles
|
|
51
|
+
response += `:root {\n`;
|
|
52
|
+
for (const [name, values] of Object.entries(deepMerge(preset.styles, configuration?.styles || {}))) {
|
|
53
|
+
let css = '';
|
|
54
|
+
if (values && typeof values === 'object') {
|
|
55
|
+
for (const [styleName, styleValue] of Object.entries(values || {})) {
|
|
56
|
+
css += ` --prism-${name}-${styleName}: ${parser(styleValue)};\n`;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
css += ` --prism-${name}: ${parser(values)};\n`;
|
|
61
|
+
}
|
|
62
|
+
for (const [styleName, styleValue] of Object.entries(values || {})) {
|
|
63
|
+
console.log('VALUE', styleName, styleValue, typeof styleValue);
|
|
64
|
+
for (const [subStyleName, subStyleValue] of Object.entries(styleValue)) {
|
|
65
|
+
css += ` --prism-${styleName}-${subStyleName}: ${parser(subStyleValue)};\n`;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
response += css;
|
|
69
|
+
}
|
|
70
|
+
response += '}\n';
|
|
71
|
+
fsPromises.writeFile(path.resolve(__dirname, '../colors.css'), response);
|
|
72
|
+
}
|
|
73
|
+
const parser = (value) => {
|
|
74
|
+
if (typeof value === 'number')
|
|
75
|
+
return `${value}px`;
|
|
76
|
+
if (Array.isArray(value))
|
|
77
|
+
return value.join(', ');
|
|
78
|
+
return value;
|
|
79
|
+
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
export declare const preset: {
|
|
2
|
+
breakpoints: {
|
|
3
|
+
devices: {
|
|
4
|
+
desktop: number;
|
|
5
|
+
tablet: number;
|
|
6
|
+
mobile: number;
|
|
7
|
+
};
|
|
8
|
+
thresholds: {
|
|
9
|
+
base: number;
|
|
10
|
+
xs: number;
|
|
11
|
+
sm: number;
|
|
12
|
+
md: number;
|
|
13
|
+
lg: number;
|
|
14
|
+
xl: number;
|
|
15
|
+
'2xl': number;
|
|
16
|
+
'3xl': number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
theme: {
|
|
20
|
+
defaultTheme: string;
|
|
21
|
+
themes: {
|
|
22
|
+
light: {
|
|
23
|
+
dark: boolean;
|
|
24
|
+
colors: {
|
|
25
|
+
blue: string;
|
|
26
|
+
green: string;
|
|
27
|
+
red: string;
|
|
28
|
+
yellow: string;
|
|
29
|
+
orange: string;
|
|
30
|
+
purple: string;
|
|
31
|
+
pink: string;
|
|
32
|
+
indigo: string;
|
|
33
|
+
cyan: string;
|
|
34
|
+
gray: string;
|
|
35
|
+
'gray-2': string;
|
|
36
|
+
'gray-3': string;
|
|
37
|
+
'gray-4': string;
|
|
38
|
+
'gray-5': string;
|
|
39
|
+
'gray-6': string;
|
|
40
|
+
background: string;
|
|
41
|
+
'secondary-background': string;
|
|
42
|
+
'tertiary-background': string;
|
|
43
|
+
label: string;
|
|
44
|
+
'secondary-label': string;
|
|
45
|
+
};
|
|
46
|
+
variables: {
|
|
47
|
+
info: string;
|
|
48
|
+
success: string;
|
|
49
|
+
error: string;
|
|
50
|
+
warning: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
dark: {
|
|
54
|
+
dark: boolean;
|
|
55
|
+
colors: {
|
|
56
|
+
blue: string;
|
|
57
|
+
green: string;
|
|
58
|
+
red: string;
|
|
59
|
+
yellow: string;
|
|
60
|
+
orange: string;
|
|
61
|
+
purple: string;
|
|
62
|
+
pink: string;
|
|
63
|
+
indigo: string;
|
|
64
|
+
cyan: string;
|
|
65
|
+
gray: string;
|
|
66
|
+
'gray-2': string;
|
|
67
|
+
'gray-3': string;
|
|
68
|
+
'gray-4': string;
|
|
69
|
+
'gray-5': string;
|
|
70
|
+
'gray-6': string;
|
|
71
|
+
background: string;
|
|
72
|
+
'secondary-background': string;
|
|
73
|
+
'tertiary-background': string;
|
|
74
|
+
label: string;
|
|
75
|
+
'secondary-label': string;
|
|
76
|
+
};
|
|
77
|
+
variables: {
|
|
78
|
+
info: string;
|
|
79
|
+
success: string;
|
|
80
|
+
error: string;
|
|
81
|
+
warning: string;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
typography: {
|
|
87
|
+
defaultTypography: string;
|
|
88
|
+
fonts: {
|
|
89
|
+
default: {
|
|
90
|
+
sans: string[];
|
|
91
|
+
mono: string[];
|
|
92
|
+
serif: string[];
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
styles: {
|
|
97
|
+
spacing: string;
|
|
98
|
+
shape: {
|
|
99
|
+
sm: string;
|
|
100
|
+
md: string;
|
|
101
|
+
lg: string;
|
|
102
|
+
xl: string;
|
|
103
|
+
'2xl': string;
|
|
104
|
+
'3xl': string;
|
|
105
|
+
full: string;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
const variables = {
|
|
2
|
+
info: 'var(--system-blue)',
|
|
3
|
+
success: 'var(--system-green)',
|
|
4
|
+
error: 'var(--system-red)',
|
|
5
|
+
warning: 'var(--system-yellow)'
|
|
6
|
+
};
|
|
7
|
+
export const preset = {
|
|
8
|
+
breakpoints: {
|
|
9
|
+
devices: {
|
|
10
|
+
desktop: 1024, //64rem (lg)
|
|
11
|
+
tablet: 768, //48rem (md)
|
|
12
|
+
mobile: 375 //28rem (sm)
|
|
13
|
+
},
|
|
14
|
+
thresholds: {
|
|
15
|
+
base: 0, // 0px
|
|
16
|
+
xs: 448, //28rem
|
|
17
|
+
sm: 640, //40rem
|
|
18
|
+
md: 768, //48rem
|
|
19
|
+
lg: 1024, //64rem
|
|
20
|
+
xl: 1280, //80rem
|
|
21
|
+
'2xl': 1536, //96rem
|
|
22
|
+
'3xl': 1792 //112rem
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
theme: {
|
|
26
|
+
defaultTheme: 'light',
|
|
27
|
+
themes: {
|
|
28
|
+
light: {
|
|
29
|
+
dark: false,
|
|
30
|
+
colors: {
|
|
31
|
+
blue: '#007AFF',
|
|
32
|
+
green: '#34C759',
|
|
33
|
+
red: '#FF3B30',
|
|
34
|
+
yellow: '#FFCC00',
|
|
35
|
+
orange: '#FF9500',
|
|
36
|
+
purple: '#AF52DE',
|
|
37
|
+
pink: '#FF2D55',
|
|
38
|
+
indigo: '#5856D6',
|
|
39
|
+
cyan: '#5AC8FA',
|
|
40
|
+
gray: '#8E8E93',
|
|
41
|
+
'gray-2': '#AEAEB2',
|
|
42
|
+
'gray-3': '#C7C7CC',
|
|
43
|
+
'gray-4': '#D1D1D6',
|
|
44
|
+
'gray-5': '#E5E5EA',
|
|
45
|
+
'gray-6': '#F2F2F7',
|
|
46
|
+
background: '#FFFFFF',
|
|
47
|
+
'secondary-background': '#F2F2F7',
|
|
48
|
+
'tertiary-background': '#EFEFF4',
|
|
49
|
+
label: '#000000',
|
|
50
|
+
'secondary-label': 'rgba(60,60,67,0.6)'
|
|
51
|
+
},
|
|
52
|
+
variables: variables
|
|
53
|
+
},
|
|
54
|
+
dark: {
|
|
55
|
+
dark: true,
|
|
56
|
+
colors: {
|
|
57
|
+
blue: '#0A84FF',
|
|
58
|
+
green: '#30D158',
|
|
59
|
+
red: '#FF453A',
|
|
60
|
+
yellow: '#FFD60A',
|
|
61
|
+
orange: '#FF9F0A',
|
|
62
|
+
purple: '#BF5AF2',
|
|
63
|
+
pink: '#FF375F',
|
|
64
|
+
indigo: '#5E5CE6',
|
|
65
|
+
cyan: '#64D2FF',
|
|
66
|
+
gray: '#8E8E93',
|
|
67
|
+
'gray-2': '#636366',
|
|
68
|
+
'gray-3': '#48484A',
|
|
69
|
+
'gray-4': '#3A3A3C',
|
|
70
|
+
'gray-5': '#2C2C2E',
|
|
71
|
+
'gray-6': '#1C1C1E',
|
|
72
|
+
background: '#000000',
|
|
73
|
+
'secondary-background': '#1C1C1E',
|
|
74
|
+
'tertiary-background': '#2C2C2E',
|
|
75
|
+
label: '#FFFFFF',
|
|
76
|
+
'secondary-label': 'rgba(235,235,245,0.6)'
|
|
77
|
+
},
|
|
78
|
+
variables: variables
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
typography: {
|
|
83
|
+
defaultTypography: 'default',
|
|
84
|
+
fonts: {
|
|
85
|
+
default: {
|
|
86
|
+
sans: [
|
|
87
|
+
'system-ui',
|
|
88
|
+
'-apple-system',
|
|
89
|
+
'BlinkMacSystemFont',
|
|
90
|
+
'Segoe UI',
|
|
91
|
+
'Roboto',
|
|
92
|
+
'Helvetica Neue',
|
|
93
|
+
'Arial',
|
|
94
|
+
'sans-serif',
|
|
95
|
+
'Apple Color Emoji',
|
|
96
|
+
'Segoe UI Emoji',
|
|
97
|
+
'Segoe UI Symbol'
|
|
98
|
+
],
|
|
99
|
+
mono: [
|
|
100
|
+
'SFMono-Regular',
|
|
101
|
+
'ui-monospace',
|
|
102
|
+
'SF Mono',
|
|
103
|
+
'Menlo',
|
|
104
|
+
'Monaco',
|
|
105
|
+
'Consolas',
|
|
106
|
+
'Liberation Mono',
|
|
107
|
+
'Courier New',
|
|
108
|
+
'monospace'
|
|
109
|
+
],
|
|
110
|
+
serif: ['Merriweather', 'Georgia', 'Cambria', 'Times New Roman', 'Times', 'serif']
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
styles: {
|
|
115
|
+
spacing: '0.125rem', // 2px
|
|
116
|
+
shape: {
|
|
117
|
+
sm: '0.125rem', // 2px
|
|
118
|
+
md: '0.25rem', // 4px
|
|
119
|
+
lg: '0.5rem', // 8px
|
|
120
|
+
xl: '0.75rem', // 12px
|
|
121
|
+
'2xl': '1rem', // 16px
|
|
122
|
+
'3xl': '1.5rem', // 24px
|
|
123
|
+
full: '9999px' // 9999px
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
package/dist/plugin/vitejs.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { ViteDevServer } from 'vite';
|
|
2
2
|
type Lapikit = {
|
|
3
|
-
minify?: boolean;
|
|
4
3
|
config?: string;
|
|
5
4
|
};
|
|
6
|
-
export declare function lapikit({
|
|
5
|
+
export declare function lapikit({ config }?: Lapikit): Promise<{
|
|
7
6
|
name: string;
|
|
8
7
|
configResolved(): Promise<void>;
|
|
9
8
|
configureServer(server: ViteDevServer): Promise<void>;
|
package/dist/plugin/vitejs.js
CHANGED
|
@@ -4,10 +4,34 @@ import { parseConfig } from './modules/config.js';
|
|
|
4
4
|
import { terminal } from '../internal/terminal.js';
|
|
5
5
|
import path from 'path';
|
|
6
6
|
import fs from 'fs';
|
|
7
|
+
import { css } from './css.js';
|
|
7
8
|
const app = process.cwd();
|
|
8
|
-
|
|
9
|
-
const pathConfig = path.resolve(app,
|
|
10
|
-
|
|
9
|
+
async function getLapikitConfig(filePath) {
|
|
10
|
+
const pathConfig = path.resolve(app, filePath);
|
|
11
|
+
if (!fs.existsSync(pathConfig))
|
|
12
|
+
process.exit(1);
|
|
13
|
+
const code = fs.readFileSync(pathConfig, 'utf-8');
|
|
14
|
+
const match = code.match(/createLapikit\s*\(\s*({[\s\S]*?})\s*\)/);
|
|
15
|
+
let options = {};
|
|
16
|
+
if (match && match[1]) {
|
|
17
|
+
try {
|
|
18
|
+
options = new Function('return ' + match[1])();
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
console.error('Error parsing lapikit config:', e);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
console.error('Lapikit not found');
|
|
26
|
+
}
|
|
27
|
+
return options;
|
|
28
|
+
}
|
|
29
|
+
export async function lapikit({ config } = {}) {
|
|
30
|
+
if (config) {
|
|
31
|
+
const value = await getLapikitConfig(config);
|
|
32
|
+
// console.log(value);
|
|
33
|
+
await css(value);
|
|
34
|
+
}
|
|
11
35
|
return {
|
|
12
36
|
name: 'lapikit/vite.js',
|
|
13
37
|
async configResolved() {
|
|
@@ -17,11 +41,11 @@ export async function lapikit({ minify = false, config = 'src/plugins/lapikit.js
|
|
|
17
41
|
terminal('info', 'lapikit is up!');
|
|
18
42
|
},
|
|
19
43
|
async configureServer(server) {
|
|
20
|
-
server.watcher.add(config);
|
|
44
|
+
server.watcher.add('./lapikit.config.js');
|
|
21
45
|
server.watcher.on('change', async (filePath) => {
|
|
22
|
-
if (String(filePath).includes(config)) {
|
|
23
|
-
const
|
|
24
|
-
const result = await parseConfig(
|
|
46
|
+
if (String(filePath).includes('lapikit.config.js')) {
|
|
47
|
+
const config = await importer();
|
|
48
|
+
const result = await parseConfig(config);
|
|
25
49
|
await processCSS(result);
|
|
26
50
|
terminal('info', 'lapikit config reloaded');
|
|
27
51
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lapikit",
|
|
3
|
-
"version": "0.0.0-insiders.
|
|
3
|
+
"version": "0.0.0-insiders.f206df2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -59,7 +59,8 @@
|
|
|
59
59
|
"./actions": {
|
|
60
60
|
"default": "./dist/actions/index.js"
|
|
61
61
|
},
|
|
62
|
-
"./css": "./dist/styles.css"
|
|
62
|
+
"./css": "./dist/styles.css",
|
|
63
|
+
"./styles": "./dist/colors.css"
|
|
63
64
|
},
|
|
64
65
|
"peerDependencies": {
|
|
65
66
|
"svelte": "^5.0.0"
|