lapikit 0.2.2 → 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 (180) hide show
  1. package/bin/configuration.js +17 -12
  2. package/bin/helper.js +0 -38
  3. package/bin/index.js +1 -9
  4. package/bin/presets.js +2 -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 -23
  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 -4
  73. package/dist/index.js +21 -2
  74. package/dist/internal/config/presets.d.ts +149 -0
  75. package/dist/internal/config/presets.js +169 -0
  76. package/dist/internal/config/variables.d.ts +3 -0
  77. package/dist/internal/config/variables.js +3 -0
  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 +5 -0
  86. package/dist/internal/core/formatter/component.js +60 -0
  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 +7 -0
  90. package/dist/internal/core/formatter/index.js +35 -0
  91. package/dist/internal/core/formatter/style.d.ts +4 -0
  92. package/dist/internal/core/formatter/style.js +15 -0
  93. package/dist/internal/core/formatter/theme.d.ts +5 -0
  94. package/dist/internal/core/formatter/theme.js +44 -0
  95. package/dist/internal/core/formatter/typography.d.ts +5 -0
  96. package/dist/internal/core/formatter/typography.js +12 -0
  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/convert.d.ts +1 -0
  102. package/dist/internal/helpers/convert.js +17 -0
  103. package/dist/internal/helpers/deep-merge.d.ts +44 -0
  104. package/dist/internal/helpers/deep-merge.js +80 -0
  105. package/dist/internal/helpers/parser.d.ts +10 -0
  106. package/dist/internal/helpers/parser.js +93 -0
  107. package/dist/internal/plugins/vite.d.ts +8 -0
  108. package/dist/internal/plugins/vite.js +33 -0
  109. package/dist/internal/types/components.d.ts +14 -0
  110. package/dist/internal/types/configuration.d.ts +63 -0
  111. package/dist/internal/types/configuration.js +1 -0
  112. package/dist/internal/types/index.d.ts +2 -0
  113. package/dist/internal/types/index.js +2 -0
  114. package/dist/stores/breakpoints.d.ts +6 -0
  115. package/dist/stores/breakpoints.js +14 -0
  116. package/dist/stores/components.d.ts +8 -0
  117. package/dist/stores/components.js +26 -0
  118. package/dist/stores/devices.d.ts +6 -0
  119. package/dist/stores/devices.js +9 -0
  120. package/dist/stores/index.d.ts +4 -10
  121. package/dist/stores/index.js +4 -47
  122. package/dist/stores/themes.d.ts +2 -0
  123. package/dist/stores/themes.js +4 -0
  124. package/dist/styles/animation.css +33 -0
  125. package/dist/styles/keyframes.css +30 -0
  126. package/dist/{style/normalize.css → styles/reset.css} +15 -7
  127. package/dist/themes.css +0 -0
  128. package/package.json +7 -3
  129. package/bin/lapikit.js +0 -86
  130. package/bin/legacy.js +0 -34
  131. package/bin/modules/adapter.js +0 -52
  132. package/bin/modules/plugin.js +0 -223
  133. package/bin/modules/preset.js +0 -11
  134. package/dist/internal/colors.d.ts +0 -1
  135. package/dist/internal/index.d.ts +0 -4
  136. package/dist/internal/index.js +0 -4
  137. package/dist/internal/types.d.ts +0 -57
  138. package/dist/internal/unit.d.ts +0 -1
  139. package/dist/internal/unit.js +0 -11
  140. package/dist/plugin/modules/config.d.ts +0 -2
  141. package/dist/plugin/modules/config.js +0 -54
  142. package/dist/plugin/modules/importer.d.ts +0 -1
  143. package/dist/plugin/modules/importer.js +0 -15
  144. package/dist/plugin/vitejs.d.ts +0 -6
  145. package/dist/plugin/vitejs.js +0 -26
  146. package/dist/preset.d.ts +0 -2
  147. package/dist/preset.js +0 -92
  148. package/dist/style/animation.css +0 -62
  149. package/dist/style/css.d.ts +0 -2
  150. package/dist/style/css.js +0 -34
  151. package/dist/style/parser/color.d.ts +0 -5
  152. package/dist/style/parser/color.js +0 -88
  153. package/dist/style/parser/component.d.ts +0 -2
  154. package/dist/style/parser/component.js +0 -115
  155. package/dist/style/parser/device.d.ts +0 -2
  156. package/dist/style/parser/device.js +0 -40
  157. package/dist/style/parser/index.d.ts +0 -4
  158. package/dist/style/parser/index.js +0 -4
  159. package/dist/style/parser/variable.d.ts +0 -2
  160. package/dist/style/parser/variable.js +0 -25
  161. package/dist/style/variable.css +0 -12
  162. /package/dist/{components/accordion → actions}/accordion.svelte.js +0 -0
  163. /package/dist/internal/{assets.svelte.d.ts → core/actions/assets.svelte.d.ts} +0 -0
  164. /package/dist/{components/dropdown → internal/core/actions}/dropdown.svelte.js +0 -0
  165. /package/dist/{components/popover → internal/core/actions}/popover.svelte.js +0 -0
  166. /package/dist/{components/tooltip → internal/core/actions}/tooltip.svelte.js +0 -0
  167. /package/dist/internal/{ripple.d.ts → core/animations/ripple.d.ts} +0 -0
  168. /package/dist/internal/{ansi.d.ts → core/bin/ansi.d.ts} +0 -0
  169. /package/dist/internal/{ansi.js → core/bin/ansi.js} +0 -0
  170. /package/dist/internal/{terminal.d.ts → core/bin/terminal.d.ts} +0 -0
  171. /package/dist/internal/{terminal.js → core/bin/terminal.js} +0 -0
  172. /package/dist/internal/{minify.d.ts → core/minify.d.ts} +0 -0
  173. /package/dist/internal/{minify.js → core/minify.js} +0 -0
  174. /package/dist/{utils/x11.d.ts → internal/core/x11-colors.d.ts} +0 -0
  175. /package/dist/{utils/x11.js → internal/core/x11-colors.js} +0 -0
  176. /package/dist/internal/{clickOutside.d.ts → helpers/outside.d.ts} +0 -0
  177. /package/dist/internal/{clickOutside.js → helpers/outside.js} +0 -0
  178. /package/dist/internal/{scroll.d.ts → helpers/scroll.d.ts} +0 -0
  179. /package/dist/internal/{scroll.js → helpers/scroll.js} +0 -0
  180. /package/dist/internal/{types.js → types/components.js} +0 -0
