lapikit 0.6.4 → 0.6.6

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.
@@ -53,8 +53,6 @@
53
53
  : `${classContent ?? ''}`.trim()
54
54
  );
55
55
 
56
- let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
57
-
58
56
  $effect(() => {
59
57
  if (!ref) return;
60
58
 
@@ -97,12 +95,23 @@
97
95
  if (event.target !== ref || persistent) return;
98
96
  open = false;
99
97
  }
98
+
99
+ let resolvedStyle = $derived(
100
+ [
101
+ componentStyle,
102
+ color ? `--kit-dialog-fg:${color && `var(--kit-color-${color})`}` : '',
103
+ background ? `--kit-dialog-bg:${background && `var(--kit-color-${background})`}` : '',
104
+ space ? `--kit-dialog-space:${space}` : ''
105
+ ]
106
+ .filter(Boolean)
107
+ .join('; ')
108
+ );
100
109
  </script>
101
110
 
102
111
  <dialog
103
112
  bind:this={ref}
104
113
  class={componentClass}
105
- style={mergedStyle}
114
+ style={resolvedStyle}
106
115
  data-size={size}
107
116
  data-position={position}
108
117
  data-persistent={persistent}
@@ -119,9 +128,6 @@
119
128
  data-elevation-hover={elevationState.hover}
120
129
  data-elevation-active={elevationState.active}
121
130
  onclick={(event: MouseEvent) => event.stopPropagation()}
122
- style:--kit-dialog-fg={color && `var(--kit-color-${color})`}
123
- style:--kit-dialog-bg={background && `var(--kit-color-${background})`}
124
- style:--kit-dialog-space={space}
125
131
  >
126
132
  {@render children?.()}
127
133
  </div>
@@ -183,27 +189,27 @@
183
189
  */
184
190
  .kit-dialog[data-size='xs'] {
185
191
  --kit-dialog-max: 20rem;
186
- --kit-dialog-px: 10px;
192
+ --kit-dialog-p: 12px;
187
193
  }
188
194
 
189
195
  .kit-dialog[data-size='sm'] {
190
196
  --kit-dialog-max: 24rem;
191
- --kit-dialog-px: 12px;
197
+ --kit-dialog-p: 14px;
192
198
  }
193
199
 
194
200
  .kit-dialog[data-size='md'] {
195
201
  --kit-dialog-max: 32rem;
196
- --kit-dialog-px: 16px;
202
+ --kit-dialog-p: 16px;
197
203
  }
198
204
 
199
205
  .kit-dialog[data-size='lg'] {
200
206
  --kit-dialog-max: 42rem;
201
- --kit-dialog-px: 20px;
207
+ --kit-dialog-p: 20px;
202
208
  }
203
209
 
204
210
  .kit-dialog[data-size='xl'] {
205
211
  --kit-dialog-max: 56rem;
206
- --kit-dialog-px: 24px;
212
+ --kit-dialog-p: 24px;
207
213
  }
208
214
 
209
215
  .kit-dialog__content {
@@ -214,7 +220,7 @@
214
220
  width: min(100%, min(var(--kit-dialog-max), calc(100vw - 2rem)));
215
221
  max-height: calc(100dvh - 2rem);
216
222
  overflow: auto;
217
- padding: calc(var(--kit-dialog-px) * var(--kit-dialog-density-scale));
223
+ padding: calc(var(--kit-dialog-p) + var(--kit-dialog-density-offset) / 2);
218
224
  border: 0;
219
225
  border-radius: var(--kit-dialog-radius);
220
226
  background: var(--kit-dialog-bg);
@@ -226,17 +232,14 @@
226
232
  * density
227
233
  * @link no links
228
234
  */
229
- .kit-dialog__content[data-density='none'] {
230
- --kit-dialog-density-scale: 0;
231
- }
232
235
  .kit-dialog__content[data-density='compact'] {
233
- --kit-dialog-density-scale: 0.9;
236
+ --kit-dialog-density-offset: var(--kit-density-compact);
234
237
  }
235
238
  .kit-dialog__content[data-density='default'] {
236
- --kit-dialog-density-scale: 1;
239
+ --kit-dialog-density-offset: var(--kit-density-default);
237
240
  }
238
241
  .kit-dialog__content[data-density='comfortable'] {
239
- --kit-dialog-density-scale: 1.1;
242
+ --kit-dialog-density-offset: var(--kit-density-comfortable);
240
243
  }
241
244
 
242
245
  /**
@@ -47,7 +47,15 @@
47
47
  })
48
48
  );
49
49
 
50
- let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
50
+ let resolvedStyle = $derived(
51
+ [
52
+ componentStyle,
53
+ color ? `--kit-dropdown-fg:${color && `var(--kit-color-${color})`}` : '',
54
+ background ? `--kit-dropdown-bg:${background && `var(--kit-color-${background})`}` : ''
55
+ ]
56
+ .filter(Boolean)
57
+ .join('; ')
58
+ );
51
59
 
52
60
  const positioner = getPositions();
53
61
 
@@ -154,7 +162,7 @@
154
162
  <div
155
163
  bind:this={contentRef}
156
164
  class={componentClass}
157
- style={`left:${axis.x}px; top:${axis.y}px; ${mergedStyle}`}
165
+ style={`left:${axis.x}px; top:${axis.y}px; ${resolvedStyle}`}
158
166
  role="menu"
159
167
  data-rounded={rounded}
160
168
  data-position={axis.location ?? position}
@@ -169,8 +177,6 @@
169
177
  data-elevation-hover={elevationState.hover}
170
178
  data-elevation-active={elevationState.active}
171
179
  use:clickOutside={{ exclude: [contentRef, activatorRef], onClose: handleClose }}
172
- style:--kit-dropdown-fg={color && `var(--kit-color-${color})`}
173
- style:--kit-dropdown-bg={background && `var(--kit-color-${background})`}
174
180
  {...restProps}
175
181
  >
176
182
  {@render children?.()}
@@ -186,7 +192,7 @@
186
192
  z-index: 1800;
187
193
  min-width: 12rem;
188
194
  max-width: min(22rem, calc(100vw - 1rem));
189
- padding: 0.375rem calc(0.375rem * var(--kit-dropdown-density-scale));
195
+ padding: calc(var(--kit-space-default) + var(--kit-dropdown-density-offset) / 2);
190
196
  border: 0;
191
197
  border-radius: var(--kit-dropdown-radius);
192
198
  background: var(--kit-dropdown-bg);
@@ -222,17 +228,14 @@
222
228
  * density
223
229
  * @link no url
224
230
  */
225
- .kit-dropdown-content[data-density='none'] {
226
- --kit-dropdown-density-scale: 0;
227
- }
228
231
  .kit-dropdown-content[data-density='compact'] {
229
- --kit-dropdown-density-scale: 0.8;
232
+ --kit-dropdown-density-offset: var(--kit-density-compact);
230
233
  }
231
234
  .kit-dropdown-content[data-density='default'] {
232
- --kit-dropdown-density-scale: 1;
235
+ --kit-dropdown-density-offset: var(--kit-density-default);
233
236
  }
234
237
  .kit-dropdown-content[data-density='comfortable'] {
235
- --kit-dropdown-density-scale: 1.15;
238
+ --kit-dropdown-density-offset: var(--kit-density-comfortable);
236
239
  }
237
240
 
238
241
  @keyframes kit-dropdown-enter {
@@ -47,6 +47,16 @@
47
47
  })
48
48
  );
