@x33025/sveltely 0.1.2 → 0.1.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 (76) hide show
  1. package/dist/components/Library/AnimatedNumber/AnimatedNumber.demo.svelte +1 -1
  2. package/dist/components/Library/AsyncButton/AsyncButton.svelte +42 -16
  3. package/dist/components/Library/Button/Button.svelte +21 -13
  4. package/dist/components/Library/Calendar/Calendar.svelte +16 -16
  5. package/dist/components/Library/Checkbox/Checkbox.svelte +13 -14
  6. package/dist/components/Library/ChipInput/ChipInput.demo.svelte +1 -1
  7. package/dist/components/Library/ChipInput/ChipInput.svelte +7 -4
  8. package/dist/components/Library/Dropdown/Action.svelte +60 -0
  9. package/dist/components/Library/Dropdown/Action.svelte.d.ts +11 -0
  10. package/dist/components/Library/Dropdown/Divider.svelte +5 -0
  11. package/dist/components/Library/Dropdown/Divider.svelte.d.ts +19 -0
  12. package/dist/components/Library/Dropdown/Dropdown.demo.svelte +182 -72
  13. package/dist/components/Library/Dropdown/Dropdown.demo.svelte.d.ts +2 -1
  14. package/dist/components/Library/Dropdown/Dropdown.svelte +78 -267
  15. package/dist/components/Library/Dropdown/Dropdown.svelte.d.ts +17 -16
  16. package/dist/components/Library/Dropdown/Item.svelte +73 -0
  17. package/dist/components/Library/Dropdown/Item.svelte.d.ts +31 -0
  18. package/dist/components/Library/Dropdown/Section.svelte +34 -0
  19. package/dist/components/Library/Dropdown/Section.svelte.d.ts +8 -0
  20. package/dist/components/Library/Dropdown/context.d.ts +34 -0
  21. package/dist/components/Library/Dropdown/context.js +6 -0
  22. package/dist/components/Library/Dropdown/index.d.ts +13 -2
  23. package/dist/components/Library/Dropdown/index.js +11 -1
  24. package/dist/components/Library/Floating/Floating.svelte +10 -7
  25. package/dist/components/Library/ImageMask/BrushPreview.svelte +6 -6
  26. package/dist/components/Library/ImageMask/ImageMask.demo.svelte +7 -7
  27. package/dist/components/Library/ImageMask/MaskLayer.svelte +3 -3
  28. package/dist/components/Library/Label/Label.svelte +2 -4
  29. package/dist/components/Library/NavigationStack/NavigationStack.svelte +17 -7
  30. package/dist/components/Library/NavigationStack/Toolbar.svelte +7 -2
  31. package/dist/components/Library/NumberField/NumberField.svelte +14 -9
  32. package/dist/components/Library/Pagination/Pagination.svelte +16 -20
  33. package/dist/components/Library/Popover/Popover.demo.svelte +2 -2
  34. package/dist/components/Library/Popover/Popover.svelte +7 -4
  35. package/dist/components/Library/ScrollView/ScrollView.svelte +140 -3
  36. package/dist/components/Library/ScrollView/ScrollView.svelte.d.ts +28 -0
  37. package/dist/components/Library/ScrollView/index.d.ts +1 -0
  38. package/dist/components/Library/{SearchInput/SearchInput.demo.svelte → SearchField/SearchField.demo.svelte} +4 -4
  39. package/dist/components/Library/SearchField/SearchField.demo.svelte.d.ts +8 -0
  40. package/dist/components/Library/{SearchInput/SearchInput.svelte → SearchField/SearchField.svelte} +26 -30
  41. package/dist/components/Library/{SearchInput/SearchInput.svelte.d.ts → SearchField/SearchField.svelte.d.ts} +3 -3
  42. package/dist/components/Library/SearchField/index.d.ts +1 -0
  43. package/dist/components/Library/SearchField/index.js +1 -0
  44. package/dist/components/Library/SegmentedPicker/SegmentedPicker.demo.svelte +1 -1
  45. package/dist/components/Library/SegmentedPicker/SegmentedPicker.svelte +9 -9
  46. package/dist/components/Library/Sheet/Sheet.demo.svelte +1 -1
  47. package/dist/components/Library/Sheet/Sheet.svelte +8 -5
  48. package/dist/components/Library/Slider/Slider.demo.svelte +1 -1
  49. package/dist/components/Library/Slider/Slider.svelte +11 -10
  50. package/dist/components/Library/Spinner/Spinner.demo.svelte +1 -1
  51. package/dist/components/Library/Switch/Switch.svelte +6 -11
  52. package/dist/components/Library/TextField/TextField.svelte +14 -9
  53. package/dist/components/Library/{TokenSearchInput/TokenSearchInput.demo.svelte → TokenSearchField/TokenSearchField.demo.svelte} +4 -4
  54. package/dist/components/Library/TokenSearchField/TokenSearchField.demo.svelte.d.ts +9 -0
  55. package/dist/components/Library/{TokenSearchInput/TokenSearchInput.svelte → TokenSearchField/TokenSearchField.svelte} +70 -66
  56. package/dist/components/Library/{TokenSearchInput/TokenSearchInput.svelte.d.ts → TokenSearchField/TokenSearchField.svelte.d.ts} +3 -3
  57. package/dist/components/Library/TokenSearchField/index.d.ts +1 -0
  58. package/dist/components/Library/TokenSearchField/index.js +1 -0
  59. package/dist/components/Library/WheelPicker/WheelColumn.svelte +4 -10
  60. package/dist/components/Library/WheelPicker/WheelPicker.svelte +5 -9
  61. package/dist/components/Local/HeroCard.svelte +5 -3
  62. package/dist/components/Local/StyleControls.svelte +58 -27
  63. package/dist/components/Local/StyleControls.svelte.d.ts +3 -1
  64. package/dist/index.d.ts +3 -2
  65. package/dist/index.js +2 -2
  66. package/dist/style/index.css +9 -5
  67. package/dist/style.css +60 -29
  68. package/package.json +1 -1
  69. package/dist/components/Library/Dropdown/types.d.ts +0 -30
  70. package/dist/components/Library/Dropdown/types.js +0 -1
  71. package/dist/components/Library/SearchInput/SearchInput.demo.svelte.d.ts +0 -8
  72. package/dist/components/Library/SearchInput/index.d.ts +0 -1
  73. package/dist/components/Library/SearchInput/index.js +0 -1
  74. package/dist/components/Library/TokenSearchInput/TokenSearchInput.demo.svelte.d.ts +0 -9
  75. package/dist/components/Library/TokenSearchInput/index.d.ts +0 -1
  76. package/dist/components/Library/TokenSearchInput/index.js +0 -1
