lapikit 0.7.2 → 0.7.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 (73) 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 +33 -17
  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 +29 -44
  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 +431 -465
  17. package/dist/components/btn/btn.types.d.ts +5 -6
  18. package/dist/components/card/card.svelte +214 -176
  19. package/dist/components/card/card.types.d.ts +6 -3
  20. package/dist/components/card/modules/card-actions.svelte +11 -35
  21. package/dist/components/card/modules/card-container.svelte +9 -33
  22. package/dist/components/card/modules/card-content.svelte +18 -44
  23. package/dist/components/card/modules/card-media.svelte +10 -34
  24. package/dist/components/card/modules/card-title.svelte +22 -48
  25. package/dist/components/chip/chip.svelte +416 -464
  26. package/dist/components/chip/chip.types.d.ts +5 -5
  27. package/dist/components/dialog/dialog.svelte +174 -171
  28. package/dist/components/dialog/dialog.types.d.ts +6 -6
  29. package/dist/components/dropdown/dropdown.svelte +149 -144
  30. package/dist/components/dropdown/dropdown.types.d.ts +4 -11
  31. package/dist/components/field/field.svelte +474 -0
  32. package/dist/components/field/field.svelte.d.ts +4 -0
  33. package/dist/components/field/field.types.d.ts +46 -0
  34. package/dist/components/field/field.types.js +1 -0
  35. package/dist/components/icon/icon.svelte +67 -96
  36. package/dist/components/icon/icon.types.d.ts +2 -1
  37. package/dist/components/index.d.ts +2 -0
  38. package/dist/components/index.js +1 -0
  39. package/dist/components/list/list.svelte +193 -194
  40. package/dist/components/list/list.types.d.ts +5 -7
  41. package/dist/components/list/modules/list-item.svelte +134 -147
  42. package/dist/components/modal/modal.svelte +239 -222
  43. package/dist/components/modal/modal.types.d.ts +6 -6
  44. package/dist/components/popover/popover.svelte +125 -127
  45. package/dist/components/popover/popover.types.d.ts +4 -11
  46. package/dist/components/separator/separator.svelte +56 -87
  47. package/dist/components/separator/separator.types.d.ts +1 -1
  48. package/dist/components/spacer/spacer.svelte +6 -25
  49. package/dist/components/textfield/textfield.svelte +94 -543
  50. package/dist/components/textfield/textfield.types.d.ts +13 -33
  51. package/dist/components/toolbar/toolbar.svelte +216 -211
  52. package/dist/components/toolbar/toolbar.types.d.ts +8 -9
  53. package/dist/components/tooltip/tooltip.svelte +201 -266
  54. package/dist/components/tooltip/tooltip.types.d.ts +3 -10
  55. package/dist/constants.js +1 -0
  56. package/dist/html-mapped.d.ts +1 -15
  57. package/dist/html-mapped.js +0 -19
  58. package/dist/labs/sheet/sheet.svelte +145 -19
  59. package/dist/labs/sheet/sheet.svelte.d.ts +2 -10
  60. package/dist/labs/sheet/sheet.types.d.ts +16 -0
  61. package/dist/labs/sheet/sheet.types.js +1 -0
  62. package/dist/utils/color.d.ts +2 -2
  63. package/dist/utils/color.js +2 -1
  64. package/dist/utils/components.d.ts +10 -10
  65. package/dist/utils/components.js +16 -75
  66. package/dist/utils/floating.d.ts +58 -0
  67. package/dist/utils/floating.js +131 -0
  68. package/dist/utils/index.d.ts +1 -0
  69. package/dist/utils/index.js +1 -0
  70. package/package.json +3 -3
  71. package/dist/components/dropdown/dropdown.svelte.js +0 -148
  72. package/dist/components/popover/popover.svelte.js +0 -134
  73. package/dist/components/tooltip/tooltip.svelte.js +0 -131
@@ -1,21 +1,19 @@
1
1
  <script lang="ts">
2
- import { useClassName, useElevation, useStyles } from '../../../utils';
3
- import { makeComponentProps } from '../../../html-mapped';
2
+ import { useComponentAttrs, useElevation } from '../../../utils';
4
3
  import type { AccordionItemModelProps, AccordionItemProps } 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
  activator,