49
49
 
50
+ let resolvedStyle = $derived(
51
+ [
52
+ componentStyle,
53
+ color ? `--kit-icon-color:${color && `var(--kit-color-${color})`}` : '',
54
+ color ? `color:${color && `var(--kit-color-${color})`}` : ''
55
+ ]
56
+ .filter(Boolean)
57
+ .join('; ')
58
+ );
59
+
50
60
  let resolvedSrc = $derived(src ?? (icon?.includes('/') ? icon : undefined));
51
61
  let resolvedName = $derived(name ?? (!icon?.includes('/') ? icon : undefined));
52
62
  let hasChildren = $derived(!!children);
@@ -68,7 +78,6 @@
68
78
  let useFilterMode = $derived(
69
79
  !!resolvedSrc && !!imgFilter && (colorMode === 'filter' || colorMode === 'auto')
70
80
  );
71
- let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
72
81
  </script>
73
82
 
74
83
  {#if hasContent}
@@ -76,13 +85,11 @@
76
85
  this={is}
77
86
  bind:this={ref}
78
87
  class={classWithIconName}
79
- style={mergedStyle}
88
+ style={resolvedStyle}
80
89
  data-size={size}
81
90
  role={iconRole}
82
91
  aria-label={iconAriaLabel}
83
92
  aria-hidden={iconAriaHidden}
84
- style:--kit-icon-color={color && `var(--kit-color-${color})`}
85
- style:color={color && `var(--kit-color-${color})`}
86
93
  {...restProps}
87
94
  >
88
95
  {#if hasChildren}
@@ -145,18 +152,18 @@
145
152
  * @link https://lapikit.dev/docs/components/icon#size
146
153
  */
147
154
  .kit-icon[data-size='xs'] {
148
- --kit-icon-current-size: 0.875rem;
155
+ --kit-icon-current-size: 12px;
149
156
  }
150
157
  .kit-icon[data-size='sm'] {
151
- --kit-icon-current-size: 1rem;
158
+ --kit-icon-current-size: 14px;
152
159
  }
153
160
  .kit-icon[data-size='md'] {
154
- --kit-icon-current-size: 1.125rem;
161
+ --kit-icon-current-size: 16px;
155
162
  }
156
163
  .kit-icon[data-size='lg'] {
157
- --kit-icon-current-size: 1.25rem;
164
+ --kit-icon-current-size: 18px;
158
165
  }
159
166
  .kit-icon[data-size='xl'] {
160
- --kit-icon-current-size: 1.375rem;
167
+ --kit-icon-current-size: 20px;
161
168
  }
162
169
  </style>
@@ -42,22 +42,28 @@
42
42
  })