@@ -17,7 +17,7 @@
17
17
  </script>
18
18
 
19
19
  <div class="vstack center gap-3">
20
- <div class="text-3xl font-semibold text-zinc-900">
20
+ <div class="text-3xl font-semibold text-[var(--sveltely-primary-color)]">
21
21
  <AnimatedNumber {value} />
22
22
  </div>
23
23
  <Button label="Change number" variant="solid" onclick={bump} />
@@ -17,7 +17,8 @@
17
17
  iconColor?: string;
18
18
  iconSize?: number | string;
19
19
  labelColor?: string;
20
- } & StyleProps & Omit<HTMLButtonAttributes, 'children' | 'onclick' | 'class' | 'style'>;
20
+ } & StyleProps &
21
+ Omit<HTMLButtonAttributes, 'children' | 'onclick' | 'class' | 'style'>;
21
22
 
22
23
  let {
23
24
  icon,
@@ -135,32 +136,57 @@
135
136
  --async-button-font-size: var(--sveltely-font-size);
136
137
  --async-button-scale: calc(var(--async-button-font-size) / 1rem);
137
138
  --async-button-icon-size: calc(var(--async-button-font-size) * 1.143);
138
- border: 1px solid var(--async-button-border-color, var(--sveltely-primary-color));
139
+ border: 1px solid var(--async-button-border-color, var(--sveltely-active-color));
139
140
  border-radius: var(--async-button-border-radius, var(--sveltely-border-radius));
140
- background: var(--async-button-background, var(--sveltely-primary-color));
141
- color: var(--async-button-color, white);
141
+ background: var(--async-button-background, var(--sveltely-active-color));
142
+ color: var(--async-button-color, var(--sveltely-background-color));
142
143
  gap: var(--async-button-gap, var(--sveltely-gap));
143
144
  font-size: var(--async-button-font-size);
144
145
  line-height: 1.25;
145
- padding:
146
- var(--async-button-padding-y, calc(var(--sveltely-padding-y) * 0.67 * var(--async-button-scale)))
146
+ padding: var(
147
+ --async-button-padding-y,
148
+ calc(var(--sveltely-padding-y) * 0.67 * var(--async-button-scale))
149
+ )
147
150
  var(--async-button-padding-x, calc(var(--sveltely-padding-x) * var(--async-button-scale)));
148
- transition: color 150ms, border-color 150ms, background-color 150ms;
151
+ transition:
152
+ color 150ms,
153
+ border-color 150ms,
154
+ background-color 150ms;
149
155
  }
