lapikit 0.2.3 → 0.2.4

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 (190) hide show
  1. package/bin/configuration.js +0 -1
  2. package/bin/helper.js +0 -38
  3. package/bin/index.js +1 -9
  4. package/bin/presets.js +1 -1
  5. package/bin/prompts.js +46 -79
  6. package/dist/actions/accordion.svelte.d.ts +9 -0
  7. package/dist/actions/index.d.ts +2 -1
  8. package/dist/actions/index.js +2 -1
  9. package/dist/actions/use-theme.d.ts +1 -0
  10. package/dist/actions/use-theme.js +18 -0
  11. package/dist/components/accordion/accordion.css +0 -77
  12. package/dist/components/accordion/accordion.svelte +5 -3
  13. package/dist/components/accordion/modules/accordion-item.css +68 -0
  14. package/dist/components/accordion/modules/accordion-item.svelte +4 -4
  15. package/dist/components/accordion/types.d.ts +1 -1
  16. package/dist/components/alert/alert.css +11 -18
  17. package/dist/components/alert/alert.svelte +4 -4
  18. package/dist/components/alert/types.d.ts +1 -1
  19. package/dist/components/app/app.css +1 -2
  20. package/dist/components/app/app.svelte +24 -28
  21. package/dist/components/app/app.svelte.d.ts +2 -0
  22. package/dist/components/appbar/appbar.css +8 -18
  23. package/dist/components/appbar/appbar.svelte +4 -4
  24. package/dist/components/appbar/types.d.ts +1 -1
  25. package/dist/components/aspect-ratio/aspect-ratio.svelte +0 -22
  26. package/dist/components/aspect-ratio/types.d.ts +1 -1
  27. package/dist/components/avatar/avatar.css +7 -14
  28. package/dist/components/avatar/avatar.svelte +4 -4
  29. package/dist/components/avatar/types.d.ts +1 -1
  30. package/dist/components/button/button.css +29 -36
  31. package/dist/components/button/button.svelte +5 -5
  32. package/dist/components/button/types.d.ts +1 -1
  33. package/dist/components/card/card.css +10 -20
  34. package/dist/components/card/card.svelte +5 -5
  35. package/dist/components/card/types.d.ts +1 -1
  36. package/dist/components/chip/chip.css +26 -33
  37. package/dist/components/chip/chip.svelte +5 -5
  38. package/dist/components/chip/types.d.ts +1 -1
  39. package/dist/components/dialog/dialog.css +13 -20
  40. package/dist/components/dialog/dialog.svelte +5 -5
  41. package/dist/components/dialog/types.d.ts +1 -1
  42. package/dist/components/dropdown/dropdown.css +3 -12
  43. package/dist/components/dropdown/dropdown.svelte +6 -7
  44. package/dist/components/dropdown/types.d.ts +1 -1
  45. package/dist/components/icon/icon.css +11 -12
  46. package/dist/components/icon/icon.svelte +2 -2
  47. package/dist/components/icon/types.d.ts +1 -1
  48. package/dist/components/list/list.css +19 -91
  49. package/dist/components/list/list.svelte +4 -4
  50. package/dist/components/list/modules/list-item.css +67 -0
  51. package/dist/components/list/modules/list-item.svelte +5 -5
  52. package/dist/components/list/types.d.ts +1 -1
  53. package/dist/components/modal/modal.css +15 -23
  54. package/dist/components/modal/modal.svelte +4 -5
  55. package/dist/components/modal/types.d.ts +1 -1
  56. package/dist/components/popover/popover.css +3 -12
  57. package/dist/components/popover/popover.svelte +6 -6
  58. package/dist/components/popover/types.d.ts +1 -1
  59. package/dist/components/separator/separator.css +4 -8
  60. package/dist/components/separator/separator.svelte +5 -5
  61. package/dist/components/separator/types.d.ts +1 -1
  62. package/dist/components/spacer/types.d.ts +1 -1
  63. package/dist/components/textfield/textfield.css +16 -23
  64. package/dist/components/textfield/textfield.svelte +4 -4
  65. package/dist/components/textfield/types.d.ts +1 -1
  66. package/dist/components/toolbar/toolbar.css +14 -26
  67. package/dist/components/toolbar/toolbar.svelte +4 -4
  68. package/dist/components/toolbar/types.d.ts +1 -1
  69. package/dist/components/tooltip/tooltip.css +5 -13
  70. package/dist/components/tooltip/tooltip.svelte +5 -5
  71. package/dist/components/tooltip/types.d.ts +1 -1
  72. package/dist/index.d.ts +2 -26
  73. package/dist/index.js +2 -6
  74. package/dist/internal/config/presets.d.ts +88 -47
  75. package/dist/internal/config/presets.js +89 -41
  76. package/dist/internal/config/variables.d.ts +1 -4
  77. package/dist/internal/config/variables.js +1 -4
  78. package/dist/internal/{assets.svelte.js → core/actions/assets.svelte.js} +4 -4
  79. package/dist/internal/core/actions/dropdown.svelte.d.ts +7 -0
  80. package/dist/internal/core/actions/popover.svelte.d.ts +7 -0
  81. package/dist/internal/core/actions/tooltip.svelte.d.ts +7 -0
  82. package/dist/internal/{ripple.js → core/animations/ripple.js} +3 -3
  83. package/dist/internal/core/css.d.ts +1 -0
  84. package/dist/internal/core/css.js +16 -0
  85. package/dist/internal/core/formatter/component.d.ts +1 -1
  86. package/dist/internal/core/formatter/component.js +25 -21
  87. package/dist/internal/core/formatter/device.d.ts +5 -0
  88. package/dist/internal/core/formatter/device.js +66 -0
  89. package/dist/internal/core/formatter/index.d.ts +5 -2
  90. package/dist/internal/core/formatter/index.js +15 -6
  91. package/dist/internal/core/formatter/{styles.d.ts → style.d.ts} +1 -1
  92. package/dist/internal/core/formatter/{styles.js → style.js} +3 -3
  93. package/dist/internal/core/formatter/theme.d.ts +1 -1
  94. package/dist/internal/core/formatter/theme.js +30 -6
  95. package/dist/internal/core/formatter/typography.d.ts +1 -1
  96. package/dist/internal/core/formatter/typography.js +2 -2
  97. package/dist/internal/core/standard-colors.d.ts +75 -0
  98. package/dist/internal/core/standard-colors.js +75 -0
  99. package/dist/internal/helpers/colors.d.ts +1 -0
  100. package/dist/internal/{colors.js → helpers/colors.js} +2 -2
  101. package/dist/internal/helpers/parser.d.ts +1 -0
  102. package/dist/internal/helpers/parser.js +43 -20
  103. package/dist/{plugin/vitejs.d.ts → internal/plugins/vite.d.ts} +1 -3
  104. package/dist/internal/plugins/vite.js +33 -0
  105. package/dist/internal/types/components.d.ts +14 -0
  106. package/dist/internal/types/configuration.d.ts +24 -1
  107. package/dist/internal/types/index.d.ts +1 -0
  108. package/dist/internal/types/index.js +1 -0
  109. package/dist/stores/components.js +1 -1
  110. package/dist/stores/themes.d.ts +0 -6
  111. package/dist/stores/themes.js +1 -31
  112. package/dist/styles/animation.css +33 -0
  113. package/dist/styles/keyframes.css +30 -0
  114. package/dist/{style/normalize.css → styles/reset.css} +15 -7
  115. package/package.json +7 -8
  116. package/bin/lapikit.js +0 -86
  117. package/bin/legacy.js +0 -34
  118. package/bin/modules/adapter.js +0 -52
  119. package/bin/modules/plugin.js +0 -223
  120. package/bin/modules/preset.js +0 -11
  121. package/dist/internal/colors.d.ts +0 -1
  122. package/dist/internal/core/parser-config.d.ts +0 -1
  123. package/dist/internal/core/parser-config.js +0 -24
  124. package/dist/internal/index.d.ts +0 -4
  125. package/dist/internal/index.js +0 -4
  126. package/dist/internal/types.d.ts +0 -57
  127. package/dist/internal/unit.d.ts +0 -1
  128. package/dist/internal/unit.js +0 -11
  129. package/dist/labs/index.d.ts +0 -4
  130. package/dist/labs/index.js +0 -5
  131. package/dist/labs/my-component-style-global.svelte +0 -6
  132. package/dist/labs/my-component-style-global.svelte.d.ts +0 -18
  133. package/dist/labs/my-component-style-import.svelte +0 -15
  134. package/dist/labs/my-component-style-import.svelte.d.ts +0 -18
  135. package/dist/labs/my-component-style-mixed.svelte +0 -23
  136. package/dist/labs/my-component-style-mixed.svelte.d.ts +0 -18
  137. package/dist/labs/my-component.svelte +0 -16
  138. package/dist/labs/my-component.svelte.d.ts +0 -18
  139. package/dist/labs/style-mixed.css +0 -7
  140. package/dist/labs/style.css +0 -7
  141. package/dist/labs.css +0 -25
  142. package/dist/plugin/css.d.ts +0 -1
  143. package/dist/plugin/css.js +0 -73
  144. package/dist/plugin/modules/config.d.ts +0 -2
  145. package/dist/plugin/modules/config.js +0 -54
  146. package/dist/plugin/modules/importer.d.ts +0 -1
  147. package/dist/plugin/modules/importer.js +0 -15
  148. package/dist/plugin/preset-v2.d.ts +0 -108
  149. package/dist/plugin/preset-v2.js +0 -126
  150. package/dist/plugin/vitejs.js +0 -55
  151. package/dist/preset.d.ts +0 -2
  152. package/dist/preset.js +0 -92
  153. package/dist/style/animation.css +0 -62
  154. package/dist/style/css.d.ts +0 -2
  155. package/dist/style/css.js +0 -34
  156. package/dist/style/parser/color.d.ts +0 -5
  157. package/dist/style/parser/color.js +0 -88
  158. package/dist/style/parser/component.d.ts +0 -2
  159. package/dist/style/parser/component.js +0 -115
  160. package/dist/style/parser/device.d.ts +0 -2
  161. package/dist/style/parser/device.js +0 -40
  162. package/dist/style/parser/index.d.ts +0 -4
  163. package/dist/style/parser/index.js +0 -4
  164. package/dist/style/parser/variable.d.ts +0 -2
  165. package/dist/style/parser/variable.js +0 -25
  166. package/dist/style/variable.css +0 -12
  167. /package/dist/{components/accordion → actions}/accordion.svelte.js +0 -0
  168. /package/dist/internal/{assets.svelte.d.ts → core/actions/assets.svelte.d.ts} +0 -0
  169. /package/dist/{components/dropdown → internal/core/actions}/dropdown.svelte.js +0 -0
  170. /package/dist/{components/popover → internal/core/actions}/popover.svelte.js +0 -0
  171. /package/dist/{components/tooltip → internal/core/actions}/tooltip.svelte.js +0 -0
  172. /package/dist/internal/{ripple.d.ts → core/animations/ripple.d.ts} +0 -0
  173. /package/dist/internal/{ansi.d.ts → core/bin/ansi.d.ts} +0 -0
  174. /package/dist/internal/{ansi.js → core/bin/ansi.js} +0 -0
  175. /package/dist/internal/{terminal.d.ts → core/bin/terminal.d.ts} +0 -0
  176. /package/dist/internal/{terminal.js → core/bin/terminal.js} +0 -0
  177. /package/dist/internal/{minify.d.ts → core/minify.d.ts} +0 -0
  178. /package/dist/internal/{minify.js → core/minify.js} +0 -0
  179. /package/dist/{utils/x11.d.ts → internal/core/x11-colors.d.ts} +0 -0
  180. /package/dist/{utils/x11.js → internal/core/x11-colors.js} +0 -0
  181. /package/dist/{utils → internal/helpers}/convert.d.ts +0 -0
  182. /package/dist/{utils → internal/helpers}/convert.js +0 -0
  183. /package/dist/internal/{deepMerge.d.ts → helpers/deep-merge.d.ts} +0 -0
  184. /package/dist/internal/{deepMerge.js → helpers/deep-merge.js} +0 -0
  185. /package/dist/internal/{clickOutside.d.ts → helpers/outside.d.ts} +0 -0
  186. /package/dist/internal/{clickOutside.js → helpers/outside.js} +0 -0
  187. /package/dist/internal/{scroll.d.ts → helpers/scroll.d.ts} +0 -0
  188. /package/dist/internal/{scroll.js → helpers/scroll.js} +0 -0
  189. /package/dist/internal/{types.js → types/components.js} +0 -0
  190. /package/dist/{colors.css → themes.css} +0 -0
