lapikit 0.0.0-insiders.c8d4fe2 → 0.0.0-insiders.cc7ae6c

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 (121) hide show
  1. package/bin/configuration.js +17 -12
  2. package/bin/index.js +1 -9
  3. package/bin/presets.js +2 -1
  4. package/bin/prompts.js +46 -79
  5. package/dist/components/accordion/accordion.css +0 -77
  6. package/dist/components/accordion/accordion.svelte +4 -2
  7. package/dist/components/accordion/modules/accordion-item.css +68 -0
  8. package/dist/components/accordion/modules/accordion-item.svelte +3 -3
  9. package/dist/components/alert/alert.css +3 -10
  10. package/dist/components/alert/alert.svelte +3 -3
  11. package/dist/components/app/app.css +1 -2
  12. package/dist/components/app/app.svelte +24 -23
  13. package/dist/components/app/app.svelte.d.ts +2 -0
  14. package/dist/components/appbar/appbar.css +8 -18
  15. package/dist/components/appbar/appbar.svelte +3 -3
  16. package/dist/components/aspect-ratio/aspect-ratio.svelte +0 -22
  17. package/dist/components/avatar/avatar.css +4 -11
  18. package/dist/components/avatar/avatar.svelte +3 -3
  19. package/dist/components/button/button.css +18 -25
  20. package/dist/components/button/button.svelte +3 -3
  21. package/dist/components/card/card.css +7 -17
  22. package/dist/components/card/card.svelte +3 -3
  23. package/dist/components/chip/chip.css +12 -19
  24. package/dist/components/chip/chip.svelte +3 -3
  25. package/dist/components/dialog/dialog.css +13 -20
  26. package/dist/components/dialog/dialog.svelte +3 -3
  27. package/dist/components/dropdown/dropdown.css +3 -12
  28. package/dist/components/dropdown/dropdown.svelte +3 -3
  29. package/dist/components/icon/icon.css +7 -8
  30. package/dist/components/icon/icon.svelte +1 -1
  31. package/dist/components/list/list.css +12 -87
  32. package/dist/components/list/list.svelte +3 -3
  33. package/dist/components/list/modules/list-item.css +67 -0
  34. package/dist/components/list/modules/list-item.svelte +3 -3
  35. package/dist/components/modal/modal.css +15 -23
  36. package/dist/components/modal/modal.svelte +3 -3
  37. package/dist/components/popover/popover.css +3 -12
  38. package/dist/components/popover/popover.svelte +3 -3
  39. package/dist/components/separator/separator.css +4 -8
  40. package/dist/components/separator/separator.svelte +4 -4
  41. package/dist/components/textfield/textfield.css +14 -21
  42. package/dist/components/textfield/textfield.svelte +3 -3
  43. package/dist/components/toolbar/toolbar.css +13 -25
  44. package/dist/components/toolbar/toolbar.svelte +3 -3
  45. package/dist/components/tooltip/tooltip.css +4 -12
  46. package/dist/components/tooltip/tooltip.svelte +3 -3
  47. package/dist/index.d.ts +17 -0
  48. package/dist/index.js +17 -3
  49. package/dist/internal/assets.svelte.js +3 -3
  50. package/dist/internal/config/presets.d.ts +127 -0
  51. package/dist/internal/config/presets.js +138 -0
  52. package/dist/internal/config/variables.d.ts +7 -0
  53. package/dist/internal/config/variables.js +7 -0
  54. package/dist/internal/core/css.d.ts +1 -0
  55. package/dist/internal/core/css.js +16 -0
  56. package/dist/internal/core/formatter/component.d.ts +5 -0
  57. package/dist/internal/core/formatter/component.js +60 -0
  58. package/dist/internal/core/formatter/device.d.ts +5 -0
  59. package/dist/internal/core/formatter/device.js +77 -0
  60. package/dist/internal/core/formatter/index.d.ts +7 -0
  61. package/dist/internal/core/formatter/index.js +35 -0
  62. package/dist/internal/core/formatter/style.d.ts +4 -0
  63. package/dist/internal/core/formatter/style.js +15 -0
  64. package/dist/internal/core/formatter/theme.d.ts +5 -0
  65. package/dist/internal/core/formatter/theme.js +29 -0
  66. package/dist/internal/core/formatter/typography.d.ts +5 -0
  67. package/dist/internal/core/formatter/typography.js +12 -0
  68. package/dist/internal/core/x11-colors.d.ts +4 -0
  69. package/dist/internal/core/x11-colors.js +151 -0
  70. package/dist/internal/helpers/colors.d.ts +1 -0
  71. package/dist/internal/helpers/colors.js +50 -0
  72. package/dist/internal/helpers/parser.d.ts +10 -0
  73. package/dist/internal/helpers/parser.js +93 -0
  74. package/dist/internal/plugins/vite.d.ts +8 -0
  75. package/dist/internal/plugins/vite.js +33 -0
  76. package/dist/internal/ripple.js +3 -3
  77. package/dist/internal/types/configuration.d.ts +40 -0
  78. package/dist/internal/types/configuration.js +1 -0
  79. package/dist/internal/types/index.d.ts +1 -0
  80. package/dist/internal/types/index.js +1 -0
  81. package/dist/labs/index.d.ts +4 -0
  82. package/dist/labs/index.js +5 -0
  83. package/dist/labs/my-component-style-global.svelte +6 -0
  84. package/dist/labs/my-component-style-global.svelte.d.ts +18 -0
  85. package/dist/labs/my-component-style-import.svelte +15 -0
  86. package/dist/labs/my-component-style-import.svelte.d.ts +18 -0
  87. package/dist/labs/my-component-style-mixed.svelte +23 -0
  88. package/dist/labs/my-component-style-mixed.svelte.d.ts +18 -0
  89. package/dist/labs/my-component.svelte +16 -0
  90. package/dist/labs/my-component.svelte.d.ts +18 -0
  91. package/dist/labs/style-mixed.css +7 -0
  92. package/dist/labs/style.css +7 -0
  93. package/dist/labs.css +1 -0
  94. package/dist/plugin/css.d.ts +1 -0
  95. package/dist/plugin/css.js +73 -0
  96. package/dist/plugin/preset-v2.d.ts +108 -0
  97. package/dist/plugin/preset-v2.js +126 -0
  98. package/dist/plugin/vitejs.d.ts +5 -1
  99. package/dist/plugin/vitejs.js +32 -3
  100. package/dist/stores/breakpoints.d.ts +1 -1
  101. package/dist/stores/breakpoints.js +7 -16
  102. package/dist/stores/components.d.ts +8 -0
  103. package/dist/stores/components.js +26 -0
  104. package/dist/stores/devices.d.ts +6 -0
  105. package/dist/stores/devices.js +9 -0
  106. package/dist/stores/index.d.ts +3 -10
  107. package/dist/stores/index.js +3 -47
  108. package/dist/stores/themes.d.ts +3 -0
  109. package/dist/stores/themes.js +21 -0
  110. package/dist/style/css.js +1 -1
  111. package/dist/styles/animation.css +33 -0
  112. package/dist/styles/keyframes.css +30 -0
  113. package/dist/styles/reset.css +133 -0
  114. package/dist/themes.css +0 -0
  115. package/dist/utils/convert.d.ts +1 -0
  116. package/dist/utils/convert.js +17 -0
  117. package/package.json +4 -3
  118. /package/dist/internal/{minify.d.ts → core/minify.d.ts} +0 -0
  119. /package/dist/internal/{minify.js → core/minify.js} +0 -0
  120. /package/dist/internal/{deepMerge.d.ts → helpers/deep-merge.d.ts} +0 -0
  121. /package/dist/internal/{deepMerge.js → helpers/deep-merge.js} +0 -0