15
14
  indicator,
16
15
  text,
17
16
  color,
18
- background,
19
17
  index,
20
18
  open,
21
19
  toggle,
@@ -25,26 +23,13 @@
25
23
  ...rest
26
24
  }: AccordionItemProps = $props();
27
25
 
28
- let { classProps, styleProps, restProps } = $derived(
29
- makeComponentProps(rest as Record<string, unknown>)
26
+ let attrs = $derived(
27
+ useComponentAttrs('kit-accordion-item', { className, sClass, styleAttr, sStyle, color }, rest)
30
28
  );
31
29
 
32
- let componentClass = $derived(
33
- useClassName({
34
- baseClass: 'kit-accordion-item',
35
- className: `${className ?? ''}`.trim(),
36
- sClass,
37
- classProps
38
- })
39
- );
40
-
41
- let componentStyle = $derived(
42
- useStyles({
43
- styleAttr,
44
- sStyle,
45
- styleProps
46
- })
47
- );
30
+ const uid = $props.id();
31
+ const triggerId = `${uid}-trigger`;
32
+ const contentId = `${uid}-content`;
48
33
 
49
34
  let safeOpen = $derived(!!open);
50
35
  let model: AccordionItemModelProps = {
@@ -59,38 +44,30 @@
59
44
  if (readOnly || disabled || !toggle) return;
60
45
  toggle(index);
61
46
  }
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
- );
72
47
  </script>
73
48
 
74
49
  <svelte:element
75
50
  this={is}
76
51
  bind:this={ref}
77
- class={componentClass}
78
- style={resolvedStyle}
52
+ class={attrs.class}
53
+ style={attrs.style}
79
54
  data-disabled={disabled}
80
55
  data-read-only={readOnly}
81
56
  data-active={safeOpen}
82
57
  data-elevation={elevationState.base}
83
58
  data-elevation-hover={elevationState.hover}
84
59
  data-elevation-active={elevationState.active}
85
- {...restProps}
60
+ {...attrs.rest}
86
61
  >
87
62
  <span class="outline"></span>
88
63
 
89
64
  <button
65
+ id={triggerId}
90
66
  class="kit-accordion-item__trigger"
91
67
  type="button"
92
68
  onclick={handleToggle}
93
69
  aria-expanded={safeOpen}
70
+ aria-controls={contentId}
94
71
  aria-disabled={disabled || readOnly || undefined}
95
72
  {disabled}
96
73
  >
@@ -119,113 +96,140 @@
119
96
 
120
97
  <span class="kit-accordion-item__separator"></span>
121
98
 
122
- <div class="kit-accordion-item__content" hidden={!safeOpen}>
99
+ <div
100
+ id={contentId}
101
+ class="kit-accordion-item__content"
102
+ role="region"
103
+ aria-labelledby={triggerId}
104
+ hidden={!safeOpen}
105
+ >
123
106
  <div class="kit-accordion-item__content-inner">
124
107
  {@render children?.()}
125
108
  </div>
126
109
  </div>
127
110
  </svelte:element>
128
111
 