150
156
 
151
157
  .async-button:hover {
152
- background: var(
153
- --async-button-hover-background,
154
- var(--sveltely-active-hover-color)
155
- );
158
+ background: var(--async-button-hover-background, var(--sveltely-active-hover-color));
156
159
  }
157
160
 
158
161
  .async-button-icon-only {
159
- padding:
160
- var(--async-button-padding-y, calc(var(--sveltely-padding-y) * 0.67 * var(--async-button-scale)))
161
- var(--async-button-padding-x, calc(var(--sveltely-padding-x) * 0.67 * var(--async-button-scale)));
162
- min-width: calc((var(--async-button-padding-x, calc(var(--sveltely-padding-x) * 0.67 * var(--async-button-scale))) * 2) + 1rem);
163
- min-height: calc((var(--async-button-padding-y, calc(var(--sveltely-padding-y) * 0.67 * var(--async-button-scale))) * 2) + 1rem);
162
+ padding: var(
163
+ --async-button-padding-y,
164
+ calc(var(--sveltely-padding-y) * 0.67 * var(--async-button-scale))
165
+ )
166
+ var(
167
+ --async-button-padding-x,
168
+ calc(var(--sveltely-padding-x) * 0.67 * var(--async-button-scale))
169
+ );
170
+ min-width: calc(
171
+ (
172
+ var(
173
+ --async-button-padding-x,
174
+ calc(var(--sveltely-padding-x) * 0.67 * var(--async-button-scale))
175
+ ) *
176
+ 2
177
+ ) +
178
+ 1rem
179
+ );
180
+ min-height: calc(
181
+ (
182
+ var(
183
+ --async-button-padding-y,
184
+ calc(var(--sveltely-padding-y) * 0.67 * var(--async-button-scale))
185
+ ) *
186
+ 2
187
+ ) +
188
+ 1rem
189
+ );
164
190
  }
165
191
 
166
192
  .async-button-icon-frame {
@@ -10,7 +10,8 @@
10
10
  iconSize?: number | string;
11
11
  iconColor?: string;
12
12
  variant?: 'default' | 'solid' | 'ghost';
13
- } & StyleProps & Omit<HTMLButtonAttributes, 'children' | 'class' | 'style'>;
13
+ } & StyleProps &
14
+ Omit<HTMLButtonAttributes, 'children' | 'class' | 'style'>;
14
15
 
