@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.
- package/dist/components/Library/AnimatedNumber/AnimatedNumber.demo.svelte +1 -1
- package/dist/components/Library/AsyncButton/AsyncButton.svelte +42 -16
- package/dist/components/Library/Button/Button.svelte +21 -13
- package/dist/components/Library/Calendar/Calendar.svelte +16 -16
- package/dist/components/Library/Checkbox/Checkbox.svelte +13 -14
- package/dist/components/Library/ChipInput/ChipInput.demo.svelte +1 -1
- package/dist/components/Library/ChipInput/ChipInput.svelte +7 -4
- package/dist/components/Library/Dropdown/Action.svelte +60 -0
- package/dist/components/Library/Dropdown/Action.svelte.d.ts +11 -0
- package/dist/components/Library/Dropdown/Divider.svelte +5 -0
- package/dist/components/Library/Dropdown/Divider.svelte.d.ts +19 -0
- package/dist/components/Library/Dropdown/Dropdown.demo.svelte +182 -72
- package/dist/components/Library/Dropdown/Dropdown.demo.svelte.d.ts +2 -1
- package/dist/components/Library/Dropdown/Dropdown.svelte +78 -267
- package/dist/components/Library/Dropdown/Dropdown.svelte.d.ts +17 -16
- package/dist/components/Library/Dropdown/Item.svelte +73 -0
- package/dist/components/Library/Dropdown/Item.svelte.d.ts +31 -0
- package/dist/components/Library/Dropdown/Section.svelte +34 -0
- package/dist/components/Library/Dropdown/Section.svelte.d.ts +8 -0
- package/dist/components/Library/Dropdown/context.d.ts +34 -0
- package/dist/components/Library/Dropdown/context.js +6 -0
- package/dist/components/Library/Dropdown/index.d.ts +13 -2
- package/dist/components/Library/Dropdown/index.js +11 -1
- package/dist/components/Library/Floating/Floating.svelte +10 -7
- package/dist/components/Library/ImageMask/BrushPreview.svelte +6 -6
- package/dist/components/Library/ImageMask/ImageMask.demo.svelte +7 -7
- package/dist/components/Library/ImageMask/MaskLayer.svelte +3 -3
- package/dist/components/Library/Label/Label.svelte +2 -4
- package/dist/components/Library/NavigationStack/NavigationStack.svelte +17 -7
- package/dist/components/Library/NavigationStack/Toolbar.svelte +7 -2
- package/dist/components/Library/NumberField/NumberField.svelte +14 -9
- package/dist/components/Library/Pagination/Pagination.svelte +16 -20
- package/dist/components/Library/Popover/Popover.demo.svelte +2 -2
- package/dist/components/Library/Popover/Popover.svelte +7 -4
- package/dist/components/Library/ScrollView/ScrollView.svelte +140 -3
- package/dist/components/Library/ScrollView/ScrollView.svelte.d.ts +28 -0
- package/dist/components/Library/ScrollView/index.d.ts +1 -0
- package/dist/components/Library/{SearchInput/SearchInput.demo.svelte → SearchField/SearchField.demo.svelte} +4 -4
- package/dist/components/Library/SearchField/SearchField.demo.svelte.d.ts +8 -0
- package/dist/components/Library/{SearchInput/SearchInput.svelte → SearchField/SearchField.svelte} +26 -30
- package/dist/components/Library/{SearchInput/SearchInput.svelte.d.ts → SearchField/SearchField.svelte.d.ts} +3 -3
- package/dist/components/Library/SearchField/index.d.ts +1 -0
- package/dist/components/Library/SearchField/index.js +1 -0
- package/dist/components/Library/SegmentedPicker/SegmentedPicker.demo.svelte +1 -1
- package/dist/components/Library/SegmentedPicker/SegmentedPicker.svelte +9 -9
- package/dist/components/Library/Sheet/Sheet.demo.svelte +1 -1
- package/dist/components/Library/Sheet/Sheet.svelte +8 -5
- package/dist/components/Library/Slider/Slider.demo.svelte +1 -1
- package/dist/components/Library/Slider/Slider.svelte +11 -10
- package/dist/components/Library/Spinner/Spinner.demo.svelte +1 -1
- package/dist/components/Library/Switch/Switch.svelte +6 -11
- package/dist/components/Library/TextField/TextField.svelte +14 -9
- package/dist/components/Library/{TokenSearchInput/TokenSearchInput.demo.svelte → TokenSearchField/TokenSearchField.demo.svelte} +4 -4
- package/dist/components/Library/TokenSearchField/TokenSearchField.demo.svelte.d.ts +9 -0
- package/dist/components/Library/{TokenSearchInput/TokenSearchInput.svelte → TokenSearchField/TokenSearchField.svelte} +70 -66
- package/dist/components/Library/{TokenSearchInput/TokenSearchInput.svelte.d.ts → TokenSearchField/TokenSearchField.svelte.d.ts} +3 -3
- package/dist/components/Library/TokenSearchField/index.d.ts +1 -0
- package/dist/components/Library/TokenSearchField/index.js +1 -0
- package/dist/components/Library/WheelPicker/WheelColumn.svelte +4 -10
- package/dist/components/Library/WheelPicker/WheelPicker.svelte +5 -9
- package/dist/components/Local/HeroCard.svelte +5 -3
- package/dist/components/Local/StyleControls.svelte +58 -27
- package/dist/components/Local/StyleControls.svelte.d.ts +3 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2 -2
- package/dist/style/index.css +9 -5
- package/dist/style.css +60 -29
- package/package.json +1 -1
- package/dist/components/Library/Dropdown/types.d.ts +0 -30
- package/dist/components/Library/Dropdown/types.js +0 -1
- package/dist/components/Library/SearchInput/SearchInput.demo.svelte.d.ts +0 -8
- package/dist/components/Library/SearchInput/index.d.ts +0 -1
- package/dist/components/Library/SearchInput/index.js +0 -1
- package/dist/components/Library/TokenSearchInput/TokenSearchInput.demo.svelte.d.ts +0 -9
- package/dist/components/Library/TokenSearchInput/index.d.ts +0 -1
- package/dist/components/Library/TokenSearchInput/index.js +0 -1
|
@@ -1,11 +1,39 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
2
|
import { type StyleProps } from '../../../style/surface';
|
|
3
3
|
import type { ScrollAxis } from '../../../style/scroll';
|
|
4
|
+
export type ScrollGeometry = {
|
|
5
|
+
axis: ScrollAxis;
|
|
6
|
+
offset: {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
};
|
|
10
|
+
viewport: {
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
};
|
|
14
|
+
content: {
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
};
|
|
18
|
+
remaining: {
|
|
19
|
+
top: number;
|
|
20
|
+
right: number;
|
|
21
|
+
bottom: number;
|
|
22
|
+
left: number;
|
|
23
|
+
};
|
|
24
|
+
progress: {
|
|
25
|
+
x: number;
|
|
26
|
+
y: number;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
4
29
|
type Props = {
|
|
5
30
|
children: Snippet;
|
|
6
31
|
viewport?: HTMLElement | null;
|
|
7
32
|
axis?: ScrollAxis;
|
|
8
33
|
contentStyles?: StyleProps;
|
|
34
|
+
onScroll?: (geometry: ScrollGeometry) => void;
|
|
35
|
+
scrollGradient?: boolean;
|
|
36
|
+
scrollGradientSize?: number | string;
|
|
9
37
|
} & StyleProps;
|
|
10
38
|
declare const ScrollView: import("svelte").Component<Props, {}, "viewport">;
|
|
11
39
|
type ScrollView = ReturnType<typeof ScrollView>;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
2
|
export const demo = {
|
|
3
|
-
name: '
|
|
3
|
+
name: 'SearchField',
|
|
4
4
|
description: 'Search field with icon, input, and optional confirmation hint.'
|
|
5
5
|
};
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
<script lang="ts">
|
|
9
|
-
import
|
|
9
|
+
import SearchField from './SearchField.svelte';
|
|
10
10
|
|
|
11
11
|
let value = $state('');
|
|
12
12
|
</script>
|
|
13
13
|
|
|
14
14
|
<div class="vstack w-full max-w-sm gap-2">
|
|
15
|
-
<
|
|
16
|
-
<p class="text-xs text-
|
|
15
|
+
<SearchField bind:value placeholder="Search components..." />
|
|
16
|
+
<p class="text-xs text-[var(--sveltely-secondary-color)]">Value: {value || 'empty'}</p>
|
|
17
17
|
</div>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const demo: {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
};
|
|
5
|
+
import SearchField from './SearchField.svelte';
|
|
6
|
+
declare const SearchField: import("svelte").Component<Record<string, never>, {}, "">;
|
|
7
|
+
type SearchField = ReturnType<typeof SearchField>;
|
|
8
|
+
export default SearchField;
|
package/dist/components/Library/{SearchInput/SearchInput.svelte → SearchField/SearchField.svelte}
RENAMED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
type Props = {
|
|
7
7
|
value?: string;
|
|
8
8
|
radiusSource?: boolean;
|
|
9
|
-
} & StyleProps &
|
|
9
|
+
} & StyleProps &
|
|
10
|
+
Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'class' | 'style'>;
|
|
10
11
|
|
|
11
12
|
let {
|
|
12
13
|
value = $bindable(''),
|
|
@@ -19,70 +20,65 @@
|
|
|
19
20
|
const extractedStyleProps = $derived.by(() => extractStyleProps(restProps));
|
|
20
21
|
const styleProps = $derived(extractedStyleProps.styleProps);
|
|
21
22
|
const props = $derived(extractedStyleProps.restProps);
|
|
22
|
-
const rootStyle = $derived.by(() => surfaceStyle(styleProps, 'search-
|
|
23
|
+
const rootStyle = $derived.by(() => surfaceStyle(styleProps, 'search-field'));
|
|
23
24
|
</script>
|
|
24
25
|
|
|
25
26
|
<label
|
|
26
|
-
class="search-
|
|
27
|
+
class="search-field"
|
|
27
28
|
style={rootStyle}
|
|
28
29
|
data-disabled={disabled ? 'true' : 'false'}
|
|
29
30
|
data-popover-radius-source={radiusSource ? 'true' : undefined}
|
|
30
31
|
>
|
|
31
|
-
<span class="search-
|
|
32
|
+
<span class="search-field-icon" aria-hidden="true">
|
|
32
33
|
<SearchIcon class="size-4" />
|
|
33
34
|
</span>
|
|
34
|
-
<input
|
|
35
|
-
type="search"
|
|
36
|
-
bind:value
|
|
37
|
-
{disabled}
|
|
38
|
-
{placeholder}
|
|
39
|
-
class="search-input-field"
|
|
40
|
-
{...props}
|
|
41
|
-
/>
|
|
35
|
+
<input type="search" bind:value {disabled} {placeholder} class="search-field-input" {...props} />
|
|
42
36
|
</label>
|
|
43
37
|
|
|
44
38
|
<style>
|
|
45
|
-
.search-
|
|
39
|
+
.search-field {
|
|
46
40
|
display: inline-flex;
|
|
47
41
|
width: 100%;
|
|
48
42
|
align-items: center;
|
|
49
43
|
border: 1px solid var(--sveltely-border-color);
|
|
50
44
|
border-radius: var(--sveltely-border-radius);
|
|
51
|
-
background:
|
|
52
|
-
color: var(--
|
|
53
|
-
gap: var(--search-
|
|
54
|
-
padding:
|
|
55
|
-
var(--search-
|
|
56
|
-
var(--search-
|
|
57
|
-
var(--search-
|
|
58
|
-
|
|
59
|
-
font-size: var(--search-input-font-size, 0.875rem);
|
|
45
|
+
background: var(--sveltely-background-color);
|
|
46
|
+
color: var(--sveltely-primary-color);
|
|
47
|
+
gap: var(--search-field-gap, calc(var(--sveltely-padding-x) * 0.67));
|
|
48
|
+
padding: var(--search-field-padding-y, calc(var(--sveltely-padding-y) * 0.67))
|
|
49
|
+
var(--search-field-padding-x, var(--sveltely-padding-x))
|
|
50
|
+
var(--search-field-padding-y, calc(var(--sveltely-padding-y) * 0.67))
|
|
51
|
+
var(--search-field-padding-leading, calc(var(--sveltely-padding-y) * 0.67));
|
|
52
|
+
font-size: var(--search-field-font-size, 0.875rem);
|
|
60
53
|
line-height: 1.25rem;
|
|
61
|
-
transition:
|
|
54
|
+
transition:
|
|
55
|
+
color 150ms,
|
|
56
|
+
border-color 150ms,
|
|
57
|
+
background-color 150ms;
|
|
62
58
|
}
|
|
63
59
|
|
|
64
|
-
.search-
|
|
65
|
-
border-color: color-mix(in oklab, var(--sveltely-
|
|
60
|
+
.search-field:focus-within {
|
|
61
|
+
border-color: color-mix(in oklab, var(--sveltely-active-color) 50%, white);
|
|
66
62
|
}
|
|
67
63
|
|
|
68
|
-
.search-
|
|
64
|
+
.search-field[data-disabled='true'] {
|
|
69
65
|
cursor: not-allowed;
|
|
70
66
|
opacity: 0.6;
|
|
71
67
|
}
|
|
72
68
|
|
|
73
|
-
.search-
|
|
69
|
+
.search-field-icon {
|
|
74
70
|
flex-shrink: 0;
|
|
75
|
-
color: var(--
|
|
71
|
+
color: var(--sveltely-secondary-color);
|
|
76
72
|
}
|
|
77
73
|
|
|
78
|
-
.search-input
|
|
74
|
+
.search-field-input {
|
|
79
75
|
min-width: 0;
|
|
80
76
|
flex: 1 1 auto;
|
|
81
77
|
background: transparent;
|
|
82
78
|
outline: none;
|
|
83
79
|
}
|
|
84
80
|
|
|
85
|
-
.search-input
|
|
81
|
+
.search-field-input::-webkit-search-cancel-button {
|
|
86
82
|
appearance: none;
|
|
87
83
|
}
|
|
88
84
|
</style>
|
|
@@ -4,6 +4,6 @@ type Props = {
|
|
|
4
4
|
value?: string;
|
|
5
5
|
radiusSource?: boolean;
|
|
6
6
|
} & StyleProps & Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'class' | 'style'>;
|
|
7
|
-
declare const
|
|
8
|
-
type
|
|
9
|
-
export default
|
|
7
|
+
declare const SearchField: import("svelte").Component<Props, {}, "value">;
|
|
8
|
+
type SearchField = ReturnType<typeof SearchField>;
|
|
9
|
+
export default SearchField;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './SearchField.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './SearchField.svelte';
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
options: Option[];
|
|
17
17
|
value: string;
|
|
18
18
|
disabled?: boolean;
|
|
19
|
-
} & StyleProps &
|
|
19
|
+
} & StyleProps &
|
|
20
|
+
Record<string, unknown> = $props();
|
|
20
21
|
|
|
21
22
|
const extractedStyleProps = $derived.by(() => extractStyleProps(restProps));
|
|
22
23
|
const styleProps = $derived(extractedStyleProps.styleProps);
|
|
@@ -65,7 +66,7 @@
|
|
|
65
66
|
--segmented-picker-scale: calc(var(--segmented-picker-font-size) / 0.875rem);
|
|
66
67
|
--sveltely-nested-inset: var(--segmented-picker-inset);
|
|
67
68
|
border-radius: var(--sveltely-border-radius);
|
|
68
|
-
background: var(--
|
|
69
|
+
background: var(--sveltely-inactive-color);
|
|
69
70
|
gap: var(--segmented-picker-inset);
|
|
70
71
|
font-size: var(--segmented-picker-font-size);
|
|
71
72
|
padding: var(--segmented-picker-inset);
|
|
@@ -79,8 +80,7 @@
|
|
|
79
80
|
.segmented-picker-button {
|
|
80
81
|
border-radius: var(--sveltely-border-radius-nested);
|
|
81
82
|
transition: background-color 150ms;
|
|
82
|
-
padding:
|
|
83
|
-
calc(var(--sveltely-padding-y) * 0.33 * var(--segmented-picker-scale))
|
|
83
|
+
padding: calc(var(--sveltely-padding-y) * 0.33 * var(--segmented-picker-scale))
|
|
84
84
|
calc(var(--sveltely-padding-x) * 0.83 * var(--segmented-picker-scale));
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -89,18 +89,18 @@
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
.segmented-picker-button-active {
|
|
92
|
-
background: var(--sveltely-
|
|
93
|
-
color:
|
|
92
|
+
background: var(--sveltely-active-color);
|
|
93
|
+
color: var(--sveltely-background-color);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
.segmented-picker-button-disabled {
|
|
97
97
|
cursor: not-allowed;
|
|
98
|
-
color: var(--
|
|
98
|
+
color: var(--sveltely-secondary-color);
|
|
99
99
|
pointer-events: none;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
.segmented-picker-button-disabled-selected {
|
|
103
|
-
background: color-mix(in oklab, var(--sveltely-
|
|
104
|
-
color: var(--
|
|
103
|
+
background: color-mix(in oklab, var(--sveltely-active-color) 35%, white);
|
|
104
|
+
color: var(--sveltely-secondary-color);
|
|
105
105
|
}
|
|
106
106
|
</style>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
{/snippet}
|
|
16
16
|
|
|
17
17
|
<div class="vstack gap-3">
|
|
18
|
-
<p class="text-sm text-
|
|
18
|
+
<p class="text-sm text-[var(--sveltely-primary-color)]">This is a simple sheet example.</p>
|
|
19
19
|
<div class="rounded border border-gray-200/70 p-3 text-sm text-gray-700">
|
|
20
20
|
<div>Panel one content.</div>
|
|
21
21
|
<div class="mt-2">Panel two content.</div>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { Snippet } from 'svelte';
|
|
3
3
|
import { portalContent } from '../../../actions/portal';
|
|
4
4
|
import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
|
|
5
|
-
interface Props {
|
|
5
|
+
interface Props {
|
|
6
6
|
trigger?: Snippet;
|
|
7
7
|
open?: boolean;
|
|
8
8
|
label?: string;
|
|
@@ -87,13 +87,16 @@ interface Props {
|
|
|
87
87
|
align-items: center;
|
|
88
88
|
border: 1px solid var(--sveltely-border-color);
|
|
89
89
|
border-radius: var(--sveltely-border-radius);
|
|
90
|
-
background:
|
|
91
|
-
color: var(--
|
|
90
|
+
background: var(--sveltely-background-color);
|
|
91
|
+
color: var(--sveltely-primary-color);
|
|
92
92
|
gap: var(--sveltely-gap);
|
|
93
93
|
padding: calc(var(--sveltely-padding-y) * 0.67) var(--sveltely-padding-x);
|
|
94
94
|
font-size: 0.875rem;
|
|
95
95
|
line-height: 1.25rem;
|
|
96
|
-
transition:
|
|
96
|
+
transition:
|
|
97
|
+
color 150ms,
|
|
98
|
+
border-color 150ms,
|
|
99
|
+
background-color 150ms;
|
|
97
100
|
}
|
|
98
101
|
|
|
99
102
|
.sheet-trigger:hover {
|
|
@@ -102,7 +105,7 @@ interface Props {
|
|
|
102
105
|
|
|
103
106
|
.sheet {
|
|
104
107
|
border-radius: var(--sveltely-border-radius);
|
|
105
|
-
background:
|
|
108
|
+
background: var(--sveltely-background-color);
|
|
106
109
|
padding: calc(var(--sveltely-padding-y) * 1.33) calc(var(--sveltely-padding-x) * 1.33);
|
|
107
110
|
}
|
|
108
111
|
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
max?: number;
|
|
15
15
|
step?: number | string;
|
|
16
16
|
disabled?: boolean;
|
|
17
|
-
} & StyleProps &
|
|
17
|
+
} & StyleProps &
|
|
18
|
+
Record<string, unknown> = $props();
|
|
18
19
|
|
|
19
20
|
const extractedStyleProps = $derived.by(() => extractStyleProps(props));
|
|
20
21
|
const styleProps = $derived(extractedStyleProps.styleProps);
|
|
@@ -65,7 +66,7 @@
|
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
.slider:focus-visible {
|
|
68
|
-
outline: 2px solid color-mix(in oklab, var(--sveltely-
|
|
69
|
+
outline: 2px solid color-mix(in oklab, var(--sveltely-active-color) 35%, white);
|
|
69
70
|
outline-offset: 4px;
|
|
70
71
|
}
|
|
71
72
|
|
|
@@ -79,10 +80,10 @@
|
|
|
79
80
|
border-radius: var(--sveltely-border-radius);
|
|
80
81
|
background: linear-gradient(
|
|
81
82
|
to right,
|
|
82
|
-
var(--sveltely-
|
|
83
|
-
var(--sveltely-
|
|
84
|
-
var(--
|
|
85
|
-
var(--
|
|
83
|
+
var(--sveltely-active-color) 0%,
|
|
84
|
+
var(--sveltely-active-color) var(--slider-pct),
|
|
85
|
+
var(--sveltely-border-color) var(--slider-pct),
|
|
86
|
+
var(--sveltely-border-color) 100%
|
|
86
87
|
);
|
|
87
88
|
}
|
|
88
89
|
|
|
@@ -93,7 +94,7 @@
|
|
|
93
94
|
height: var(--slider-thumb-size);
|
|
94
95
|
border-radius: var(--sveltely-border-radius);
|
|
95
96
|
border: var(--slider-thumb-ring-width) solid var(--color-white);
|
|
96
|
-
background: var(--sveltely-
|
|
97
|
+
background: var(--sveltely-active-color);
|
|
97
98
|
margin-top: calc((var(--slider-track-height) - var(--slider-thumb-size)) / 2);
|
|
98
99
|
}
|
|
99
100
|
|
|
@@ -101,14 +102,14 @@
|
|
|
101
102
|
height: var(--slider-track-height);
|
|
102
103
|
border: none;
|
|
103
104
|
border-radius: var(--sveltely-border-radius);
|
|
104
|
-
background: var(--
|
|
105
|
+
background: var(--sveltely-border-color);
|
|
105
106
|
}
|
|
106
107
|
|
|
107
108
|
.slider::-moz-range-progress {
|
|
108
109
|
height: var(--slider-track-height);
|
|
109
110
|
border: none;
|
|
110
111
|
border-radius: var(--sveltely-border-radius);
|
|
111
|
-
background: var(--sveltely-
|
|
112
|
+
background: var(--sveltely-active-color);
|
|
112
113
|
}
|
|
113
114
|
|
|
114
115
|
.slider::-moz-range-thumb {
|
|
@@ -117,6 +118,6 @@
|
|
|
117
118
|
height: var(--slider-thumb-size);
|
|
118
119
|
border-radius: var(--sveltely-border-radius);
|
|
119
120
|
border: var(--slider-thumb-ring-width) solid var(--color-white);
|
|
120
|
-
background: var(--sveltely-
|
|
121
|
+
background: var(--sveltely-active-color);
|
|
121
122
|
}
|
|
122
123
|
</style>
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
gap: var(--switch-gap, var(--sveltely-gap));
|
|
75
75
|
font-size: var(--switch-font-size);
|
|
76
76
|
line-height: 1.25;
|
|
77
|
-
color: var(--switch-color, var(--
|
|
77
|
+
color: var(--switch-color, var(--sveltely-primary-color));
|
|
78
78
|
cursor: pointer;
|
|
79
79
|
user-select: none;
|
|
80
80
|
}
|
|
@@ -106,7 +106,8 @@
|
|
|
106
106
|
display: block;
|
|
107
107
|
width: 100%;
|
|
108
108
|
height: 100%;
|
|
109
|
-
border: var(--switch-border-width) solid
|
|
109
|
+
border: var(--switch-border-width) solid
|
|
110
|
+
var(--switch-border-color, var(--sveltely-border-color));
|
|
110
111
|
border-radius: var(--switch-resolved-border-radius);
|
|
111
112
|
background: var(--switch-background, var(--sveltely-inactive-color));
|
|
112
113
|
box-sizing: border-box;
|
|
@@ -142,14 +143,8 @@
|
|
|
142
143
|
}
|
|
143
144
|
|
|
144
145
|
.switch:hover .switch-control input:checked + .switch-track {
|
|
145
|
-
border-color: var(
|
|
146
|
-
|
|
147
|
-
var(--sveltely-active-hover-color)
|
|
148
|
-
);
|
|
149
|
-
background: var(
|
|
150
|
-
--switch-checked-hover-background,
|
|
151
|
-
var(--sveltely-active-hover-color)
|
|
152
|
-
);
|
|
146
|
+
border-color: var(--switch-checked-hover-border-color, var(--sveltely-active-hover-color));
|
|
147
|
+
background: var(--switch-checked-hover-background, var(--sveltely-active-hover-color));
|
|
153
148
|
}
|
|
154
149
|
|
|
155
150
|
.switch-control input:checked + .switch-track .switch-thumb {
|
|
@@ -158,7 +153,7 @@
|
|
|
158
153
|
}
|
|
159
154
|
|
|
160
155
|
.switch-control input:focus-visible + .switch-track {
|
|
161
|
-
outline: 2px solid color-mix(in oklab, var(--sveltely-
|
|
156
|
+
outline: 2px solid color-mix(in oklab, var(--sveltely-active-color) 24%, white);
|
|
162
157
|
outline-offset: 2px;
|
|
163
158
|
}
|
|
164
159
|
|
|
@@ -61,7 +61,9 @@
|
|
|
61
61
|
});
|
|
62
62
|
const textEditorProps = $derived({ textAlign });
|
|
63
63
|
const rootStyle = $derived.by(() =>
|
|
64
|
-
[surfaceStyle(styleProps, 'text-field'), textEditorStyle(textEditorProps)]
|
|
64
|
+
[surfaceStyle(styleProps, 'text-field'), textEditorStyle(textEditorProps)]
|
|
65
|
+
.filter(Boolean)
|
|
66
|
+
.join(' ')
|
|
65
67
|
);
|
|
66
68
|
const describedBy = $derived(help ? 'text-field-message' : undefined);
|
|
67
69
|
</script>
|
|
@@ -100,7 +102,7 @@
|
|
|
100
102
|
min-width: 0;
|
|
101
103
|
flex-direction: column;
|
|
102
104
|
gap: var(--text-field-gap, calc(var(--sveltely-gap) * 0.75));
|
|
103
|
-
color: var(--text-field-color, var(--
|
|
105
|
+
color: var(--text-field-color, var(--sveltely-primary-color));
|
|
104
106
|
font-size: var(--text-field-font-size, calc(var(--sveltely-font-size) * 0.875));
|
|
105
107
|
}
|
|
106
108
|
|
|
@@ -109,27 +111,30 @@
|
|
|
109
111
|
min-width: 0;
|
|
110
112
|
border: 1px solid var(--text-field-border-color, var(--sveltely-border-color));
|
|
111
113
|
border-radius: var(--text-field-border-radius, var(--sveltely-border-radius));
|
|
112
|
-
background: var(--text-field-background,
|
|
114
|
+
background: var(--text-field-background, var(--sveltely-background-color));
|
|
113
115
|
color: inherit;
|
|
114
116
|
line-height: 1.25rem;
|
|
115
117
|
outline: none;
|
|
116
|
-
padding:
|
|
117
|
-
var(--text-field-padding-y, calc(var(--sveltely-padding-y) * 0.67))
|
|
118
|
+
padding: var(--text-field-padding-y, calc(var(--sveltely-padding-y) * 0.67))
|
|
118
119
|
var(--text-field-padding-x, var(--sveltely-padding-x));
|
|
119
120
|
text-align: var(--text-field-text-align, start);
|
|
120
|
-
transition:
|
|
121
|
+
transition:
|
|
122
|
+
color 150ms,
|
|
123
|
+
border-color 150ms,
|
|
124
|
+
background-color 150ms,
|
|
125
|
+
box-shadow 150ms;
|
|
121
126
|
}
|
|
122
127
|
|
|
123
128
|
.text-field-input:focus {
|
|
124
|
-
border-color: color-mix(in oklab, var(--sveltely-
|
|
129
|
+
border-color: color-mix(in oklab, var(--sveltely-active-color) 50%, white);
|
|
125
130
|
}
|
|
126
131
|
|
|
127
132
|
.text-field-input::placeholder {
|
|
128
|
-
color: var(--
|
|
133
|
+
color: var(--sveltely-secondary-color);
|
|
129
134
|
}
|
|
130
135
|
|
|
131
136
|
.text-field-message {
|
|
132
|
-
color: var(--
|
|
137
|
+
color: var(--sveltely-secondary-color);
|
|
133
138
|
font-size: calc(var(--text-field-font-size, 0.875rem) * 0.857);
|
|
134
139
|
line-height: 1.25;
|
|
135
140
|
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
2
|
export const demo = {
|
|
3
|
-
name: '
|
|
3
|
+
name: 'TokenSearchField',
|
|
4
4
|
description: 'Search field that turns comma-separated entries into removable tokens.',
|
|
5
5
|
columnSpan: 2
|
|
6
6
|
};
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
9
|
<script lang="ts">
|
|
10
|
-
import
|
|
10
|
+
import TokenSearchField from './TokenSearchField.svelte';
|
|
11
11
|
|
|
12
12
|
let tokens = $state(['svelte', 'ui']);
|
|
13
13
|
let value = $state('');
|
|
14
14
|
</script>
|
|
15
15
|
|
|
16
16
|
<div class="vstack w-full max-w-md gap-2">
|
|
17
|
-
<
|
|
18
|
-
<p class="text-xs text-
|
|
17
|
+
<TokenSearchField bind:tokens bind:value placeholder="Search keywords" />
|
|
18
|
+
<p class="text-xs text-[var(--sveltely-secondary-color)]">Tokens: {tokens.join(', ') || 'empty'}</p>
|
|
19
19
|
</div>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const demo: {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
columnSpan: number;
|
|
5
|
+
};
|
|
6
|
+
import TokenSearchField from './TokenSearchField.svelte';
|
|
7
|
+
declare const TokenSearchField: import("svelte").Component<Record<string, never>, {}, "">;
|
|
8
|
+
type TokenSearchField = ReturnType<typeof TokenSearchField>;
|
|
9
|
+
export default TokenSearchField;
|