lapikit 0.7.3 → 0.7.5

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 (71) hide show
  1. package/dist/@types/components.d.ts +1 -7
  2. package/dist/@types/dom.d.ts +4 -3
  3. package/dist/@types/props.d.ts +3 -3
  4. package/dist/animations/ripple.js +8 -2
  5. package/dist/components/accordion/accordion.svelte +192 -228
  6. package/dist/components/accordion/accordion.types.d.ts +5 -7
  7. package/dist/components/accordion/modules/accordion-item.svelte +144 -140
  8. package/dist/components/alert/alert.svelte +246 -293
  9. package/dist/components/alert/alert.types.d.ts +5 -5
  10. package/dist/components/app/app.svelte +25 -43
  11. package/dist/components/appbar/appbar.svelte +205 -190
  12. package/dist/components/appbar/appbar.types.d.ts +6 -6
  13. package/dist/components/aspect-ratio/aspect-ratio.svelte +43 -63
  14. package/dist/components/avatar/avatar.svelte +169 -161
  15. package/dist/components/avatar/avatar.types.d.ts +3 -4
  16. package/dist/components/btn/btn.svelte +432 -466
  17. package/dist/components/btn/btn.types.d.ts +5 -6
  18. package/dist/components/card/card.svelte +24 -23
  19. package/dist/components/card/card.types.d.ts +2 -2
  20. package/dist/components/card/modules/card-content.svelte +4 -1
  21. package/dist/components/card/modules/card-title.svelte +4 -1
  22. package/dist/components/chip/chip.svelte +416 -464
  23. package/dist/components/chip/chip.types.d.ts +5 -5
  24. package/dist/components/dialog/dialog.svelte +184 -175
  25. package/dist/components/dialog/dialog.types.d.ts +6 -6
  26. package/dist/components/dropdown/dropdown.svelte +149 -144
  27. package/dist/components/dropdown/dropdown.types.d.ts +4 -11
  28. package/dist/components/field/field.svelte +474 -0
  29. package/dist/components/field/field.svelte.d.ts +4 -0
  30. package/dist/components/field/field.types.d.ts +46 -0
  31. package/dist/components/field/field.types.js +1 -0
  32. package/dist/components/icon/icon.svelte +67 -96
  33. package/dist/components/icon/icon.types.d.ts +2 -1
  34. package/dist/components/index.d.ts +2 -0
  35. package/dist/components/index.js +1 -0
  36. package/dist/components/list/list.svelte +193 -194
  37. package/dist/components/list/list.types.d.ts +5 -7
  38. package/dist/components/list/modules/list-item.svelte +134 -147
  39. package/dist/components/modal/modal.js +9 -9
  40. package/dist/components/modal/modal.svelte +239 -222
  41. package/dist/components/modal/modal.types.d.ts +6 -6
  42. package/dist/components/popover/popover.svelte +125 -127
  43. package/dist/components/popover/popover.types.d.ts +4 -11
  44. package/dist/components/separator/separator.svelte +56 -87
  45. package/dist/components/separator/separator.types.d.ts +1 -1
  46. package/dist/components/spacer/spacer.svelte +6 -25
  47. package/dist/components/textfield/textfield.svelte +94 -543
  48. package/dist/components/textfield/textfield.types.d.ts +13 -33
  49. package/dist/components/toolbar/toolbar.svelte +216 -211
  50. package/dist/components/toolbar/toolbar.types.d.ts +8 -9
  51. package/dist/components/tooltip/tooltip.svelte +201 -266
  52. package/dist/components/tooltip/tooltip.types.d.ts +3 -10
  53. package/dist/constants.js +1 -0
  54. package/dist/escaping.js +0 -1
  55. package/dist/html-mapped.d.ts +1 -15
  56. package/dist/html-mapped.js +0 -19
  57. package/dist/labs/sheet/sheet.svelte +27 -22
  58. package/dist/utils/color.d.ts +2 -2
  59. package/dist/utils/color.js +2 -1
  60. package/dist/utils/components.d.ts +10 -10
  61. package/dist/utils/components.js +16 -75
  62. package/dist/utils/floating.d.ts +58 -0
  63. package/dist/utils/floating.js +131 -0
  64. package/dist/utils/index.d.ts +1 -0
  65. package/dist/utils/index.js +1 -0
  66. package/dist/utils/outside.d.ts +3 -1
  67. package/dist/utils/outside.js +15 -3
  68. package/package.json +6 -3
  69. package/dist/components/dropdown/dropdown.svelte.js +0 -148
  70. package/dist/components/popover/popover.svelte.js +0 -134
  71. package/dist/components/tooltip/tooltip.svelte.js +0 -131