15
16
  let {
16
17
  children,
@@ -77,15 +78,17 @@
77
78
  --button-icon-size: calc(var(--button-font-size) * 1.143);
78
79
  border: 1px solid var(--button-border-color, var(--sveltely-border-color));
79
80
  border-radius: var(--button-border-radius, var(--sveltely-border-radius));
80
- background: var(--button-background, white);
81
- color: var(--button-color, var(--color-zinc-800));
81
+ background: var(--button-background, var(--sveltely-background-color));
82
+ color: var(--button-color, var(--sveltely-primary-color));
82
83
  gap: var(--button-gap, var(--sveltely-gap));
83
84
  font-size: var(--button-font-size);
84
85
  line-height: 1.25;
85
- padding:
86
- var(--button-padding-y, calc(var(--sveltely-padding-y) * 0.67 * var(--button-scale)))
86
+ padding: var(--button-padding-y, calc(var(--sveltely-padding-y) * 0.67 * var(--button-scale)))
87
87
  var(--button-padding-x, calc(var(--sveltely-padding-x) * var(--button-scale)));
88
- transition: color 150ms, border-color 150ms, background-color 150ms;
88
+ transition:
89
+ color 150ms,
90
+ border-color 150ms,
91
+ background-color 150ms;
89
92
  }
90
93
 
91
94
  .button[data-variant='default']:hover {
@@ -93,9 +96,9 @@
93
96
  }
94
97
 
95
98
  .button[data-variant='solid'] {
96
- border-color: var(--button-solid-border-color, var(--sveltely-primary-color));
97
- background: var(--button-solid-background, var(--sveltely-primary-color));
98
- color: var(--button-solid-color, white);
99
+ border-color: var(--button-solid-border-color, var(--sveltely-active-color));
100
+ background: var(--button-solid-background, var(--sveltely-active-color));
101
+ color: var(--button-solid-color, var(--sveltely-background-color));
99
102
  }
100
103
 
101
104
  .button[data-variant='solid']:hover {
@@ -112,11 +115,16 @@
112
115
  }
113
116
 
114
117
  .button-icon-only {
115
- padding:
116
- var(--button-padding-y, calc(var(--sveltely-padding-y) * 0.67 * var(--button-scale)))
118
+ padding: var(--button-padding-y, calc(var(--sveltely-padding-y) * 0.67 * var(--button-scale)))
117
119
  var(--button-padding-x, calc(var(--sveltely-padding-x) * 0.67 * var(--button-scale)));
118
- min-width: calc((var(--button-padding-x, calc(var(--sveltely-padding-x) * 0.67 * var(--button-scale))) * 2) + 1rem);
119
- min-height: calc((var(--button-padding-y, calc(var(--sveltely-padding-y) * 0.67 * var(--button-scale))) * 2) + 1rem);
120
+ min-width: calc(
121
+ (var(--button-padding-x, calc(var(--sveltely-padding-x) * 0.67 * var(--button-scale))) * 2) +
122
+ 1rem
123
+ );
124
+ min-height: calc(
125
+ (var(--button-padding-y, calc(var(--sveltely-padding-y) * 0.67 * var(--button-scale))) * 2) +
126
+ 1rem
127
+ );
120
128
  }
121
129
 