43
43
  );
44
44
 
45
- let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
45
+ let resolvedStyle = $derived(
46
+ [
47
+ componentStyle,
48
+ color ? `--kit-list-item-fg:${color && `var(--kit-color-${color})`}` : '',
49
+ background ? `--kit-list-item-bg:${background && `var(--kit-color-${background})`}` : ''
50
+ ]
51
+ .filter(Boolean)
52
+ .join('; ')
53
+ );
46
54
  </script>
47
55
 
48
56
  <svelte:element
49
57
  this={is}
50
58
  bind:this={ref}
51
59
  class={componentClass}
52
- style={mergedStyle}
60
+ style={resolvedStyle}
53
61
  data-size={size}
54
62
  data-variant={variant}
55
63
  data-density={density}
56
64
  data-rounded={rounded}
57
65
  data-nav={nav}
58
66
  role={nav ? 'navigation' : is === 'ul' ? undefined : 'list'}
59
- style:--kit-list-item-fg={color && `var(--kit-color-${color})`}
60
- style:--kit-list-item-bg={background && `var(--kit-color-${background})`}
61
67
  {...restProps}
62
68
  >
63
69
  {@render children?.()}
@@ -90,21 +96,14 @@
90
96
  * density
91
97
  * @link https://lapikit.dev/docs/components/list#density
92
98
  */
93
- .kit-list[data-density='none'] {
94
- --kit-list-density-scale: 0;
95
- --kit-list-density-h-scale: 0;
96
- }
97
99
  .kit-list[data-density='compact'] {
98
- --kit-list-density-scale: 0.9;
99
- --kit-list-density-h-scale: 0.92;
100
+ --kit-list-density-offset: var(--kit-space-compact);
100
101
  }
101
102
  .kit-list[data-density='default'] {
102
- --kit-list-density-scale: 1;
103
- --kit-list-density-h-scale: 1;
103
+ --kit-list-density-offset: var(--kit-space-default);
104
104
  }
105
105
  .kit-list[data-density='comfortable'] {
106
- --kit-list-density-scale: 1.1;
107
- --kit-list-density-h-scale: 1.15;
106
+ --kit-list-density-offset: var(--kit-space-comfortable);
108
107
  }
109
108
 
110
109
  /**
@@ -169,7 +168,22 @@
169
168
  * @link https://lapikit.dev/docs/components/list#nav
170
169
  */
