lapikit 0.6.2 → 0.6.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 (38) hide show
  1. package/dist/components/accordion/accordion.svelte +172 -42
  2. package/dist/components/accordion/accordion.types.d.ts +8 -3
  3. package/dist/components/accordion/modules/accordion-item.svelte +71 -72
  4. package/dist/components/alert/alert.svelte +201 -118
  5. package/dist/components/alert/alert.types.d.ts +8 -6
  6. package/dist/components/app/app.svelte +36 -27
  7. package/dist/components/appbar/appbar.svelte +115 -64
  8. package/dist/components/appbar/appbar.types.d.ts +4 -4
  9. package/dist/components/aspect-ratio/aspect-ratio.svelte +4 -12
  10. package/dist/components/aspect-ratio/aspect-ratio.types.d.ts +2 -1
  11. package/dist/components/avatar/avatar.svelte +108 -66
  12. package/dist/components/avatar/avatar.types.d.ts +7 -5
  13. package/dist/components/btn/btn.svelte +167 -169
  14. package/dist/components/btn/btn.types.d.ts +5 -2
  15. package/dist/components/card/card.svelte +9 -10
  16. package/dist/components/chip/chip.svelte +162 -140
  17. package/dist/components/chip/chip.types.d.ts +7 -3
  18. package/dist/components/dialog/dialog.svelte +84 -81
  19. package/dist/components/dialog/dialog.types.d.ts +7 -5
  20. package/dist/components/dropdown/dropdown.svelte +46 -36
  21. package/dist/components/dropdown/dropdown.types.d.ts +4 -2
  22. package/dist/components/icon/icon.svelte +28 -52
  23. package/dist/components/list/list.svelte +126 -93
  24. package/dist/components/list/list.types.d.ts +4 -5
  25. package/dist/components/list/modules/list-item.svelte +82 -99
  26. package/dist/components/modal/modal.svelte +104 -98
  27. package/dist/components/modal/modal.types.d.ts +7 -5
  28. package/dist/components/popover/popover.svelte +46 -34
  29. package/dist/components/popover/popover.types.d.ts +3 -1
  30. package/dist/components/separator/separator.svelte +11 -30
  31. package/dist/components/separator/separator.types.d.ts +1 -2
  32. package/dist/components/textfield/textfield.svelte +180 -157
  33. package/dist/components/textfield/textfield.types.d.ts +4 -3
  34. package/dist/components/toolbar/toolbar.svelte +126 -108
  35. package/dist/components/toolbar/toolbar.types.d.ts +6 -7
  36. package/dist/components/tooltip/tooltip.svelte +39 -45
  37. package/dist/components/tooltip/tooltip.types.d.ts +3 -3
  38. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import { useClassName, useStyles, clickOutside } from '../../utils';
2
+ import { useClassName, useStyles, clickOutside, useElevation } from '../../utils';
3
3
  import { makeComponentProps } from '../../html-mapped';
4
4
  import { getPositions } from './popover.svelte.js';
5
5
  import type { ModelPopoverProps, PopoverProps } from './popover.types.js';
@@ -9,7 +9,7 @@
9
9
  open = $bindable(false),
10
10
  children,
11
11
  activator,
12
- rounded,
12
+ rounded = 'md',
13
13
  position = 'bottom',
14
14
  color,
15
15
  background,
@@ -17,19 +17,17 @@
17
17
  style: styleAttr = '',
18
18
  's-class': sClass,
19
19
  's-style': sStyle,
20
+ elevation = '2',
21
+ density = 'default',
20
22
  ...rest
21
23
  }: PopoverProps = $props();
22
24
 
23
- let safePosition = $derived(
24
- position === 'top' || position === 'bottom' || position === 'left' || position === 'right'
25
- ? position
26
- : 'bottom'
27
- );
28
-
29
25
  let { classProps, styleProps, restProps } = $derived(
30
26
  makeComponentProps(rest as Record<string, unknown>)
31
27
  );
32
28
 
29
+ let elevationState = $derived(useElevation(elevation));
30
+
33
31
  let componentClass = $derived(
34
32
  useClassName({
35
33
  baseClass: 'kit-popover-content',
@@ -47,16 +45,7 @@
47
45
  })
48
46
  );
49
47
 
50
- let mergedStyle = $derived(
51
- [
52
- componentStyle,
53
- background ? `--kit-popover-bg:${background}` : '',
54
- color ? `--kit-popover-fg:${color}` : '',
55
- typeof rounded === 'string' && rounded.includes('px') ? `--kit-popover-radius:${rounded}` : ''
56
- ]
57
- .filter(Boolean)
58
- .join('; ')
59
- );
48
+ let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
60
49
 
