lapikit 0.6.3 → 0.6.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 (38) hide show
  1. package/dist/components/accordion/accordion.svelte +173 -35
  2. package/dist/components/accordion/accordion.types.d.ts +8 -3
  3. package/dist/components/accordion/modules/accordion-item.svelte +79 -74
  4. package/dist/components/alert/alert.svelte +204 -115
  5. package/dist/components/alert/alert.types.d.ts +8 -6
  6. package/dist/components/app/app.svelte +76 -37
  7. package/dist/components/appbar/appbar.svelte +116 -59
  8. package/dist/components/appbar/appbar.types.d.ts +5 -4
  9. package/dist/components/aspect-ratio/aspect-ratio.svelte +4 -13
  10. package/dist/components/aspect-ratio/aspect-ratio.types.d.ts +2 -1
  11. package/dist/components/avatar/avatar.svelte +117 -67
  12. package/dist/components/avatar/avatar.types.d.ts +7 -5
  13. package/dist/components/btn/btn.svelte +175 -171
  14. package/dist/components/btn/btn.types.d.ts +5 -2
  15. package/dist/components/card/card.svelte +11 -3
  16. package/dist/components/card/modules/card-actions.svelte +1 -1
  17. package/dist/components/chip/chip.svelte +172 -142
  18. package/dist/components/chip/chip.types.d.ts +7 -3
  19. package/dist/components/dialog/dialog.svelte +94 -83
  20. package/dist/components/dialog/dialog.types.d.ts +7 -5
  21. package/dist/components/dropdown/dropdown.svelte +47 -31
  22. package/dist/components/dropdown/dropdown.types.d.ts +4 -2
  23. package/dist/components/icon/icon.svelte +34 -51
  24. package/dist/components/list/list.svelte +10 -4
  25. package/dist/components/list/modules/list-item.svelte +10 -59
  26. package/dist/components/modal/modal.svelte +114 -102
  27. package/dist/components/modal/modal.types.d.ts +7 -5
  28. package/dist/components/popover/popover.svelte +54 -36
  29. package/dist/components/popover/popover.types.d.ts +4 -2
  30. package/dist/components/separator/separator.svelte +15 -23
  31. package/dist/components/separator/separator.types.d.ts +1 -2
  32. package/dist/components/textfield/textfield.svelte +181 -152
  33. package/dist/components/textfield/textfield.types.d.ts +4 -3
  34. package/dist/components/toolbar/toolbar.svelte +127 -103
  35. package/dist/components/toolbar/toolbar.types.d.ts +6 -7
  36. package/dist/components/tooltip/tooltip.svelte +40 -40
  37. package/dist/components/tooltip/tooltip.types.d.ts +3 -3
  38. package/package.json +1 -1
@@ -6,17 +6,20 @@
6
6
  let {
7
7
  ref = $bindable(),
8
8
  is = 'div',
9
- children = undefined,
9
+ children,
10
10
  class: className = '',
11
11
  style: styleAttr = '',
12
12
  's-class': sClass,
13
13
  's-style': sStyle,
14
- text = undefined,
15
- color = undefined,
16
- background = undefined,
17
- rounded = undefined,
18
- spacer = false,
19
- hideIcon = false,
14
+ size = 'md',
15
+ variant = 'filled',
16
+ density = 'default',
17
+ rounded = 'md',
18
+ text,
19
+ color,
20
+ background,
21
+ spacer,
22
+ hideIcon,
20
23
  ...rest
21
24
  }: AccordionProps = $props();
22
25
 
@@ -41,11 +44,11 @@
41
44
  })
42
45
  );
43
46
 