122
130
  .button-icon-frame {
@@ -164,9 +164,9 @@
164
164
  --calendar-font-size: calc(var(--sveltely-font-size) * 0.971);
165
165
  --calendar-scale: calc(var(--calendar-font-size) / 1rem);
166
166
  --calendar-cell-core-size: max(2ch, calc(2ch * var(--calendar-scale)));
167
- --calendar-weekend-color: var(--color-zinc-500);
168
- --calendar-weekend-header-color: var(--color-zinc-400);
169
- --calendar-weekend-selected-color: white;
167
+ --calendar-weekend-color: var(--sveltely-secondary-color);
168
+ --calendar-weekend-header-color: var(--sveltely-secondary-color);
169
+ --calendar-weekend-selected-color: var(--sveltely-background-color);
170
170
  --calendar-cell-width: calc(var(--calendar-cell-core-size) + (var(--sveltely-padding-x) * 2.2));
171
171
  --calendar-cell-height: calc(
172
172
  var(--calendar-cell-core-size) + (var(--sveltely-padding-y) * 2.2)
@@ -193,7 +193,7 @@
193
193
  font-size: var(--calendar-title-size);
194
194
  line-height: 1.4;
195
195
  font-weight: 600;
196
- color: var(--color-zinc-900);
196
+ color: var(--sveltely-primary-color);
197
197
  }
198
198
 
199
199
  .calendar-nav-button {
@@ -210,15 +210,15 @@
210
210
  max-height: var(--calendar-cell-height);
211
211
  border: 1px solid color-mix(in oklab, var(--sveltely-border-color) 75%, white);
212
212
  border-radius: var(--sveltely-border-radius);
213
- background: color-mix(in oklab, white 92%, var(--color-zinc-100));
213
+ background: color-mix(in oklab, white 92%, var(--sveltely-inactive-color));
214
214
  padding: 0;
215
- color: var(--color-zinc-600);
215
+ color: var(--sveltely-secondary-color);
216
216
  cursor: pointer;
217
217
  appearance: none;
218
218
  }
219
219
 
220
220
  .calendar-nav-button:focus-visible {
221
- outline: 2px solid color-mix(in oklab, var(--sveltely-primary-color) 24%, white);
221
+ outline: 2px solid color-mix(in oklab, var(--sveltely-active-color) 24%, white);
222
222
  outline-offset: 2px;
223
223
  }
224
224
 
@@ -250,7 +250,7 @@
250
250
  font-size: var(--calendar-weekday-size);
251
251
  line-height: 1;
252
252
  text-align: center;
253
- color: var(--color-zinc-500);
253
+ color: var(--sveltely-secondary-color);
254
254
  }
255
255
 
256
256
  .calendar-weekday-weekend {
@@ -266,11 +266,11 @@
266
266
  height: 100%;
267
267
  border: 1px solid color-mix(in oklab, var(--sveltely-border-color) 75%, white);
268
268
  border-radius: var(--sveltely-border-radius);
269
- background: color-mix(in oklab, white 92%, var(--color-zinc-100));
269
+ background: color-mix(in oklab, white 92%, var(--sveltely-inactive-color));
270
270
  padding: 0;
271
271
  font-size: calc(var(--calendar-font-size) * 0.85);
272
272
  line-height: 1;
273
- color: var(--color-zinc-700);
273
+ color: var(--sveltely-primary-color);
274
274
  cursor: pointer;
275
275
  appearance: none;
276
276
  }
@@ -280,7 +280,7 @@
280
280
  }
281
281
 
282
282
  .calendar-day:focus-visible {
283
- outline: 2px solid color-mix(in oklab, var(--sveltely-primary-color) 24%, white);
283
+ outline: 2px solid color-mix(in oklab, var(--sveltely-active-color) 24%, white);
284
284
  outline-offset: 2px;
285
285
  }
286
286
 
@@ -291,17 +291,17 @@
291
291
  .calendar-day-outside {
292
292
  border-color: transparent;
293
293
  background: transparent;
294
- color: var(--color-zinc-400);
294
+ color: var(--sveltely-secondary-color);
295
295
  }
296
296
 
297
297
  .calendar-day-today {
298
- border-color: color-mix(in oklab, var(--sveltely-primary-color) 18%, white);
298
+ border-color: color-mix(in oklab, var(--sveltely-active-color) 18%, white);
299
299
  }
300
300
 
301
301
  .calendar-day-selected {
302
- border-color: var(--sveltely-primary-color);
303
- background: var(--sveltely-primary-color);
304
- color: white;
302
+ border-color: var(--sveltely-active-color);
303
+ background: var(--sveltely-active-color);
304
+ color: var(--sveltely-background-color);
305
305
  }
306
306
 
307
307
  .calendar-day-selected:hover {
@@ -8,7 +8,8 @@
8
8
  checked?: boolean;
9
9
  label?: string;
10
10
  children?: Snippet;
11
- } & StyleProps & Omit<HTMLInputAttributes, 'type' | 'children' | 'class' | 'style' | 'checked'>;
11
+ } & StyleProps &
12
+ Omit<HTMLInputAttributes, 'type' | 'children' | 'class' | 'style' | 'checked'>;
12
13
 