129
- <style>
130
- .kit-accordion-item {
131
- flex: 1 0 100%;
132
- max-width: 100%;
133
- position: relative;
134
- border: 0;
135
- box-sizing: border-box;
136
- background: var(--kit-accordion-item-bg);
137
- color: var(--kit-accordion-item-fg);
138
- gap: var(--kit-accordion-item-gap);
139
- text-decoration: none;
140
- font-size: var(--kit-accordion-item-font);
141
- overflow: clip;
142
- }
143
-
144
- .kit-accordion-item > button {
145
- appearance: none;
146
- border: 0;
147
- font: inherit;
148
- text-align: inherit;
149
- }
150
-
151
- .kit-accordion-item__trigger {
152
- width: 100%;
153
- display: flex;
154
- align-items: center;
155
- justify-content: space-between;
156
- gap: var(--kit-accordion-item-gap);
157
- min-height: calc(var(--kit-accordion-item-h) + var(--kit-accordion-density-offset) / 2);
158
- padding: calc(var(--kit-accordion-item-p) + var(--kit-accordion-density-offset) / 2);
159
- cursor: pointer;
160
- text-align: left;
161
- background: var(--kit-accordion-item-bg);
162
- color: var(--kit-accordion-item-fg);
163
- }
164
-
165
- .kit-accordion-item__trigger:disabled,
166
- .kit-accordion-item[data-disabled='true'] .kit-accordion-item__trigger {
167
- cursor: not-allowed;
168
- opacity: 0.6;
169
- }
170
-
171
- .kit-accordion-item__title {
172
- flex: 1 1 auto;
173
- min-width: 0;
174
- }
175
-
176
- .kit-accordion-item__indicator {
177
- display: inline-flex;
178
- align-items: center;
179
- justify-content: center;
180
- flex: 0 0 auto;
181
- }
182
-
183
- .kit-accordion-item__indicator svg {
184
- width: 1.125rem;
185
- height: 1.125rem;
186
- display: block;
187
- }
188
-
189
- .kit-accordion-item__content {
190
- display: block;
191
- }
192
-
193
- .kit-accordion-item__content[hidden] {
194
- display: none;
195
- }
196
-
197
- .kit-accordion-item__content-inner {
198
- padding: calc(var(--kit-accordion-item-p) + var(--kit-accordion-density-offset) / 2);
199
- }
200
-
201
- .kit-accordion-item__separator {
202
- width: 100%;
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']:not([data-variant='text'])
211
- > button:hover {
212
- background: var(--kit-accordion-item-hover-bg);
213
- } */
214
-
215
- /**I think is a good idea for not use this*/
216
- /* .kit-accordion-item[data-active='true'][data-disabled='false'][data-read-only='false'] > button {
217
- background: var(--kit-accordion-item-active-bg);
218
- }
219
- .kit-accordion-item[data-disabled='false'][data-read-only='false'] > button:active {
220
- background: var(--kit-accordion-item-active-bg);
221
- } */
222
-
223
- .kit-accordion-item[data-disabled='false'][data-read-only='false'] > button:focus-visible {
224
- outline: 2px solid var(--kit-color-focus);
225
- outline-offset: 2px;
226
- }
227
-
228
- .kit-accordion-item .outline {
229
- --outline-color: var(--kit-accordion-item-bd);
230
- }
231
- </style>
112
+ <style>:where(.kit-accordion-item) {
113
+ --kit-accordion-item-color: initial;
114
+ --kit-accordion-item-on-color: initial;
115
+ --kit-accordion-item-active-fg: initial;
116
+ --kit-accordion-item-active-shade: initial;
117
+ --kit-accordion-item-hover-fg: initial;
118
+ --kit-accordion-item-pressed-fg: initial;
119
+ --kit-accordion-item-bg: var(--kit-accordion-item-color, var(--kit-color-surface-1));
120
+ --kit-accordion-item-fg: var(--kit-accordion-item-on-color, var(--kit-accordion-item-contrast, var(--kit-color-text)));
121
+ --kit-accordion-item-ink: var(--kit-accordion-item-color, var(--kit-color-text));
122
+ --kit-accordion-item-hover: color-mix(in oklab, var(--kit-accordion-item-bg), var(--kit-accordion-item-fg) 8%);
123
+ --kit-accordion-item-pressed: color-mix(in oklab, var(--kit-accordion-item-bg), var(--kit-accordion-item-fg) 14%);
124
+ --kit-accordion-item-soft: color-mix(in oklab, var(--kit-accordion-item-bg) 16%, transparent);
125
+ --kit-accordion-item-border: color-mix(in oklab, var(--kit-accordion-item-bg), var(--kit-accordion-item-fg) 20%);
126
+ --kit-accordion-item-active: color-mix(
127
+ in oklab,
128
+ var(--kit-accordion-item-color),
129
+ var(--kit-accordion-item-fg) var(--kit-accordion-item-active-shade, 14%)
130
+ );
131
+ }
132
+ @supports (color: color(from red srgb-linear r g b)) {
133
+ :where(.kit-accordion-item) {
134
+ --kit-accordion-item-contrast: color(from var(--kit-accordion-item-color) srgb-linear clamp(0, (0.1791 - (0.2126 * r + 0.7152 * g + 0.0722 * b)) * 100000, 1) clamp(0, (0.1791 - (0.2126 * r + 0.7152 * g + 0.0722 * b)) * 100000, 1) clamp(0, (0.1791 - (0.2126 * r + 0.7152 * g + 0.0722 * b)) * 100000, 1)/1);
135
+ }
136
+ }
137
+ :where(.kit-accordion-item) {
138
+ --kit-accordion-item-color: var(--kit-accordion-color);
139
+ --kit-accordion-item-on-color: var(--kit-accordion-on-color);
140
+ }
141
+
142
+ .kit-accordion-item {
143
+ position: relative;
144
+ flex: 1 0 100%;
145
+ box-sizing: border-box;
146
+ max-width: 100%;
147
+ overflow: clip;
148
+ border: 0;
149
+ background-color: var(--kit-accordion-item-bg);
150
+ color: var(--kit-accordion-item-fg);
151
+ font-size: var(--kit-accordion-item-font);
152
+ text-decoration: none;
153
+ transition-property: background-color, color;
154
+ transition-duration: var(--kit-animation-component);
155
+ transition-timing-function: ease;
156
+ }
157
+ @media (prefers-reduced-motion: reduce) {
158
+ .kit-accordion-item {
159
+ transition: none;
160
+ }
161
+ }
162
+
163
+ .kit-accordion-item__trigger {
164
+ appearance: none;
165
+ display: flex;
166
+ align-items: center;
167
+ justify-content: space-between;
168
+ gap: var(--kit-accordion-item-gap);
169
+ box-sizing: border-box;
170
+ width: 100%;
171
+ min-height: calc(var(--kit-accordion-item-h) + var(--kit-accordion-density-offset) / 2);
172
+ padding: calc(var(--kit-accordion-item-p) + var(--kit-accordion-density-offset) / 2);
173
+ border: 0;
174
+ background: transparent;
175
+ color: inherit;
176
+ font: inherit;
177
+ text-align: start;
178
+ cursor: pointer;
179
+ transition-property: background-color;
180
+ transition-duration: var(--kit-animation-component);
181
+ transition-timing-function: ease;
182
+ }
183
+ @media (prefers-reduced-motion: reduce) {
184
+ .kit-accordion-item__trigger {
185
+ transition: none;
186
+ }
187
+ }
188
+ .kit-accordion-item__trigger:disabled {
189
+ cursor: not-allowed;
190
+ opacity: var(--kit-disabled-opacity, 0.55);
191
+ }
192
+ .kit-accordion-item__trigger:focus-visible {
193
+ outline: 2px solid var(--kit-color-focus);
194
+ outline-offset: 2px;
195
+ }
196
+
197
+ .kit-accordion-item[data-read-only=true] .kit-accordion-item__trigger {
198
+ cursor: default;
199
+ }
200
+
201
+ .kit-accordion-item__title {
202
+ flex: 1 1 auto;
203
+ min-width: 0;
204
+ }
205
+
206
+ .kit-accordion-item__indicator {
207
+ display: inline-flex;
208
+ flex: none;
209
+ align-items: center;
210
+ justify-content: center;
211
+ }
212
+ .kit-accordion-item__indicator svg {
213
+ display: block;
214
+ width: 1.125rem;
215
+ height: 1.125rem;
216
+ }
217
+
218
+ .kit-accordion-item__content[hidden] {
219
+ display: none;
220
+ }
221
+
222
+ .kit-accordion-item__content-inner {
223
+ padding: calc(var(--kit-accordion-item-p) + var(--kit-accordion-density-offset) / 2);
224
+ }
225
+
226
+ .kit-accordion-item__separator {
227
+ display: block;
228
+ width: 100%;
229
+ height: var(--kit-outline-weight);
230
+ background-color: color-mix(in oklab, var(--kit-accordion-item-fg) 20%, transparent);
231
+ }
232
+
233
+ :where(.kit-accordion-item .outline) {
234
+ --outline-color: var(--kit-accordion-item-border);
235
+ }</style>