61
50
  const positioner = getPositions();
62
51
 
@@ -80,7 +69,7 @@
80
69
 
81
70
  const updatePosition = () => {
82
71
  if (!contentRef || !activatorRef) return;
83
- positioner.update(activatorRef, contentRef, safePosition, false, true);
72
+ positioner.update(activatorRef, contentRef, position, false, true);
84
73
  axis = positioner.values;
85
74
  };
86
75
 
@@ -121,7 +110,13 @@
121
110
  style={`left:${axis.x}px; top:${axis.y}px; ${mergedStyle}`}
122
111
  role="dialog"
123
112
  data-rounded={rounded}
124
- data-position={axis.location ?? safePosition}
113
+ data-position={axis.location ?? position}
114
+ data-density={density}
115
+ data-elevation={elevationState.base}
116
+ data-elevation-hover={elevationState.hover}
117
+ data-elevation-active={elevationState.active}
118
+ style:--kit-modal-fg={color && `var(--kit-color-${color})`}
119
+ style:--kit-modal-bg={background && `var(--kit-color-${background})`}
125
120
  use:clickOutside={{ exclude: [contentRef, activatorRef], onClose: () => (open = false) }}
126
121
  {...restProps}
127
122
  >
@@ -131,43 +126,60 @@
131
126
 
132
127
  <style>
133
128
  .kit-popover-content {
134
- --kit-popover-bg: var(--kit-surface-1);
135
- --kit-popover-fg: var(--kit-fg);
136
- --kit-popover-radius: 12px;
137
- --kit-popover-bd: color-mix(in oklab, var(--kit-fg), transparent 88%);
138
- --kit-popover-shadow: 0 18px 40px -18px color-mix(in oklab, black 24%, transparent);
129
+ --kit-popover-bg: var(--kit-color-surface-3);
130
+ --kit-popover-fg: var(--kit-color-text);
139
131
 
140
132
  position: fixed;
141
133
  z-index: 1900;
142
134
  display: inline-block;
143
135
  width: auto;
144
136
  max-width: min(28rem, calc(100vw - 1rem));
145
- padding: 1rem;
146
- border: 1px solid var(--kit-popover-bd);
137
+ padding: calc(1rem * var(--kit-popover-density-scale));
138
+ border: 0;
147
139
  border-radius: var(--kit-popover-radius);
148
140
  background: var(--kit-popover-bg);
149
141
  color: var(--kit-popover-fg);
150
- box-shadow: var(--kit-popover-shadow);
151
142
  opacity: 1;
152
143
  transition: opacity 140ms ease;
153
144
  }
154
145
 
146
+ /**
147
+ * rounded
148
+ * @link ...
149
+ */
155
150
  .kit-popover-content[data-rounded='0'] {
156
- --kit-popover-radius: 0;
151
+ --kit-popover-radius: var(--kit-shape-none);
157
152
  }
158
153
  .kit-popover-content[data-rounded='xs'] {
159
- --kit-popover-radius: 2px;
154
+ --kit-popover-radius: var(--kit-shape-xs);
160
155
  }
161
156
  .kit-popover-content[data-rounded='sm'] {
162
- --kit-popover-radius: 4px;
157
+ --kit-popover-radius: var(--kit-shape-sm);
163
158
  }
164
159
  .kit-popover-content[data-rounded='md'] {
165
- --kit-popover-radius: 8px;
160
+ --kit-popover-radius: var(--kit-shape-md);
166
161
  }
167
162
  .kit-popover-content[data-rounded='lg'] {
168
- --kit-popover-radius: 16px;
163
+ --kit-popover-radius: var(--kit-shape-lg);
169
164
  }
170
165
  .kit-popover-content[data-rounded='xl'] {
171
- --kit-popover-radius: 99999px;
166
+ --kit-popover-radius: var(--kit-shape-xl);
167
+ }
168
+
169
+ /**
170
+ * density
171
+ * @link no url
172
+ */
173
+ .kit-popover-content[data-density='none'] {
174
+ --kit-popover-density-scale: 0;
175
+ }
176
+ .kit-popover-content[data-density='compact'] {
177
+ --kit-popover-density-scale: 0.8;
178
+ }
179
+ .kit-popover-content[data-density='default'] {
180
+ --kit-popover-density-scale: 1;
181
+ }
182
+ .kit-popover-content[data-density='comfortable'] {
183
+ --kit-popover-density-scale: 1.15;
172
184
  }
