@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
@@ -11,7 +11,8 @@
11
11
  tokenPlaceholder?: string;
12
12
  normalizeToken?: (value: string) => string;
13
13
  showIcon?: boolean;
14
- } & StyleProps & Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'placeholder' | 'class' | 'style'>;
14
+ } & StyleProps &
15
+ Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'placeholder' | 'class' | 'style'>;
15
16
 
16
17
  const defaultNormalizeToken = (value: string) => value.trim().replace(/\s+/g, ' ');
17
18
 
@@ -30,7 +31,7 @@
30
31
  const extractedStyleProps = $derived.by(() => extractStyleProps(restProps));
31
32
  const styleProps = $derived(extractedStyleProps.styleProps);
32
33
  const props = $derived(extractedStyleProps.restProps);
33
- const rootStyle = $derived.by(() => surfaceStyle(styleProps, 'token-search-input'));
34
+ const rootStyle = $derived.by(() => surfaceStyle(styleProps, 'token-search-field'));
34
35
 
35
36
  const addToken = (rawValue: string) => {
36
37
  const token = normalizeToken(rawValue);
@@ -68,12 +69,10 @@
68
69
  event.preventDefault();
69
70
 
70
71
  const nextTokens = [...tokens];
71
- const seen = new Set(nextTokens);
72
72
  for (const part of pasted.split(',')) {
73
73
  const token = normalizeToken(part);
74
- if (!token || seen.has(token)) continue;
74
+ if (!token || nextTokens.includes(token)) continue;
75
75
  nextTokens.push(token);
76
- seen.add(token);
77
76
  }
78
77
 
79
78
  tokens = nextTokens;
@@ -81,28 +80,28 @@
81
80
  };
82
81
  </script>
83
82
 