44
- let mergedStyle = $derived(
47
+ let resolvedStyle = $derived(
45
48
  [
46
49
  componentStyle,
47
- color ? `--kit-accordion-fg:${color}` : '',
48
- background ? `--kit-accordion-bg:${background}` : ''
50
+ color ? `--kit-accordion-item-fg:${color && `var(--kit-color-${color})`}` : '',
51
+ background ? `--kit-accordion-item-bg:${background && `var(--kit-color-${background})`}` : ''
49
52
  ]
50
53
  .filter(Boolean)
51
54
  .join('; ')
@@ -56,23 +59,21 @@
56
59
  this={is}
57
60
  bind:this={ref}
58
61
  class={componentClass}
59
- style={mergedStyle}
60
- {...restProps}
62
+ style={resolvedStyle}
61
63
  data-text={text ? true : undefined}
62
64
  data-spacer={spacer}
63
65
  data-hide-icon={hideIcon}
66
+ data-size={size}
67
+ data-variant={variant}
68
+ data-density={density}
64
69
  data-rounded={rounded}
70
+ {...restProps}
65
71
  >
66
72
  {@render children?.()}
67
73
  </svelte:element>
68
74
 
69
75
  <style>
70
76
  .kit-accordion {
71
- --kit-accordion-radius: 8px;
72
- --kit-accordion-gap: 0;
73
- --kit-accordion-fg: var(--kit-fg);
74
- --kit-accordion-bg: transparent;
75
-
76
77
  display: flex;
77
78
  flex-wrap: wrap;
78
79
  justify-content: center;
@@ -80,41 +81,178 @@
80
81
  padding: 0;
81
82
  list-style: none;
82
83
  position: relative;
83
- z-index: 1;
84
- gap: var(--kit-accordion-gap);
85
- color: var(--kit-accordion-fg);
86
- background: var(--kit-accordion-bg);
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;
87
92
  }
88
93
 
89
94
  .kit-accordion[data-spacer='true'] {
90
- --kit-accordion-gap: 1rem;
95
+ --kit-accordion-gap: 0.5rem;
91
96
  }
92
97
 
93
- .kit-accordion[data-rounded='0'] {
94
- --kit-accordion-radius: 0;
98
+ .kit-accordion[data-spacer='true'] :global(.kit-accordion-item) {
99
+ border-radius: var(--kit-accordion-item-radius);
95
100
  }
96
101
 
97
- .kit-accordion[data-rounded='xs'] {
98
- --kit-accordion-radius: 2px;
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;
99
107
  }
100
108
 
101
- .kit-accordion[data-rounded='sm'] {
102
- --kit-accordion-radius: 4px;
109
+ .kit-accordion:not([data-spacer='true']) :global(.kit-accordion-item) {
110
+ border-radius: 0;
103
111
  }
104
112
 
105
- .kit-accordion[data-rounded='md'] {
106
- --kit-accordion-radius: 8px;
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);
107
118
  }
108
119
 
109
- .kit-accordion[data-rounded='lg'] {
110
- --kit-accordion-radius: 16px;
120
+ .kit-accordion[data-hide-icon='true'] :global(.kit-accordion-item__indicator) {
121
+ display: none;
111
122
  }
112
123
 
113
- .kit-accordion[data-rounded='xl'] {
114
- --kit-accordion-radius: 99999px;
124
+ /**
125
+ * rounded
126
+ * @link ...
127
+ */
128
+ .kit-accordion[data-rounded='0'] :global(.kit-accordion-item) {
129
+ --kit-accordion-item-radius: var(--kit-shape-none);
130
+ }
131
+ .kit-accordion[data-rounded='xs'] :global(.kit-accordion-item) {
132
+ --kit-accordion-item-radius: var(--kit-shape-xs);
133
+ }
134
+ .kit-accordion[data-rounded='sm'] :global(.kit-accordion-item) {
135
+ --kit-accordion-item-radius: var(--kit-shape-sm);
136
+ }
137
+ .kit-accordion[data-rounded='md'] :global(.kit-accordion-item) {
138
+ --kit-accordion-item-radius: var(--kit-shape-md);
139
+ }
140
+ .kit-accordion[data-rounded='lg'] :global(.kit-accordion-item) {
141
+ --kit-accordion-item-radius: var(--kit-shape-lg);
142
+ }
143
+ .kit-accordion[data-rounded='xl'] :global(.kit-accordion-item) {
144
+ --kit-accordion-item-radius: var(--kit-shape-xl);
145
+ }
146
+ .kit-accordion[data-rounded='full'] :global(.kit-accordion-item) {
147
+ --kit-accordion-item-radius: var(--kit-shape-full);
115
148
  }
116
149
 
117
- .kit-accordion[data-hide-icon='true'] :global(.kit-accordion-item__indicator) {
150
+ /**
151
+ * density
152
+ * @link no links
153
+ */
154
+ .kit-accordion[data-density='none'] {
155
+ --kit-accordion-density-scale: 0;
156
+ --kit-accordion-density-h-scale: 0;
157
+ }
158
+ .kit-accordion[data-density='compact'] {
159
+ --kit-accordion-density-scale: 0.9;
160
+ --kit-accordion-density-h-scale: 0.92;
161
+ }
162
+ .kit-accordion[data-density='default'] {
163
+ --kit-accordion-density-scale: 1;
164
+ --kit-accordion-density-h-scale: 1;
165
+ }
166
+ .kit-accordion[data-density='comfortable'] {
167
+ --kit-accordion-density-scale: 1.1;
168
+ --kit-accordion-density-h-scale: 1.15;
169
+ }
170
+
171
+ /**
172
+ * variant
173
+ * @link no links...
174
+ */
175
+ .kit-accordion[data-variant='filled'] :global(.kit-accordion-item) {
176
+ --kit-accordion-item-bg: var(--kit-color-surface-1);
177
+ --kit-accordion-item-fg: var(--kit-color-text);
178
+
179
+ --kit-accordion-item-hover-bg: color-mix(in oklab, var(--kit-accordion-item-bg), black 10%);
180
+ --kit-accordion-item-active-bg: color-mix(in oklab, var(--kit-accordion-item-bg), black 16%);
181
+ }
182
+ .kit-accordion[data-variant='outline'] :global(.kit-accordion-item) {
183
+ --kit-accordion-item-bg: transparent;
184
+ --kit-accordion-item-fg: var(--kit-color-text);
185
+ --kit-accordion-item-bd: var(--kit-accordion-item-fg);
186
+
187
+ --kit-accordion-item-hover-bg: color-mix(
188
+ in oklab,
189
+ var(--kit-accordion-item-fg),
190
+ transparent 80%
191
+ );
192
+ --kit-accordion-item-active-bg: color-mix(
193
+ in oklab,
194
+ var(--kit-accordion-item-fg),
195
+ transparent 92%
196
+ );
197
+ }
198
+ .kit-accordion[data-variant='text'] :global(.kit-accordion-item) {
199
+ --kit-accordion-item-bg: transparent;
200
+ --kit-accordion-item-fg: var(--kit-color-text);
201
+
202
+ --kit-accordion-item-hover-bg: color-mix(
203
+ in oklab,
204
+ var(--kit-accordion-item-fg),
205
+ transparent 80%
206
+ );
207
+ --kit-accordion-item-active-bg: color-mix(
208
+ in oklab,
209
+ var(--kit-accordion-item-fg),
210
+ transparent 92%
211
+ );
212
+ }
213
+
214
+ .kit-accordion[data-variant='text'] :global(.kit-accordion-item .outline),
215
+ .kit-accordion[data-variant='filled'] :global(.kit-accordion-item .outline) {
216
+ display: none;
217
+ }
218
+
219
+ .kit-accordion[data-variant='filled']
220
+ :global(.kit-accordion-item .kit-accordion-item__separator) {
118
221
  display: none;
119
222
  }
223
+
224
+ /**
225
+ * size
226
+ * @link nothing...
227
+ */
228
+ .kit-accordion[data-size='xs'] :global(.kit-accordion-item) {
229
+ --kit-accordion-item-h: 28px;
230
+ --kit-accordion-item-px: 10px;
231
+ --kit-accordion-item-gap: 4px;
232
+ --kit-accordion-item-font: 0.75rem;
233
+ }
234
+ .kit-accordion[data-size='sm'] :global(.kit-accordion-item) {
235
+ --kit-accordion-item-h: 32px;
236
+ --kit-accordion-item-px: 12px;
237
+ --kit-accordion-item-gap: 6px;
238
+ --kit-accordion-item-font: 0.875rem;
239
+ }
240
+ .kit-accordion[data-size='md'] :global(.kit-accordion-item) {
241
+ --kit-accordion-item-h: 40px;
242
+ --kit-accordion-item-px: 16px;
243
+ --kit-accordion-item-gap: 8px;
244
+ --kit-accordion-item-font: 1rem;
245
+ }
246
+ .kit-accordion[data-size='lg'] :global(.kit-accordion-item) {
247
+ --kit-accordion-item-h: 48px;
248
+ --kit-accordion-item-px: 20px;
249
+ --kit-accordion-item-gap: 10px;
250
+ --kit-accordion-item-font: 1.125rem;
251
+ }
252
+ .kit-accordion[data-size='xl'] :global(.kit-accordion-item) {
253
+ --kit-accordion-item-h: 56px;
254
+ --kit-accordion-item-px: 24px;
255
+ --kit-accordion-item-gap: 12px;
256
+ --kit-accordion-item-font: 1.25rem;
257
+ }
120
258
  </style>
@@ -1,5 +1,6 @@
1
- import type { RoundedType, Component } from '../../@types';
1
+ import type { RoundedType, Component, SizeType, DensityType, ElevationProps } from '../../@types';
2
2
  import type { Snippet } from 'svelte';
3
+ type AccordionVariant = 'filled' | 'outline' | 'text';
3
4
  export type ModelAccordionItemProps = {
4
5
  open: boolean;
5
6
  };
@@ -9,7 +10,10 @@ export interface AccordionProps extends Component {
9
10
  text?: string;
10
11
  color?: string;
11
12
  background?: string;
12
- rounded?: RoundedType;
13
+ rounded?: RoundedType | 'full';
14
+ size?: SizeType;
15
+ variant?: AccordionVariant;
16
+ density?: DensityType;
13
17
  spacer?: boolean;
14
18
  hideIcon?: boolean;
15
19
  }
@@ -21,7 +25,6 @@ export interface AccordionItemProps extends Component {
21
25
  is?: 'div';
22
26
  index: number | string;
23
27
  text?: string;
24
- rounded?: RoundedType;
25
28
  color?: string;
26
29
  background?: string;
27
30
  readOnly?: boolean;
@@ -30,4 +33,6 @@ export interface AccordionItemProps extends Component {
30
33
  toggle?: (index: number | string) => void;
31
34
  indicator?: Snippet<[AccordionItemModelProps]>;
32
35
  activator?: Snippet;
36
+ elevation?: ElevationProps;
33
37
  }
38
+ export {};
@@ -1,27 +1,27 @@
1
1
  <script lang="ts">
2
- import { useClassName, useStyles } from '../../../utils';
2
+ import { useClassName, useElevation, useStyles } from '../../../utils';
3
3
  import { makeComponentProps } from '../../../html-mapped';
4
4
  import type { AccordionItemModelProps, AccordionItemProps } from '../accordion.types.js';
5
5
 
6
6
  let {
7
7
  ref = $bindable(),
8
8
  is = 'div',
9
- children = undefined,
9
+ children,
10
10
  class: className = '',
11
11
  style: styleAttr = '',
12
12
  's-class': sClass,
13
13
  's-style': sStyle,
14
- activator = undefined,
15
- indicator = undefined,
16
- text = undefined,
17
- rounded = undefined,
18
- color = undefined,
19
- background = undefined,
14
+ activator,
15
+ indicator,
16
+ text,
17
+ color,
18
+ background,
20
19
  index,
21
- open = false,
22
- toggle = undefined,
20
+ open,
21
+ toggle,
23
22
  disabled = false,
24
23
  readOnly = false,
24
+ elevation,
25
25
  ...rest
26
26
  }: AccordionItemProps = $props();
27
27
 
@@ -46,16 +46,6 @@
46
46
  })
47
47
  );
48
48
 
49
- let mergedStyle = $derived(
50
- [
51
- componentStyle,
52
- color ? `--kit-accordion-item-fg:${color}` : '',
53
- background ? `--kit-accordion-item-bg:${background}` : ''
54
- ]
55
- .filter(Boolean)
56
- .join('; ')
57
- );
58
-
59
49
  let safeOpen = $derived(!!open);
60
50
  let model: AccordionItemModelProps = {
61
51
  get open() {
@@ -63,22 +53,39 @@
63
53
  }
64
54
  };
65
55
 
56
+ let elevationState = $derived(useElevation(elevation));
57
+
66
58
  function handleToggle() {
67
59
  if (readOnly || disabled || !toggle) return;
68
60
  toggle(index);
69
61
  }
62
+
63
+ let resolvedStyle = $derived(
64
+ [
65
+ componentStyle,
66
+ color ? `--kit-accordion-item-fg:${color && `var(--kit-color-${color})`}` : '',
67
+ background ? `--kit-accordion-item-bg:${background && `var(--kit-color-${background})`}` : ''
68
+ ]
69
+ .filter(Boolean)
70
+ .join('; ')
71
+ );
70
72
  </script>
71
73
 
72
74
  <svelte:element
73
75
  this={is}
74
76
  bind:this={ref}
75
77
  class={componentClass}
76
- style={mergedStyle}
77
- {...restProps}
78
- data-open={safeOpen}
78
+ style={resolvedStyle}
79
79
  data-disabled={disabled}
80
- data-rounded={rounded}
80
+ data-read-only={readOnly}
81
+ data-active={safeOpen}
82
+ data-elevation={elevationState.base}
83
+ data-elevation-hover={elevationState.hover}
84
+ data-elevation-active={elevationState.active}
85
+ {...restProps}
81
86
  >
87
+ <span class="outline"></span>
88
+
82
89
  <button
83
90
  class="kit-accordion-item__trigger"
84
91
  type="button"
@@ -110,6 +117,8 @@
110
117
  </span>
111
118
  </button>
112
119
 
120
+ <span class="kit-accordion-item__separator"></span>
121
+
113
122
  <div class="kit-accordion-item__content" hidden={!safeOpen}>
114
123
  <div class="kit-accordion-item__content-inner">
115
124
  {@render children?.()}
@@ -118,62 +127,25 @@
118
127
  </svelte:element>
119
128
 
120
129
  <style>
121
- button {
122
- appearance: none;
123
- background: none;
124
- border: none;
125
- font: inherit;
126
- color: inherit;
127
- }
128
-
129
130
  .kit-accordion-item {
130
- --kit-accordion-item-radius: var(--kit-accordion-radius, 8px);
131
- --kit-accordion-item-fg: var(--kit-accordion-fg, var(--kit-fg));
132
- --kit-accordion-item-bg: var(--kit-surface-2);
133
- --kit-accordion-item-bd: color-mix(in oklab, var(--kit-accordion-item-bg), var(--kit-fg) 12%);
134
- --kit-accordion-item-trigger-y: 1rem;
135
- --kit-accordion-item-trigger-x: 1.25rem;
136
-
137
131
  flex: 1 0 100%;
138
132
  max-width: 100%;
139
133
  position: relative;
140
- border-radius: var(--kit-accordion-item-radius);
134
+ border: 0;
135
+ box-sizing: border-box;
141
136
  background: var(--kit-accordion-item-bg);
142
137
  color: var(--kit-accordion-item-fg);
143
- border: 1px solid var(--kit-accordion-item-bd);
144
- transition:
145
- border-color 150ms ease,
146
- background 150ms ease,
147
- box-shadow 150ms ease;
138
+ gap: var(--kit-accordion-item-gap);
139
+ text-decoration: none;
140
+ font-size: var(--kit-accordion-item-font);
148
141
  overflow: clip;
149
142
  }
150
143
 
151
- .kit-accordion-item[data-rounded='0'] {
152
- --kit-accordion-item-radius: 0;
153
- }
154
-
155
- .kit-accordion-item[data-rounded='xs'] {
156
- --kit-accordion-item-radius: 2px;
157
- }
158
-
159
- .kit-accordion-item[data-rounded='sm'] {
160
- --kit-accordion-item-radius: 4px;
161
- }
162
-
163
- .kit-accordion-item[data-rounded='md'] {
164
- --kit-accordion-item-radius: 8px;
165
- }
166
-
167
- .kit-accordion-item[data-rounded='lg'] {
168
- --kit-accordion-item-radius: 16px;
169
- }
170
-
171
- .kit-accordion-item[data-rounded='xl'] {
172
- --kit-accordion-item-radius: 99999px;
173
- }
174
-
175
- .kit-accordion-item[data-open='true'] {
176
- box-shadow: 0 10px 28px color-mix(in oklab, var(--kit-fg), transparent 90%);
144
+ .kit-accordion-item > button {
145
+ appearance: none;
146
+ border: 0;
147
+ font: inherit;
148
+ text-align: inherit;
177
149
  }
178
150
 
179
151
  .kit-accordion-item__trigger {
@@ -181,10 +153,13 @@
181
153
  display: flex;
182
154
  align-items: center;
183
155
  justify-content: space-between;
184
- gap: 1rem;
185
- padding: var(--kit-accordion-item-trigger-y) var(--kit-accordion-item-trigger-x);
156
+ gap: var(--kit-accordion-item-gap);
157
+ min-height: calc(var(--kit-accordion-item-h) * var(--kit-accordion-density-h-scale));
158
+ padding: calc(var(--kit-accordion-item-px) * var(--kit-accordion-density-scale));
186
159
  cursor: pointer;
187
160
  text-align: left;
161
+ background: var(--kit-accordion-item-bg);
162
+ color: var(--kit-accordion-item-fg);
188
163
  }
189
164
 
190
165
  .kit-accordion-item__trigger:disabled,
@@ -220,6 +195,36 @@
220
195
  }
221
196
 
222
197
  .kit-accordion-item__content-inner {
223
- padding: 0 1.25rem 1rem;
198
+ padding: calc(var(--kit-accordion-item-px) * var(--kit-accordion-density-scale));
199
+ }
200
+
201
+ .kit-accordion-item__separator {
202
+ width: 96%;
203
+ height: 1px;
204
+ display: block;
205
+ position: relative;
206
+ background: var(--kit-accordion-item-fg);
207
+ margin: 0 auto;
208
+ }
209
+
210
+ .kit-accordion-item[data-read-only='false'][data-disabled='false'] > button:hover {
211
+ background: var(--kit-accordion-item-hover-bg);
212
+ }
213
+
214
+ /**I think is a good idea for not use this*/
215
+ /* .kit-accordion-item[data-active='true'][data-disabled='false'][data-read-only='false'] > button {
216
+ background: var(--kit-accordion-item-active-bg);
217
+ }
218
+ .kit-accordion-item[data-disabled='false'][data-read-only='false'] > button:active {
219
+ background: var(--kit-accordion-item-active-bg);
220
+ } */
221
+
222
+ .kit-accordion-item[data-disabled='false'][data-read-only='false'] > button:focus-visible {
223
+ outline: 2px solid var(--kit-focus);
224
+ outline-offset: 2px;
225
+ }
226
+
227
+ .kit-accordion-item .outline {
228
+ --outline-color: var(--kit-accordion-item-bd);
224
229
  }
225
230
  </style>