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.
@@ -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 || 'src/plugins'}/lapikit.${typescript ? 'ts' : 'js'}`;
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
@@ -8,6 +8,7 @@ function presets({ adapterCSS }) {
8
8
 
9
9
  if (adapterCSS === 'css') {
10
10
  content += `// Styles\n`;
11
+ content += `import 'lapikit/styles';\n`;
11
12
  content += `import 'lapikit/css';\n\n`;
12
13
  }
13
14
 
@@ -1,2 +1 @@
1
1
  export * from '../components/accordion/accordion.svelte.js';
2
- export * from '../internal/mediaQueries.js';
@@ -1,2 +1 @@
1
1
  export * from '../components/accordion/accordion.svelte.js';
2
- export * from '../internal/mediaQueries.js';
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
+ };
@@ -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({ minify, config }?: Lapikit): Promise<{
5
+ export declare function lapikit({ config }?: Lapikit): Promise<{
7
6
  name: string;
8
7
  configResolved(): Promise<void>;
9
8
  configureServer(server: ViteDevServer): Promise<void>;
@@ -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
- export async function lapikit({ minify = false, config = 'src/plugins/lapikit.js' } = {}) {
9
- const pathConfig = path.resolve(app, config);
10
- console.log('pathConfig:', pathConfig);
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 importedConfig = await importer();
24
- const result = await parseConfig(importedConfig);
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.f0512a6",
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"