@@ -0,0 +1,149 @@
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
+ colorScheme: boolean;
22
+ themes: {
23
+ light: {
24
+ dark: boolean;
25
+ colors: {
26
+ label: {
27
+ primary: string;
28
+ secondary: string;
29
+ tertiary: string;
30
+ quaternary: string;
31
+ };
32
+ accent: {
33
+ primary: string;
34
+ success: string;
35
+ warning: string;
36
+ destructive: string;
37
+ info: string;
38
+ };
39
+ separator: {
40
+ default: string;
41
+ opaque: string;
42
+ };
43
+ state: {
44
+ placeholder: string;
45
+ disabled: string;
46
+ link: string;
47
+ highlight: string;
48
+ shadow: string;
49
+ };
50
+ background: {
51
+ primary: string;
52
+ secondary: string;
53
+ tertiary: string;
54
+ grouped: {
55
+ primary: string;
56
+ secondary: string;
57
+ tertiary: string;
58
+ };
59
+ };
60
+ };
61
+ variables: {
62
+ 'test-variable': string;
63
+ };
64
+ };
65
+ dark: {
66
+ dark: boolean;
67
+ colors: {
68
+ pink: string;
69
+ label: {
70
+ primary: string;
71
+ secondary: string;
72
+ tertiary: string;
73
+ quaternary: string;
74
+ };
75
+ accent: {
76
+ primary: string;
77
+ success: string;
78
+ warning: string;
79
+ destructive: string;
80
+ info: string;
81
+ };
82
+ separator: {
83
+ default: string;
84
+ opaque: string;
85
+ };
86
+ state: {
87
+ placeholder: string;
88
+ disabled: string;
89
+ link: string;
90
+ highlight: string;
91
+ shadow: string;
92
+ };
93
+ background: {
94
+ primary: string;
95
+ secondary: string;
96
+ tertiary: string;
97
+ grouped: {
98
+ primary: string;
99
+ secondary: string;
100
+ tertiary: string;
101
+ };
102
+ };
103
+ };
104
+ variables: {
105
+ 'test-variable': string;
106
+ };
107
+ };
108
+ };
109
+ };
110
+ typography: {
111
+ defaultTypography: string;
112
+ fonts: {
113
+ default: {
114
+ sans: string[];
115
+ mono: string[];
116
+ serif: string[];
117
+ };
118
+ };
119
+ };
120
+ styles: {
121
+ spacing: string;
122
+ shape: {
123
+ sm: string;
124
+ md: string;
125
+ lg: string;
126
+ xl: string;
127
+ '2xl': string;
128
+ '3xl': string;
129
+ full: string;
130
+ };
131
+ dialog: {
132
+ xs: string;
133
+ sm: string;
134
+ md: string;
135
+ lg: string;
136
+ xl: string;
137
+ };
138
+ modal: {
139
+ xs: string;
140
+ sm: string;
141
+ md: string;
142
+ lg: string;
143
+ xl: string;
144
+ };
145
+ animation: {
146
+ 'ripple-duration': string;
147
+ };
148
+ };
149
+ };
@@ -0,0 +1,169 @@
1
+ import { variables } from './variables.js';
2
+ import standardColors from '../core/standard-colors.js';
3
+ export const preset = {
4
+ breakpoints: {
5
+ devices: {
6
+ desktop: 1024, //64rem (lg)
7
+ tablet: 768, //48rem (md)
8
+ mobile: 640 //40rem (sm)
9
+ },
10
+ thresholds: {
11
+ base: 0, // 0px
12
+ xs: 448, //28rem
13
+ sm: 640, //40rem
14
+ md: 768, //48rem
15
+ lg: 1024, //64rem
16
+ xl: 1280, //80rem
17
+ '2xl': 1536, //96rem
18
+ '3xl': 1792 //112rem
19
+ }
20
+ },
21
+ theme: {
22
+ defaultTheme: 'light',
23
+ colorScheme: true,
24
+ themes: {
25
+ light: {
26
+ dark: false,
27
+ colors: {
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
+ }
62
+ },
63
+ variables: variables
64
+ },
65
+ dark: {
66
+ dark: true,
67
+ colors: {
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
+ }
103
+ },
104
+ variables: variables
105
+ }
106
+ }
107
+ },
108
+ typography: {
109
+ defaultTypography: 'default',
110
+ fonts: {
111
+ default: {
112
+ sans: [
113
+ 'system-ui',
114
+ '-apple-system',
115
+ 'BlinkMacSystemFont',
116
+ 'Segoe UI',
117
+ 'Roboto',
118
+ 'Helvetica Neue',
119
+ 'Arial',
120
+ 'sans-serif',
121
+ 'Apple Color Emoji',
122
+ 'Segoe UI Emoji',
123
+ 'Segoe UI Symbol'
124
+ ],
125
+ mono: [
126
+ 'SFMono-Regular',
127
+ 'ui-monospace',
128
+ 'SF Mono',
129
+ 'Menlo',
130
+ 'Monaco',
131
+ 'Consolas',
132
+ 'Liberation Mono',
133
+ 'Courier New',
134
+ 'monospace'
135
+ ],
136
+ serif: ['Merriweather', 'Georgia', 'Cambria', 'Times New Roman', 'Times', 'serif']
137
+ }
138
+ }
139
+ },
140
+ styles: {
141
+ spacing: '0.125rem', // 2px
142
+ shape: {
143
+ sm: '0.125rem', // 2px
144
+ md: '0.25rem', // 4px
145
+ lg: '0.5rem', // 8px
146
+ xl: '0.75rem', // 12px
147
+ '2xl': '1rem', // 16px
148
+ '3xl': '1.5rem', // 24px
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'
167
+ }
168
+ }
169
+ };
@@ -0,0 +1,3 @@
1
+ export declare const variables: {
2
+ 'test-variable': string;
3
+ };
@@ -0,0 +1,3 @@
1
+ export const variables = {
2
+ 'test-variable': '1rem'
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
+ };
@@ -0,0 +1,5 @@
1
+ export declare function componentFormatter({ breakpoints }: {
2
+ breakpoints: {
3
+ [key: string]: number | string;
4
+ };
5
+ }): Promise<void>;
@@ -0,0 +1,60 @@
1
+ import { fileURLToPath } from 'url';
2
+ import { dirname } from 'path';
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import { parserCSSBreakpoints } from '../../helpers/parser.js';
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
8
+ export async function componentFormatter({ breakpoints }) {
9
+ // load svelte component files (includes on components folders)
10
+ function loadSvelteFiles(directory) {
11
+ fs.readdirSync(directory).forEach((File) => {
12
+ const absolutePath = path.join(directory, File);
13
+ if (fs.statSync(absolutePath).isDirectory())
14
+ return loadSvelteFiles(absolutePath);
15
+ else if (absolutePath.endsWith('.css') && !absolutePath.includes('/_')) {
16
+ const fileCSS = fs.readFileSync(absolutePath, 'utf8');
17
+ const content = parserCSSBreakpoints(fileCSS);
18
+ let css = `${content.cleaned}\n`;
19
+ for (const property in breakpoints) {
20
+ if (property !== 'base') {
21
+ const name = `.${/^\d/.test(property) ? `\\3${property}` : property}\\:`;
22
+ const value = typeof breakpoints[property] === 'number'
23
+ ? `${breakpoints[property]}px`
24
+ : breakpoints[property];
25
+ if (content.base !== '' || content.minmax !== '' || content.min !== '') {
26
+ css += `\n@media screen and (min-width: ${value}) {\n`;
27
+ if (content.base !== '')
28
+ css += content.base.replaceAll('[breakpoint]', name);
29
+ if (content.minmax !== '')
30
+ css += content.minmax.replaceAll('[breakpoint]', name);
31
+ if (content.min !== '')
32
+ css += content.min.replaceAll('[breakpoint]', name);
33
+ css += `\n}\n`;
34
+ }
35
+ if (content.max !== '' || content.minmax !== '') {
36
+ css += `\n@media screen and (max-width: ${value}) {\n`;
37
+ if (content.max !== '')
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
+ }
43
+ }
44
+ else {
45
+ css += `${content.base.replaceAll('[breakpoint]', '.')}\n`;
46
+ }
47
+ }
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
+ }
56
+ }
57
+ });
58
+ }
59
+ loadSvelteFiles(path.resolve(__dirname, '../../../components'));
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
+ }
@@ -0,0 +1,7 @@
1
+ import type { DevConfiguration } from '../../types/index.js';
2
+ export declare function liliRabbit(config: DevConfiguration): Promise<{
3
+ themes: string;
4
+ typography: string;
5
+ styles: string;
6
+ devices: string;
7
+ }>;
@@ -0,0 +1,35 @@
1
+ import { preset } from '../../config/presets.js';
2
+ import { deepMerge } from '../../helpers/deep-merge.js';
3
+ import { componentFormatter } from './component.js';
4
+ import { devicesFormatter } from './device.js';
5
+ import { stylesFormatter } from './style.js';
6
+ import { themesFormatter } from './theme.js';
7
+ import { typographyFormatter } from './typography.js';
8
+ export async function liliRabbit(config) {
9
+ // states
10
+ const defaultTheme = config?.theme?.defaultTheme || preset.theme.defaultTheme;
11
+ const defaultTypography = config?.typography?.defaultTypography || preset.typography.defaultTypography;
12
+ // formatter
13
+ const themes = await themesFormatter({
14
+ themes: deepMerge(preset.theme.themes, config?.theme?.themes || {}),
15
+ defaultTheme
16
+ });
17
+ const typography = await typographyFormatter({
18
+ typography: deepMerge(preset.typography.fonts, config?.typography?.fonts || {}),
19
+ defaultTypography
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
+ });
25
+ // components
26
+ await componentFormatter({
27
+ breakpoints: deepMerge(preset.breakpoints.thresholds, config?.breakpoints?.thresholds || {})
28
+ });
29
+ return {
30
+ themes: themes,
31
+ typography: typography,
32
+ styles: styles,
33
+ devices: devices
34
+ };
35
+ }
@@ -0,0 +1,4 @@
1
+ import type { FragStyles } from '../../types/configuration.js';
2
+ export declare function stylesFormatter({ styles }: {
3
+ styles: FragStyles;
4
+ }): Promise<string>;
@@ -0,0 +1,15 @@
1
+ import { parserValues } from '../../helpers/parser.js';
2
+ export async function stylesFormatter({ styles }) {
3
+ let css = `:root {\n`;
4
+ for (const [name, values] of Object.entries(styles)) {
5
+ if (values && typeof values === 'object') {
6
+ for (const [styleName, styleValue] of Object.entries(values || {})) {
7
+ css += ` --system-${name}-${styleName}: ${parserValues(styleValue)};\n`;
8
+ }
9
+ }
10
+ else {
11
+ css += ` --system-${name}: ${parserValues(values)};\n`;
12
+ }
13
+ }
14
+ return (css += '}\n');
15
+ }
@@ -0,0 +1,5 @@
1
+ import type { FragThemes } from '../../types/index.js';
2
+ export declare function themesFormatter({ themes, defaultTheme }: {
3
+ themes: FragThemes;
4
+ defaultTheme: string;
5
+ }): Promise<string>;