@@ -11,7 +11,6 @@ async function findReferenceFile(projectPath) {
11
11
  await fs.access(routesPath);
12
12
  } catch {
13
13
  terminal('error', `Lapikit cannot find the routes/ directory.`);
14
- // throw new Error('Lapikit cannot find the routes/ directory.');
15
14
  }
16
15
 
17
16
  const layoutFile = path.join(routesPath, '+layout.svelte');
@@ -133,10 +132,12 @@ async function findViteConfigFile(projectPath, typescript) {
133
132
  }
134
133
  }
135
134
 
136
- async function addLapikitToViteConfig(viteConfigFile) {
135
+ async function addLapikitToViteConfig(viteConfigFile, pathConfig, typescript) {
137
136
  try {
138
137
  const content = await fs.readFile(viteConfigFile, 'utf-8');
139
138
  const lapikitImport = `import { lapikit } from 'lapikit/vite';`;
139
+ const configPath = `${pathConfig}/lapikit.${typescript ? 'ts' : 'js'}`;
140
+ const lapikitPlugin = `lapikit({ config: '${configPath}' })`;
140
141
 
141
142
  // Check if lapikit import already exists
142
143
  if (content.includes(lapikitImport) || content.includes(`from 'lapikit/vite'`)) {
@@ -183,10 +184,10 @@ async function addLapikitToViteConfig(viteConfigFile) {
183
184
  const pluginMatch = line.match(/plugins:\s*\[(.*)\]/);
184
185
  if (pluginMatch) {
185
186
  const pluginsContent = pluginMatch[1];
186
- if (!pluginsContent.includes('lapikit()')) {
187
+ if (!pluginsContent.includes('lapikit')) {
187
188
  const newPluginsContent = pluginsContent.replace(
188
189
  /sveltekit\(\)/,
189
- 'sveltekit(), lapikit()'
190
+ `sveltekit(), ${lapikitPlugin}`
190
191
  );
191
192
  lines[i] = line.replace(pluginsContent, newPluginsContent);
192
193
  pluginAdded = true;
@@ -200,24 +201,24 @@ async function addLapikitToViteConfig(viteConfigFile) {
200
201
  const pluginLine = lines[j].trim();
201
202
 
202
203
  if (pluginLine.includes('sveltekit()') && !pluginAdded) {
203
- // Check if lapikit() is not already present
204
+ // Check if lapikit is not already present
204
205
  let hasLapikit = false;
205
206
  for (let k = i; k < lines.length && !lines[k].includes(']'); k++) {
206
- if (lines[k].includes('lapikit()')) {
207
+ if (lines[k].includes('lapikit')) {
207
208
  hasLapikit = true;
208
209
  break;
209
210
  }
210
211
  }
211
212
 
212
213
  if (!hasLapikit) {
213
- // Add lapikit() after sveltekit()
214
+ // Add lapikit after sveltekit()
214
215
  if (pluginLine.includes(',')) {
215
- lines[j] = lines[j].replace('sveltekit()', 'sveltekit(), lapikit()');
216
+ lines[j] = lines[j].replace('sveltekit()', `sveltekit(), ${lapikitPlugin}`);
216
217
  } else {
217
218
  lines[j] = lines[j].replace('sveltekit()', 'sveltekit(),');
218
- // Insert lapikit() on the next line with proper indentation
219
+ // Insert lapikit on the next line with proper indentation
219
220
  const indentation = lines[j].match(/^\s*/)[0];
220
- lines.splice(j + 1, 0, `${indentation}lapikit()`);
221
+ lines.splice(j + 1, 0, `${indentation}${lapikitPlugin}`);
221
222
  }
222
223
  pluginAdded = true;
223
224
  }
@@ -246,7 +247,7 @@ async function addLapikitToViteConfig(viteConfigFile) {
246
247
  }
247
248
 
248
249
  export async function initConfiguration(options) {
249
- const { typescript, pathConfig, formatCSS } = options;
250
+ const { typescript, pathConfig, formatCSS, pathCSS } = options;
250
251
  const ext = typescript ? 'ts' : 'js';
251
252
  const targetDir = path.resolve(process.cwd(), pathConfig);
252
253
  const targetFile = path.join(targetDir, `lapikit.${ext}`);
@@ -287,10 +288,14 @@ export async function initConfiguration(options) {
287
288
  throw error;
288
289
  }
289
290
 
291
+ // Add Import Lapikit css
292
+ if (formatCSS !== 'css') {
293
+ console.log('need custom import (Preview)', pathCSS);
294
+ }
290
295
  // Add lapikit to vite.config file
291
296
  try {
292
297
  const viteConfigFile = await findViteConfigFile(process.cwd(), typescript);
293
- await addLapikitToViteConfig(viteConfigFile);
298
+ await addLapikitToViteConfig(viteConfigFile, pathConfig, typescript);
294
299
  } catch (error) {
295
300
  terminal('warn', `Warning: Could not update vite.config file: ${error.message}`);
296
301
  terminal('error', `Error adding lapikit to vite config: ${error.message}`);
package/bin/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { initConfiguration } from './configuration.js';
3
3
  import { ansi, terminal } from './helper.js';
4
- import { legacyConfiguration } from './legacy.js';
5
4
  import { initPrompts } from './prompts.js';
6
5
 
7
6
  async function run() {
@@ -18,14 +17,7 @@ async function run() {
18
17
 
19
18
  const promptsConfig = await initPrompts();
20
19
 
21
- if (promptsConfig.env === 'current') {
22
- await legacyConfiguration(promptsConfig);
23
- }
24
-
25
- if (promptsConfig.env === 'experimental') {
26
- terminal('warn', `Experimental mode is not yet implemented.`);
27
- await initConfiguration(promptsConfig);
28
- }
20
+ await initConfiguration(promptsConfig);
29
21
  }
30
22
 
31
23
  run()
package/bin/presets.js CHANGED
@@ -8,7 +8,8 @@ function presets({ adapterCSS }) {
8
8
 
9
9
  if (adapterCSS === 'css') {
10
10
  content += `// Styles\n`;
11
- content += `import 'lapikit/css';\n\n`;
11
+ content += `import 'lapikit/styles';\n`;
12
+ content += `import 'lapikit/themes';\n\n`;
12
13
  }
13
14
 
14
15
  content += `// Composables\n`;
package/bin/prompts.js CHANGED
@@ -16,85 +16,52 @@ export async function initPrompts() {
16
16
  terminal('warn', `installation canceled.`);
17
17
  process.exit(0);
18
18
  }
19
- // temps with legacy and new process install
20
- const { type } = await prompts({
21
- type: 'select',
22
- name: 'type',
23
- message: 'Select installation type:',
24
- choices: [
25
- { title: 'Classic install with lapikit.config.js', value: 'current' },
26
- {
27
- title: 'Preview install with new plugin/lapikit.(js|ts) <experimental>',
28
- value: 'experimental'
29
- }
30
- ]
31
- });
32
-
33
- if (type === 'current') {
34
- // Classic install
35
- const settings = await prompts([
36
- {
37
- type: 'text',
38
- name: 'pathCSS',
39
- message: 'Where would you like to import the lapikit CSS files?',
40
- initial: 'src/app.css',
41
- validate: (value) =>
42
- value.startsWith('src/') ? true : 'Please provide a valid path starting with src/'
43
- }
44
- ]);
45
19
 
46
- return {
47
- ...settings,
48
- env: 'current'
49
- };
50
- } else if (type === 'experimental') {
51
- // Preview install
52
- let settings = await prompts([
53
- {
54
- type: 'text',
55
- name: 'pathConfig',
56
- message: 'Where would you like to install the lapikit configuration files?',
57
- initial: 'src/plugins',
58
- validate: (value) =>
59
- value.startsWith('src/') ? true : 'Please provide a valid path starting with src/'
60
- },
61
- {
62
- type: 'toggle',
63
- name: 'typescript',
64
- message: 'Use TypeScript?',
65
- initial: true,
66
- active: 'Yes',
67
- inactive: 'No'
68
- },
69
- {
70
- type: 'select',
71
- name: 'formatCSS',
72
- message: 'What is your CSS format used on your app?',
73
- choices: [
74
- { title: 'Basic (classic import)', value: 'css' },
75
- {
76
- title: 'TailwindCSS (v4)',
77
- value: 'tailwind-v4'
78
- },
79
- {
80
- title: 'UnoCSS',
81
- value: 'unocss'
82
- }
83
- ]
84
- },
85
- {
86
- type: (prev) => (prev !== 'css' ? 'text' : null),
87
- name: 'pathCSS',
88
- message: 'Where would you like to import the lapikit CSS files?',
89
- initial: 'src/app.css',
90
- validate: (value) =>
91
- value.startsWith('src/') ? true : 'Please provide a valid path starting with src/'
92
- }
93
- ]);
20
+ // Preview install
21
+ let settings = await prompts([
22
+ {
23
+ type: 'text',
24
+ name: 'pathConfig',
25
+ message: 'Where would you like to install the lapikit configuration files?',
26
+ initial: 'src/plugins',
27
+ validate: (value) =>
28
+ value.startsWith('src/') ? true : 'Please provide a valid path starting with src/'
29
+ },
30
+ {
31
+ type: 'toggle',
32
+ name: 'typescript',
33
+ message: 'Use TypeScript?',
34
+ initial: true,
35
+ active: 'Yes',
36
+ inactive: 'No'
37
+ },
38
+ {
39
+ type: 'select',
40
+ name: 'formatCSS',
41
+ message: 'What is your CSS format used on your app?',
42
+ choices: [
43
+ { title: 'Basic (classic import)', value: 'css' },
44
+ {
45
+ title: 'TailwindCSS (v4)',
46
+ value: 'tailwind-v4'
47
+ },
48
+ {
49
+ title: 'UnoCSS',
50
+ value: 'unocss'
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ type: (prev) => (prev !== 'css' ? 'text' : null),
56
+ name: 'pathCSS',
57
+ message: 'Where would you like to import the lapikit CSS files?',
58
+ initial: 'src/app.css',
59
+ validate: (value) =>
60
+ value.startsWith('src/') ? true : 'Please provide a valid path starting with src/'
61
+ }
62
+ ]);
94
63
 
95
- return {
96
- ...settings,
97
- env: 'experimental'
98
- };
99
- }
64
+ return {
65
+ ...settings
66
+ };
100
67
  }
@@ -1,8 +1,4 @@
1
1
  .kit-accordion {
2
- --accordion-color: var(--on, var(--kit-on-container));
3
- --accordion-background: var(--base, var(--kit-container));
4
- --accordion-radius: var(--shape, var(--kit-radius-md));
5
-
6
2
  display: flex;
7
3
  flex-wrap: wrap;
8
4
  justify-content: center;
@@ -38,76 +34,3 @@
38
34
  pointer-events: none;
39
35
  user-select: none;
40
36
  }
41
-
42
- /* item */
43
- .kit-accordion .kit-accordion-item {
44
- flex: 1 0 100%;
45
- max-width: 100%;
46
- position: relative;
47
- transition: 0.3s all cubic-bezier(0.4, 0, 0.2, 1);
48
- transition-property: margin-top, border-radius, border, max-width;
49
- border-radius: var(--shape, var(--accordion-radius, var(--kit-radius-md)));
50
- color: var(--on, var(--accordion-color, var(--kit-on-container)));
51
- background-color: var(--base, var(--accordion-background, var(--kit-container)));
52
- /* transition:
53
- color 0.5s,
54
- background-color 0.5s; */
55
- }
56
-
57
- .kit-accordion .kit-accordion-item > button,
58
- .kit-accordion .kit-accordion-item > [type='button'] {
59
- font: inherit;
60
- overflow: visible;
61
- background-color: transparent;
62
- border-style: none;
63
- cursor: pointer;
64
- color: inherit;
65
- }
66
-
67
- .kit-accordion .kit-accordion-item .kit-accordion-item--title {
68
- align-items: center;
69
- text-align: start;
70
- border-radius: inherit;
71
- display: flex;
72
- font-size: 0.9375rem;
73
- min-height: 3rem;
74
- outline: none;
75
- padding: 1rem 1.5rem;
76
- position: relative;
77
- transition: 0.3s min-height margin-bottom margin-top border-radius cubic-bezier(0.4, 0, 0.2, 1);
78
- width: 100%;
79
- justify-content: space-between;
80
- }
81
-
82
- .kit-accordion .kit-accordion-item .kit-accordion-item--text {
83
- display: flex;
84
- }
85
-
86
- .kit-accordion .kit-accordion-item .kit-accordion-item--text .kit-accordion-item--text-wrapper {
87
- padding: 0.5rem 1.5rem 1rem;
88
- flex: 1 1 auto;
89
- max-width: 100%;
90
- }
91
-
92
- .kit-accordion .kit-accordion-item .kit-accordion-item--icon {
93
- display: inline-flex;
94
- margin-bottom: -0.25rem;
95
- margin-top: -0.25rem;
96
- -webkit-user-select: none;
97
- user-select: none;
98
- margin-inline-start: auto;
99
- }
100
-
101
- /* disabled */
102
- .kit-accordion .kit-accordion-item .kit-accordion-item--title.kit-accordion-item--disabled,
103
- .kit-accordion .kit-accordion-item .kit-accordion-item--title[disabled],
104
- .kit-accordion .kit-accordion-item .kit-accordion-item--title:disabled {
105
- pointer-events: none;
106
- user-select: none;
107
- }
108
-
109
- .kit-accordion .kit-accordion-item .kit-accordion-item--title.kit-accordion-item--disabled > *,
110
- .kit-accordion .kit-accordion-item .kit-accordion-item--title[disabled] > *,
111
- .kit-accordion .kit-accordion-item .kit-accordion-item--title:disabled > * {
112
- opacity: 0.6;
113
- }
@@ -12,6 +12,7 @@
12
12
  background,
13
13
  spacer,
14
14
  hideIcon,
15
+ rounded,
15
16
  ...rest
16
17
  }: AccordionProps = $props();
17
18
 
@@ -30,8 +31,9 @@
30
31
  dark && 'dark',
31
32
  rest.class
32
33
  ]}
33
- style:--base={assets.color(background)}
34
- style:--on={assets.color(color)}
34
+ style:--accordion-shape={assets.shape(rounded)}
35
+ style:--accordion-background={assets.color(background)}
36
+ style:--accordion-color={assets.color(color)}
35
37
  >
36
38
  {@render children?.()}
37
39
  </svelte:element>
@@ -0,0 +1,68 @@
1
+ .kit-accordion-item {
2
+ flex: 1 0 100%;
3
+ max-width: 100%;
4
+ position: relative;
5
+ transition: 0.3s all cubic-bezier(0.4, 0, 0.2, 1);
6
+ transition-property: margin-top, border-radius, border, max-width;
7
+ border-radius: var(--accordion-shape, var(--system-shape-md));
8
+ color: var(--accordion-color, var(--system-label));
9
+ background-color: var(--accordion-background, var(--system-secondary-background));
10
+ }
11
+
12
+ .kit-accordion-item > button,
13
+ .kit-accordion-item > [type='button'] {
14
+ font: inherit;
15
+ overflow: visible;
16
+ background-color: transparent;
17
+ border-style: none;
18
+ cursor: pointer;
19
+ color: inherit;
20
+ }
21
+
22
+ .kit-accordion-item .kit-accordion-item--title {
23
+ align-items: center;
24
+ text-align: start;
25
+ border-radius: inherit;
26
+ display: flex;
27
+ font-size: 0.9375rem;
28
+ min-height: 3rem;
29
+ outline: none;
30
+ padding: 1rem 1.5rem;
31
+ position: relative;
32
+ transition: 0.3s min-height margin-bottom margin-top border-radius cubic-bezier(0.4, 0, 0.2, 1);
33
+ width: 100%;
34
+ justify-content: space-between;
35
+ }
36
+
37
+ .kit-accordion-item .kit-accordion-item--text {
38
+ display: flex;
39
+ }
40
+
41
+ .kit-accordion-item .kit-accordion-item--text .kit-accordion-item--text-wrapper {
42
+ padding: 0.5rem 1.5rem 1rem;
43
+ flex: 1 1 auto;
44
+ max-width: 100%;
45
+ }
46
+
47
+ .kit-accordion-item .kit-accordion-item--icon {
48
+ display: inline-flex;
49
+ margin-bottom: -0.25rem;
50
+ margin-top: -0.25rem;
51
+ -webkit-user-select: none;
52
+ user-select: none;
53
+ margin-inline-start: auto;
54
+ }
55
+
56
+ /* disabled */
57
+ .kit-accordion-item .kit-accordion-item--title.kit-accordion-item--disabled,
58
+ .kit-accordion-item .kit-accordion-item--title[disabled],
59
+ .kit-accordion-item .kit-accordion-item--title:disabled {
60
+ pointer-events: none;
61
+ user-select: none;
62
+ }
63
+
64
+ .kit-accordion-item .kit-accordion-item--title.kit-accordion-item--disabled > *,
65
+ .kit-accordion-item .kit-accordion-item--title[disabled] > *,
66
+ .kit-accordion-item .kit-accordion-item--title:disabled > * {
67
+ opacity: 0.6;
68
+ }
@@ -49,9 +49,9 @@
49
49
  open && 'kit-accordion-item--active',
50
50
  rest.class
51
51
  ]}
52
- style:--base={assets.color(background)}
53
- style:--on={assets.color(color)}
54
- style:--shape={assets.shape(rounded)}
52
+ style:--accordion--item-shape={assets.shape(rounded)}
53
+ style:--accordion--item-background={assets.color(background)}
54
+ style:--accordion--item-color={assets.color(color)}
55
55
  >
56
56
  <button
57
57
  class={[
@@ -1,10 +1,3 @@
1
- /* root */
2
- .kit-alert {
3
- --alert-color: var(--on, var(--kit-on-container));
4
- --alert-background: var(--base, var(--kit-container));
5
- --alert-radius: var(--shape, var(--kit-radius-md));
6
- }
7
-
8
1
  .kit-alert {
9
2
  display: grid;
10
3
  flex: 1 1;
@@ -15,9 +8,9 @@
15
8
  position: relative;
16
9
  padding: 1rem;
17
10
  overflow: hidden;
18
- color: var(--alert-color);
19
- background-color: var(--alert-background);
20
- border-radius: var(--alert-radius);
11
+ color: var(--alert-color, var(--system-label));
12
+ background-color: var(--alert-background, var(--system-tertiary-background));
13
+ border-radius: var(--alert-shape, var(--system-shape-md));
21
14
  line-height: 0;
22
15
  }
23
16
 
@@ -51,9 +51,9 @@
51
51
  rest.class
52
52
  ]}
53
53
  role="alert"
54
- style:--base={assets.color(background)}
55
- style:--on={assets.color(color)}
56
- style:--shape={assets.shape(rounded)}
54
+ style:--alert-background={assets.color(background)}
55
+ style:--alert-color={assets.color(color)}
56
+ style:--alert-shape={assets.shape(rounded)}
57
57
  >
58
58
  {#if prepend}
59
59
  <div class="kit-alert--prepend">
@@ -4,13 +4,12 @@
4
4
  left: 0;
5
5
  height: 100%;
6
6
  width: 100%;
7
- background-color: color-mix(in oklab, var(--kit-shadow) 70%, transparent);
7
+ background-color: color-mix(in oklab, var(--kit-scrim) 70%, transparent);
8
8
  z-index: 9000;
9
9
  cursor: default;
10
10
  }
11
11
 
12
12
  .kit-overlay.kit-overlay--persistent {
13
- /* pointer-events: none; */
14
13
  user-select: none;
15
14
  cursor: default;
16
15
  }
@@ -1,33 +1,34 @@
1
1
  <script lang="ts">
2
2
  import { BROWSER } from 'esm-env';
3
- import {
4
- colorSchemeSystem,
5
- modalOpen,
6
- setOpenModal,
7
- updateThemeStore
8
- } from '../../stores/index.js';
9
3
  import type { Snippet } from 'svelte';
10
- let { children }: { children: Snippet } = $props();
4
+ import { useTheme } from '../../stores/themes.js';
5
+ import { modalOpen, setOpenModal } from '../../stores/components.js';
6
+
7
+ let {
8
+ children,
9
+ themes,
10
+ storageKey = '@lapikit/theme'
11
+ }: { children: Snippet; themes?: string | string[]; storageKey?: string } = $props();
11
12
 
12
13
  $effect.pre(() => {
13
14
  if (!BROWSER) return;
14
- // system
15
- if (window.matchMedia) {
16
- colorSchemeSystem.set(
17
- window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
18
- );
19
- }
15
+ const colorScheme = window.matchMedia('(prefers-color-scheme: dark)').matches
16
+ ? 'dark'
17
+ : 'light';
18
+ const localTheme = localStorage.getItem(storageKey);
20
19
 
21
- // listener
22
- window
23
- .matchMedia('(prefers-color-scheme: dark)')
24
- .addEventListener('change', (event: MediaQueryListEvent) => {
25
- colorSchemeSystem.set(event.matches ? 'dark' : 'light');
26
- });
27
-
28
- // local
29
- const local = localStorage.getItem('@lapikit/theme');
30
- if (local !== null) updateThemeStore(local as 'dark' | 'light' | 'system');
20
+ if (localTheme) {
21
+ useTheme(localTheme);
22
+ } else if (colorScheme) {
23
+ if (typeof themes === 'string') {
24
+ useTheme(themes);
25
+ } else if (typeof themes === 'object' && Array.isArray(themes)) {
26
+ if (colorScheme === 'dark') useTheme(themes[1] ?? themes[0]);
27
+ else useTheme(themes[0]);
28
+ } else {
29
+ useTheme(colorScheme);
30
+ }
31
+ }
31
32
  });
32
33
  </script>
33
34
 
@@ -1,6 +1,8 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  type $$ComponentProps = {
3
3
  children: Snippet;
4
+ themes?: string | string[];
5
+ storageKey?: string;
4
6
  };
5
7
  declare const App: import("svelte").Component<$$ComponentProps, {}, "">;
6
8
  type App = ReturnType<typeof App>;
@@ -1,24 +1,14 @@
1
- /* root default*/
2
1
  .kit-appbar {
3
- --appbar-color: var(--on, var(--kit-on-surface));
4
- --appbar-background: var(--base, var(--kit-surface));
5
- --appbar-radius: var(--shape, 0);
6
- --appbar-padding-wrapper: var(--kit-spacing) * 4;
7
- }
2
+ --appbar-padding-wrapper: var(--system-spacing) * 4;
8
3
 
9
- .kit-appbar {
10
4
  display: flex;
11
5
  align-items: center;
12
6
  border-style: solid;
13
7
  border-width: 1px;
14
- border-radius: var(--appbar-radius);
15
- color: var(--appbar-color);
16
- background-color: var(--appbar-background);
17
- border-color: var(--appbar-background);
18
- /* transition:
19
- color 0.5s,
20
- border-color 0.5s,
21
- background-color 0.5s; */
8
+ border-radius: var(--appbar-shape);
9
+ color: var(--appbar-color, var(--system-label));
10
+ background-color: var(--appbar-background, var(--system-tertiary-background));
11
+ border-color: var(--appbar-background, var(--system-tertiary-background));
22
12
  }
23
13
 
24
14
  /* wrapper */
@@ -34,15 +24,15 @@
34
24
  /* density */
35
25
  .kit-appbar[breakpoint]kit-appbar--density-default {
36
26
  height: 4rem;
37
- padding-inline: calc(var(--kit-spacing) * 1.5);
27
+ padding-inline: calc(var(--system-spacing) * 1.5);
38
28
  }
39
29
 
40
30
  .kit-appbar[breakpoint]kit-appbar--density-compact {
41
31
  height: 3.5rem;
42
- padding-inline: calc(var(--kit-spacing) * 0.75);
32
+ padding-inline: calc(var(--system-spacing) * 0.75);
43
33
  }
44
34
 
45
35
  .kit-appbar[breakpoint]kit-appbar--density-comfortable {
46
36
  height: 4.5rem;
47
- padding-inline: calc(var(--kit-spacing) * 2.25);
37
+ padding-inline: calc(var(--system-spacing) * 2.25);
48
38
  }
@@ -30,9 +30,9 @@
30
30
  density && assets.className('appbar', 'density', density),
31
31
  rest.class
32
32
  ]}
33
- style:--base={assets.color(background)}
34
- style:--on={assets.color(color)}
35
- style:--shape={assets.shape(rounded)}
33
+ style:--appbar-background={assets.color(background)}
34
+ style:--appbar-color={assets.color(color)}
35
+ style:--appbar-shape={assets.shape(rounded)}
36
36
  >
37
37
  <div class={['kit-appbar--wrapper', classContent]}>
38
38
  {@render children?.()}
@@ -23,25 +23,3 @@
23
23
  <div class="kit-aspect-ratio--sizer" style={`padding-bottom: ${paddingBottom}%;`}></div>
24
24
  {@render children?.()}
25
25
  </div>
26
-
27
- <style>
28
- .kit-aspect-ratio {
29
- display: flex;
30
- flex: 1 0 auto;
31
- max-height: 100%;
32
- max-width: 100%;
33
- overflow: hidden;
34
- position: relative;
35
- }
36
-
37
- .kit-aspect-ratio--inline {
38
- display: inline-flex;
39
- flex: 0 0 auto;
40
- }
41
-
42
- .kit-aspect-ratio--sizer {
43
- flex: 1 0 0px;
44
- transition: padding-bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
45
- pointer-events: none;
46
- }
47
- </style>