13
14
  let {
14
15
  checked = $bindable(false),
@@ -52,13 +53,14 @@
52
53
  --checkbox-font-size: var(--sveltely-font-size);
53
54
  --checkbox-scale: calc(var(--checkbox-font-size) / 1rem);
54
55
  --checkbox-box-size: calc(
55
- (var(--checkbox-font-size) * 0.92) + (var(--sveltely-padding-y) * 0.28 * var(--checkbox-scale))
56
+ (var(--checkbox-font-size) * 0.92) +
57
+ (var(--sveltely-padding-y) * 0.28 * var(--checkbox-scale))
56
58
  );
57
59
  --checkbox-icon-size: calc(var(--checkbox-box-size) * 0.64);
58
60
  gap: var(--checkbox-gap, var(--sveltely-gap));
59
61
  font-size: var(--checkbox-font-size);
60
62
  line-height: 1.25;
61
- color: var(--checkbox-color, var(--color-zinc-800));
63
+ color: var(--checkbox-color, var(--sveltely-primary-color));
62
64
  cursor: pointer;
63
65
  user-select: none;
64
66
  }
@@ -93,7 +95,10 @@
93
95
  display: inline-flex;
94
96
  align-items: center;
95
97
  justify-content: center;
96
- transition: color 150ms, border-color 150ms, background-color 150ms;
98
+ transition:
99
+ color 150ms,
100
+ border-color 150ms,
101
+ background-color 150ms;
97
102
  }
98
103
 
99
104
  .checkbox:hover .checkbox-mark {
@@ -103,22 +108,16 @@
103
108
  .checkbox-control input:checked + .checkbox-mark {
104
109
  border-color: var(--checkbox-checked-border-color, var(--sveltely-active-color));
105
110
  background: var(--checkbox-checked-background, var(--sveltely-active-color));
106
- color: var(--checkbox-checked-color, white);
111
+ color: var(--checkbox-checked-color, var(--sveltely-background-color));
107
112
  }
108
113
 
109
114
  .checkbox:hover .checkbox-control input:checked + .checkbox-mark {
110
- background: var(
111
- --checkbox-checked-hover-background,
112
- var(--sveltely-active-hover-color)
113
- );
114
- border-color: var(
115
- --checkbox-checked-hover-border-color,
116
- var(--sveltely-active-hover-color)
117
- );
115
+ background: var(--checkbox-checked-hover-background, var(--sveltely-active-hover-color));
116
+ border-color: var(--checkbox-checked-hover-border-color, var(--sveltely-active-hover-color));
118
117
  }
119
118
 
120
119
  .checkbox-control input:focus-visible + .checkbox-mark {
121
- outline: 2px solid color-mix(in oklab, var(--sveltely-primary-color) 24%, white);
120
+ outline: 2px solid color-mix(in oklab, var(--sveltely-active-color) 24%, white);
122
121
  outline-offset: 2px;
123
122
  }
124
123
 
@@ -13,5 +13,5 @@
13
13
 
14
14
  <div class="vstack w-full max-w-sm gap-2">
15
15
  <ChipInput bind:tags />
16
- <p class="text-xs text-zinc-500">Tags: {tags.join(', ')}</p>
16
+ <p class="text-xs text-[var(--sveltely-secondary-color)]">Tags: {tags.join(', ')}</p>
17
17
  </div>
@@ -10,7 +10,8 @@
10
10
  selection?: string[];
11
11
  disabled?: boolean;
12
12
  action?: Snippet;
13
- } & StyleProps & Record<string, unknown>;
13
+ } & StyleProps &
14
+ Record<string, unknown>;
14
15
 