173
185
  </style>
@@ -1,4 +1,4 @@
1
- import type { Component, PropValue, RoundedType } from '../../@types';
1
+ import type { Component, DensityType, ElevationProps, PropValue, RoundedType } from '../../@types';
2
2
  import type { Snippet } from 'svelte';
3
3
  export type PositionElement = {
4
4
  x: number;
@@ -16,5 +16,7 @@ export interface PopoverProps extends Component {
16
16
  color?: string;
17
17
  background?: string;
18
18
  activator?: Snippet<[ModelPopoverProps]>;
19
+ elevation?: ElevationProps;
20
+ density?: DensityType;
19
21
  [key: string]: PropValue | Record<string, PropValue> | unknown;
20
22
  }
@@ -7,9 +7,8 @@
7
7
  ref = $bindable(),
8
8
  is = 'hr',
9
9
  inset = false,
10
- thickness,
10
+ thickness = 'thin',
11
11
  orientation = 'horizontal',
12
- opacity,
13
12
  color,
14
13
  class: className = '',
15
14
  style: styleAttr = '',
@@ -18,12 +17,6 @@
18
17
  ...rest
19
18
  }: SeparatorProps = $props();
20
19
 
21
- let safeOrientation = $derived(
22
- typeof orientation === 'string' && (orientation === 'horizontal' || orientation === 'vertical')
23
- ? orientation
24
- : 'horizontal'
25
- );
26
-
27
20
  let { classProps, styleProps, restProps } = $derived(
28
21
  makeComponentProps(rest as Record<string, unknown>)
29
22
  );
@@ -45,21 +38,10 @@
45
38
  })
46
39
  );
47
40
 
48
- let mergedStyle = $derived(
49
- [
50
- componentStyle,
51
- color ? `--kit-separator-color:${color}` : '',
52
- opacity !== undefined ? `--kit-separator-opacity:${opacity}` : '',
53
- thickness !== undefined && safeOrientation === 'horizontal'
54
- ? `--kit-separator-top-width:${typeof thickness === 'number' ? `${thickness}px` : thickness}`
55
- : '',
56
- thickness !== undefined && safeOrientation === 'vertical'
57
- ? `--kit-separator-right-width:${typeof thickness === 'number' ? `${thickness}px` : thickness}`
58
- : ''
59
- ]
60
- .filter(Boolean)
61
- .join('; ')
62
- );
41
+ const formatThickness = (value?: number | string) =>
42
+ typeof thickness === 'number' ? `${value}px` : value;
43
+
44
+ let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
63
45
  </script>
64
46
 
65
47
  <svelte:element
@@ -69,24 +51,23 @@
69
51
  class={componentClass}
70
52
  style={mergedStyle}
71
53
  role="separator"
72
- aria-orientation={safeOrientation}
54
+ aria-orientation={orientation || 'horizontal'}
73
55
  data-inset={inset || undefined}
74
- data-orientation={safeOrientation}
56
+ data-orientation={orientation}
57
+ style:--kit-separator-color={color && `var(--kit-color-${color})`}
58
+ style:--kit-separator-top-width={orientation === 'horizontal' ? formatThickness(thickness) : ''}
59
+ style:--kit-separator-right-width={orientation === 'vertical' ? formatThickness(thickness) : ''}
75
60
  />
76
61
 
77
62
  <style>
78
63
  .kit-separator {
79
- --kit-separator-color: var(--kit-fg);
80
- --kit-separator-opacity: 0.12;
81
- --kit-separator-top-width: thin;
82
- --kit-separator-right-width: thin;
64
+ --kit-separator-color: var(--kit-color-border);
83
65
  --kit-separator-vertical-min-size: 1.5rem;
84
66
 
85
67
  display: block;
86
68
  flex: 1 1 100%;
87
69
  height: 0;
88
70
  max-height: 0;
89
- opacity: var(--kit-separator-opacity);
90
71
  border-color: var(--kit-separator-color);
91
72
  border-style: solid;
92
73
  transition: inherit;
@@ -5,8 +5,7 @@ export interface SeparatorProps extends Base {
5
5
  is?: 'div' | 'hr';
6
6
  inset?: boolean;
7
7
  thickness?: string | number;
8
- opacity?: string | number;
9
8
  color?: string;
10
- orientation?: Orientation | Record<string, Orientation>;
9
+ orientation?: Orientation;
11
10
  }
12
11
  export {};