84
- <div
85
- class="token-search-input hstack w-full flex-nowrap items-center overflow-x-auto overflow-y-hidden whitespace-nowrap"
86
- class:token-search-input-has-tokens={tokens.length > 0}
87
- style={rootStyle}
88
- data-disabled={disabled ? 'true' : 'false'}
89
- >
83
+ <div
84
+ class="token-search-field hstack w-full flex-nowrap items-center overflow-x-auto overflow-y-hidden whitespace-nowrap"
85
+ class:token-search-field-has-tokens={tokens.length > 0}
86
+ style={rootStyle}
87
+ data-disabled={disabled ? 'true' : 'false'}
88
+ >
90
89
  {#if showIcon}
91
- <span class="token-search-input-icon" aria-hidden="true">
92
- <SearchIcon class="token-search-input-search-icon" />
90
+ <span class="token-search-field-icon" aria-hidden="true">
91
+ <SearchIcon class="token-search-field-search-icon" />
93
92
  </span>
94
93
  {/if}
95
94
 
96
95
  {#each tokens as token, index (`${token}-${index}`)}
97
96
  <button
98
97
  type="button"
99
- class="token-search-input-token"
98
+ class="token-search-field-token"
100
99
  onclick={() => removeToken(index)}
101
100
  aria-label={`Remove search token ${token}`}
102
101
  {disabled}
103
102
  >
104
103
  <span>{token}</span>
105
- <X class="token-search-input-remove-icon" aria-hidden="true" />
104
+ <X class="token-search-field-remove-icon" aria-hidden="true" />
106
105
  </button>
107
106
  {/each}
108
107
 
@@ -111,7 +110,7 @@
111
110
  bind:value
112
111
  {disabled}
113
112
  placeholder={tokens.length === 0 ? placeholder : tokenPlaceholder}
114
- class="token-search-input-field"
113
+ class="token-search-field-input"
115
114
  onkeydown={onKeydown}
116
115
  onpaste={onPaste}
117
116
  onblur={commitValue}
@@ -119,60 +118,63 @@
119
118
  />
120
119
 
121
120
  {#if confirmText}
122
- <span class="token-search-input-confirm">
121
+ <span class="token-search-field-confirm">
123
122
  {confirmText}
124
123
  </span>
125
124
  {/if}
126
125
  </div>
127
126
 
128
127
  <style>
129
- .token-search-input {
130
- --token-search-input-inset: var(--sveltely-inset);
131
- --token-search-input-font-size: calc(var(--sveltely-font-size) * 0.875);
132
- --token-search-input-scale: calc(var(--token-search-input-font-size) / 0.875rem);
133
- --token-search-input-line-height: calc(var(--token-search-input-font-size) * 1.429);
134
- --token-search-input-search-icon-size: calc(var(--token-search-input-font-size) * 1.143);
135
- --token-search-input-remove-icon-size: calc(var(--token-search-input-font-size) * 0.857);
136
- --token-search-input-confirm-font-size: calc(var(--token-search-input-font-size) * 0.857);
137
- --sveltely-nested-inset: var(--token-search-input-inset);
128
+ .token-search-field {
129
+ --token-search-field-inset: var(--sveltely-inset);
130
+ --token-search-field-font-size: calc(var(--sveltely-font-size) * 0.875);
131
+ --token-search-field-scale: calc(var(--token-search-field-font-size) / 0.875rem);
132
+ --token-search-field-line-height: calc(var(--token-search-field-font-size) * 1.429);
133
+ --token-search-field-search-icon-size: calc(var(--token-search-field-font-size) * 1.143);
134
+ --token-search-field-remove-icon-size: calc(var(--token-search-field-font-size) * 0.857);
135
+ --token-search-field-confirm-font-size: calc(var(--token-search-field-font-size) * 0.857);
136
+ --sveltely-nested-inset: var(--token-search-field-inset);
138
137
  min-width: 0;
139
138
  border: 1px solid var(--sveltely-border-color);
140
139
  border-radius: var(--sveltely-border-radius);
141
- color: var(--color-zinc-900);
142
- gap: var(--token-search-input-inset);
143
- padding:
144
- calc(var(--sveltely-padding-y) * 0.58 * var(--token-search-input-scale))
145
- calc(var(--sveltely-padding-x) * var(--token-search-input-scale));
146
- font-size: var(--token-search-input-font-size);
147
- line-height: var(--token-search-input-line-height);
140
+ color: var(--sveltely-primary-color);
141
+ gap: var(--token-search-field-inset);
142
+ padding: calc(var(--sveltely-padding-y) * 0.58 * var(--token-search-field-scale))
143
+ calc(var(--sveltely-padding-x) * var(--token-search-field-scale));
144
+ font-size: var(--token-search-field-font-size);
145
+ line-height: var(--token-search-field-line-height);
148
146
  outline: none;
149
- transition: color 150ms, border-color 150ms, background-color 150ms, box-shadow 150ms;
147
+ transition:
148
+ color 150ms,
149
+ border-color 150ms,
150
+ background-color 150ms,
151
+ box-shadow 150ms;
150
152
  }
151
153
 
152
- .token-search-input:focus-within {
153
- border-color: color-mix(in oklab, var(--sveltely-primary-color) 50%, white);
154
+ .token-search-field:focus-within {
155
+ border-color: color-mix(in oklab, var(--sveltely-active-color) 50%, white);
154
156
  }
155
157
 
156
- .token-search-input-has-tokens {
157
- padding: var(--token-search-input-inset);
158
+ .token-search-field-has-tokens {
159
+ padding: var(--token-search-field-inset);
158
160
  }
159
161
 
160
- .token-search-input[data-disabled='true'] {
162
+ .token-search-field[data-disabled='true'] {
161
163
  cursor: not-allowed;
162
164
  opacity: 0.6;
163
165
  }
164
166
 
165
- .token-search-input-icon {
167
+ .token-search-field-icon {
166
168
  flex-shrink: 0;
167
- color: var(--color-zinc-500);
169
+ color: var(--sveltely-secondary-color);
168
170
  }
169
171
 
170
- :global(.token-search-input-search-icon) {
171
- width: var(--token-search-input-search-icon-size);
172
- height: var(--token-search-input-search-icon-size);
172
+ :global(.token-search-field-search-icon) {
173
+ width: var(--token-search-field-search-icon-size);
174
+ height: var(--token-search-field-search-icon-size);
173
175
  }
174
176
 
175
- .token-search-input-field {
177
+ .token-search-field-input {
176
178
  field-sizing: content;
177
179
  min-width: 0;
178
180
  flex: 1 1 auto;
@@ -180,50 +182,52 @@
180
182
  outline: none;
181
183
  }
182
184
 
183
- .token-search-input-field::-webkit-search-cancel-button {
185
+ .token-search-field-input::-webkit-search-cancel-button {
184
186
  appearance: none;
185
187
  }
186
188
 
187
- .token-search-input-token {
189
+ .token-search-field-token {
188
190
  display: inline-flex;
189
191
  flex-shrink: 0;
190
192
  align-items: center;
191
193
  border: 1px solid var(--sveltely-border-color);
192
194
  border-radius: var(--sveltely-border-radius-nested);
193
- background: var(--color-zinc-100);
194
- color: var(--color-zinc-700);
195
+ background: var(--sveltely-inactive-color);
196
+ color: var(--sveltely-primary-color);
195
197
  font-size: inherit;
196
198
  line-height: inherit;
197
- gap: calc(var(--sveltely-padding-x) * 0.66 * var(--token-search-input-scale));
198
- padding:
199
- calc(var(--sveltely-padding-y) * 0.17 * var(--token-search-input-scale))
200
- calc(var(--sveltely-padding-y) * 0.33 * var(--token-search-input-scale))
201
- calc(var(--sveltely-padding-y) * 0.17 * var(--token-search-input-scale))
202
- calc(var(--sveltely-padding-x) * 0.66 * var(--token-search-input-scale));
203
- transition: color 150ms, border-color 150ms, background-color 150ms;
199
+ gap: calc(var(--sveltely-padding-x) * 0.66 * var(--token-search-field-scale));
200
+ padding: calc(var(--sveltely-padding-y) * 0.17 * var(--token-search-field-scale))
201
+ calc(var(--sveltely-padding-y) * 0.33 * var(--token-search-field-scale))
202
+ calc(var(--sveltely-padding-y) * 0.17 * var(--token-search-field-scale))
203
+ calc(var(--sveltely-padding-x) * 0.66 * var(--token-search-field-scale));
204
+ transition:
205
+ color 150ms,
206
+ border-color 150ms,
207
+ background-color 150ms;
204
208
  }
205
209
 
206
- :global(.token-search-input-remove-icon) {
207
- width: var(--token-search-input-remove-icon-size);
208
- height: var(--token-search-input-remove-icon-size);
210
+ :global(.token-search-field-remove-icon) {
211
+ width: var(--token-search-field-remove-icon-size);
212
+ height: var(--token-search-field-remove-icon-size);
209
213
  }
210
214
 
211
- .token-search-input-token:hover:not(:disabled) {
212
- border-color: var(--color-zinc-300);
215
+ .token-search-field-token:hover:not(:disabled) {
216
+ border-color: var(--sveltely-border-color);
213
217
  background: var(--sveltely-hover-color);
214
218
  }
215
219
 
216
- .token-search-input-token:disabled {
220
+ .token-search-field-token:disabled {
217
221
  cursor: not-allowed;
218
222
  opacity: 0.6;
219
223
  }
220
224
 
221
- .token-search-input-confirm {
225
+ .token-search-field-confirm {
222
226
  flex-shrink: 0;
223
- color: var(--color-zinc-500);
224
- font-size: var(--token-search-input-confirm-font-size);
227
+ color: var(--sveltely-secondary-color);
228
+ font-size: var(--token-search-field-confirm-font-size);
225
229
  font-weight: 500;
226
- line-height: calc(var(--token-search-input-confirm-font-size) * 1.333);
230
+ line-height: calc(var(--token-search-field-confirm-font-size) * 1.333);
227
231
  letter-spacing: 0.18em;
228
232
  text-transform: uppercase;
229
233
  }
@@ -9,6 +9,6 @@ type Props = {
9
9
  normalizeToken?: (value: string) => string;
10
10
  showIcon?: boolean;
11
11
  } & StyleProps & Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'placeholder' | 'class' | 'style'>;
12
- declare const TokenSearchInput: import("svelte").Component<Props, {}, "value" | "tokens">;
13
- type TokenSearchInput = ReturnType<typeof TokenSearchInput>;
14
- export default TokenSearchInput;
12
+ declare const TokenSearchField: import("svelte").Component<Props, {}, "value" | "tokens">;
13
+ type TokenSearchField = ReturnType<typeof TokenSearchField>;
14
+ export default TokenSearchField;
@@ -0,0 +1 @@
1
+ export { default } from './TokenSearchField.svelte';
@@ -0,0 +1 @@
1
+ export { default } from './TokenSearchField.svelte';
@@ -20,11 +20,7 @@
20
20
 
21
21
  const easeOutCubic = (t: number) => 1 - Math.pow(1 - t, 3);
22
22
 
23
- const animateScrollTo = (
24
- nextViewport: HTMLDivElement,
25
- targetTop: number,
26
- duration = 220
27
- ) => {
23
+ const animateScrollTo = (nextViewport: HTMLDivElement, targetTop: number, duration = 220) => {
28
24
  if (scrollAnimationFrame) cancelAnimationFrame(scrollAnimationFrame);
29
25
 
30
26
  const startTop = nextViewport.scrollTop;
@@ -264,12 +260,10 @@
264
260
  display: flex;
265
261
  align-items: center;
266
262
  justify-content: center;
267
- padding:
268
- 0
269
- calc(var(--sveltely-padding-x) * 0.67 * var(--wheel-picker-scale));
263
+ padding: 0 calc(var(--sveltely-padding-x) * 0.67 * var(--wheel-picker-scale));
270
264
  font-size: calc(var(--wheel-picker-font-size) * 0.875);
271
265
  line-height: 1;
272
- color: var(--color-zinc-700);
266
+ color: var(--sveltely-primary-color);
273
267
  text-align: center;
274
268
  appearance: none;
275
269
  position: relative;
@@ -289,7 +283,7 @@
289
283
  }
290
284
 
291
285
  .wheel-column-option:focus-visible {
292
- outline: 2px solid color-mix(in oklab, var(--sveltely-primary-color) 24%, white);
286
+ outline: 2px solid color-mix(in oklab, var(--sveltely-active-color) 24%, white);
293
287
  outline-offset: 2px;
294
288
  }
295
289
 
@@ -6,7 +6,8 @@
6
6
  type Props = {
7
7
  columns: WheelColumnData[];
8
8
  height?: number | string;
9
- } & StyleProps & Record<string, unknown>;
9
+ } & StyleProps &
10
+ Record<string, unknown>;
10
11
 
11
12
  const toCssLength = (value: number | string | undefined) =>
12
13
  value === undefined ? undefined : typeof value === 'number' ? `${value}px` : value;
@@ -23,7 +24,6 @@
23
24
  const heightStyle = `--wheel-picker-height: ${resolvedHeight};`;
24
25
  return rootStyle ? `${rootStyle} ${heightStyle}` : heightStyle;
25
26
  });
26
-
27
27
  </script>
28
28
 
29
29
  <div class="wheel-picker vstack" style={pickerStyle} {...props}>
@@ -47,11 +47,7 @@
47
47
  class="wheel-picker-column"
48
48
  style={`--wheel-picker-column-flex: ${column.options.length <= 3 ? 0.85 : 1};`}
49
49
  >
50
- <WheelColumn
51
- options={column.options}
52
- value={column.value}
53
- onChange={column.onChange}
54
- />
50
+ <WheelColumn options={column.options} value={column.value} onChange={column.onChange} />
55
51
  </div>
56
52
  {/each}
57
53
  </div>
@@ -99,7 +95,7 @@
99
95
  height: var(--wheel-picker-option-height);
100
96
  transform: translateY(-50%);
101
97
  border-radius: var(--sveltely-border-radius);
102
- background: color-mix(in oklab, var(--color-zinc-100) 85%, white);
98
+ background: color-mix(in oklab, var(--sveltely-inactive-color) 85%, white);
103
99
  pointer-events: none;
104
100
  z-index: 0;
105
101
  }
@@ -109,6 +105,6 @@
109
105
  font-size: calc(var(--wheel-picker-font-size) * 0.75);
110
106
  line-height: 1;
111
107
  font-weight: 500;
112
- color: var(--color-zinc-500);
108
+ color: var(--sveltely-secondary-color);
113
109
  }
114
110
  </style>
@@ -20,14 +20,16 @@
20
20
  gap={0.5}
21
21
  border="1px solid var(--sveltely-border-color)"
22
22
  borderRadius={0.75}
23
- background="white"
23
+ background="var(--sveltely-background-color)"
24
24
  paddingX={1.5}
25
25
  paddingY={1.5}
26
26
  >
27
27
  {#if title}
28
- <h1 class="text-3xl font-semibold tracking-tight text-zinc-950">{title}</h1>
28
+ <h1 class="text-3xl font-semibold tracking-tight text-[var(--sveltely-primary-color)]">
29
+ {title}
30
+ </h1>
29
31
  {#if description}
30
- <p class="max-w-3xl text-sm text-zinc-600">{description}</p>
32
+ <p class="max-w-3xl text-sm text-[var(--sveltely-secondary-color)]">{description}</p>
31
33
  {/if}
32
34
  {/if}
33
35
  <VStack grow shrink overflow="hidden" paddingX={0} paddingY={0}>
@@ -10,8 +10,10 @@
10
10
  inset?: number;
11
11
  borderColor?: string;
12
12
  primaryColor?: string;
13
+ secondaryColor?: string;
13
14
  activeColor?: string;
14
15
  inactiveColor?: string;
16
+ backgroundColor?: string;
15
17
  };
16
18
 
17
19
  let {
@@ -23,81 +25,110 @@
23
25
  inset = $bindable(0.25),
24
26
  borderColor = $bindable('#e4e4e7'),
25
27
  primaryColor = $bindable('#18181b'),
28
+ secondaryColor = $bindable('#71717a'),
26
29
  activeColor = $bindable('#18181b'),
27
- inactiveColor = $bindable('#f4f4f5')
30
+ inactiveColor = $bindable('#18181b'),
31
+ backgroundColor = $bindable('#ffffff')
28
32
  }: Props = $props();
29
33
  </script>
30
34
 
31
- <div class="vstack gap-3 text-sm text-zinc-700" style="--sveltely-border-radius: 0.75rem;">
32
- <div class="font-semibold tracking-wide text-zinc-500 uppercase">Controls</div>
35
+ <div
36
+ class="vstack gap-3 text-sm text-[var(--sveltely-primary-color)]"
37
+ style="--sveltely-border-radius: 0.75rem;"
38
+ >
39
+ <div class="font-semibold tracking-wide text-[var(--sveltely-secondary-color)] uppercase">
40
+ Controls
41
+ </div>
33
42
  <div class="vstack gap-2">
34
- <div class="hstack items-center justify-between gap-3 text-zinc-700">
43
+ <div class="hstack items-center justify-between gap-3">
35
44
  <span class="font-medium">Font size</span>
36
- <span class="text-zinc-500">{fontSize.toFixed(2)}rem</span>
45
+ <span class="text-[var(--sveltely-secondary-color)]">{fontSize.toFixed(2)}rem</span>
37
46
  </div>
38
47
  <Slider bind:value={fontSize} min={0.5} max={2} step={0.05} />
39
48
  </div>
40
49
  <div class="vstack gap-2">
41
- <div class="hstack items-center justify-between gap-3 text-zinc-700">
50
+ <div class="hstack items-center justify-between gap-3">
42
51
  <span class="font-medium">Border radius</span>
43
- <span class="text-zinc-500">{borderRadius.toFixed(2)}rem</span>
52
+ <span class="text-[var(--sveltely-secondary-color)]">{borderRadius.toFixed(2)}rem</span>
44
53
  </div>
45
54
  <Slider bind:value={borderRadius} min={0} max={3} step={0.05} />
46
55
  </div>
47
56
  <div class="vstack gap-2">
48
- <div class="hstack items-center justify-between gap-3 text-zinc-700">
57
+ <div class="hstack items-center justify-between gap-3">
49
58
  <span class="font-medium">Padding X</span>
50
- <span class="text-zinc-500">{paddingX.toFixed(2)}rem</span>
59
+ <span class="text-[var(--sveltely-secondary-color)]">{paddingX.toFixed(2)}rem</span>
51
60
  </div>
52
61
  <Slider bind:value={paddingX} min={0} max={2} step="any" />
53
62
  </div>
54
63
  <div class="vstack gap-2">
55
- <div class="hstack items-center justify-between gap-3 text-zinc-700">
64
+ <div class="hstack items-center justify-between gap-3">
56
65
  <span class="font-medium">Padding Y</span>
57
- <span class="text-zinc-500">{paddingY.toFixed(2)}rem</span>
66
+ <span class="text-[var(--sveltely-secondary-color)]">{paddingY.toFixed(2)}rem</span>
58
67
  </div>
59
68
  <Slider bind:value={paddingY} min={0} max={2} step="any" />
60
69
  </div>
61
70
  <div class="vstack gap-2">
62
- <div class="hstack items-center justify-between gap-3 text-zinc-700">
71
+ <div class="hstack items-center justify-between gap-3">
63
72
  <span class="font-medium">Gap</span>
64
- <span class="text-zinc-500">{gap.toFixed(2)}rem</span>
73
+ <span class="text-[var(--sveltely-secondary-color)]">{gap.toFixed(2)}rem</span>
65
74
  </div>
66
75
  <Slider bind:value={gap} min={0} max={2} step="any" />
67
76
  </div>
68
77
  <div class="vstack gap-2">
69
- <div class="hstack items-center justify-between gap-3 text-zinc-700">
78
+ <div class="hstack items-center justify-between gap-3">
70
79
  <span class="font-medium">Inset</span>
71
- <span class="text-zinc-500">{inset.toFixed(2)}rem</span>
80
+ <span class="text-[var(--sveltely-secondary-color)]">{inset.toFixed(2)}rem</span>
72
81
  </div>
73
82
  <Slider bind:value={inset} min={0} max={1} step="any" />
74
83
  </div>
75
84
  <div class="vstack gap-2">
76
- <div class="hstack items-center justify-between gap-3 text-zinc-700">
77
- <span class="font-medium">Border color</span>
78
- <span class="text-zinc-500">{borderColor}</span>
85
+ <div class="hstack items-center justify-between gap-3">
86
+ <span class="font-medium">Primary color</span>
87
+ <span class="text-[var(--sveltely-secondary-color)]">{primaryColor}</span>
79
88
  </div>
80
89
  <input
81
- bind:value={borderColor}
90
+ bind:value={primaryColor}
82
91
  type="color"
83
92
  class="h-10 w-full cursor-pointer rounded-md border border-zinc-200 bg-white p-1"
84
93
  />
85
94
  </div>
86
95
  <div class="vstack gap-2">
87
- <div class="hstack items-center justify-between gap-3 text-zinc-700">
88
- <span class="font-medium">Primary color</span>
89
- <span class="text-zinc-500">{primaryColor}</span>
96
+ <div class="hstack items-center justify-between gap-3">
97
+ <span class="font-medium">Secondary color</span>
98
+ <span class="text-[var(--sveltely-secondary-color)]">{secondaryColor}</span>
90
99
  </div>
91
100
  <input
92
- bind:value={primaryColor}
101
+ bind:value={secondaryColor}
102
+ type="color"
103
+ class="h-10 w-full cursor-pointer rounded-md border border-zinc-200 bg-white p-1"
104
+ />
105
+ </div>
106
+ <div class="vstack gap-2">
107
+ <div class="hstack items-center justify-between gap-3">
108
+ <span class="font-medium">Background color</span>
109
+ <span class="text-[var(--sveltely-secondary-color)]">{backgroundColor}</span>
110
+ </div>
111
+ <input
112
+ bind:value={backgroundColor}
113
+ type="color"
114
+ class="h-10 w-full cursor-pointer rounded-md border border-zinc-200 bg-white p-1"
115
+ />
116
+ </div>
117
+ <div class="vstack gap-2">
118
+ <div class="hstack items-center justify-between gap-3">
119
+ <span class="font-medium">Border color</span>
120
+ <span class="text-[var(--sveltely-secondary-color)]">{borderColor}</span>
121
+ </div>
122
+ <input
123
+ bind:value={borderColor}
93
124
  type="color"
94
125
  class="h-10 w-full cursor-pointer rounded-md border border-zinc-200 bg-white p-1"
95
126
  />
96
127
  </div>
97
128
  <div class="vstack gap-2">
98
- <div class="hstack items-center justify-between gap-3 text-zinc-700">
129
+ <div class="hstack items-center justify-between gap-3">
99
130
  <span class="font-medium">Active color</span>
100
- <span class="text-zinc-500">{activeColor}</span>
131
+ <span class="text-[var(--sveltely-secondary-color)]">{activeColor}</span>
101
132
  </div>
102
133
  <input
103
134
  bind:value={activeColor}
@@ -106,9 +137,9 @@
106
137
  />
107
138
  </div>
108
139
  <div class="vstack gap-2">
109
- <div class="hstack items-center justify-between gap-3 text-zinc-700">
140
+ <div class="hstack items-center justify-between gap-3">
110
141
  <span class="font-medium">Inactive color</span>
111
- <span class="text-zinc-500">{inactiveColor}</span>
142
+ <span class="text-[var(--sveltely-secondary-color)]">{inactiveColor}</span>
112
143
  </div>
113
144
  <input
114
145
  bind:value={inactiveColor}
@@ -7,9 +7,11 @@ type Props = {
7
7
  inset?: number;
8
8
  borderColor?: string;
9
9
  primaryColor?: string;
10
+ secondaryColor?: string;
10
11
  activeColor?: string;
11
12
  inactiveColor?: string;
13
+ backgroundColor?: string;
12
14
  };
13
- declare const StyleControls: import("svelte").Component<Props, {}, "borderColor" | "borderRadius" | "fontSize" | "gap" | "inset" | "paddingX" | "paddingY" | "primaryColor" | "activeColor" | "inactiveColor">;
15
+ declare const StyleControls: import("svelte").Component<Props, {}, "backgroundColor" | "borderColor" | "borderRadius" | "fontSize" | "gap" | "inset" | "paddingX" | "paddingY" | "primaryColor" | "secondaryColor" | "activeColor" | "inactiveColor">;
14
16
  type StyleControls = ReturnType<typeof StyleControls>;
15
17
  export default StyleControls;
package/dist/index.d.ts CHANGED
@@ -43,7 +43,8 @@ export { default as Popover } from './components/Library/Popover';
43
43
  export { default as ChipInput } from './components/Library/ChipInput';
44
44
  export { default as Calendar } from './components/Library/Calendar';
45
45
  export { default as AsyncButton } from './components/Library/AsyncButton';
46
- export { default as SearchInput } from './components/Library/SearchInput';
46
+ export { default as SearchField } from './components/Library/SearchField';
47
47
  export { default as ScrollView } from './components/Library/ScrollView';
48
- export { default as TokenSearchInput } from './components/Library/TokenSearchInput';
48
+ export type { ScrollGeometry } from './components/Library/ScrollView';
49
+ export { default as TokenSearchField } from './components/Library/TokenSearchField';
49
50
  export { default as VStack } from './components/Library/VStack';
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ export { default as Popover } from './components/Library/Popover';
36
36
  export { default as ChipInput } from './components/Library/ChipInput';
37
37
  export { default as Calendar } from './components/Library/Calendar';
38
38
  export { default as AsyncButton } from './components/Library/AsyncButton';
39
- export { default as SearchInput } from './components/Library/SearchInput';
39
+ export { default as SearchField } from './components/Library/SearchField';
40
40
  export { default as ScrollView } from './components/Library/ScrollView';
41
- export { default as TokenSearchInput } from './components/Library/TokenSearchInput';
41
+ export { default as TokenSearchField } from './components/Library/TokenSearchField';
42
42
  export { default as VStack } from './components/Library/VStack';
@@ -13,9 +13,11 @@
13
13
  --sveltely-padding-y: 0.75rem;
14
14
  --sveltely-gap: 0.5rem;
15
15
  --sveltely-primary-color: var(--color-zinc-900);
16
- --sveltely-active-color: var(--sveltely-primary-color);
17
- --sveltely-inactive-color: var(--color-zinc-100);
18
- --sveltely-hover-color: color-mix(in oklab, var(--sveltely-primary-color) 5%, transparent);
16
+ --sveltely-secondary-color: var(--color-zinc-500);
17
+ --sveltely-active-color: var(--color-zinc-900);
18
+ --sveltely-inactive-color: var(--sveltely-active-color);
19
+ --sveltely-background-color: white;
20
+ --sveltely-hover-color: color-mix(in oklab, var(--sveltely-active-color) 5%, transparent);
19
21
  --sveltely-inactive-hover-color: color-mix(in oklab, var(--sveltely-inactive-color) 88%, white);
20
22
  --sveltely-active-hover-color: color-mix(in oklab, var(--sveltely-active-color) 88%, white);
21
23
  --sveltely-border-radius-nested: clamp(
@@ -29,6 +31,8 @@
29
31
  html,
30
32
  body {
31
33
  @apply size-full overflow-hidden;
34
+ background: var(--sveltely-background-color);
35
+ color: var(--sveltely-primary-color);
32
36
  -webkit-user-select: none;
33
37
  user-select: none;
34
38
  }
@@ -101,8 +105,8 @@
101
105
  .segmented-picker,
102
106
  .switch,
103
107
  .checkbox,
104
- .search-input,
105
- .token-search-input,
108
+ .search-field,
109
+ .token-search-field,
106
110
  .chip-input,
107
111
  .dropdown,
108
112
  .pagination,