lapikit 0.0.0-insiders.116f092
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/LICENSE +21 -0
- package/README.md +1 -0
- package/bin/helper.js +74 -0
- package/bin/lapikit.js +54 -0
- package/bin/modules/adapter.js +52 -0
- package/bin/modules/preset.js +11 -0
- package/dist/actions/index.d.ts +1 -0
- package/dist/actions/index.js +1 -0
- package/dist/app.d.ts +13 -0
- package/dist/app.html +12 -0
- package/dist/assets/icons/arrow-down.svelte +10 -0
- package/dist/assets/icons/arrow-down.svelte.d.ts +26 -0
- package/dist/assets/icons/arrow-up.svelte +10 -0
- package/dist/assets/icons/arrow-up.svelte.d.ts +26 -0
- package/dist/assets/icons/close-fill.svelte +10 -0
- package/dist/assets/icons/close-fill.svelte.d.ts +26 -0
- package/dist/assets/icons/loading-fill.svelte +29 -0
- package/dist/assets/icons/loading-fill.svelte.d.ts +26 -0
- package/dist/components/accordion/accordion.css +113 -0
- package/dist/components/accordion/accordion.svelte +37 -0
- package/dist/components/accordion/accordion.svelte.d.ts +4 -0
- package/dist/components/accordion/accordion.svelte.js +24 -0
- package/dist/components/accordion/modules/accordion-item.svelte +94 -0
- package/dist/components/accordion/modules/accordion-item.svelte.d.ts +4 -0
- package/dist/components/accordion/types.d.ts +33 -0
- package/dist/components/accordion/types.js +1 -0
- package/dist/components/alert/alert.css +127 -0
- package/dist/components/alert/alert.svelte +89 -0
- package/dist/components/alert/alert.svelte.d.ts +4 -0
- package/dist/components/alert/types.d.ts +28 -0
- package/dist/components/alert/types.js +1 -0
- package/dist/components/app/app.css +16 -0
- package/dist/components/app/app.svelte +25 -0
- package/dist/components/app/app.svelte.d.ts +7 -0
- package/dist/components/app/types.d.ts +4 -0
- package/dist/components/app/types.js +1 -0
- package/dist/components/appbar/appbar.css +49 -0
- package/dist/components/appbar/appbar.svelte +41 -0
- package/dist/components/appbar/appbar.svelte.d.ts +4 -0
- package/dist/components/appbar/types.d.ts +15 -0
- package/dist/components/appbar/types.js +1 -0
- package/dist/components/aspect-ratio/aspect-ratio.css +19 -0
- package/dist/components/aspect-ratio/aspect-ratio.svelte +48 -0
- package/dist/components/aspect-ratio/aspect-ratio.svelte.d.ts +4 -0
- package/dist/components/aspect-ratio/types.d.ts +5 -0
- package/dist/components/aspect-ratio/types.js +1 -0
- package/dist/components/avatar/avatar.css +109 -0
- package/dist/components/avatar/avatar.svelte +46 -0
- package/dist/components/avatar/avatar.svelte.d.ts +4 -0
- package/dist/components/avatar/types.d.ts +22 -0
- package/dist/components/avatar/types.js +1 -0
- package/dist/components/button/button.css +276 -0
- package/dist/components/button/button.svelte +94 -0
- package/dist/components/button/button.svelte.d.ts +4 -0
- package/dist/components/button/types.d.ts +27 -0
- package/dist/components/button/types.js +1 -0
- package/dist/components/card/card.css +109 -0
- package/dist/components/card/card.svelte +50 -0
- package/dist/components/card/card.svelte.d.ts +4 -0
- package/dist/components/card/types.d.ts +18 -0
- package/dist/components/card/types.js +1 -0
- package/dist/components/chip/chip.css +199 -0
- package/dist/components/chip/chip.svelte +118 -0
- package/dist/components/chip/chip.svelte.d.ts +4 -0
- package/dist/components/chip/types.d.ts +30 -0
- package/dist/components/chip/types.js +1 -0
- package/dist/components/dialog/dialog.css +134 -0
- package/dist/components/dialog/dialog.svelte +67 -0
- package/dist/components/dialog/dialog.svelte.d.ts +4 -0
- package/dist/components/dialog/types.d.ts +24 -0
- package/dist/components/dialog/types.js +1 -0
- package/dist/components/dropdown/dropdown.css +22 -0
- package/dist/components/dropdown/dropdown.svelte +116 -0
- package/dist/components/dropdown/dropdown.svelte.d.ts +4 -0
- package/dist/components/dropdown/dropdown.svelte.js +148 -0
- package/dist/components/dropdown/types.d.ts +26 -0
- package/dist/components/dropdown/types.js +1 -0
- package/dist/components/icon/icon.css +76 -0
- package/dist/components/icon/icon.svelte +49 -0
- package/dist/components/icon/icon.svelte.d.ts +4 -0
- package/dist/components/icon/types.d.ts +16 -0
- package/dist/components/icon/types.js +1 -0
- package/dist/components/index.d.ts +21 -0
- package/dist/components/index.js +22 -0
- package/dist/components/list/list.css +195 -0
- package/dist/components/list/list.svelte +46 -0
- package/dist/components/list/list.svelte.d.ts +4 -0
- package/dist/components/list/modules/list-item.svelte +68 -0
- package/dist/components/list/modules/list-item.svelte.d.ts +4 -0
- package/dist/components/list/types.d.ts +36 -0
- package/dist/components/list/types.js +1 -0
- package/dist/components/modal/modal.css +140 -0
- package/dist/components/modal/modal.svelte +112 -0
- package/dist/components/modal/modal.svelte.d.ts +4 -0
- package/dist/components/modal/types.d.ts +26 -0
- package/dist/components/modal/types.js +1 -0
- package/dist/components/popover/popover.css +22 -0
- package/dist/components/popover/popover.svelte +73 -0
- package/dist/components/popover/popover.svelte.d.ts +4 -0
- package/dist/components/popover/popover.svelte.js +134 -0
- package/dist/components/popover/types.d.ts +20 -0
- package/dist/components/popover/types.js +1 -0
- package/dist/components/separator/separator.css +46 -0
- package/dist/components/separator/separator.svelte +37 -0
- package/dist/components/separator/separator.svelte.d.ts +4 -0
- package/dist/components/separator/types.d.ts +11 -0
- package/dist/components/separator/types.js +1 -0
- package/dist/components/spacer/spacer.css +3 -0
- package/dist/components/spacer/spacer.svelte +7 -0
- package/dist/components/spacer/spacer.svelte.d.ts +4 -0
- package/dist/components/spacer/types.d.ts +4 -0
- package/dist/components/spacer/types.js +1 -0
- package/dist/components/toolbar/toolbar.css +129 -0
- package/dist/components/toolbar/toolbar.svelte +47 -0
- package/dist/components/toolbar/toolbar.svelte.d.ts +4 -0
- package/dist/components/toolbar/types.d.ts +27 -0
- package/dist/components/toolbar/types.js +1 -0
- package/dist/components/tooltip/tooltip.css +124 -0
- package/dist/components/tooltip/tooltip.svelte +113 -0
- package/dist/components/tooltip/tooltip.svelte.d.ts +4 -0
- package/dist/components/tooltip/tooltip.svelte.js +131 -0
- package/dist/components/tooltip/types.d.ts +23 -0
- package/dist/components/tooltip/types.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -0
- package/dist/internal/ansi.d.ts +40 -0
- package/dist/internal/ansi.js +44 -0
- package/dist/internal/assets.svelte.d.ts +8 -0
- package/dist/internal/assets.svelte.js +52 -0
- package/dist/internal/clickOutside.d.ts +9 -0
- package/dist/internal/clickOutside.js +34 -0
- package/dist/internal/colors.d.ts +1 -0
- package/dist/internal/colors.js +50 -0
- package/dist/internal/index.d.ts +4 -0
- package/dist/internal/index.js +4 -0
- package/dist/internal/minify.d.ts +1 -0
- package/dist/internal/minify.js +10 -0
- package/dist/internal/scroll.d.ts +1 -0
- package/dist/internal/scroll.js +6 -0
- package/dist/internal/terminal.d.ts +1 -0
- package/dist/internal/terminal.js +12 -0
- package/dist/internal/types.d.ts +57 -0
- package/dist/internal/types.js +1 -0
- package/dist/internal/unit.d.ts +1 -0
- package/dist/internal/unit.js +11 -0
- package/dist/plugin/modules/config.d.ts +2 -0
- package/dist/plugin/modules/config.js +54 -0
- package/dist/plugin/modules/importer.d.ts +1 -0
- package/dist/plugin/modules/importer.js +15 -0
- package/dist/plugin/vitejs.d.ts +6 -0
- package/dist/plugin/vitejs.js +26 -0
- package/dist/preset.d.ts +2 -0
- package/dist/preset.js +92 -0
- package/dist/stores/index.d.ts +9 -0
- package/dist/stores/index.js +42 -0
- package/dist/style/animation.css +20 -0
- package/dist/style/css.d.ts +2 -0
- package/dist/style/css.js +34 -0
- package/dist/style/normalize.css +123 -0
- package/dist/style/parser/color.d.ts +5 -0
- package/dist/style/parser/color.js +88 -0
- package/dist/style/parser/component.d.ts +2 -0
- package/dist/style/parser/component.js +115 -0
- package/dist/style/parser/device.d.ts +2 -0
- package/dist/style/parser/device.js +40 -0
- package/dist/style/parser/index.d.ts +4 -0
- package/dist/style/parser/index.js +4 -0
- package/dist/style/parser/variable.d.ts +2 -0
- package/dist/style/parser/variable.js +25 -0
- package/dist/style/variable.css +12 -0
- package/dist/styles.css +0 -0
- package/dist/utils/x11.d.ts +4 -0
- package/dist/utils/x11.js +151 -0
- package/package.json +93 -0
package/dist/preset.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export const config = {
|
|
2
|
+
options: {
|
|
3
|
+
normalize: true, // true | false
|
|
4
|
+
minify: false // true | false
|
|
5
|
+
},
|
|
6
|
+
theme: {
|
|
7
|
+
colorScheme: 'dark', // 'light' | 'dark' | 'auto'
|
|
8
|
+
colors: {
|
|
9
|
+
primary: { light: 'oklch(45% 0.24 277.023)', dark: 'oklch(45% 0.24 277.023)' },
|
|
10
|
+
'on-primary': { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(14% 0.005 285.823)' },
|
|
11
|
+
secondary: { light: 'oklch(65% 0.241 354.308)', dark: 'oklch(65% 0.241 354.308)' },
|
|
12
|
+
'on-secondary': { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(14% 0.005 285.823)' },
|
|
13
|
+
tertiary: { light: 'oklch(77% 0.152 181.912)', dark: 'oklch(77% 0.152 181.912)' },
|
|
14
|
+
'on-tertiary': { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(14% 0.005 285.823)' },
|
|
15
|
+
neutral: { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(14% 0.005 285.823)' },
|
|
16
|
+
'on-neutral': { light: 'oklch(100% 0 0)', dark: 'oklch(100% 0 0)' },
|
|
17
|
+
info: { light: 'oklch(74% 0.16 232.661)', dark: 'oklch(74% 0.16 232.661)' },
|
|
18
|
+
'on-info': { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(14% 0.005 285.823)' },
|
|
19
|
+
success: { light: 'oklch(76% 0.177 163.223)', dark: 'oklch(76% 0.177 163.223)' },
|
|
20
|
+
'on-success': { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(14% 0.005 285.823)' },
|
|
21
|
+
warning: { light: 'oklch(82% 0.189 84.429)', dark: 'oklch(82% 0.189 84.429)' },
|
|
22
|
+
'on-warning': { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(14% 0.005 285.823)' },
|
|
23
|
+
error: { light: 'oklch(71% 0.194 13.428)', dark: 'oklch(71% 0.194 13.428)' },
|
|
24
|
+
'on-error': { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(14% 0.005 285.823)' },
|
|
25
|
+
base: { light: 'oklch(100% 0 0)', dark: 'oklch(25.33% 0.016 252.42)' },
|
|
26
|
+
'on-base': { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(100% 0 0)' },
|
|
27
|
+
surface: { light: 'oklch(98% 0 0)', dark: 'oklch(23.26% 0.014 253.1)' },
|
|
28
|
+
'on-surface': { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(100% 0 0)' },
|
|
29
|
+
container: { light: 'oklch(95% 0 0)', dark: 'oklch(21.15% 0.012 254.09)' },
|
|
30
|
+
'on-container': { light: 'oklch(14% 0.005 285.823)', dark: 'oklch(100% 0 0)' },
|
|
31
|
+
shadow: 'black',
|
|
32
|
+
scrim: 'oklch(0.00% 0.000 0)'
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
breakpoints: {
|
|
36
|
+
mobileBreakpoint: 'sm',
|
|
37
|
+
tabletBreakpoint: 'md',
|
|
38
|
+
laptopBreakpoint: 'xl',
|
|
39
|
+
thresholds: {
|
|
40
|
+
_default: 0, // 0px
|
|
41
|
+
xs: '28rem', //448px
|
|
42
|
+
sm: '40rem', //640px
|
|
43
|
+
md: '48rem', //768px
|
|
44
|
+
lg: '64rem', //1024px
|
|
45
|
+
xl: '80rem', //1280px
|
|
46
|
+
'2xl': '96rem', //1536px
|
|
47
|
+
'3xl': '112rem' //1792px
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
styles: {
|
|
51
|
+
spacing: '0.125rem', // 2px
|
|
52
|
+
corner: {
|
|
53
|
+
active: true, // true | false
|
|
54
|
+
radius: {
|
|
55
|
+
sm: '0.125rem', // 2px
|
|
56
|
+
md: '0.25rem', // 4px
|
|
57
|
+
lg: '0.5rem', // 8px
|
|
58
|
+
xl: '0.75rem', // 12px
|
|
59
|
+
'2xl': '1rem', // 16px
|
|
60
|
+
'3xl': '1.5rem', // 24px
|
|
61
|
+
full: '9999px' // 9999px
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
font: {
|
|
65
|
+
sans: [
|
|
66
|
+
'system-ui',
|
|
67
|
+
'-apple-system',
|
|
68
|
+
'BlinkMacSystemFont',
|
|
69
|
+
'Segoe UI',
|
|
70
|
+
'Roboto',
|
|
71
|
+
'Helvetica Neue',
|
|
72
|
+
'Arial',
|
|
73
|
+
'sans-serif',
|
|
74
|
+
'Apple Color Emoji',
|
|
75
|
+
'Segoe UI Emoji',
|
|
76
|
+
'Segoe UI Symbol'
|
|
77
|
+
],
|
|
78
|
+
mono: [
|
|
79
|
+
'SFMono-Regular',
|
|
80
|
+
'ui-monospace',
|
|
81
|
+
'SF Mono',
|
|
82
|
+
'Menlo',
|
|
83
|
+
'Monaco',
|
|
84
|
+
'Consolas',
|
|
85
|
+
'Liberation Mono',
|
|
86
|
+
'Courier New',
|
|
87
|
+
'monospace'
|
|
88
|
+
],
|
|
89
|
+
serif: ['Merriweather', 'Georgia', 'Cambria', 'Times New Roman', 'Times', 'serif']
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Writable } from 'svelte/store';
|
|
2
|
+
export declare const colorScheme: Writable<'auto' | 'dark' | 'light'>;
|
|
3
|
+
export declare const modalOpen: Writable<boolean | 'persistent'>;
|
|
4
|
+
export declare const modalStack: Writable<string[]>;
|
|
5
|
+
export declare function updateThemeStore(update: 'auto' | 'dark' | 'light'): void;
|
|
6
|
+
export declare function setColorScheme(scheme: 'auto' | 'dark' | 'light'): void;
|
|
7
|
+
export declare function setOpenModal(state: boolean | 'persistent'): void;
|
|
8
|
+
export declare const pushModal: (id: string) => void;
|
|
9
|
+
export declare const popModal: (id: string) => void;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { writable } from 'svelte/store';
|
|
2
|
+
// states
|
|
3
|
+
const colorScheme_default = 'light';
|
|
4
|
+
const modalOpen_default = false;
|
|
5
|
+
const isBrowser = typeof window !== 'undefined';
|
|
6
|
+
export const colorScheme = writable(colorScheme_default);
|
|
7
|
+
export const modalOpen = writable(modalOpen_default);
|
|
8
|
+
export const modalStack = writable([]);
|
|
9
|
+
export function updateThemeStore(update) {
|
|
10
|
+
colorScheme.update(() => {
|
|
11
|
+
if (isBrowser) {
|
|
12
|
+
const ref = document.documentElement.classList;
|
|
13
|
+
if (update === 'auto')
|
|
14
|
+
ref.remove('light', 'dark');
|
|
15
|
+
else {
|
|
16
|
+
ref.remove(update === 'dark' ? 'light' : 'dark');
|
|
17
|
+
ref.add(update === 'dark' ? 'dark' : 'light');
|
|
18
|
+
}
|
|
19
|
+
localStorage.setItem('@lapikit/theme', update);
|
|
20
|
+
}
|
|
21
|
+
return update;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export function setColorScheme(scheme) {
|
|
25
|
+
updateThemeStore(scheme);
|
|
26
|
+
}
|
|
27
|
+
export function setOpenModal(state) {
|
|
28
|
+
modalOpen.set(state);
|
|
29
|
+
}
|
|
30
|
+
export const pushModal = (id) => {
|
|
31
|
+
modalStack.update((stack) => {
|
|
32
|
+
if (!stack.includes(id))
|
|
33
|
+
return [...stack, id];
|
|
34
|
+
return stack;
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
export const popModal = (id) => {
|
|
38
|
+
modalStack.update((stack) => {
|
|
39
|
+
const newStack = stack.filter((m) => m !== id);
|
|
40
|
+
return newStack.length === 0 ? [] : newStack;
|
|
41
|
+
});
|
|
42
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
@keyframes button-click {
|
|
2
|
+
0% {
|
|
3
|
+
transform: scale(0.98);
|
|
4
|
+
}
|
|
5
|
+
40% {
|
|
6
|
+
transform: scale(1.02);
|
|
7
|
+
}
|
|
8
|
+
100% {
|
|
9
|
+
transform: scale(1);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@keyframes icon-rotate {
|
|
14
|
+
0% {
|
|
15
|
+
transform: rotate(10deg);
|
|
16
|
+
}
|
|
17
|
+
100% {
|
|
18
|
+
transform: rotate(380deg);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { fileURLToPath } from 'url';
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import fsPromises from 'fs/promises';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import { minify } from '../internal/minify.js';
|
|
7
|
+
import { colors, component, devices, variables } from './parser/index.js';
|
|
8
|
+
import { terminal } from '../internal/terminal.js';
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = dirname(__filename);
|
|
11
|
+
export const processCSS = async (config) => {
|
|
12
|
+
const _normalize = fs.readFileSync(path.resolve(__dirname, './normalize.css'), 'utf-8');
|
|
13
|
+
const _animation = fs.readFileSync(path.resolve(__dirname, './animation.css'), 'utf-8');
|
|
14
|
+
const _variables = fs.readFileSync(path.resolve(__dirname, './variable.css'), 'utf-8');
|
|
15
|
+
let styles = ``;
|
|
16
|
+
if (config.options.normalize)
|
|
17
|
+
styles += `${_normalize}\n`;
|
|
18
|
+
const colorScheme = colors(config);
|
|
19
|
+
const deviceDisplay = devices(config);
|
|
20
|
+
const variablesStyles = variables(config);
|
|
21
|
+
styles += `${colorScheme.root}\n`;
|
|
22
|
+
styles += `${variablesStyles}\n`;
|
|
23
|
+
styles += `${variablesStyles}\n`;
|
|
24
|
+
styles += `${_variables}\n`;
|
|
25
|
+
styles += `${colorScheme.className}\n`;
|
|
26
|
+
styles += `${deviceDisplay}\n`;
|
|
27
|
+
styles += component(config);
|
|
28
|
+
styles += `${_animation}\n`;
|
|
29
|
+
if (config.options.minify) {
|
|
30
|
+
styles = minify(styles);
|
|
31
|
+
terminal('success', 'css minified');
|
|
32
|
+
}
|
|
33
|
+
fsPromises.writeFile(path.resolve(__dirname, '../styles.css'), styles);
|
|
34
|
+
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
html {
|
|
2
|
+
-webkit-text-size-adjust: 100%;
|
|
3
|
+
tab-size: 4;
|
|
4
|
+
line-height: 1.5;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
font-family: var(--kit-font-family-sans);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
pre,
|
|
10
|
+
code {
|
|
11
|
+
font-family: var(--kit-font-family-mono);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
body {
|
|
15
|
+
margin: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
main {
|
|
19
|
+
display: block;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
button,
|
|
23
|
+
input,
|
|
24
|
+
optgroup,
|
|
25
|
+
select,
|
|
26
|
+
textarea {
|
|
27
|
+
font: inherit;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
button {
|
|
31
|
+
overflow: visible;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
button,
|
|
35
|
+
[type='button'],
|
|
36
|
+
[type='reset'],
|
|
37
|
+
[type='submit'],
|
|
38
|
+
[role='button'] {
|
|
39
|
+
cursor: pointer;
|
|
40
|
+
color: inherit;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
*:not(body) {
|
|
44
|
+
outline: none;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
*,
|
|
48
|
+
::after,
|
|
49
|
+
::before,
|
|
50
|
+
::backdrop {
|
|
51
|
+
box-sizing: border-box;
|
|
52
|
+
margin: 0;
|
|
53
|
+
padding: 0;
|
|
54
|
+
border: 0 solid;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
*,
|
|
58
|
+
::before,
|
|
59
|
+
::after {
|
|
60
|
+
background-repeat: no-repeat;
|
|
61
|
+
box-sizing: inherit;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
::before,
|
|
65
|
+
::after {
|
|
66
|
+
text-decoration: inherit;
|
|
67
|
+
vertical-align: inherit;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
[type='search'] {
|
|
71
|
+
-webkit-appearance: textfield;
|
|
72
|
+
appearance: textfield;
|
|
73
|
+
outline-offset: -2px;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
ol,
|
|
77
|
+
ul,
|
|
78
|
+
menu {
|
|
79
|
+
list-style: initial;
|
|
80
|
+
margin-left: calc(var(--kit-spacing) * 5);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
ol ul,
|
|
84
|
+
ol ol,
|
|
85
|
+
ul ul,
|
|
86
|
+
ul ol {
|
|
87
|
+
padding-left: 1rem;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
code {
|
|
91
|
+
border-radius: 0.25rem;
|
|
92
|
+
padding-block: 0.125rem;
|
|
93
|
+
padding-inline: 0.375rem;
|
|
94
|
+
position: relative;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
sub,
|
|
98
|
+
sup {
|
|
99
|
+
font-size: 75%;
|
|
100
|
+
line-height: 0;
|
|
101
|
+
position: relative;
|
|
102
|
+
vertical-align: baseline;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
sup {
|
|
106
|
+
top: -0.5em;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
sub {
|
|
110
|
+
bottom: -0.25em;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
img {
|
|
114
|
+
border-style: none;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
button,
|
|
118
|
+
input,
|
|
119
|
+
select,
|
|
120
|
+
textarea {
|
|
121
|
+
background-color: transparent;
|
|
122
|
+
border-style: none;
|
|
123
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { parseColor } from '../../internal/colors.js';
|
|
2
|
+
export const colors = (config) => {
|
|
3
|
+
const schemes = {
|
|
4
|
+
light: {},
|
|
5
|
+
dark: {}
|
|
6
|
+
};
|
|
7
|
+
for (const [property, values] of Object.entries(config.theme.colors)) {
|
|
8
|
+
if (typeof values === 'string') {
|
|
9
|
+
// for all color scheme
|
|
10
|
+
const _refColor = parseColor(values);
|
|
11
|
+
schemes['light'][property] = _refColor;
|
|
12
|
+
schemes['dark'][property] = _refColor;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
// with specification
|
|
16
|
+
if ('light' in values && 'dark' in values) {
|
|
17
|
+
schemes['light'][property] = parseColor(values.light);
|
|
18
|
+
schemes['dark'][property] = parseColor(values.dark);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
const _refColor = 'dark' in values ? parseColor(values['dark']) : parseColor(values['light']);
|
|
22
|
+
schemes['light'][property] = _refColor;
|
|
23
|
+
schemes['dark'][property] = _refColor;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// css variables
|
|
28
|
+
let cssVariables = '';
|
|
29
|
+
if (config.theme.colorScheme === 'auto') {
|
|
30
|
+
for (const [themeName, colors] of Object.entries(schemes)) {
|
|
31
|
+
const used = themeName;
|
|
32
|
+
const inversed = used === 'light' ? 'dark' : 'light';
|
|
33
|
+
cssVariables += `@media (prefers-color-scheme: ${used}) {\n`;
|
|
34
|
+
cssVariables += `:root, .${used} {\n`;
|
|
35
|
+
cssVariables += `color-scheme: ${used};\n`;
|
|
36
|
+
for (const [colorName, colorValue] of Object.entries(colors)) {
|
|
37
|
+
cssVariables += `--kit-${colorName}: ${colorValue};\n`;
|
|
38
|
+
}
|
|
39
|
+
cssVariables += `}\n`;
|
|
40
|
+
cssVariables += `.${inversed} {\n`;
|
|
41
|
+
cssVariables += `color-scheme: ${used};\n`;
|
|
42
|
+
for (const [colorName, colorValue] of Object.entries(schemes[inversed])) {
|
|
43
|
+
cssVariables += `--kit-${colorName}: ${colorValue};\n`;
|
|
44
|
+
}
|
|
45
|
+
cssVariables += `}\n`;
|
|
46
|
+
cssVariables += `}\n`;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
const used = config.theme.colorScheme;
|
|
51
|
+
const inversed = config.theme.colorScheme === 'light' ? 'dark' : 'light';
|
|
52
|
+
cssVariables += `:root, .${used} {\n`;
|
|
53
|
+
cssVariables += `color-scheme: ${used};\n`;
|
|
54
|
+
for (const [colorName, colorValue] of Object.entries(schemes[used])) {
|
|
55
|
+
cssVariables += `--kit-${colorName}: ${colorValue};\n`;
|
|
56
|
+
}
|
|
57
|
+
cssVariables += `}\n`;
|
|
58
|
+
cssVariables += `.${inversed} {\n`;
|
|
59
|
+
cssVariables += `color-scheme: ${used};\n`;
|
|
60
|
+
for (const [colorName, colorValue] of Object.entries(schemes[inversed])) {
|
|
61
|
+
cssVariables += `--kit-${colorName}: ${colorValue};\n`;
|
|
62
|
+
}
|
|
63
|
+
cssVariables += `}\n`;
|
|
64
|
+
}
|
|
65
|
+
// class
|
|
66
|
+
let classStyles = '';
|
|
67
|
+
for (const [property] of Object.entries(schemes.light)) {
|
|
68
|
+
// classStyles += `.${property}:not([class*='--variant-']) {\n`;
|
|
69
|
+
// classStyles += `--background-color: var(--kit-${property});\n`;
|
|
70
|
+
// classStyles += `--color: var(--kit-on-${property}, var(--kit-${property}));\n`;
|
|
71
|
+
// classStyles += `}\n`;
|
|
72
|
+
// classStyles += `.${property}[class*='--variant-'] {\n`;
|
|
73
|
+
// classStyles += `--color: var(--kit-${property});\n`;
|
|
74
|
+
// classStyles += `}\n`;
|
|
75
|
+
classStyles += `.${property} {\n`;
|
|
76
|
+
classStyles += `--base: var(--kit-${property});\n`;
|
|
77
|
+
classStyles += `--on: var(--kit-on-${property}, var(--kit-${property}));\n`;
|
|
78
|
+
classStyles += `}\n`;
|
|
79
|
+
// classStyles += `.${property}:not([class*='kit-']) {\n`;
|
|
80
|
+
// classStyles += `background-color: var(--kit-${property});\n`;
|
|
81
|
+
// classStyles += `color: var(--kit-on-${property}, var(--kit-${property}));\n`;
|
|
82
|
+
// classStyles += `}\n`;
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
root: cssVariables,
|
|
86
|
+
className: classStyles
|
|
87
|
+
};
|
|
88
|
+
};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { fileURLToPath } from 'url';
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = dirname(__filename);
|
|
7
|
+
export const component = (config) => {
|
|
8
|
+
let css = ``;
|
|
9
|
+
const tresholds = {
|
|
10
|
+
_default: '',
|
|
11
|
+
static: '',
|
|
12
|
+
min: '',
|
|
13
|
+
max: '',
|
|
14
|
+
all: ''
|
|
15
|
+
};
|
|
16
|
+
function loadComponentCSS(directory) {
|
|
17
|
+
fs.readdirSync(directory).forEach((File) => {
|
|
18
|
+
const absolutePath = path.join(directory, File);
|
|
19
|
+
if (fs.statSync(absolutePath).isDirectory())
|
|
20
|
+
return loadComponentCSS(absolutePath);
|
|
21
|
+
else if (absolutePath.endsWith('.css') && !absolutePath.includes('/_')) {
|
|
22
|
+
const content = parser(fs.readFileSync(absolutePath, 'utf-8'));
|
|
23
|
+
tresholds._default += content.allExtracted
|
|
24
|
+
.replaceAll('[breakpoint|min]', '[breakpoint]')
|
|
25
|
+
.replaceAll('[breakpoint|max]', '[breakpoint]')
|
|
26
|
+
.replaceAll('[breakpoint|all]', '[breakpoint]');
|
|
27
|
+
tresholds.static += content.defaultExtracted;
|
|
28
|
+
tresholds.min += content.minExtracted.replaceAll('[breakpoint|min]', '[breakpoint]');
|
|
29
|
+
tresholds.max += content.maxExtracted.replaceAll('[breakpoint|max]', '[breakpoint]');
|
|
30
|
+
tresholds.all += content.allModifierExtracted.replaceAll('[breakpoint|all]', '[breakpoint]');
|
|
31
|
+
return (css += `${content.cleaned}\n`);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
loadComponentCSS(path.resolve(__dirname, '../../components'));
|
|
36
|
+
for (const property in config.breakpoints.thresholds) {
|
|
37
|
+
if (property !== '_default') {
|
|
38
|
+
const name = `.${/^\d/.test(property) ? `\\3${property}` : property}\\:`;
|
|
39
|
+
const value = typeof config.breakpoints.thresholds[property] === 'number'
|
|
40
|
+
? `${config.breakpoints.thresholds[property]}px`
|
|
41
|
+
: config.breakpoints.thresholds[property];
|
|
42
|
+
if (tresholds.static !== '' || tresholds.all !== '' || tresholds.min !== '') {
|
|
43
|
+
css += `@media screen and (min-width: ${value}) {\n`;
|
|
44
|
+
if (tresholds.static !== '')
|
|
45
|
+
css += tresholds.static.replaceAll('[breakpoint]', name);
|
|
46
|
+
if (tresholds.all !== '')
|
|
47
|
+
css += tresholds.all.replaceAll('[breakpoint]', name);
|
|
48
|
+
if (tresholds.min !== '')
|
|
49
|
+
css += tresholds.min.replaceAll('[breakpoint]', name);
|
|
50
|
+
css += `}\n`;
|
|
51
|
+
}
|
|
52
|
+
if (tresholds.max !== '' || tresholds.all !== '') {
|
|
53
|
+
css += `@media screen and (max-width: ${value}) {\n`;
|
|
54
|
+
if (tresholds.max !== '')
|
|
55
|
+
css += tresholds.max.replaceAll('[breakpoint]', name);
|
|
56
|
+
if (tresholds.all !== '')
|
|
57
|
+
css += tresholds.all.replaceAll('[breakpoint]', name);
|
|
58
|
+
css += `}\n`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
css += tresholds._default.replaceAll('[breakpoint]', '.');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return css;
|
|
66
|
+
};
|
|
67
|
+
const parser = (css) => {
|
|
68
|
+
const regex = /([^{]+)\{([^}]+)\}/g;
|
|
69
|
+
let match;
|
|
70
|
+
const matchesToRemove = [];
|
|
71
|
+
const extractedByType = {
|
|
72
|
+
allExtracted: [],
|
|
73
|
+
defaultExtracted: [],
|
|
74
|
+
minExtracted: [],
|
|
75
|
+
maxExtracted: [],
|
|
76
|
+
allModifierExtracted: []
|
|
77
|
+
};
|
|
78
|
+
while ((match = regex.exec(css)) !== null) {
|
|
79
|
+
const fullMatch = match[0];
|
|
80
|
+
const selectors = match[1].trim();
|
|
81
|
+
const body = match[2].trim();
|
|
82
|
+
const selectorsArray = selectors.split(',').map((sel) => sel.trim());
|
|
83
|
+
let matchedType = null;
|
|
84
|
+
if (selectorsArray.some((sel) => sel.includes('[breakpoint|min]'))) {
|
|
85
|
+
matchedType = 'minExtracted';
|
|
86
|
+
}
|
|
87
|
+
else if (selectorsArray.some((sel) => sel.includes('[breakpoint|max]'))) {
|
|
88
|
+
matchedType = 'maxExtracted';
|
|
89
|
+
}
|
|
90
|
+
else if (selectorsArray.some((sel) => sel.includes('[breakpoint|all]'))) {
|
|
91
|
+
matchedType = 'allModifierExtracted';
|
|
92
|
+
}
|
|
93
|
+
else if (selectorsArray.some((sel) => sel.includes('[breakpoint]'))) {
|
|
94
|
+
matchedType = 'defaultExtracted';
|
|
95
|
+
}
|
|
96
|
+
if (matchedType) {
|
|
97
|
+
const rule = `${selectors} {\n${body}\n}`;
|
|
98
|
+
extractedByType.allExtracted.push(rule);
|
|
99
|
+
extractedByType[matchedType].push(rule);
|
|
100
|
+
matchesToRemove.push(fullMatch);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
let cleaned = css;
|
|
104
|
+
for (const rule of matchesToRemove) {
|
|
105
|
+
cleaned = cleaned.replace(rule, '').replace(/\n{2,}/g, '\n\n');
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
allExtracted: extractedByType.allExtracted.join('\n\n').trim(),
|
|
109
|
+
defaultExtracted: extractedByType.defaultExtracted.join('\n\n').trim(),
|
|
110
|
+
minExtracted: extractedByType.minExtracted.join('\n\n').trim(),
|
|
111
|
+
maxExtracted: extractedByType.maxExtracted.join('\n\n').trim(),
|
|
112
|
+
allModifierExtracted: extractedByType.allModifierExtracted.join('\n\n').trim(),
|
|
113
|
+
cleaned: cleaned.trim()
|
|
114
|
+
};
|
|
115
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { setUnit } from '../../internal/unit.js';
|
|
2
|
+
export const devices = (config) => {
|
|
3
|
+
let css = ``;
|
|
4
|
+
const list = {
|
|
5
|
+
mobile: config.breakpoints.mobileBreakpoint,
|
|
6
|
+
tablet: config.breakpoints.tabletBreakpoint,
|
|
7
|
+
laptop: config.breakpoints.laptopBreakpoint
|
|
8
|
+
};
|
|
9
|
+
css += `@media screen and (max-width: ${setUnit(config.breakpoints.thresholds[list.tablet])}) {\n`;
|
|
10
|
+
css += `.hidden-mobile {\n`;
|
|
11
|
+
css += `display: none !important;\n`;
|
|
12
|
+
css += `}\n`;
|
|
13
|
+
css += `}\n`;
|
|
14
|
+
css += `@media screen and (min-width: ${setUnit(config.breakpoints.thresholds[list.tablet])}) {\n`;
|
|
15
|
+
css += `.display-mobile {\n`;
|
|
16
|
+
css += `display: none !important;\n`;
|
|
17
|
+
css += `}\n`;
|
|
18
|
+
css += `}\n`;
|
|
19
|
+
css += `@media screen and (min-width: ${setUnit(config.breakpoints.thresholds[list.tablet])}) and (max-width: ${setUnit(config.breakpoints.thresholds[list.laptop])}) {\n`;
|
|
20
|
+
css += `.hidden-tablet {\n`;
|
|
21
|
+
css += `display: none !important;\n`;
|
|
22
|
+
css += `}\n`;
|
|
23
|
+
css += `}\n`;
|
|
24
|
+
css += `@media screen and (max-width: ${setUnit(config.breakpoints.thresholds[list.tablet])}) and (min-width: ${setUnit(config.breakpoints.thresholds[list.laptop])}){\n`;
|
|
25
|
+
css += `.display-tablet {\n`;
|
|
26
|
+
css += `display: none !important;\n`;
|
|
27
|
+
css += `}\n`;
|
|
28
|
+
css += `}\n`;
|
|
29
|
+
css += `@media screen and (min-width: ${setUnit(config.breakpoints.thresholds[list.laptop])}) {\n`;
|
|
30
|
+
css += `.hidden-laptop {\n`;
|
|
31
|
+
css += `display: none !important;\n`;
|
|
32
|
+
css += `}\n`;
|
|
33
|
+
css += `}\n`;
|
|
34
|
+
css += `@media screen and (max-width: ${setUnit(config.breakpoints.thresholds[list.laptop])}) {\n`;
|
|
35
|
+
css += `.display-laptop {\n`;
|
|
36
|
+
css += `display: none !important;\n`;
|
|
37
|
+
css += `}\n`;
|
|
38
|
+
css += `}\n`;
|
|
39
|
+
return css;
|
|
40
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const variables = (config) => {
|
|
2
|
+
if (!config)
|
|
3
|
+
return '';
|
|
4
|
+
const { styles } = config;
|
|
5
|
+
let css = ``;
|
|
6
|
+
css += `:root {\n`;
|
|
7
|
+
css += `\t--kit-spacing: ${parser(styles.spacing)};\n`;
|
|
8
|
+
if (styles.corner.active) {
|
|
9
|
+
for (const [key, value] of Object.entries(styles.corner.radius)) {
|
|
10
|
+
css += `\t--kit-radius-${key}: ${typeof value === 'number' ? value + 'px' : value};\n`;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
for (const [key, value] of Object.entries(styles.font)) {
|
|
14
|
+
css += `\t--kit-font-family-${key}: ${parser(value)};\n`;
|
|
15
|
+
}
|
|
16
|
+
css += `}\n`;
|
|
17
|
+
return css;
|
|
18
|
+
};
|
|
19
|
+
const parser = (value) => {
|
|
20
|
+
if (typeof value === 'number')
|
|
21
|
+
return `${value}px`;
|
|
22
|
+
if (Array.isArray(value))
|
|
23
|
+
return value.join(', ');
|
|
24
|
+
return value;
|
|
25
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--kit-dialog-size-xs: 18.75rem;
|
|
3
|
+
--kit-dialog-size-sm: 25rem;
|
|
4
|
+
--kit-dialog-size-md: 37.5rem;
|
|
5
|
+
--kit-dialog-size-lg: 53.125rem;
|
|
6
|
+
--kit-dialog-size-xl: 75rem;
|
|
7
|
+
--kit-modal-size-xs: 18.75rem;
|
|
8
|
+
--kit-modal-size-sm: 25rem;
|
|
9
|
+
--kit-modal-size-md: 37.5rem;
|
|
10
|
+
--kit-modal-size-lg: 53.125rem;
|
|
11
|
+
--kit-modal-size-xl: 75rem;
|
|
12
|
+
}
|
package/dist/styles.css
ADDED
|
File without changes
|