@@ -1,10 +1,11 @@
1
1
  import { variables } from './variables.js';
2
+ import standardColors from '../core/standard-colors.js';
2
3
  export const preset = {
3
4
  breakpoints: {
4
5
  devices: {
5
6
  desktop: 1024, //64rem (lg)
6
7
  tablet: 768, //48rem (md)
7
- mobile: 375 //28rem (sm)
8
+ mobile: 640 //40rem (sm)
8
9
  },
9
10
  thresholds: {
10
11
  base: 0, // 0px
@@ -19,56 +20,86 @@ export const preset = {
19
20
  },
20
21
  theme: {
21
22
  defaultTheme: 'light',
23
+ colorScheme: true,
22
24
  themes: {
23
25
  light: {
24
26
  dark: false,
25
27
  colors: {
26
- blue: '#007AFF',
27
- green: '#34C759',
28
- red: '#FF3B30',
29
- yellow: '#FFCC00',
30
- orange: '#FF9500',
31
- purple: '#AF52DE',
32
- pink: '#FF2D55',
33
- indigo: '#5856D6',
34
- cyan: '#5AC8FA',
35
- gray: '#8E8E93',
36
- 'gray-2': '#AEAEB2',
37
- 'gray-3': '#C7C7CC',
38
- 'gray-4': '#D1D1D6',
39
- 'gray-5': '#E5E5EA',
40
- 'gray-6': '#F2F2F7',
41
- background: '#FFFFFF',
42
- 'secondary-background': '#F2F2F7',
43
- 'tertiary-background': '#EFEFF4',
44
- label: '#000000',
45
- 'secondary-label': 'rgba(60,60,67,0.6)'
28
+ label: {
29
+ primary: '#000000',
30
+ secondary: standardColors.gray.light,
31
+ tertiary: standardColors.gray2.light,
32
+ quaternary: standardColors.gray3.light
33
+ },
34
+ accent: {
35
+ primary: standardColors.blue.light,
36
+ success: standardColors.green.light,
37
+ warning: standardColors.orange.light,
38
+ destructive: standardColors.red.light,
39
+ info: standardColors.cyan.light
40
+ },
41
+ separator: {
42
+ default: standardColors.gray3.light,
43
+ opaque: standardColors.gray4.light
44
+ },
45
+ state: {
46
+ placeholder: standardColors.gray3.light,
47
+ disabled: standardColors.gray2.light,
48
+ link: standardColors.blue.light,
49
+ highlight: standardColors.gray5.light,
50
+ shadow: '#00000033'
51
+ },
52
+ background: {
53
+ primary: '#FFFFFF',
54
+ secondary: standardColors.gray6.light,
55
+ tertiary: standardColors.gray5.light,
56
+ grouped: {
57
+ primary: standardColors.gray6.light,
58
+ secondary: '#FFFFFF',
59
+ tertiary: standardColors.gray6.light
60
+ }
61
+ }
46
62
  },
47
63
  variables: variables
48
64
  },
49
65
  dark: {
50
66
  dark: true,
51
67
  colors: {
52
- blue: '#0A84FF',
53
- green: '#30D158',
54
- red: '#FF453A',
55
- yellow: '#FFD60A',
56
- orange: '#FF9F0A',
57
- purple: '#BF5AF2',
58
- pink: '#FF375F',
59
- indigo: '#5E5CE6',
60
- cyan: '#64D2FF',
61
- gray: '#8E8E93',
62
- 'gray-2': '#636366',
63
- 'gray-3': '#48484A',
64
- 'gray-4': '#3A3A3C',
65
- 'gray-5': '#2C2C2E',
66
- 'gray-6': '#1C1C1E',
67
- background: '#000000',
68
- 'secondary-background': '#1C1C1E',
69
- 'tertiary-background': '#2C2C2E',
70
- label: '#FFFFFF',
71
- 'secondary-label': 'rgba(235,235,245,0.6)'
68
+ pink: 'pink',
69
+ label: {
70
+ primary: '#FFFFFF',
71
+ secondary: standardColors.gray2.dark,
72
+ tertiary: standardColors.gray3.dark,
73
+ quaternary: standardColors.gray4.dark
74
+ },
75
+ accent: {
76
+ primary: standardColors.blue.dark,
77
+ success: standardColors.green.dark,
78
+ warning: standardColors.orange.dark,
79
+ destructive: standardColors.red.dark,
80
+ info: standardColors.cyan.dark
81
+ },
82
+ separator: {
83
+ default: standardColors.gray3.dark,
84
+ opaque: standardColors.gray4.dark
85
+ },
86
+ state: {
87
+ placeholder: standardColors.gray3.dark,
88
+ disabled: standardColors.gray4.dark,
89
+ link: standardColors.blue.dark,
90
+ highlight: standardColors.gray5.dark,
91
+ shadow: '#00000066'
92
+ },
93
+ background: {
94
+ primary: '#000000',
95
+ secondary: standardColors.gray6.dark,
96
+ tertiary: standardColors.gray5.dark,
97
+ grouped: {
98
+ primary: standardColors.gray6.dark,
99
+ secondary: standardColors.gray5.dark,
100
+ tertiary: standardColors.gray4.dark
101
+ }
102
+ }
72
103
  },
73
104
  variables: variables
74
105
  }
@@ -116,6 +147,23 @@ export const preset = {
116
147
  '2xl': '1rem', // 16px
117
148
  '3xl': '1.5rem', // 24px
118
149
  full: '9999px' // 9999px
150
+ },
151
+ dialog: {
152
+ xs: '18.75rem', // 300px
153
+ sm: '25rem', // 400px
154
+ md: '37.5rem', // 600px
155
+ lg: '53.125rem', // 850px
156
+ xl: '75rem' // 1200px
157
+ },
158
+ modal: {
159
+ xs: '18.75rem', // 300px
160
+ sm: '25rem', // 400px
161
+ md: '37.5rem', // 600px
162
+ lg: '53.125rem', // 850px
163
+ xl: '75rem' // 1200px
164
+ },
165
+ animation: {
166
+ 'ripple-duration': '0.4s'
119
167
  }
120
168
  }
121
169
  };
@@ -1,6 +1,3 @@
1
1
  export declare const variables: {
2
- info: string;
3
- success: string;
4
- error: string;
5
- warning: string;
2
+ 'test-variable': string;
6
3
  };
@@ -1,6 +1,3 @@
1
1
  export const variables = {
2
- info: 'var(--system-blue)',
3
- success: 'var(--system-green)',
4
- error: 'var(--system-red)',
5
- warning: 'var(--system-yellow)'
2
+ 'test-variable': '1rem'
6
3
  };
@@ -1,11 +1,11 @@
1
- import { x11ColorNames } from '../utils/x11.js';
1
+ import { x11ColorNames } from '../x11-colors.js';
2
2
  export function getAssets() {
3
3
  return {
4
4
  shape(params) {
5
5
  if (params) {
6
6
  if (params === 'none' || params == '0')
7
7
  return '0';
8
- return `var(--kit-radius-${params})`;
8
+ return `var(--system-shape-${params})`;
9
9
  }
10
10
  },
11
11
  className(key, type, value) {
@@ -16,12 +16,12 @@ export function getAssets() {
16
16
  else if (typeof value === 'object') {
17
17
  if (Array.isArray(value)) {
18
18
  return value
19
- .map((media) => `${media === '_default' ? '' : `${media}:`}kit--${type}`)
19
+ .map((media) => `${media === 'base' ? '' : `${media}:`}kit--${type}`)
20
20
  .join(' ');
21
21
  }
22
22
  else {
23
23
  return Object.entries(value)
24
- .map(([media, value]) => `${media === '_default' ? '' : `${media}:`}kit-${key}--${type}-${value}`)
24
+ .map(([media, value]) => `${media === 'base' ? '' : `${media}:`}kit-${key}--${type}-${value}`)
25
25
  .join(' ');
26
26
  }
27
27
  }
@@ -0,0 +1,7 @@
1
+ import type { PositionElement } from '../../../components/dropdown/types.js';
2
+ type Location = 'top' | 'bottom' | 'left' | 'right';
3
+ export declare function getPositions(): {
4
+ readonly values: PositionElement;
5
+ update(activator: HTMLElement | PointerEvent, element: HTMLElement, location?: Location, centered?: boolean, avoidCollisions?: boolean): void;
6
+ };
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { PositionElement } from '../../../components/popover/types.js';
2
+ type Location = 'top' | 'bottom' | 'left' | 'right';
3
+ export declare function getPositions(): {
4
+ readonly values: PositionElement;
5
+ update(activator: HTMLElement, element: HTMLElement, location?: Location, centered?: boolean, avoidCollisions?: boolean): void;
6
+ };
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { PositionElement } from '../../../components/tooltip/types.js';
2
+ type Location = 'top' | 'bottom' | 'left' | 'right';
3
+ export declare function getPositionsTooltip(): {
4
+ readonly values: PositionElement;
5
+ update(activator: HTMLElement, element: HTMLElement, location?: Location, centered?: boolean, avoidCollisions?: boolean): void;
6
+ };
7
+ export {};
@@ -27,13 +27,13 @@ export function ripple(el, options = {}) {
27
27
  options.duration = undefined;
28
28
  }
29
29
  if (options.component) {
30
- rippleContainer.style.setProperty('--ripple-radius', `var(--${options.component}-radius)`);
30
+ rippleContainer.style.setProperty('--system-ripple-radius', `var(--${options.component}-radius)`);
31
31
  }
32
32
  if (options.color) {
33
- rippleContainer.style.setProperty('--ripple-color', options.color);
33
+ rippleContainer.style.setProperty('--system-ripple-color', options.color);
34
34
  }
35
35
  if (options.duration) {
36
- rippleContainer.style.setProperty('--ripple-duration', `${options.duration}ms`);
36
+ rippleContainer.style.setProperty('--system-animation-ripple-duration', `${options.duration}ms`);
37
37
  }
38
38
  }
39
39
  function createRipple(e, center) {
@@ -0,0 +1 @@
1
+ export declare const processImportStyles: () => Promise<string>;
@@ -0,0 +1,16 @@
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 processImportStyles = async () => {
8
+ const _reset = fs.readFileSync(path.resolve(__dirname, './../../styles/reset.css'), 'utf-8');
9
+ const _animation = fs.readFileSync(path.resolve(__dirname, './../../styles/animation.css'), 'utf-8');
10
+ const _keyframes = fs.readFileSync(path.resolve(__dirname, './../../styles/keyframes.css'), 'utf-8');
11
+ let styles = ``;
12
+ styles += `${_reset}\n`;
13
+ styles += `${_animation}\n`;
14
+ styles += `${_keyframes}\n`;
15
+ return styles;
16
+ };
@@ -2,4 +2,4 @@ export declare function componentFormatter({ breakpoints }: {
2
2
  breakpoints: {
3
3
  [key: string]: number | string;
4
4
  };
5
- }): void;
5
+ }): Promise<void>;
@@ -5,17 +5,17 @@ import path from 'path';
5
5
  import { parserCSSBreakpoints } from '../../helpers/parser.js';
6
6
  const __filename = fileURLToPath(import.meta.url);
7
7
  const __dirname = dirname(__filename);
8
- export function componentFormatter({ breakpoints }) {
9
- // load css component files (includes on components folders)
10
- function loadCSSFiles(directory) {
8
+ export async function componentFormatter({ breakpoints }) {
9
+ // load svelte component files (includes on components folders)
10
+ function loadSvelteFiles(directory) {
11
11
  fs.readdirSync(directory).forEach((File) => {
12
12
  const absolutePath = path.join(directory, File);
13
13
  if (fs.statSync(absolutePath).isDirectory())
14
- return loadCSSFiles(absolutePath);
14
+ return loadSvelteFiles(absolutePath);
15
15
  else if (absolutePath.endsWith('.css') && !absolutePath.includes('/_')) {
16
- console.log(absolutePath);
17
- let css = '';
18
- const content = parserCSSBreakpoints(fs.readFileSync(absolutePath, 'utf8'));
16
+ const fileCSS = fs.readFileSync(absolutePath, 'utf8');
17
+ const content = parserCSSBreakpoints(fileCSS);
18
+ let css = `${content.cleaned}\n`;
19
19
  for (const property in breakpoints) {
20
20
  if (property !== 'base') {
21
21
  const name = `.${/^\d/.test(property) ? `\\3${property}` : property}\\:`;
@@ -23,34 +23,38 @@ export function componentFormatter({ breakpoints }) {
23
23
  ? `${breakpoints[property]}px`
24
24
  : breakpoints[property];
25
25
  if (content.base !== '' || content.minmax !== '' || content.min !== '') {
26
- css += `@media screen and (min-width: ${value}) {\n`;
26
+ css += `\n@media screen and (min-width: ${value}) {\n`;
27
27
  if (content.base !== '')
28
28
  css += content.base.replaceAll('[breakpoint]', name);
29
29
  if (content.minmax !== '')
30
30
  css += content.minmax.replaceAll('[breakpoint]', name);
31
31
  if (content.min !== '')
32
32
  css += content.min.replaceAll('[breakpoint]', name);
33
- css += `}\n`;
33
+ css += `\n}\n`;
34
34
  }
35
- if (content.max !== '' || content.all !== '') {
36
- css += `@media screen and (max-width: ${value}) {\n`;
35
+ if (content.max !== '' || content.minmax !== '') {
36
+ css += `\n@media screen and (max-width: ${value}) {\n`;
37
37
  if (content.max !== '')
38
- css += content.max.replaceAll('[breakpoint]', name);
39
- if (content.all !== '')
40
- css += content.all.replaceAll('[breakpoint]', name);
41
- css += `}\n`;
38
+ css += content.max.replaceAll('[breakpoint]', `max\\:${name}`);
39
+ if (content.minmax !== '')
40
+ css += content.all.replaceAll('[breakpoint]', `max\\:${name}`);
41
+ css += `\n}\n`;
42
42
  }
43
43
  }
44
44
  else {
45
- css += content.all.replaceAll('[breakpoint]', '.');
45
+ css += `${content.base.replaceAll('[breakpoint]', '.')}\n`;
46
46
  }
47
47
  }
48
- let formattedCSS = css;
49
- formattedCSS = formattedCSS.trim().replace(/\n{3,}/g, '\n\n');
50
- console.log(formattedCSS);
51
- fs.writeFileSync(absolutePath, formattedCSS, 'utf8');
48
+ const baseName = path.basename(absolutePath, '.css');
49
+ const svelteFilePath = path.join(path.dirname(absolutePath), `${baseName}.svelte`);
50
+ if (fs.existsSync(svelteFilePath)) {
51
+ let svelteContent = fs.readFileSync(svelteFilePath, 'utf8');
52
+ svelteContent = svelteContent.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '');
53
+ svelteContent += `<style>\n${css}</style>`;
54
+ fs.writeFileSync(svelteFilePath, svelteContent, 'utf8');
55
+ }
52
56
  }
53
57
  });
54
58
  }
55
- loadCSSFiles(path.resolve(__dirname, '../../../components'));
59
+ loadSvelteFiles(path.resolve(__dirname, '../../../components'));
56
60
  }
@@ -0,0 +1,5 @@
1
+ export declare function devicesFormatter({ devices }: {
2
+ devices: {
3
+ [key: string]: number | string;
4
+ };
5
+ }): Promise<string>;
@@ -0,0 +1,66 @@
1
+ import { parserValues } from '../../helpers/parser.js';
2
+ export async function devicesFormatter({ devices }) {
3
+ let css = ``;
4
+ const sortedDevices = Object.entries(devices).sort(([, a], [, b]) => {
5
+ const valueA = typeof a === 'string' ? parseInt(a) : a;
6
+ const valueB = typeof b === 'string' ? parseInt(b) : b;
7
+ return valueB - valueA;
8
+ });
9
+ sortedDevices.forEach(([deviceName, breakpoint], index) => {
10
+ const value = parserValues(breakpoint);
11
+ if (index === 0) {
12
+ // the largest device
13
+ css += `@media (max-width: ${value}) {\n`;
14
+ css += ` .kit-device--d-${deviceName} {\n`;
15
+ css += ` display: none !important;\n`;
16
+ css += ` }\n`;
17
+ css += `}\n\n`;
18
+ css += `@media (min-width: ${value}) {\n`;
19
+ css += ` .kit-device--h-${deviceName} {\n`;
20
+ css += ` display: none !important;\n`;
21
+ css += ` }\n`;
22
+ css += `}\n\n`;
23
+ }
24
+ else if (index === sortedDevices.length - 1) {
25
+ const prevDevice = sortedDevices[index - 1];
26
+ const prevValue = parserValues(prevDevice[1]);
27
+ // the smallest device
28
+ css += `@media (min-width: ${prevValue}) {\n`;
29
+ css += ` .kit-device--d-${deviceName} {\n`;
30
+ css += ` display: none !important;\n`;
31
+ css += ` }\n`;
32
+ css += `}\n\n`;
33
+ css += `@media (max-width: ${prevValue}) {\n`;
34
+ css += ` .kit-device--h-${deviceName} {\n`;
35
+ css += ` display: none !important;\n`;
36
+ css += ` }\n`;
37
+ css += `}\n\n`;
38
+ css += `@media (min-width: ${value}) {\n`;
39
+ css += ` .kit-device--od-${deviceName} {\n`;
40
+ css += ` display: none !important;\n`;
41
+ css += ` }\n`;
42
+ css += `}\n\n`;
43
+ css += `@media (max-width: ${value}) {\n`;
44
+ css += ` .kit-device--oh-${deviceName} {\n`;
45
+ css += ` display: none !important;\n`;
46
+ css += ` }\n`;
47
+ css += `}\n\n`;
48
+ }
49
+ else {
50
+ //intermediate devices
51
+ const nextDevice = sortedDevices[index - 1];
52
+ const nextValue = parserValues(nextDevice[1]);
53
+ css += `@media (max-width: ${value}) {\n`;
54
+ css += ` .kit-device--d-${deviceName} {\n`;
55
+ css += ` display: none !important;\n`;
56
+ css += ` }\n`;
57
+ css += `}\n\n`;
58
+ css += `@media (min-width: ${nextValue}) {\n`;
59
+ css += ` .kit-device--h-${deviceName} {\n`;
60
+ css += ` display: none !important;\n`;
61
+ css += ` }\n`;
62
+ css += `}\n\n`;
63
+ }
64
+ });
65
+ return css.trim();
66
+ }
@@ -1,4 +1,7 @@
1
1
  import type { DevConfiguration } from '../../types/index.js';
2
- export declare function css(config: DevConfiguration): Promise<{
3
- styles: string[];
2
+ export declare function liliRabbit(config: DevConfiguration): Promise<{
3
+ themes: string;
4
+ typography: string;
5
+ styles: string;
6
+ devices: string;
4
7
  }>;
@@ -1,26 +1,35 @@
1
1
  import { preset } from '../../config/presets.js';
2
- import { deepMerge } from '../../deepMerge.js';
2
+ import { deepMerge } from '../../helpers/deep-merge.js';
3
3
  import { componentFormatter } from './component.js';
4
+ import { devicesFormatter } from './device.js';
5
+ import { stylesFormatter } from './style.js';
4
6
  import { themesFormatter } from './theme.js';
5
7
  import { typographyFormatter } from './typography.js';
6
- export async function css(config) {
8
+ export async function liliRabbit(config) {
7
9
  // states
8
10
  const defaultTheme = config?.theme?.defaultTheme || preset.theme.defaultTheme;
9
11
  const defaultTypography = config?.typography?.defaultTypography || preset.typography.defaultTypography;
10
12
  // formatter
11
- const themes = themesFormatter({
13
+ const themes = await themesFormatter({
12
14
  themes: deepMerge(preset.theme.themes, config?.theme?.themes || {}),
13
15
  defaultTheme
14
16
  });
15
- const typography = typographyFormatter({
17
+ const typography = await typographyFormatter({
16
18
  typography: deepMerge(preset.typography.fonts, config?.typography?.fonts || {}),
17
19
  defaultTypography
18
20
  });
21
+ const styles = await stylesFormatter({ styles: deepMerge(preset.styles, config?.styles || {}) });
22
+ const devices = await devicesFormatter({
23
+ devices: deepMerge(preset.breakpoints.devices, config?.breakpoints?.devices || {})
24
+ });
19
25
  // components
20
- componentFormatter({
26
+ await componentFormatter({
21
27
  breakpoints: deepMerge(preset.breakpoints.thresholds, config?.breakpoints?.thresholds || {})
22
28
  });
23
29
  return {
24
- styles: [themes, typography]
30
+ themes: themes,
31
+ typography: typography,
32
+ styles: styles,
33
+ devices: devices
25
34
  };
26
35
  }
@@ -1,4 +1,4 @@
1
1
  import type { FragStyles } from '../../types/configuration.js';
2
2
  export declare function stylesFormatter({ styles }: {
3
3
  styles: FragStyles;
4
- }): string;
4
+ }): Promise<string>;
@@ -1,14 +1,14 @@
1
1
  import { parserValues } from '../../helpers/parser.js';
2
- export function stylesFormatter({ styles }) {
2
+ export async function stylesFormatter({ styles }) {
3
3
  let css = `:root {\n`;
4
4
  for (const [name, values] of Object.entries(styles)) {
5
5
  if (values && typeof values === 'object') {
6
6
  for (const [styleName, styleValue] of Object.entries(values || {})) {
7
- css += ` --prism-${name}-${styleName}: ${parserValues(styleValue)};\n`;
7
+ css += ` --system-${name}-${styleName}: ${parserValues(styleValue)};\n`;
8
8
  }
9
9
  }
10
10
  else {
11
- css += ` --prism-${name}: ${parserValues(values)};\n`;
11
+ css += ` --system-${name}: ${parserValues(values)};\n`;
12
12
  }
13
13
  }
14
14
  return (css += '}\n');
@@ -2,4 +2,4 @@ import type { FragThemes } from '../../types/index.js';
2
2
  export declare function themesFormatter({ themes, defaultTheme }: {
3
3
  themes: FragThemes;
4
4
  defaultTheme: string;
5
- }): string;
5
+ }): Promise<string>;
@@ -1,18 +1,42 @@
1
1
  import { preset } from '../../config/presets.js';
2
- import { deepMerge } from '../../deepMerge.js';
3
- export function themesFormatter({ themes, defaultTheme = 'light' }) {
2
+ import { formatColor } from '../../helpers/colors.js';
3
+ import { deepMerge } from '../../helpers/deep-merge.js';
4
+ import { parserValues } from '../../helpers/parser.js';
5
+ export async function themesFormatter({ themes, defaultTheme = 'light' }) {
4
6
  let css = '';
5
7
  for (const [name, values] of Object.entries(themes)) {
6
8
  const ref = values?.dark ? preset.theme.themes.dark : preset.theme.themes.light;
7
- let cssTheme = defaultTheme === name ? `:root,\n.${name} {\n` : `.${name} {\n`;
9
+ let cssTheme = defaultTheme === name ? `:root,\n.kit-theme--${name} {\n` : `.kit-theme--${name} {\n`;
10
+ function flattenColors(obj, prefix = '') {
11
+ const result = {};
12
+ for (const [key, value] of Object.entries(obj)) {
13
+ const newPrefix = prefix ? `${prefix}-${key}` : key;
14
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
15
+ Object.assign(result, flattenColors(value, newPrefix));
16
+ }
17
+ else {
18
+ result[newPrefix] = value;
19
+ }
20
+ }
21
+ return result;
22
+ }
8
23
  // colors
9
24
  cssTheme += ` color-scheme: ${values?.dark ? 'dark' : 'light'};\n`;
10
- for (const [varName, varValue] of Object.entries(deepMerge(ref.colors, values?.colors) || {})) {
11
- cssTheme += ` --system-${varName}: ${varValue};\n`;
25
+ const mergedColors = deepMerge(ref.colors, values?.colors) || {};
26
+ const flatColors = flattenColors(mergedColors);
27
+ for (const [varName, varValue] of Object.entries(flatColors)) {
28
+ cssTheme += ` --kit-${varName}: ${formatColor(varValue)};\n`;
12
29
  }
13
30
  // variables
14
31
  for (const [name, varValue] of Object.entries(deepMerge(ref.variables, values?.variables) || {})) {
15
- cssTheme += ` --kit-${name}: ${varValue};\n`;
32
+ if (varValue && typeof varValue === 'object') {
33
+ for (const [variableName, variableValue] of Object.entries(varValue || {})) {
34
+ cssTheme += ` --kit-${name}-${variableName}: ${formatColor(parserValues(variableValue))};\n`;
35
+ }
36
+ }
37
+ else {
38
+ cssTheme += ` --kit-${name}: ${formatColor(parserValues(varValue))};\n`;
39
+ }
16
40
  }
17
41
  css += cssTheme + '}\n';
18
42
  }
@@ -2,4 +2,4 @@ import type { FragTypography } from '../../types/configuration.js';
2
2
  export declare function typographyFormatter({ typography, defaultTypography }: {
3
3
  typography: FragTypography;
4
4
  defaultTypography: string;
5
- }): string;
5
+ }): Promise<string>;
@@ -1,10 +1,10 @@
1
1
  import { parserValues } from '../../helpers/parser.js';
2
- export function typographyFormatter({ typography, defaultTypography = 'default' }) {
2
+ export async function typographyFormatter({ typography, defaultTypography = 'default' }) {
3
3
  let css = '';
4
4
  for (const [name, values] of Object.entries(typography)) {
5
5
  let cssTypo = defaultTypography === name ? `:root {\n` : `.${name} {\n`;
6
6
  for (const [fontName, fontValue] of Object.entries(values || {})) {
7
- cssTypo += ` --kit-font-${fontName}: ${parserValues(fontValue)};\n`;
7
+ cssTypo += ` --kit-font-${fontName}: ${parserValues(fontValue).replaceAll('"', '')};\n`;
8
8
  }
9
9
  css += cssTypo + '}\n';
10
10
  }