@x33025/sveltely 0.1.18 → 0.1.21
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/actions/LoaderOverlay.svelte +33 -8
- package/dist/actions/LoaderOverlay.svelte.d.ts +3 -0
- package/dist/actions/loader.d.ts +3 -0
- package/dist/actions/loader.js +20 -7
- package/dist/components/Library/AnimatedNumber/AnimatedNumber.demo.svelte +3 -9
- package/dist/components/Library/ArticleEditor/ArticleEditor.svelte +1 -1
- package/dist/components/Library/ArticleEditor/ArticleEditorHeader.svelte +20 -30
- package/dist/components/Library/ArticleEditor/Blocks/Code.svelte +0 -1
- package/dist/components/Library/ArticleEditor/Blocks/FAQ.svelte +1 -1
- package/dist/components/Library/ArticleEditor/Blocks/Heading.svelte +7 -7
- package/dist/components/Library/ArticleEditor/Blocks/Image.svelte +20 -36
- package/dist/components/Library/ArticleEditor/Blocks/Image.svelte.d.ts +1 -0
- package/dist/components/Library/ArticleEditor/Blocks/List.svelte +2 -2
- package/dist/components/Library/ArticleEditor/Blocks/Paragraph.svelte +1 -1
- package/dist/components/Library/ArticleEditor/Blocks/index.d.ts +0 -1
- package/dist/components/Library/ArticleEditor/Blocks/index.js +0 -1
- package/dist/components/Library/AsyncButton/AsyncButton.demo.svelte +2 -6
- package/dist/components/Library/AsyncButton/AsyncButton.svelte +9 -5
- package/dist/components/Library/AsyncButton/AsyncButton.svelte.d.ts +2 -1
- package/dist/components/Library/Button/Button.demo.svelte +2 -17
- package/dist/components/Library/Button/Button.demo.svelte.d.ts +0 -1
- package/dist/components/Library/Button/Button.svelte +15 -16
- package/dist/components/Library/Button/Button.svelte.d.ts +2 -1
- package/dist/components/Library/Calendar/Calendar.svelte +17 -27
- package/dist/components/Library/Checkbox/Checkbox.demo.svelte +7 -4
- package/dist/components/Library/Checkbox/Checkbox.svelte +24 -61
- package/dist/components/Library/Checkbox/Checkbox.svelte.d.ts +2 -4
- package/dist/components/Library/ChipInput/ChipInput.demo.svelte +2 -2
- package/dist/components/Library/ChipInput/ChipInput.svelte +7 -11
- package/dist/components/Library/ChipInput/ChipInput.svelte.d.ts +3 -2
- package/dist/components/Library/Dropdown/Action.svelte +1 -1
- package/dist/components/Library/Dropdown/Dropdown.demo.svelte +10 -10
- package/dist/components/Library/Dropdown/Dropdown.svelte +2 -6
- package/dist/components/Library/Dropdown/Item.svelte +2 -2
- package/dist/components/Library/Dropdown/Section.svelte +1 -1
- package/dist/components/Library/Dropdown/Trigger.svelte +3 -7
- package/dist/components/Library/Image/Image.demo.svelte +3 -3
- package/dist/components/Library/Image/Image.svelte +57 -12
- package/dist/components/Library/Image/Image.svelte.d.ts +1 -2
- package/dist/components/Library/Image/ImagePlaceholder.demo.svelte +12 -0
- package/dist/components/Library/Image/ImagePlaceholder.demo.svelte.d.ts +23 -0
- package/dist/components/Library/Image/ImagePlaceholder.svelte +28 -4
- package/dist/components/Library/Image/ImagePlaceholder.svelte.d.ts +1 -1
- package/dist/components/Library/Image/index.d.ts +1 -0
- package/dist/components/Library/Image/index.js +1 -0
- package/dist/components/Library/ImageMask/BrushPreview.svelte +6 -6
- package/dist/components/Library/ImageMask/ImageMask.demo.svelte +10 -8
- package/dist/components/Library/ImageMask/ImageMask.svelte +14 -6
- package/dist/components/Library/ImageMask/ImageMask.svelte.d.ts +1 -2
- package/dist/components/Library/ImageMask/MaskLayer.svelte +12 -6
- package/dist/components/Library/Label/Label.demo.svelte +16 -3
- package/dist/components/Library/Label/Label.svelte +15 -3
- package/dist/components/Library/Label/Label.svelte.d.ts +1 -0
- package/dist/components/Library/Link/Link.svelte +10 -22
- package/dist/components/Library/Link/Link.svelte.d.ts +2 -3
- package/dist/components/Library/Loader/Loader.demo.svelte +9 -3
- package/dist/components/Library/NavigationStack/Link.svelte +8 -12
- package/dist/components/Library/NavigationStack/Link.svelte.d.ts +1 -3
- package/dist/components/Library/NavigationStack/SidebarToggle.svelte +8 -2
- package/dist/components/Library/NumberField/NumberField.svelte +21 -17
- package/dist/components/Library/NumberField/NumberField.svelte.d.ts +4 -2
- package/dist/components/Library/Pagination/Pagination.svelte +3 -3
- package/dist/components/Library/Popover/Popover.svelte +2 -7
- package/dist/components/Library/ScrollView/ScrollView.demo.svelte +50 -0
- package/dist/components/Library/ScrollView/ScrollView.demo.svelte.d.ts +10 -0
- package/dist/components/Library/ScrollView/ScrollView.svelte +414 -67
- package/dist/components/Library/ScrollView/ScrollView.svelte.d.ts +17 -1
- package/dist/components/Library/ScrollView/index.d.ts +1 -1
- package/dist/components/Library/SearchField/SearchField.demo.svelte +2 -2
- package/dist/components/Library/SearchField/SearchField.svelte +9 -4
- package/dist/components/Library/SearchField/SearchField.svelte.d.ts +2 -1
- package/dist/components/Library/SegmentedPicker/SegmentedPicker.demo.svelte +2 -2
- package/dist/components/Library/SegmentedPicker/SegmentedPicker.svelte +7 -7
- package/dist/components/Library/Sheet/Sheet.demo.svelte +1 -1
- package/dist/components/Library/Sheet/Sheet.svelte +2 -7
- package/dist/components/Library/Slider/Slider.demo.svelte +1 -1
- package/dist/components/Library/Slider/Slider.svelte +11 -7
- package/dist/components/Library/Slider/Slider.svelte.d.ts +2 -1
- package/dist/components/Library/Spinner/Spinner.demo.svelte +1 -1
- package/dist/components/Library/Switch/Switch.demo.svelte +7 -4
- package/dist/components/Library/Switch/Switch.svelte +28 -68
- package/dist/components/Library/Switch/Switch.svelte.d.ts +2 -4
- package/dist/components/Library/Table/Column.svelte +81 -0
- package/dist/components/Library/Table/Column.svelte.d.ts +39 -0
- package/dist/components/Library/Table/Table.demo.svelte +148 -0
- package/dist/components/Library/Table/Table.demo.svelte.d.ts +10 -0
- package/dist/components/Library/Table/Table.svelte +624 -0
- package/dist/components/Library/Table/Table.svelte.d.ts +42 -0
- package/dist/components/Library/Table/context.d.ts +5 -0
- package/dist/components/Library/Table/context.js +2 -0
- package/dist/components/Library/Table/index.js +5 -0
- package/dist/components/Library/Table/types.d.ts +37 -0
- package/dist/components/Library/Table/types.js +1 -0
- package/dist/components/Library/Text/Text.demo.svelte +21 -0
- package/dist/components/Library/Text/Text.demo.svelte.d.ts +24 -0
- package/dist/components/Library/Text/Text.svelte +41 -0
- package/dist/components/Library/Text/Text.svelte.d.ts +9 -0
- package/dist/components/Library/Text/index.d.ts +1 -0
- package/dist/components/Library/Text/index.js +1 -0
- package/dist/components/Library/TextEditor/TextEditor.svelte +15 -9
- package/dist/components/Library/TextEditor/TextEditor.svelte.d.ts +2 -4
- package/dist/components/Library/TextField/TextField.demo.svelte +1 -1
- package/dist/components/Library/TextField/TextField.svelte +21 -18
- package/dist/components/Library/TextField/TextField.svelte.d.ts +4 -2
- package/dist/components/Library/TextShimmer/TextShimmer.demo.svelte +1 -1
- package/dist/components/Library/TimePicker/TimePicker.demo.svelte +10 -2
- package/dist/components/Library/TimePicker/TimePicker.svelte +10 -5
- package/dist/components/Library/TokenSearchField/TokenSearchField.demo.svelte +4 -2
- package/dist/components/Library/TokenSearchField/TokenSearchField.svelte +11 -11
- package/dist/components/Library/TokenSearchField/TokenSearchField.svelte.d.ts +2 -1
- package/dist/components/Library/WheelPicker/WheelColumn.svelte +183 -126
- package/dist/components/Library/WheelPicker/WheelPicker.svelte +4 -4
- package/dist/components/Library/WheelPicker/WheelPicker.svelte.d.ts +2 -2
- package/dist/components/Library/WheelPicker/index.d.ts +1 -1
- package/dist/components/Library/WheelPicker/types.d.ts +6 -0
- package/dist/components/Local/ColorStyleControls.svelte +201 -0
- package/dist/components/Local/ColorStyleControls.svelte.d.ts +13 -0
- package/dist/components/Local/HeroCard.svelte +3 -3
- package/dist/components/Local/LayoutStyleControls.svelte +67 -0
- package/dist/components/Local/LayoutStyleControls.svelte.d.ts +11 -0
- package/dist/components/Local/StyleControls.svelte +48 -124
- package/dist/components/Local/StyleControls.svelte.d.ts +7 -5
- package/dist/index.d.ts +9 -2
- package/dist/index.js +5 -1
- package/dist/style/index.css +7 -12
- package/dist/style/label.d.ts +2 -1
- package/dist/style/label.js +2 -1
- package/dist/style/surface.js +4 -0
- package/dist/style/text-editor.d.ts +2 -13
- package/dist/style/text-editor.js +1 -12
- package/dist/style/text.d.ts +26 -0
- package/dist/style/text.js +69 -0
- package/dist/style/tooltip.d.ts +4 -0
- package/dist/style/tooltip.js +1 -0
- package/dist/style.css +44 -111
- package/package.json +1 -1
- package/dist/components/Library/ArticleEditor/Blocks/ImagePreview.svelte +0 -71
- package/dist/components/Library/ArticleEditor/Blocks/ImagePreview.svelte.d.ts +0 -8
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { SearchIcon } from '@lucide/svelte';
|
|
3
3
|
import type { HTMLInputAttributes } from 'svelte/elements';
|
|
4
|
+
import { tooltip as tooltipAction } from '../../../actions/tooltip';
|
|
4
5
|
import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
|
|
6
|
+
import type { TooltipProps } from '../../../style/tooltip';
|
|
5
7
|
|
|
6
8
|
type Props = {
|
|
7
9
|
value?: string;
|
|
8
10
|
radiusSource?: boolean;
|
|
9
11
|
} & StyleProps &
|
|
12
|
+
TooltipProps &
|
|
10
13
|
Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'class' | 'style'>;
|
|
11
14
|
|
|
12
15
|
let {
|
|
13
16
|
value = $bindable(''),
|
|
14
17
|
radiusSource = true,
|
|
18
|
+
tooltip,
|
|
15
19
|
disabled = false,
|
|
16
20
|
placeholder = 'Search',
|
|
17
21
|
...restProps
|
|
@@ -28,6 +32,7 @@
|
|
|
28
32
|
style={rootStyle}
|
|
29
33
|
data-disabled={disabled ? 'true' : 'false'}
|
|
30
34
|
data-popover-radius-source={radiusSource ? 'true' : undefined}
|
|
35
|
+
use:tooltipAction={tooltip}
|
|
31
36
|
>
|
|
32
37
|
<span class="search-field-icon" aria-hidden="true">
|
|
33
38
|
<SearchIcon class="size-4" />
|
|
@@ -42,8 +47,8 @@
|
|
|
42
47
|
align-items: center;
|
|
43
48
|
border: 1px solid var(--sveltely-border-color);
|
|
44
49
|
border-radius: var(--sveltely-border-radius);
|
|
45
|
-
background: var(--sveltely-background-color);
|
|
46
|
-
color: var(--sveltely-primary-color);
|
|
50
|
+
background: var(--sveltely-control-background-color);
|
|
51
|
+
color: var(--sveltely-text-primary-color);
|
|
47
52
|
gap: var(--search-field-gap, calc(var(--sveltely-padding-x) * 0.67));
|
|
48
53
|
padding: var(--search-field-padding-y, calc(var(--sveltely-padding-y) * 0.67))
|
|
49
54
|
var(--search-field-padding-x, var(--sveltely-padding-x))
|
|
@@ -58,7 +63,7 @@
|
|
|
58
63
|
}
|
|
59
64
|
|
|
60
65
|
.search-field:focus-within {
|
|
61
|
-
border-color: color-mix(in oklab, var(--sveltely-active-color) 50%, white);
|
|
66
|
+
border-color: color-mix(in oklab, var(--sveltely-control-active-color) 50%, white);
|
|
62
67
|
}
|
|
63
68
|
|
|
64
69
|
.search-field[data-disabled='true'] {
|
|
@@ -68,7 +73,7 @@
|
|
|
68
73
|
|
|
69
74
|
.search-field-icon {
|
|
70
75
|
flex-shrink: 0;
|
|
71
|
-
color: var(--sveltely-secondary-color);
|
|
76
|
+
color: var(--sveltely-text-secondary-color);
|
|
72
77
|
}
|
|
73
78
|
|
|
74
79
|
.search-field-input {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { HTMLInputAttributes } from 'svelte/elements';
|
|
2
2
|
import { type StyleProps } from '../../../style/surface';
|
|
3
|
+
import type { TooltipProps } from '../../../style/tooltip';
|
|
3
4
|
type Props = {
|
|
4
5
|
value?: string;
|
|
5
6
|
radiusSource?: boolean;
|
|
6
|
-
} & StyleProps & Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'class' | 'style'>;
|
|
7
|
+
} & StyleProps & TooltipProps & Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'class' | 'style'>;
|
|
7
8
|
declare const SearchField: import("svelte").Component<Props, {}, "value">;
|
|
8
9
|
type SearchField = ReturnType<typeof SearchField>;
|
|
9
10
|
export default SearchField;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
2
|
export const demo = {
|
|
3
|
-
name: '
|
|
3
|
+
name: 'Segmented Picker',
|
|
4
4
|
description: 'Segmented selection between fixed options.'
|
|
5
5
|
};
|
|
6
6
|
</script>
|
|
@@ -19,5 +19,5 @@
|
|
|
19
19
|
|
|
20
20
|
<div class="vstack center gap-2">
|
|
21
21
|
<SegmentedPicker {options} bind:value />
|
|
22
|
-
<p class="text-xs text-[var(--sveltely-secondary-color)]">Selected: {value}</p>
|
|
22
|
+
<p class="text-xs text-[var(--sveltely-text-secondary-color)]">Selected: {value}</p>
|
|
23
23
|
</div>
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
--segmented-picker-scale: calc(var(--segmented-picker-font-size) / 0.875rem);
|
|
67
67
|
--sveltely-nested-inset: var(--segmented-picker-inset);
|
|
68
68
|
border-radius: var(--sveltely-border-radius);
|
|
69
|
-
background: var(--sveltely-
|
|
69
|
+
background: var(--sveltely-control-background-color);
|
|
70
70
|
gap: var(--segmented-picker-inset);
|
|
71
71
|
font-size: var(--segmented-picker-font-size);
|
|
72
72
|
padding: var(--segmented-picker-inset);
|
|
@@ -85,22 +85,22 @@
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
.segmented-picker-button:hover:not(.segmented-picker-button-active) {
|
|
88
|
-
background: var(--sveltely-
|
|
88
|
+
background: color-mix(in oklab, var(--sveltely-control-active-color) 5%, transparent);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
.segmented-picker-button-active {
|
|
92
|
-
background: var(--sveltely-active-color);
|
|
93
|
-
color: var(--sveltely-background-color);
|
|
92
|
+
background: var(--sveltely-control-active-color);
|
|
93
|
+
color: var(--sveltely-control-background-color);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
.segmented-picker-button-disabled {
|
|
97
97
|
cursor: not-allowed;
|
|
98
|
-
color: var(--sveltely-secondary-color);
|
|
98
|
+
color: var(--sveltely-text-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-active-color) 35%, white);
|
|
104
|
-
color: var(--sveltely-secondary-color);
|
|
103
|
+
background: color-mix(in oklab, var(--sveltely-control-active-color) 35%, white);
|
|
104
|
+
color: var(--sveltely-text-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-[var(--sveltely-primary-color)]">This is a simple sheet example.</p>
|
|
18
|
+
<p class="text-sm text-[var(--sveltely-text-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>
|
|
@@ -88,19 +88,14 @@
|
|
|
88
88
|
border: 1px solid var(--sveltely-border-color);
|
|
89
89
|
border-radius: var(--sveltely-border-radius);
|
|
90
90
|
background: var(--sveltely-background-color);
|
|
91
|
-
color: var(--sveltely-primary-color);
|
|
91
|
+
color: var(--sveltely-text-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
96
|
transition:
|
|
97
97
|
color 150ms,
|
|
98
|
-
border-color 150ms
|
|
99
|
-
background-color 150ms;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.sheet-trigger:hover {
|
|
103
|
-
background: var(--sveltely-hover-color);
|
|
98
|
+
border-color 150ms;
|
|
104
99
|
}
|
|
105
100
|
|
|
106
101
|
.sheet {
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
|
|
14
14
|
<div class="vstack w-full max-w-sm gap-2">
|
|
15
15
|
<Slider bind:value min={0} max={100} />
|
|
16
|
-
<p class="text-xs text-[var(--sveltely-secondary-color)]">Value: {value}</p>
|
|
16
|
+
<p class="text-xs text-[var(--sveltely-text-secondary-color)]">Value: {value}</p>
|
|
17
17
|
</div>
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { tooltip as tooltipAction } from '../../../actions/tooltip';
|
|
2
3
|
import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
|
|
4
|
+
import type { TooltipProps } from '../../../style/tooltip';
|
|
3
5
|
|
|
4
6
|
let {
|
|
5
7
|
value = $bindable(0),
|
|
6
8
|
min = 0,
|
|
7
9
|
max = 100,
|
|
8
10
|
step = 1,
|
|
11
|
+
tooltip,
|
|
9
12
|
disabled = false,
|
|
10
13
|
...props
|
|
11
14
|
}: {
|
|
@@ -15,6 +18,7 @@
|
|
|
15
18
|
step?: number | string;
|
|
16
19
|
disabled?: boolean;
|
|
17
20
|
} & StyleProps &
|
|
21
|
+
TooltipProps &
|
|
18
22
|
Record<string, unknown> = $props();
|
|
19
23
|
|
|
20
24
|
const extractedStyleProps = $derived.by(() => extractStyleProps(props));
|
|
@@ -49,6 +53,7 @@
|
|
|
49
53
|
class="slider"
|
|
50
54
|
style={sliderStyle}
|
|
51
55
|
{...inputProps}
|
|
56
|
+
use:tooltipAction={tooltip}
|
|
52
57
|
/>
|
|
53
58
|
|
|
54
59
|
<style>
|
|
@@ -62,11 +67,10 @@
|
|
|
62
67
|
border-radius: var(--sveltely-border-radius);
|
|
63
68
|
background: transparent;
|
|
64
69
|
outline: none;
|
|
65
|
-
cursor: pointer;
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
.slider:focus-visible {
|
|
69
|
-
outline: 2px solid color-mix(in oklab, var(--sveltely-active-color) 35%, white);
|
|
73
|
+
outline: 2px solid color-mix(in oklab, var(--sveltely-control-active-color) 35%, white);
|
|
70
74
|
outline-offset: 4px;
|
|
71
75
|
}
|
|
72
76
|
|
|
@@ -80,8 +84,8 @@
|
|
|
80
84
|
border-radius: var(--sveltely-border-radius);
|
|
81
85
|
background: linear-gradient(
|
|
82
86
|
to right,
|
|
83
|
-
var(--sveltely-active-color) 0%,
|
|
84
|
-
var(--sveltely-active-color) var(--slider-pct),
|
|
87
|
+
var(--sveltely-control-active-color) 0%,
|
|
88
|
+
var(--sveltely-control-active-color) var(--slider-pct),
|
|
85
89
|
var(--sveltely-border-color) var(--slider-pct),
|
|
86
90
|
var(--sveltely-border-color) 100%
|
|
87
91
|
);
|
|
@@ -94,7 +98,7 @@
|
|
|
94
98
|
height: var(--slider-thumb-size);
|
|
95
99
|
border-radius: var(--sveltely-border-radius);
|
|
96
100
|
border: var(--slider-thumb-ring-width) solid var(--color-white);
|
|
97
|
-
background: var(--sveltely-active-color);
|
|
101
|
+
background: var(--sveltely-control-active-color);
|
|
98
102
|
margin-top: calc((var(--slider-track-height) - var(--slider-thumb-size)) / 2);
|
|
99
103
|
}
|
|
100
104
|
|
|
@@ -109,7 +113,7 @@
|
|
|
109
113
|
height: var(--slider-track-height);
|
|
110
114
|
border: none;
|
|
111
115
|
border-radius: var(--sveltely-border-radius);
|
|
112
|
-
background: var(--sveltely-active-color);
|
|
116
|
+
background: var(--sveltely-control-active-color);
|
|
113
117
|
}
|
|
114
118
|
|
|
115
119
|
.slider::-moz-range-thumb {
|
|
@@ -118,6 +122,6 @@
|
|
|
118
122
|
height: var(--slider-thumb-size);
|
|
119
123
|
border-radius: var(--sveltely-border-radius);
|
|
120
124
|
border: var(--slider-thumb-ring-width) solid var(--color-white);
|
|
121
|
-
background: var(--sveltely-active-color);
|
|
125
|
+
background: var(--sveltely-control-active-color);
|
|
122
126
|
}
|
|
123
127
|
</style>
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { type StyleProps } from '../../../style/surface';
|
|
2
|
+
import type { TooltipProps } from '../../../style/tooltip';
|
|
2
3
|
type $$ComponentProps = {
|
|
3
4
|
value?: number;
|
|
4
5
|
min?: number;
|
|
5
6
|
max?: number;
|
|
6
7
|
step?: number | string;
|
|
7
8
|
disabled?: boolean;
|
|
8
|
-
} & StyleProps & Record<string, unknown>;
|
|
9
|
+
} & StyleProps & TooltipProps & Record<string, unknown>;
|
|
9
10
|
declare const Slider: import("svelte").Component<$$ComponentProps, {}, "value">;
|
|
10
11
|
type Slider = ReturnType<typeof Slider>;
|
|
11
12
|
export default Slider;
|
|
@@ -7,14 +7,17 @@
|
|
|
7
7
|
|
|
8
8
|
<script lang="ts">
|
|
9
9
|
import Switch from './Switch.svelte';
|
|
10
|
+
import Label from '../Label';
|
|
10
11
|
|
|
11
12
|
let notificationsEnabled = $state(true);
|
|
12
13
|
let weeklySummaryEnabled = $state(false);
|
|
13
14
|
</script>
|
|
14
15
|
|
|
15
16
|
<div class="vstack gap-3">
|
|
16
|
-
<
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
<Label label="Enable notifications" orientation="leading" width="fit">
|
|
18
|
+
<Switch bind:checked={notificationsEnabled} />
|
|
19
|
+
</Label>
|
|
20
|
+
<Label label="Send weekly summary" orientation="leading" width="fit">
|
|
21
|
+
<Switch bind:checked={weeklySummaryEnabled} />
|
|
22
|
+
</Label>
|
|
20
23
|
</div>
|
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import type { Snippet } from 'svelte';
|
|
3
2
|
import type { HTMLInputAttributes } from 'svelte/elements';
|
|
3
|
+
import { tooltip as tooltipAction } from '../../../actions/tooltip';
|
|
4
4
|
import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
|
|
5
|
+
import type { TooltipProps } from '../../../style/tooltip';
|
|
5
6
|
|
|
6
7
|
type Props = {
|
|
7
8
|
checked?: boolean;
|
|
8
|
-
label?: string;
|
|
9
|
-
children?: Snippet;
|
|
10
9
|
} & StyleProps &
|
|
11
|
-
|
|
10
|
+
TooltipProps &
|
|
11
|
+
Omit<HTMLInputAttributes, 'type' | 'class' | 'style' | 'checked'>;
|
|
12
12
|
|
|
13
|
-
let {
|
|
14
|
-
checked = $bindable(false),
|
|
15
|
-
label,
|
|
16
|
-
children,
|
|
17
|
-
disabled = false,
|
|
18
|
-
...restProps
|
|
19
|
-
}: Props = $props();
|
|
13
|
+
let { checked = $bindable(false), tooltip, disabled = false, ...restProps }: Props = $props();
|
|
20
14
|
|
|
21
15
|
const extractedStyleProps = $derived.by(() => extractStyleProps(restProps));
|
|
22
16
|
const styleProps = $derived(extractedStyleProps.styleProps);
|
|
@@ -24,28 +18,17 @@
|
|
|
24
18
|
const rootStyle = $derived.by(() => surfaceStyle(styleProps, 'switch'));
|
|
25
19
|
</script>
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
class="switch
|
|
21
|
+
<label
|
|
22
|
+
class="switch"
|
|
29
23
|
style={rootStyle}
|
|
30
24
|
data-disabled={disabled ? 'true' : 'false'}
|
|
25
|
+
use:tooltipAction={tooltip}
|
|
31
26
|
>
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
<span class="switch-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
</label>
|
|
38
|
-
|
|
39
|
-
{#if children || label}
|
|
40
|
-
<span class="switch-label">
|
|
41
|
-
{#if children}
|
|
42
|
-
{@render children()}
|
|
43
|
-
{:else if label}
|
|
44
|
-
{label}
|
|
45
|
-
{/if}
|
|
46
|
-
</span>
|
|
47
|
-
{/if}
|
|
48
|
-
</div>
|
|
27
|
+
<input bind:checked type="checkbox" {disabled} {...props} />
|
|
28
|
+
<span class="switch-track" aria-hidden="true">
|
|
29
|
+
<span class="switch-thumb"></span>
|
|
30
|
+
</span>
|
|
31
|
+
</label>
|
|
49
32
|
|
|
50
33
|
<style>
|
|
51
34
|
.switch {
|
|
@@ -71,11 +54,13 @@
|
|
|
71
54
|
var(--switch-width) - (var(--switch-border-width) * 2) - var(--switch-thumb-size) -
|
|
72
55
|
var(--switch-thumb-inset)
|
|
73
56
|
);
|
|
74
|
-
|
|
57
|
+
display: inline-block;
|
|
58
|
+
position: relative;
|
|
59
|
+
flex: 0 0 auto;
|
|
60
|
+
width: var(--switch-width);
|
|
61
|
+
height: var(--switch-height);
|
|
62
|
+
box-sizing: border-box;
|
|
75
63
|
font-size: var(--switch-font-size);
|
|
76
|
-
line-height: 1.25;
|
|
77
|
-
color: var(--switch-color, var(--sveltely-primary-color));
|
|
78
|
-
cursor: pointer;
|
|
79
64
|
user-select: none;
|
|
80
65
|
}
|
|
81
66
|
|
|
@@ -84,17 +69,7 @@
|
|
|
84
69
|
opacity: 0.5;
|
|
85
70
|
}
|
|
86
71
|
|
|
87
|
-
.switch
|
|
88
|
-
cursor: inherit;
|
|
89
|
-
display: inline-block;
|
|
90
|
-
position: relative;
|
|
91
|
-
flex: 0 0 auto;
|
|
92
|
-
width: var(--switch-width);
|
|
93
|
-
height: var(--switch-height);
|
|
94
|
-
box-sizing: border-box;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
.switch-control input {
|
|
72
|
+
.switch input {
|
|
98
73
|
position: absolute;
|
|
99
74
|
inset: 0;
|
|
100
75
|
margin: 0;
|
|
@@ -109,7 +84,7 @@
|
|
|
109
84
|
border: var(--switch-border-width) solid
|
|
110
85
|
var(--switch-border-color, var(--sveltely-border-color));
|
|
111
86
|
border-radius: var(--switch-resolved-border-radius);
|
|
112
|
-
background: var(--switch-background, var(--sveltely-inactive-color));
|
|
87
|
+
background: var(--switch-background, var(--sveltely-control-inactive-color));
|
|
113
88
|
box-sizing: border-box;
|
|
114
89
|
position: relative;
|
|
115
90
|
overflow: hidden;
|
|
@@ -128,36 +103,21 @@
|
|
|
128
103
|
box-sizing: border-box;
|
|
129
104
|
border-radius: var(--switch-thumb-border-radius, var(--switch-resolved-thumb-border-radius));
|
|
130
105
|
background: var(--switch-thumb-background, white);
|
|
131
|
-
transition:
|
|
132
|
-
left 180ms ease,
|
|
133
|
-
background-color 150ms;
|
|
106
|
+
transition: left 180ms ease;
|
|
134
107
|
}
|
|
135
108
|
|
|
136
|
-
.switch:
|
|
137
|
-
|
|
109
|
+
.switch input:checked + .switch-track {
|
|
110
|
+
border-color: var(--switch-checked-border-color, var(--sveltely-control-active-color));
|
|
111
|
+
background: var(--switch-checked-background, var(--sveltely-control-active-color));
|
|
138
112
|
}
|
|
139
113
|
|
|
140
|
-
.switch
|
|
141
|
-
border-color: var(--switch-checked-border-color, var(--sveltely-active-color));
|
|
142
|
-
background: var(--switch-checked-background, var(--sveltely-active-color));
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
.switch:hover .switch-control input:checked + .switch-track {
|
|
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));
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
.switch-control input:checked + .switch-track .switch-thumb {
|
|
114
|
+
.switch input:checked + .switch-track .switch-thumb {
|
|
151
115
|
background: var(--switch-checked-thumb-background, white);
|
|
152
116
|
left: var(--switch-thumb-left-checked);
|
|
153
117
|
}
|
|
154
118
|
|
|
155
|
-
.switch
|
|
156
|
-
outline: 2px solid color-mix(in oklab, var(--sveltely-active-color) 24%, white);
|
|
119
|
+
.switch input:focus-visible + .switch-track {
|
|
120
|
+
outline: 2px solid color-mix(in oklab, var(--sveltely-control-active-color) 24%, white);
|
|
157
121
|
outline-offset: 2px;
|
|
158
122
|
}
|
|
159
|
-
|
|
160
|
-
.switch-label {
|
|
161
|
-
min-width: 0;
|
|
162
|
-
}
|
|
163
123
|
</style>
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import type { Snippet } from 'svelte';
|
|
2
1
|
import type { HTMLInputAttributes } from 'svelte/elements';
|
|
3
2
|
import { type StyleProps } from '../../../style/surface';
|
|
3
|
+
import type { TooltipProps } from '../../../style/tooltip';
|
|
4
4
|
type Props = {
|
|
5
5
|
checked?: boolean;
|
|
6
|
-
|
|
7
|
-
children?: Snippet;
|
|
8
|
-
} & StyleProps & Omit<HTMLInputAttributes, 'type' | 'children' | 'class' | 'style' | 'checked'>;
|
|
6
|
+
} & StyleProps & TooltipProps & Omit<HTMLInputAttributes, 'type' | 'class' | 'style' | 'checked'>;
|
|
9
7
|
declare const Switch: import("svelte").Component<Props, {}, "checked">;
|
|
10
8
|
type Switch = ReturnType<typeof Switch>;
|
|
11
9
|
export default Switch;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<script lang="ts" generics="T extends Record<string, unknown>">
|
|
2
|
+
import { getContext, onDestroy } from 'svelte';
|
|
3
|
+
import { TABLE_CONTEXT } from './context';
|
|
4
|
+
import type { TableColumn, TableColumnAlignment, TableContext } from './types';
|
|
5
|
+
|
|
6
|
+
type Props = {
|
|
7
|
+
key?: string;
|
|
8
|
+
label: string;
|
|
9
|
+
value?: keyof T | ((row: T) => unknown);
|
|
10
|
+
cell?: TableColumn<T>['cell'];
|
|
11
|
+
width?: number | string;
|
|
12
|
+
minWidth?: number | string;
|
|
13
|
+
alignment?: TableColumnAlignment;
|
|
14
|
+
sortable?: boolean;
|
|
15
|
+
sortKey?: keyof T | string;
|
|
16
|
+
compare?: (a: T, b: T) => number;
|
|
17
|
+
colspan?: TableColumn<T>['colspan'];
|
|
18
|
+
rowspan?: TableColumn<T>['rowspan'];
|
|
19
|
+
hidden?: boolean;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
let {
|
|
23
|
+
key,
|
|
24
|
+
label,
|
|
25
|
+
value,
|
|
26
|
+
cell,
|
|
27
|
+
width,
|
|
28
|
+
minWidth,
|
|
29
|
+
alignment,
|
|
30
|
+
sortable,
|
|
31
|
+
sortKey,
|
|
32
|
+
compare,
|
|
33
|
+
colspan,
|
|
34
|
+
rowspan,
|
|
35
|
+
hidden
|
|
36
|
+
}: Props = $props();
|
|
37
|
+
|
|
38
|
+
const table = getContext<TableContext<T>>(TABLE_CONTEXT);
|
|
39
|
+
|
|
40
|
+
const snapshot = (): TableColumn<T> => ({
|
|
41
|
+
key,
|
|
42
|
+
label,
|
|
43
|
+
value,
|
|
44
|
+
cell,
|
|
45
|
+
width,
|
|
46
|
+
minWidth,
|
|
47
|
+
alignment,
|
|
48
|
+
sortable,
|
|
49
|
+
sortKey,
|
|
50
|
+
compare,
|
|
51
|
+
colspan,
|
|
52
|
+
rowspan,
|
|
53
|
+
hidden
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const signature = () =>
|
|
57
|
+
JSON.stringify({
|
|
58
|
+
key,
|
|
59
|
+
label,
|
|
60
|
+
width,
|
|
61
|
+
minWidth,
|
|
62
|
+
alignment,
|
|
63
|
+
sortable,
|
|
64
|
+
sortKey,
|
|
65
|
+
colspan: typeof colspan === 'function' ? null : colspan,
|
|
66
|
+
rowspan: typeof rowspan === 'function' ? null : rowspan,
|
|
67
|
+
hidden
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const id = table.registerColumn(snapshot());
|
|
71
|
+
let previousSignature = signature();
|
|
72
|
+
|
|
73
|
+
$effect(() => {
|
|
74
|
+
const nextSignature = signature();
|
|
75
|
+
if (nextSignature === previousSignature) return;
|
|
76
|
+
previousSignature = nextSignature;
|
|
77
|
+
table.updateColumn(id, snapshot());
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
onDestroy(() => table.unregisterColumn(id));
|
|
81
|
+
</script>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { TableColumn, TableColumnAlignment } from './types';
|
|
2
|
+
declare function $$render<T extends Record<string, unknown>>(): {
|
|
3
|
+
props: {
|
|
4
|
+
key?: string;
|
|
5
|
+
label: string;
|
|
6
|
+
value?: keyof T | ((row: T) => unknown);
|
|
7
|
+
cell?: TableColumn<T>["cell"];
|
|
8
|
+
width?: number | string;
|
|
9
|
+
minWidth?: number | string;
|
|
10
|
+
alignment?: TableColumnAlignment;
|
|
11
|
+
sortable?: boolean;
|
|
12
|
+
sortKey?: keyof T | string;
|
|
13
|
+
compare?: (a: T, b: T) => number;
|
|
14
|
+
colspan?: TableColumn<T>["colspan"];
|
|
15
|
+
rowspan?: TableColumn<T>["rowspan"];
|
|
16
|
+
hidden?: boolean;
|
|
17
|
+
};
|
|
18
|
+
exports: {};
|
|
19
|
+
bindings: "";
|
|
20
|
+
slots: {};
|
|
21
|
+
events: {};
|
|
22
|
+
};
|
|
23
|
+
declare class __sveltets_Render<T extends Record<string, unknown>> {
|
|
24
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
25
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
26
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
27
|
+
bindings(): "";
|
|
28
|
+
exports(): {};
|
|
29
|
+
}
|
|
30
|
+
interface $$IsomorphicComponent {
|
|
31
|
+
new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
32
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
33
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
34
|
+
<T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
35
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
36
|
+
}
|
|
37
|
+
declare const Column: $$IsomorphicComponent;
|
|
38
|
+
type Column<T extends Record<string, unknown>> = InstanceType<typeof Column<T>>;
|
|
39
|
+
export default Column;
|