171
170
  .kit-list[data-nav='true'] {
172
- padding: 0.5rem;
171
+ padding: calc(var(--kit-space-default) + var(--kit-list-density-offset) / 2);
172
+ }
173
+ .kit-list[data-nav='true'] :global(.kit-list-item) {
174
+ border-radius: var(--kit-list-item-radius);
175
+ }
176
+ .kit-list:not([data-nav='true']) :global(.kit-list-item:first-child) {
177
+ border-top-left-radius: var(--kit-list-item-radius);
178
+ border-top-right-radius: var(--kit-list-item-radius);
179
+ }
180
+ .kit-list:not([data-nav='true']) :global(.kit-list-item:last-child) {
181
+ border-bottom-left-radius: var(--kit-list-item-radius);
182
+ border-bottom-right-radius: var(--kit-list-item-radius);
183
+ }
184
+ .kit-list:not([data-nav='true']) :global(.kit-list-item:not(:first-child)),
185
+ .kit-list:not([data-nav='true']) :global(.kit-list-item:not(:last-child)) {
186
+ --kit-list-item-radius: 0;
173
187
  }
174
188
 
175
189
  /**
@@ -178,32 +192,32 @@
178
192
  */
179
193
  .kit-list[data-size='xs'] :global(.kit-list-item) {
180
194
  --kit-list-item-h: 28px;
181
- --kit-list-item-px: 10px;
182
- --kit-list-item-gap: 4px;
183
- --kit-list-item-font: 0.75rem;
195
+ --kit-list-item-p: 12px;
196
+ --kit-list-item-gap: var(--kit-space-compact);
197
+ --kit-list-item-font: var(--kit-font-xs);
184
198
  }
185
199
  .kit-list[data-size='sm'] :global(.kit-list-item) {
186
- --kit-list-item-h: 32px;
187
- --kit-list-item-px: 12px;
188
- --kit-list-item-gap: 6px;
189
- --kit-list-item-font: 0.875rem;
200
+ --kit-list-item-h: 36px;
201
+ --kit-list-item-p: 14px;
202
+ --kit-list-item-gap: var(--kit-space-default);
203
+ --kit-list-item-font: var(--kit-font-sm);
190
204
  }
191
205
  .kit-list[data-size='md'] :global(.kit-list-item) {
192
- --kit-list-item-h: 40px;
193
- --kit-list-item-px: 16px;
194
- --kit-list-item-gap: 8px;
195
- --kit-list-item-font: 1rem;
206
+ --kit-list-item-h: 44px;
207
+ --kit-list-item-p: 16px;
208
+ --kit-list-item-gap: var(--kit-space-default);
209
+ --kit-list-item-font: var(--kit-font-md);
196
210
  }
197
211
  .kit-list[data-size='lg'] :global(.kit-list-item) {
198
- --kit-list-item-h: 48px;
199
- --kit-list-item-px: 20px;
200
- --kit-list-item-gap: 10px;
201
- --kit-list-item-font: 1.125rem;
212
+ --kit-list-item-h: 52px;
213
+ --kit-list-item-p: 20px;
214
+ --kit-list-item-gap: var(--kit-space-default);
215
+ --kit-list-item-font: var(--kit-font-lg);
202
216
  }
203
217
  .kit-list[data-size='xl'] :global(.kit-list-item) {
204
- --kit-list-item-h: 56px;
205
- --kit-list-item-px: 24px;
206
- --kit-list-item-gap: 12px;
207
- --kit-list-item-font: 1.25rem;
218
+ --kit-list-item-h: 60px;
219
+ --kit-list-item-p: 24px;
220
+ --kit-list-item-gap: var(--kit-space-comfortable);
221
+ --kit-list-item-font: var(--kit-font-xl);
208
222
  }
209
223
  </style>
@@ -49,14 +49,22 @@
49
49
  })
50
50
  );
51
51
 
52
- let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
52
+ let resolvedStyle = $derived(
53
+ [
54
+ componentStyle,
55
+ color ? `--kit-list-item-fg:${color && `var(--kit-color-${color})`}` : '',
56
+ background ? `--kit-list-item-bg:${background && `var(--kit-color-${background})`}` : ''
57
+ ]
58
+ .filter(Boolean)
59
+ .join('; ')
60
+ );
53
61
  </script>
54
62
 