15
16
  let {
16
17
  placeholder = 'Add a tag...',
@@ -321,7 +322,9 @@
321
322
  --chip-input-icon-size: calc(var(--chip-input-font-size) * 1);
322
323
  --chip-input-padding-y: calc(var(--sveltely-padding-y) * 0.33 * var(--chip-input-scale));
323
324
  --chip-input-padding-x: calc(var(--sveltely-padding-x) * 0.67 * var(--chip-input-scale));
324
- --chip-input-control-height: calc(var(--chip-input-line-height) + (var(--chip-input-padding-y) * 2) + 2px);
325
+ --chip-input-control-height: calc(
326
+ var(--chip-input-line-height) + (var(--chip-input-padding-y) * 2) + 2px
327
+ );
325
328
  gap: calc(var(--sveltely-gap) * 0.5);
326
329
  }
327
330
 
@@ -329,7 +332,7 @@
329
332
  box-sizing: border-box;
330
333
  border: 1px solid var(--sveltely-border-color);
331
334
  border-radius: var(--sveltely-border-radius);
332
- background: var(--color-zinc-100);
335
+ background: var(--sveltely-inactive-color);
333
336
  color: black;
334
337
  min-height: var(--chip-input-control-height);
335
338
  padding: var(--chip-input-padding-y) var(--chip-input-padding-x);
@@ -339,7 +342,7 @@
339
342
  }
340
343
 
341
344
  .chip-selected {
342
- border-color: var(--color-zinc-300);
345
+ border-color: var(--sveltely-border-color);
343
346
  }
344
347
 
345
348
  .chip:hover,
@@ -0,0 +1,60 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import { getDropdownContext, type DropdownActionState } from './context';
4
+
5
+ type Props = {
6
+ disabled?: boolean;
7
+ closeOnSelect?: boolean;
8
+ children?: Snippet<[DropdownActionState]>;
9
+ onclick?: (event: MouseEvent) => void;
10
+ };
11
+
12
+ let { disabled = false, closeOnSelect, children, onclick }: Props = $props();
13
+
14
+ const dropdown = getDropdownContext();
15
+ const resolvedDisabled = $derived(dropdown.disabled || disabled);
16
+ const resolvedCloseOnSelect = $derived(closeOnSelect ?? dropdown.closeOnSelect);
17
+
18
+ function handleClick(event: MouseEvent) {
19
+ if (resolvedDisabled) return;
20
+ onclick?.(event);
21
+ if (!event.defaultPrevented && resolvedCloseOnSelect) dropdown.close();
22
+ }
23
+ </script>
24
+
25
+ <button
26
+ type="button"
27
+ class="dropdown-action inline-flex items-center text-left"
28
+ data-popover-radius-source
29
+ disabled={resolvedDisabled}
30
+ onclick={handleClick}
31
+ >
32
+ {#if children}
33
+ {@render children({
34
+ disabled: resolvedDisabled,
35
+ close: dropdown.close
36
+ })}
37
+ {/if}
38
+ </button>
39
+
40
+ <style>
41
+ .dropdown-action {
42
+ width: 100%;
43
+ gap: calc(var(--sveltely-inset) * 2);
44
+ border-radius: var(--dropdown-item-radius, var(--sveltely-border-radius-nested));
45
+ padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);
46
+ }
47
+
48
+ .dropdown-action :global(*) {
49
+ border-radius: inherit;
50
+ }
51
+
52
+ .dropdown-action:hover {
53
+ background: var(--sveltely-hover-color);
54
+ }
55
+
56
+ .dropdown-action:disabled {
57
+ cursor: not-allowed;
58
+ opacity: 0.5;
59
+ }
60
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { type DropdownActionState } from './context';
3
+ type Props = {
4
+ disabled?: boolean;
5
+ closeOnSelect?: boolean;
6
+ children?: Snippet<[DropdownActionState]>;
7
+ onclick?: (event: MouseEvent) => void;
8
+ };
9
+ declare const Action: import("svelte").Component<Props, {}, "">;
10
+ type Action = ReturnType<typeof Action>;
11
+ export default Action;
@@ -0,0 +1,5 @@
1
+ <script lang="ts">
2
+ import Divider from '../Divider';
3
+ </script>
4
+
5
+ <Divider />
@@ -0,0 +1,19 @@
1
+ import Divider from '../Divider';
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const Divider: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Divider = InstanceType<typeof Divider>;
19
+ export default Divider;