@@ -1,12 +1,6 @@
1
1
  import type { Snippet } from 'svelte';
2
- import type { ClassNameType, IdElementType, KitClassNameType, KitStylePropertiesType, PropValue, SClassProp, SStyleProp, StylePropertiesType } from './';
2
+ import type { ClassNameType, IdElementType, KitClassNameType, KitStylePropertiesType, PropValue, SStyleProp, StylePropertiesType } from './';
3
3
  import type { ClassValue } from 'svelte/elements';
4
- export interface useClassNameProps {
5
- baseClass?: string;
6
- className?: string;
7
- sClass?: SClassProp;
8
- classProps?: Record<string, PropValue>;
9
- }
10
4
  export interface useStylesProps {
11
5
  styleAttr?: string;
12
6
  sStyle?: SStyleProp;
@@ -1,7 +1,8 @@
1
+ import type { ClassValue } from 'svelte/elements';
1
2
  export type IdElementType = string | undefined;
2
- export type ClassNameType = string | string[] | undefined;
3
+ export type ClassNameType = ClassValue | undefined;
3
4
  export type StylePropertiesType = string | undefined;
4
- export type KitClassNameType = string | string[] | undefined;
5
+ export type KitClassNameType = ClassValue | undefined;
5
6
  export type KitStylePropertiesType = Record<string, boolean | string> | undefined;
6
- export type SClassProp = string | string[] | Record<string, boolean | string> | undefined;
7
+ export type SClassProp = ClassValue | Record<string, boolean | string> | undefined;
7
8
  export type SStyleProp = Record<string, boolean | string> | undefined;
@@ -10,7 +10,7 @@ export interface ElevationState {
10
10
  }
11
11
  export type ElevationProps = ElevationType | ElevationState;
12
12
  export interface ColorState {
13
- base?: string;
14
- active?: string;
13
+ base?: string | false;
14
+ active?: string | false;
15
15
  }
16
- export type ColorProps = string | ColorState;
16
+ export type ColorProps = string | false | ColorState;
@@ -3,6 +3,9 @@ const cancelEvents = ['pointerleave', 'pointercancel', 'dragleave', 'pointerup',
3
3
  const activationKeys = ['Enter', ' '];
4
4
  const nestedControls = 'a[href], button, input, select, textarea, summary, [role="button"], [role="link"]';
5
5
  const hosts = new WeakMap();
6
+ function isHostControl(node) {
7
+ return node instanceof Element && node.hasAttribute('data-ripple-host');
8
+ }
6
9
  function resolveDuration(options) {
7
10
  return options.duration && options.duration > 0 ? options.duration : undefined;
8
11
  }
@@ -17,7 +20,9 @@ export function ripple(el, options = {}) {
17
20
  function isFromNestedControl(target) {
18
21
  let node = target instanceof Element ? target : null;
19
22
  while (node && node !== el) {
20
- if (hosts.get(node)?.() || node.matches(nestedControls))
23
+ if (hosts.get(node)?.())
24
+ return true;
25
+ if (node.matches(nestedControls) && !isHostControl(node))
21
26
  return true;
22
27
  node = node.parentElement;
23
28
  }
@@ -68,7 +73,8 @@ export function ripple(el, options = {}) {
68
73
  }
69
74
  const isKeyboard = e instanceof KeyboardEvent;
70
75
  if (isKeyboard) {
71
- if (!activationKeys.includes(e.key) || e.repeat || e.target !== el) {
76
+ const isOwnTarget = e.target === el || isHostControl(e.target);
77
+ if (!activationKeys.includes(e.key) || e.repeat || !isOwnTarget) {
72
78
  return;
73
79
  }
74
80
  }
@@ -1,14 +1,13 @@
1
1
  <script lang="ts">
2
- import { useClassName, useStyles } from '../../utils';
3
- import { makeComponentProps } from '../../html-mapped';
2
+ import { useComponentAttrs } from '../../utils';
4
3
  import type { AccordionProps } from './accordion.types.js';
5
4
 
6
5
  let {
7
6
  ref = $bindable(),
8
7
  is = 'div',
9
8
  children,
10
- class: className = '',
11
- style: styleAttr = '',
9
+ class: className,
10
+ style: styleAttr,
12
11
  's-class': sClass,
13
12
  's-style': sStyle,
14
13
  size = 'md',
@@ -17,49 +16,21 @@
17
16
  rounded = 'md',
18
17
  text,
19
18
  color,
20
- background,
21
19
  spacer,
22
20
  hideIcon,
23
21
  ...rest
24
22
  }: AccordionProps = $props();
25
23
 
26
- let { classProps, styleProps, restProps } = $derived(
27
- makeComponentProps(rest as Record<string, unknown>)
28
- );
29
-
30
- let componentClass = $derived(
31
- useClassName({
32
- baseClass: 'kit-accordion',
33
- className: `${className ?? ''}`.trim(),
34
- sClass,
35
- classProps
36
- })
37
- );
38
-
39
- let componentStyle = $derived(
40
- useStyles({
41
- styleAttr,
42
- sStyle,
43
- styleProps
44
- })
45
- );
46
-
47
- let resolvedStyle = $derived(
48
- [
49
- componentStyle,
50
- color ? `--kit-accordion-item-fg:${color && `var(--kit-color-${color})`}` : '',
51
- background ? `--kit-accordion-item-bg:${background && `var(--kit-color-${background})`}` : ''
52
- ]
53
- .filter(Boolean)
54
- .join('; ')
24
+ let attrs = $derived(
25
+ useComponentAttrs('kit-accordion', { className, sClass, styleAttr, sStyle, color }, rest)
55
26
  );
56
27
  </script>
57
28
 
58
29
  <svelte:element
59
30
  this={is}
60
31
  bind:this={ref}
61
- class={componentClass}
62
- style={resolvedStyle}
32
+ class={attrs.class}
33
+ style={attrs.style}
63
34
  data-text={text ? true : undefined}
64
35
  data-spacer={spacer}
65
36
  data-hide-icon={hideIcon}
@@ -67,199 +38,192 @@
67
38
  data-variant={variant}
68
39
  data-density={density}
69
40
  data-rounded={rounded}
70
- {...restProps}
41
+ {...attrs.rest}
71
42
  >
72
43
  {@render children?.()}
73
44
  </svelte:element>
74
45
 
75
- <style>
76
- .kit-accordion {
77
- display: flex;
78
- flex-wrap: wrap;
79
- justify-content: center;
80
- width: 100%;
81
- padding: 0;
82
- list-style: none;
83
- position: relative;
84
- gap: var(--kit-accordion-gap, 0);
85
- border: 0;
86
- box-sizing: border-box;
87
- transition:
88
- background 140ms ease,
89
- color 140ms ease,
90
- box-shadow 140ms ease,
91
- translate 140ms ease;
92
- }
93
-
94
- .kit-accordion[data-spacer='true'] {
95
- --kit-accordion-gap: 0.5rem;
96
- }
97
-
98
- .kit-accordion[data-spacer='true'] :global(.kit-accordion-item) {
99
- border-radius: var(--kit-accordion-item-radius);
100
- }
101
-
102
- .kit-accordion:not([data-spacer='true']) :global(.kit-accordion-item:first-child) {
103
- border-top-left-radius: var(--kit-accordion-item-radius);
104
- border-top-right-radius: var(--kit-accordion-item-radius);
105
- border-bottom-left-radius: 0;
106
- border-bottom-right-radius: 0;
107
- }
108
-
109
- .kit-accordion:not([data-spacer='true']) :global(.kit-accordion-item) {
110
- border-radius: 0;
111
- }
112
-
113
- .kit-accordion:not([data-spacer='true']) :global(.kit-accordion-item:last-child) {
114
- border-top-left-radius: 0;
115
- border-top-right-radius: 0;
116
- border-bottom-left-radius: var(--kit-accordion-item-radius);
117
- border-bottom-right-radius: var(--kit-accordion-item-radius);
118
- }
119
-
120
- .kit-accordion:not([data-spacer='true']) :global(.kit-accordion-item:first-child:last-child) {
121
- border-radius: var(--kit-accordion-item-radius);
122
- }
123
-
124
- .kit-accordion[data-hide-icon='true'] :global(.kit-accordion-item__indicator) {
125
- display: none;
126
- }
127
-
128
- .kit-accordion[data-variant='text'] :global(.kit-accordion-item),
129
- .kit-accordion[data-variant='text'] :global(.kit-accordion-item:first-child:last-child) {
130
- border-radius: 0 !important;
131
- }
132
-
133
- .kit-accordion:not([data-variant='text'])
134
- :global(.kit-accordion-item[data-read-only='false'][data-disabled='false'] > button:hover) {
135
- background: var(--kit-accordion-item-hover-bg);
136
- }
137
-
138
- /**
139
- * rounded
140
- * @link ...
141
- */
142
- .kit-accordion[data-rounded='0'] :global(.kit-accordion-item) {
143
- --kit-accordion-item-radius: var(--kit-shape-none);
144
- }
145
- .kit-accordion[data-rounded='xs'] :global(.kit-accordion-item) {
146
- --kit-accordion-item-radius: var(--kit-shape-xs);
147
- }
148
- .kit-accordion[data-rounded='sm'] :global(.kit-accordion-item) {
149
- --kit-accordion-item-radius: var(--kit-shape-sm);
150
- }
151
- .kit-accordion[data-rounded='md'] :global(.kit-accordion-item) {
152
- --kit-accordion-item-radius: var(--kit-shape-md);
153
- }
154
- .kit-accordion[data-rounded='lg'] :global(.kit-accordion-item) {
155
- --kit-accordion-item-radius: var(--kit-shape-lg);
156
- }
157
- .kit-accordion[data-rounded='xl'] :global(.kit-accordion-item) {
158
- --kit-accordion-item-radius: var(--kit-shape-xl);
159
- }
160
- .kit-accordion[data-rounded='full'] :global(.kit-accordion-item) {
161
- --kit-accordion-item-radius: var(--kit-shape-full);
162
- }
163
-
164
- /**
165
- * density
166
- * @link no links
167
- */
168
- .kit-accordion[data-density='compact'] {
169
- --kit-accordion-density-offset: var(--kit-density-compact);
170
- }
171
- .kit-accordion[data-density='default'] {
172
- --kit-accordion-density-offset: var(--kit-density-default);
173
- }
174
- .kit-accordion[data-density='comfortable'] {
175
- --kit-accordion-density-offset: var(--kit-density-comfortable);
176
- }
177
-
178
- /**
179
- * variant
180
- * @link no links...
181
- */
182
- .kit-accordion[data-variant='filled'] :global(.kit-accordion-item) {
183
- --kit-accordion-item-bg: var(--kit-color-surface-1);
184
- --kit-accordion-item-fg: var(--kit-color-text);
185
-
186
- --kit-accordion-item-hover-bg: color-mix(in oklab, var(--kit-accordion-item-bg), black 10%);
187
- --kit-accordion-item-active-bg: color-mix(in oklab, var(--kit-accordion-item-bg), black 16%);
188
- }
189
- .kit-accordion[data-variant='outline'] :global(.kit-accordion-item) {
190
- --kit-accordion-item-bg: transparent;
191
- --kit-accordion-item-fg: var(--kit-color-text);
192
- --kit-accordion-item-bd: var(--kit-accordion-item-fg);
193
-
194
- --kit-accordion-item-hover-bg: color-mix(
195
- in oklab,
196
- var(--kit-accordion-item-fg),
197
- transparent 80%
198
- );
199
- --kit-accordion-item-active-bg: color-mix(
200
- in oklab,
201
- var(--kit-accordion-item-fg),
202
- transparent 92%
203
- );
204
- }
205
- .kit-accordion[data-variant='text'] :global(.kit-accordion-item) {
206
- --kit-accordion-item-bg: transparent;
207
- --kit-accordion-item-fg: var(--kit-color-text);
208
-
209
- --kit-accordion-item-hover-bg: color-mix(
210
- in oklab,
211
- var(--kit-accordion-item-fg),
212
- transparent 80%
213
- );
214
- --kit-accordion-item-active-bg: color-mix(
215
- in oklab,
216
- var(--kit-accordion-item-fg),
217
- transparent 92%
218
- );
219
- }
220
-
221
- .kit-accordion[data-variant='text'] :global(.kit-accordion-item .outline),
222
- .kit-accordion[data-variant='filled'] :global(.kit-accordion-item .outline) {
223
- display: none;
224
- }
225
-
226
- .kit-accordion[data-variant='filled']
227
- :global(.kit-accordion-item .kit-accordion-item__separator) {
228
- display: none;
229
- }
230
-
231
- /**
232
- * size
233
- * @link nothing...
234
- */
235
- .kit-accordion[data-size='xs'] :global(.kit-accordion-item) {
236
- --kit-accordion-item-h: 32px;
237
- --kit-accordion-item-p: 8px;
238
- --kit-accordion-item-gap: var(--kit-space-compact);
239
- --kit-accordion-item-font: var(--kit-font-xs);
240
- }
241
- .kit-accordion[data-size='sm'] :global(.kit-accordion-item) {
242
- --kit-accordion-item-h: 40px;
243
- --kit-accordion-item-p: 10px;
244
- --kit-accordion-item-gap: var(--kit-space-default);
245
- --kit-accordion-item-font: var(--kit-font-sm);
246
- }
247
- .kit-accordion[data-size='md'] :global(.kit-accordion-item) {
248
- --kit-accordion-item-h: 48px;
249
- --kit-accordion-item-p: 12px;
250
- --kit-accordion-item-gap: var(--kit-space-default);
251
- --kit-accordion-item-font: var(--kit-font-md);
252
- }
253
- .kit-accordion[data-size='lg'] :global(.kit-accordion-item) {
254
- --kit-accordion-item-h: 56px;
255
- --kit-accordion-item-p: 16px;
256
- --kit-accordion-item-gap: var(--kit-space-default);
257
- --kit-accordion-item-font: var(--kit-font-lg);
258
- }
259
- .kit-accordion[data-size='xl'] :global(.kit-accordion-item) {
260
- --kit-accordion-item-h: 64px;
261
- --kit-accordion-item-p: 20px;
262
- --kit-accordion-item-gap: var(--kit-space-comfortable);
263
- --kit-accordion-item-font: var(--kit-font-xl);
264
- }
265
- </style>
46
+ <style>:where(.kit-accordion) {
47
+ --kit-accordion-color: initial;
48
+ --kit-accordion-on-color: initial;
49
+ --kit-accordion-item-radius: var(--kit-accordion-radius);
50
+ --kit-accordion-gap: 0;
51
+ }
52
+
53
+ .kit-accordion {
54
+ position: relative;
55
+ display: flex;
56
+ flex-wrap: wrap;
57
+ justify-content: center;
58
+ gap: var(--kit-accordion-gap);
59
+ box-sizing: border-box;
60
+ width: 100%;
61
+ padding: 0;
62
+ border: 0;
63
+ list-style: none;
64
+ }
65
+ .kit-accordion[data-spacer=true] {
66
+ --kit-accordion-gap: 0.5rem;
67
+ }
68
+ .kit-accordion[data-spacer=true] :global(.kit-accordion-item) {
69
+ border-radius: var(--kit-accordion-item-radius);
70
+ }
71
+ .kit-accordion:not([data-spacer=true]) :global(.kit-accordion-item) {
72
+ border-radius: 0;
73
+ }
74
+ .kit-accordion:not([data-spacer=true]) :global(.kit-accordion-item:first-child) {
75
+ border-start-start-radius: var(--kit-accordion-item-radius);
76
+ border-start-end-radius: var(--kit-accordion-item-radius);
77
+ }
78
+ .kit-accordion:not([data-spacer=true]) :global(.kit-accordion-item:last-child) {
79
+ border-end-start-radius: var(--kit-accordion-item-radius);
80
+ border-end-end-radius: var(--kit-accordion-item-radius);
81
+ }
82
+ .kit-accordion[data-hide-icon=true] :global(.kit-accordion-item__indicator) {
83
+ display: none;
84
+ }
85
+ .kit-accordion:not([data-variant=outline], [data-variant=surface]) :global(.kit-accordion-item .outline) {
86
+ display: none;
87
+ }
88
+ .kit-accordion:is([data-variant=filled], [data-variant=tonal]) :global(.kit-accordion-item .kit-accordion-item__separator) {
89
+ display: none;
90
+ }
91
+ .kit-accordion:not([data-variant=text]) :global(.kit-accordion-item[data-read-only='false'][data-disabled='false']
92
+ > .kit-accordion-item__trigger:hover) {
93
+ background-color: var(--kit-accordion-item-hover);
94
+ }
95
+
96
+ :where(.kit-accordion[data-variant=text]) {
97
+ --kit-accordion-item-radius: 0;
98
+ }
99
+
100
+ /**
101
+ * size: read by the items
102
+ * @link https://lapikit.dev/docs/components/accordion#size
103
+ */
104
+ :where(.kit-accordion[data-size=xs]) {
105
+ --kit-accordion-item-h: 2rem;
106
+ --kit-accordion-item-p: 0.5rem;
107
+ --kit-accordion-item-gap: 0.125rem;
108
+ --kit-accordion-item-font: var(--kit-font-xs);
109
+ }
110
+
111
+ :where(.kit-accordion[data-size=sm]) {
112
+ --kit-accordion-item-h: 2.5rem;
113
+ --kit-accordion-item-p: 0.625rem;
114
+ --kit-accordion-item-gap: 0.25rem;
115
+ --kit-accordion-item-font: var(--kit-font-sm);
116
+ }
117
+
118
+ :where(.kit-accordion[data-size=md]) {
119
+ --kit-accordion-item-h: 3rem;
120
+ --kit-accordion-item-p: 0.75rem;
121
+ --kit-accordion-item-gap: 0.25rem;
122
+ --kit-accordion-item-font: var(--kit-font-md);
123
+ }
124
+
125
+ :where(.kit-accordion[data-size=lg]) {
126
+ --kit-accordion-item-h: 3.5rem;
127
+ --kit-accordion-item-p: 1rem;
128
+ --kit-accordion-item-gap: 0.25rem;
129
+ --kit-accordion-item-font: var(--kit-font-lg);
130
+ }
131
+
132
+ :where(.kit-accordion[data-size=xl]) {
133
+ --kit-accordion-item-h: 4rem;
134
+ --kit-accordion-item-p: 1.25rem;
135
+ --kit-accordion-item-gap: 0.375rem;
136
+ --kit-accordion-item-font: var(--kit-font-xl);
137
+ }
138
+
139
+ /**
140
+ * variant: applied on the items, (0,1,0) to win over the base of the item whatever the order of the styles
141
+ * @link https://lapikit.dev/docs/components/accordion#variants
142
+ */
143
+ :where(.kit-accordion[data-variant=tonal]) :global(.kit-accordion-item) {
144
+ --kit-accordion-item-bg: color-mix(in oklab, var(--kit-accordion-item-ink) 16%, transparent);
145
+ --kit-accordion-item-fg: var(--kit-accordion-item-ink);
146
+ --kit-accordion-item-border: transparent;
147
+ --kit-accordion-item-active: color-mix(in oklab, var(--kit-accordion-item-ink) 28%, transparent);
148
+ --kit-accordion-item-active-fg: var(--kit-accordion-item-ink);
149
+ }
150
+
151
+ :where(.kit-accordion[data-variant=outline]) :global(.kit-accordion-item) {
152
+ --kit-accordion-item-bg: transparent;
153
+ --kit-accordion-item-fg: var(--kit-accordion-item-ink);
154
+ --kit-accordion-item-border: var(--kit-accordion-item-color, var(--kit-color-border));
155
+ --kit-accordion-item-active: color-mix(in oklab, var(--kit-accordion-item-ink) 14%, transparent);
156
+ --kit-accordion-item-active-fg: var(--kit-accordion-item-ink);
157
+ }
158
+
159
+ :where(.kit-accordion[data-variant=surface]) :global(.kit-accordion-item) {
160
+ --kit-accordion-item-bg: color-mix(in oklab, var(--kit-accordion-item-ink) 8%, transparent);
161
+ --kit-accordion-item-fg: var(--kit-accordion-item-ink);
162
+ --kit-accordion-item-border: color-mix(in oklab, var(--kit-accordion-item-ink) 35%, transparent);
163
+ --kit-accordion-item-active: color-mix(in oklab, var(--kit-accordion-item-ink) 18%, transparent);
164
+ --kit-accordion-item-active-fg: var(--kit-accordion-item-ink);
165
+ }
166
+
167
+ :where(.kit-accordion[data-variant=text]) :global(.kit-accordion-item) {
168
+ --kit-accordion-item-bg: transparent;
169
+ --kit-accordion-item-fg: var(--kit-accordion-item-ink);
170
+ --kit-accordion-item-border: transparent;
171
+ --kit-accordion-item-active: color-mix(in oklab, var(--kit-accordion-item-ink) 14%, transparent);
172
+ --kit-accordion-item-active-fg: var(--kit-accordion-item-ink);
173
+ }
174
+
175
+ /**
176
+ * rounded
177
+ * @link https://lapikit.dev/docs/customize
178
+ */
179
+ :where(.kit-accordion[data-rounded="0"]) {
180
+ --kit-accordion-radius: var(--kit-shape-none);
181
+ }
182
+
183
+ :where(.kit-accordion[data-rounded=xs]) {
184
+ --kit-accordion-radius: var(--kit-shape-xs);
185
+ }
186
+
187
+ :where(.kit-accordion[data-rounded=sm]) {
188
+ --kit-accordion-radius: var(--kit-shape-sm);
189
+ }
190
+
191
+ :where(.kit-accordion[data-rounded=md]) {
192
+ --kit-accordion-radius: var(--kit-shape-md);
193
+ }
194
+
195
+ :where(.kit-accordion[data-rounded=lg]) {
196
+ --kit-accordion-radius: var(--kit-shape-lg);
197
+ }
198
+
199
+ :where(.kit-accordion[data-rounded=xl]) {
200
+ --kit-accordion-radius: var(--kit-shape-xl);
201
+ }
202
+
203
+ :where(.kit-accordion[data-rounded=full]) {
204
+ --kit-accordion-radius: var(--kit-shape-full);
205
+ }
206
+
207
+ /**
208
+ * density
209
+ * @link https://lapikit.dev/docs/components/accordion#density
210
+ */
211
+ :where(.kit-accordion[data-density=dense]) {
212
+ --kit-accordion-density-offset: var(--kit-density-dense);
213
+ }
214
+
215
+ :where(.kit-accordion[data-density=compact]) {
216
+ --kit-accordion-density-offset: var(--kit-density-compact);
217
+ }
218
+
219
+ :where(.kit-accordion[data-density=default]) {
220
+ --kit-accordion-density-offset: var(--kit-density-default);
221
+ }
222
+
223
+ :where(.kit-accordion[data-density=comfortable]) {
224
+ --kit-accordion-density-offset: var(--kit-density-comfortable);
225
+ }
226
+
227
+ :where(.kit-accordion[data-density=spacious]) {
228
+ --kit-accordion-density-offset: var(--kit-density-spacious);
229
+ }</style>
@@ -1,6 +1,6 @@
1
- import type { RoundedType, Component, SizeType, DensityType, ElevationProps } from '../../@types';
1
+ import type { ColorProps, Component, ElevationProps, RoundedType, SizeType } from '../../@types';
2
2
  import type { Snippet } from 'svelte';
3
- type AccordionVariant = 'filled' | 'outline' | 'text';
3
+ type AccordionVariant = 'filled' | 'tonal' | 'outline' | 'surface' | 'text';
4
4
  export type ModelAccordionItemProps = {
5
5
  open: boolean;
6
6
  };
@@ -8,12 +8,11 @@ export interface AccordionProps extends Component {
8
8
  ref?: HTMLElement | null;
9
9
  is?: 'div';
10
10
  text?: string;
11
- color?: string;
12
- background?: string;
11
+ color?: string | false;
13
12
  rounded?: RoundedType | 'full';
14
13
  size?: SizeType;
15
14
  variant?: AccordionVariant;
16
- density?: DensityType;
15
+ density?: 'dense' | 'compact' | 'default' | 'comfortable' | 'spacious';
17
16
  spacer?: boolean;
18
17
  hideIcon?: boolean;
19
18
  }
@@ -25,8 +24,7 @@ export interface AccordionItemProps extends Component {
25
24
  is?: 'div';
26
25
  index: number | string;
27
26
  text?: string;
28
- color?: string;
29
- background?: string;
27
+ color?: ColorProps;
30
28
  readOnly?: boolean;
31
29
  open?: boolean;
32
30
  disabled?: boolean;