55
63
  <svelte:element
56
64
  this={tag}
57
65
  bind:this={ref}
58
66
  class={componentClass}
59
- style={mergedStyle}
67
+ style={resolvedStyle}
60
68
  href={href && !disabled ? href : undefined}
61
69
  data-active={active}
62
70
  data-disabled={disabled}
@@ -67,8 +75,6 @@
67
75
  data-append={append && true}
68
76
  data-prepend={prepend && true}
69
77
  data-interactive={isInteractive}
70
- style:--kit-list-item-fg={color && `var(--kit-color-${color})`}
71
- style:--kit-list-item-bg={background && `var(--kit-color-${background})`}
72
78
  use:ripple={{
73
79
  component: 'list-item',
74
80
  disabled: noRipple || !isInteractive
@@ -96,13 +102,13 @@
96
102
  <style>
97
103
  .kit-list-item {
98
104
  width: 100%;
99
- min-height: calc(var(--kit-list-item-h) * var(--kit-list-density-h-scale));
105
+ min-height: calc(var(--kit-list-item-h) + var(--kit-list-density-offset) / 2);
100
106
  position: relative;
101
107
  display: grid;
102
108
  grid-template-columns: 1fr;
103
109
  align-items: center;
104
110
  gap: var(--kit-list-item-gap);
105
- border-radius: var(--kit-list-item-radius);
111
+ /* border-radius: var(--kit-list-item-radius); */
106
112
  border: 0;
107
113
  background: var(--kit-list-item-bg);
108
114
  color: var(--kit-list-item-fg);
@@ -112,15 +118,15 @@
112
118
 
113
119
  .kit-list-item .kit-list-item__prepend,
114
120
  .kit-list-item:not([data-prepend='true']) .kit-list-item__content {
115
- margin-left: calc(var(--kit-list-item-px) * var(--kit-list-density-scale));
121
+ margin-left: calc(var(--kit-list-item-p) + var(--kit-list-density-offset) / 2);
116
122
  }
117
123
  .kit-list-item .kit-list-item__append,
118
124
  .kit-list-item:not([data-append='true']) .kit-list-item__content {
119
- margin-right: calc(var(--kit-list-item-px) * var(--kit-list-density-scale));
125
+ margin-right: calc(var(--kit-list-item-p) + var(--kit-list-density-offset) / 2);
120
126
  }
121
127
  .kit-list-item:not([data-prepend='true']):not([data-append='true']) .kit-list-item__content {
122
- margin-left: calc(var(--kit-list-item-px) * var(--kit-list-density-scale));
123
- margin-right: calc(var(--kit-list-item-px) * var(--kit-list-density-scale));
128
+ margin-left: calc(var(--kit-list-item-p) + var(--kit-list-density-offset) / 2);
129
+ margin-right: calc(var(--kit-list-item-p) + var(--kit-list-density-offset) / 2);
124
130
  }
125
131
 
126
132
  .kit-list-item[data-prepend='true']:not([data-append='true']) {
@@ -162,7 +168,7 @@
162
168
  }
163
169
 
164
170
  .kit-list-item[data-interactive='true'][data-disabled='false']:focus-visible {
165
- outline: 2px solid var(--kit-focus);
171
+ outline: 2px solid var(--kit-color-focus);
166
172
  outline-offset: 2px;
167
173
  }
168
174
 
@@ -188,30 +194,4 @@
188
194
  .kit-list-item .outline {
189
195
  --outline-color: var(--kit-list-item-bd);
190
196
  }
191
-
192
- /**
193
- * rounded
194
- * @link ...
195
- */
196
- .kit-list-item[data-rounded='0'] {
197
- --kit-list-item-radius: var(--kit-shape-none);
198
- }
199
- .kit-list-item[data-rounded='xs'] {
200
- --kit-list-item-radius: var(--kit-shape-xs);
201
- }
202
- .kit-list-item[data-rounded='sm'] {
203
- --kit-list-item-radius: var(--kit-shape-sm);
204
- }
205
- .kit-list-item[data-rounded='md'] {
206
- --kit-list-item-radius: var(--kit-shape-md);
207
- }
208
- .kit-list-item[data-rounded='lg'] {
209
- --kit-list-item-radius: var(--kit-shape-lg);
210
- }
211
- .kit-list-item[data-rounded='xl'] {
212
- --kit-list-item-radius: var(--kit-shape-xl);
213
- }
214
- .kit-list-item[data-rounded='full'] {
215
- --kit-list-item-radius: var(--kit-shape-full);
216
- }
217
197
  </style>
@@ -24,8 +24,8 @@
24
24
  rounded = 'md',
25
25
  density = 'default',
26
26
  classContent = '',
27
- color = undefined,
28
- background = undefined,
27
+ color,
28
+ background,
29
29
  closeWithEsc = true,
30
30
  space,
31
31
  elevation = '2',
@@ -61,8 +61,6 @@
61
61
  : `${classContent ?? ''}`.trim()
62
62
  );
63
63
 
64
- let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
65
-
66
64
  $effect(() => {
67
65
  if (open && !wasPushed) {
68
66
  pushModal(modalId);
@@ -111,13 +109,24 @@
111
109
  function handleClose() {
112
110
  if (!persistent) open = false;
113
111
  }
112
+
113
+ let resolvedStyle = $derived(
114
+ [
115
+ componentStyle,
116
+ color ? `--kit-modal-fg:${color && `var(--kit-color-${color})`}` : '',
117
+ background ? `--kit-modal-bg:${background && `var(--kit-color-${background})`}` : '',
118
+ space ? `--kit-modal-space:${space}` : ''
119
+ ]
120
+ .filter(Boolean)
121
+ .join('; ')
122
+ );
114
123
  </script>
115
124
 
116
125
  {#if open}
117
126
  <div
118
127
  bind:this={ref}
119
128
  class={componentClass}
120
- style={mergedStyle}
129
+ style={resolvedStyle}
121
130
  role="dialog"
122
131
  aria-modal={!contain}
123
132
  data-contain={contain}
@@ -137,9 +146,6 @@
137
146
  data-elevation-hover={elevationState.hover}
138
147
  data-elevation-active={elevationState.active}
139
148
  onclick={(event: MouseEvent) => event.stopPropagation()}
140
- style:--kit-modal-fg={color && `var(--kit-color-${color})`}
141
- style:--kit-modal-bg={background && `var(--kit-color-${background})`}
142
- style:--kit-modal-space={space}
143
149
  >
144
150
  {@render children?.()}
145
151
  </div>
@@ -182,7 +188,7 @@
182
188
  width: min(calc(100vw - 2rem), var(--kit-modal-max));
183
189
  max-height: calc(100dvh - 2rem);
184
190
  overflow: auto;
185
- padding: calc(var(--kit-modal-px) * var(--kit-modal-density-scale));
191
+ padding: calc(var(--kit-modal-p) + var(--kit-modal-density-offset) / 2);
186
192
  border: 0;
187
193
  border-radius: var(--kit-modal-radius);
188
194
  background: var(--kit-modal-bg);
@@ -200,27 +206,27 @@
200
206
  */
201
207
  .kit-modal__content[data-size='xs'] {
202
208
  --kit-modal-max: 20rem;
203
- --kit-modal-px: 10px;
209
+ --kit-modal-p: 12px;
204
210
  }
205
211
 
206
212
  .kit-modal__content[data-size='sm'] {
207
213
  --kit-modal-max: 24rem;
208
- --kit-modal-px: 12px;
214
+ --kit-modal-p: 14px;
209
215
  }
210
216
 
211
217
  .kit-modal__content[data-size='md'] {
212
218
  --kit-modal-max: 32rem;
213
- --kit-modal-px: 16px;
219
+ --kit-modal-p: 16px;
214
220
  }
215
221
 
216
222
  .kit-modal__content[data-size='lg'] {
217
223
  --kit-modal-max: 42rem;
218
- --kit-modal-px: 20px;
224
+ --kit-modal-p: 20px;
219
225
  }
220
226
 
221
227
  .kit-modal__content[data-size='xl'] {
222
228
  --kit-modal-max: 56rem;
223
- --kit-modal-px: 24px;
229
+ --kit-modal-p: 24px;
224
230
  }
225
231
 
226
232
  .kit-modal__content[data-size='full'] {
@@ -240,17 +246,14 @@
240
246
  * density
241
247
  * @link no links
242
248
  */
243
- .kit-modal__content[data-density='none'] {
244
- --kit-modal-density-scale: 0;
245
- }
246
249
  .kit-modal__content[data-density='compact'] {
247
- --kit-modal-density-scale: 0.9;
250
+ --kit-modal-density-offset: var(--kit-space-compact);
248
251
  }
249
252
  .kit-modal__content[data-density='default'] {
250
- --kit-modal-density-scale: 1;
253
+ --kit-modal-density-offset: var(--kit-space-default);
251
254
  }
252
255
  .kit-modal__content[data-density='comfortable'] {
253
- --kit-modal-density-scale: 1.1;
256
+ --kit-modal-density-offset: var(--kit-space-comfortable);
254
257
  }
255
258
 
256
259
  /**
@@ -45,8 +45,6 @@
45
45
  })
46
46
  );
47
47
 
48
- let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
49
-
50
48
  const positioner = getPositions();
51
49
 
52
50
  let contentRef = $state<HTMLElement | null>(null);
@@ -97,6 +95,16 @@
97
95
  $effect(() => {
98
96
  ref = contentRef;
99
97
  });
98
+
99
+ let resolvedStyle = $derived(
100
+ [
101
+ componentStyle,
102
+ color ? `--kit-popover-fg:${color && `var(--kit-color-${color})`}` : '',
103
+ background ? `--kit-popover-bg:${background && `var(--kit-color-${background})`}` : ''
104
+ ]
105
+ .filter(Boolean)
106
+ .join('; ')
107
+ );
100
108
  </script>
101
109
 
102
110
  <svelte:window bind:innerHeight bind:innerWidth bind:scrollX bind:scrollY />
@@ -107,7 +115,7 @@
107
115
  <div
108
116
  bind:this={contentRef}
109
117
  class={componentClass}
110
- style={`left:${axis.x}px; top:${axis.y}px; ${mergedStyle}`}
118
+ style={`left:${axis.x}px; top:${axis.y}px; ${resolvedStyle}`}
111
119
  role="dialog"
112
120
  data-rounded={rounded}
113
121
  data-position={axis.location ?? position}
@@ -115,8 +123,6 @@
115
123
  data-elevation={elevationState.base}
116
124
  data-elevation-hover={elevationState.hover}
117
125
  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})`}
120
126
  use:clickOutside={{ exclude: [contentRef, activatorRef], onClose: () => (open = false) }}
121
127
  {...restProps}
122
128
  >
@@ -134,7 +140,7 @@
134
140
  display: inline-block;
135
141
  width: auto;
136
142
  max-width: min(28rem, calc(100vw - 1rem));
137
- padding: calc(1rem * var(--kit-popover-density-scale));
143
+ padding: calc(var(--kit-space-default) + var(--kit-popover-density-offset) / 2);
138
144
  border: 0;
139
145
  border-radius: var(--kit-popover-radius);
140
146
  background: var(--kit-popover-bg);
@@ -170,16 +176,13 @@
170
176
  * density
171
177
  * @link no url
172
178
  */
173
- .kit-popover-content[data-density='none'] {
174
- --kit-popover-density-scale: 0;
175
- }
176
179
  .kit-popover-content[data-density='compact'] {
177
- --kit-popover-density-scale: 0.8;
180
+ --kit-popover-density-offset: var(--kit-space-compact);
178
181
  }
179
182
  .kit-popover-content[data-density='default'] {
180
- --kit-popover-density-scale: 1;
183
+ --kit-popover-density-offset: var(--kit-space-default);
181
184
  }
182
185
  .kit-popover-content[data-density='comfortable'] {
183
- --kit-popover-density-scale: 1.15;
186
+ --kit-popover-density-offset: var(--kit-space-comfortable);
184
187
  }
185
188
  </style>
@@ -11,7 +11,7 @@ export type ModelPopoverProps = {
11
11
  export interface PopoverProps extends Component {
12
12
  ref?: HTMLElement | null;
13
13
  open?: boolean;
14
- rounded?: RoundedType | string;
14
+ rounded?: RoundedType;
15
15
  position?: 'top' | 'bottom' | 'left' | 'right';
16
16
  color?: string;
17
17
  background?: string;