kosui 0.0.27 → 0.0.29
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/alert/alert.svelte +174 -19
- package/dist/alert/alert.svelte.d.ts +26 -3
- package/dist/alert/index.d.ts +1 -1
- package/dist/alert/index.js +1 -1
- package/dist/autocomplete/autocomplete-content.svelte +2 -2
- package/dist/autocomplete/autocomplete-content.svelte.d.ts +2 -2
- package/dist/autocomplete/autocomplete-item.svelte +3 -3
- package/dist/autocomplete/autocomplete-item.svelte.d.ts +3 -3
- package/dist/autocomplete/autocomplete.svelte +2 -2
- package/dist/autocomplete/autocomplete.svelte.d.ts +2 -2
- package/dist/base.d.ts +3 -3
- package/dist/base.js +3 -2
- package/dist/box/box.svelte +2 -2
- package/dist/box/box.svelte.d.ts +2 -2
- package/dist/breadcrumbs/breadcrumbs.svelte +1 -1
- package/dist/breadcrumbs/breadcrumbs.svelte.d.ts +1 -1
- package/dist/button/button.svelte +3 -3
- package/dist/button/button.svelte.d.ts +3 -3
- package/dist/chip/chip.svelte +1 -1
- package/dist/chip/chip.svelte.d.ts +1 -1
- package/dist/command/action.svelte.d.ts +1 -1
- package/dist/command/action.svelte.js +0 -1
- package/dist/command/command-content.svelte +2 -2
- package/dist/command/command-content.svelte.d.ts +2 -2
- package/dist/command/command-input.svelte +2 -2
- package/dist/command/command-input.svelte.d.ts +2 -2
- package/dist/command/command-item.svelte +3 -3
- package/dist/command/command-item.svelte.d.ts +3 -3
- package/dist/command/command.svelte +2 -2
- package/dist/command/command.svelte.d.ts +2 -2
- package/dist/common/divider.svelte +2 -2
- package/dist/common/divider.svelte.d.ts +2 -2
- package/dist/common/header.svelte +3 -3
- package/dist/common/header.svelte.d.ts +3 -3
- package/dist/dialog/dialog-button.svelte +1 -1
- package/dist/dialog/dialog-button.svelte.d.ts +1 -1
- package/dist/dialog/dialog.svelte +2 -2
- package/dist/dialog/dialog.svelte.d.ts +2 -2
- package/dist/dialog/dialoguer-context.svelte.d.ts +3 -3
- package/dist/dialog/dialoguer-context.svelte.js +0 -3
- package/dist/dialog/dialoguer.svelte +1 -1
- package/dist/dialog/dialoguer.svelte.d.ts +1 -1
- package/dist/fab/fab.svelte +1 -1
- package/dist/fab/fab.svelte.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/input/input.svelte +1 -1
- package/dist/input/input.svelte.d.ts +4 -4
- package/dist/link/link.svelte +1 -1
- package/dist/link/link.svelte.d.ts +1 -1
- package/dist/markdown/markdown-blockquote.svelte +3 -3
- package/dist/markdown/markdown-blockquote.svelte.d.ts +3 -3
- package/dist/markdown/markdown-br.svelte +3 -3
- package/dist/markdown/markdown-br.svelte.d.ts +3 -3
- package/dist/markdown/markdown-code.svelte +3 -3
- package/dist/markdown/markdown-code.svelte.d.ts +3 -3
- package/dist/markdown/markdown-codespan.svelte +3 -3
- package/dist/markdown/markdown-codespan.svelte.d.ts +3 -3
- package/dist/markdown/markdown-context.svelte.d.ts +1 -1
- package/dist/markdown/markdown-context.svelte.js +0 -1
- package/dist/markdown/markdown-def.svelte +3 -3
- package/dist/markdown/markdown-def.svelte.d.ts +3 -3
- package/dist/markdown/markdown-del.svelte +3 -3
- package/dist/markdown/markdown-del.svelte.d.ts +3 -3
- package/dist/markdown/markdown-em.svelte +3 -3
- package/dist/markdown/markdown-em.svelte.d.ts +3 -3
- package/dist/markdown/markdown-escape.svelte +2 -2
- package/dist/markdown/markdown-escape.svelte.d.ts +2 -2
- package/dist/markdown/markdown-heading.svelte +3 -3
- package/dist/markdown/markdown-heading.svelte.d.ts +3 -3
- package/dist/markdown/markdown-hr.svelte +3 -3
- package/dist/markdown/markdown-hr.svelte.d.ts +3 -3
- package/dist/markdown/markdown-html.svelte +2 -2
- package/dist/markdown/markdown-html.svelte.d.ts +2 -2
- package/dist/markdown/markdown-image.svelte +3 -3
- package/dist/markdown/markdown-image.svelte.d.ts +3 -3
- package/dist/markdown/markdown-link.svelte +3 -3
- package/dist/markdown/markdown-link.svelte.d.ts +3 -3
- package/dist/markdown/markdown-list-item.svelte +3 -3
- package/dist/markdown/markdown-list-item.svelte.d.ts +3 -3
- package/dist/markdown/markdown-list.svelte +3 -3
- package/dist/markdown/markdown-list.svelte.d.ts +3 -3
- package/dist/markdown/markdown-paragraph.svelte +3 -3
- package/dist/markdown/markdown-paragraph.svelte.d.ts +3 -3
- package/dist/markdown/markdown-space.svelte +2 -2
- package/dist/markdown/markdown-space.svelte.d.ts +2 -2
- package/dist/markdown/markdown-strong.svelte +3 -3
- package/dist/markdown/markdown-strong.svelte.d.ts +3 -3
- package/dist/markdown/markdown-table-cell.svelte +3 -6
- package/dist/markdown/markdown-table-cell.svelte.d.ts +3 -3
- package/dist/markdown/markdown-table.svelte +2 -2
- package/dist/markdown/markdown-table.svelte.d.ts +2 -2
- package/dist/markdown/markdown-text.svelte +2 -2
- package/dist/markdown/markdown-text.svelte.d.ts +2 -2
- package/dist/markdown/markdown-token.svelte +1 -1
- package/dist/markdown/markdown-token.svelte.d.ts +1 -1
- package/dist/markdown/markdown-tokens.svelte +1 -1
- package/dist/markdown/markdown-tokens.svelte.d.ts +1 -1
- package/dist/markdown/markdown.svelte +1 -1
- package/dist/markdown/markdown.svelte.d.ts +1 -1
- package/dist/menu/menu-actions.svelte +1 -1
- package/dist/menu/menu-actions.svelte.d.ts +1 -1
- package/dist/menu/menu-content.svelte +2 -2
- package/dist/menu/menu-content.svelte.d.ts +2 -2
- package/dist/menu/menu-item.svelte +3 -3
- package/dist/menu/menu-item.svelte.d.ts +3 -3
- package/dist/menu/menu-trigger.svelte +4 -4
- package/dist/menu/menu-trigger.svelte.d.ts +4 -4
- package/dist/menu/menu.svelte +2 -2
- package/dist/menu/menu.svelte.d.ts +2 -2
- package/dist/modal/modal.svelte +3 -3
- package/dist/modal/modal.svelte.d.ts +3 -3
- package/dist/popover/popover.svelte +2 -2
- package/dist/popover/popover.svelte.d.ts +2 -2
- package/dist/portal/proxy.svelte +1 -1
- package/dist/portal/proxy.svelte.d.ts +1 -1
- package/dist/progress/circular-progress.svelte +1 -1
- package/dist/progress/circular-progress.svelte.d.ts +1 -1
- package/dist/shortcut/shortcut-badge.svelte +2 -2
- package/dist/shortcut/shortcut-badge.svelte.d.ts +2 -2
- package/dist/shortcut/shortcut.d.ts +2 -0
- package/dist/shortcut/shortcut.js +2 -0
- package/dist/skeleton/skeleton.svelte +1 -1
- package/dist/skeleton/skeleton.svelte.d.ts +1 -1
- package/dist/slider/index.d.ts +8 -0
- package/dist/slider/index.js +8 -0
- package/dist/slider/slider-context.svelte.d.ts +50 -0
- package/dist/slider/slider-context.svelte.js +198 -0
- package/dist/slider/slider-handle-label-arrow.svelte +18 -0
- package/dist/slider/slider-handle-label-arrow.svelte.d.ts +6 -0
- package/dist/slider/slider-handle-label.svelte +35 -0
- package/dist/slider/slider-handle-label.svelte.d.ts +6 -0
- package/dist/slider/slider-handle.svelte +54 -0
- package/dist/slider/slider-handle.svelte.d.ts +6 -0
- package/dist/slider/slider-mark-dot.svelte +25 -0
- package/dist/slider/slider-mark-dot.svelte.d.ts +6 -0
- package/dist/slider/slider-mark-label.svelte +37 -0
- package/dist/slider/slider-mark-label.svelte.d.ts +9 -0
- package/dist/slider/slider-mark.svelte +33 -0
- package/dist/slider/slider-mark.svelte.d.ts +9 -0
- package/dist/slider/slider.svelte +249 -0
- package/dist/slider/slider.svelte.d.ts +41 -0
- package/dist/switch/switch-thumb.svelte +2 -2
- package/dist/switch/switch-thumb.svelte.d.ts +2 -2
- package/dist/switch/switch.svelte +3 -3
- package/dist/switch/switch.svelte.d.ts +6 -6
- package/dist/textarea/textarea.svelte +2 -2
- package/dist/textarea/textarea.svelte.d.ts +5 -5
- package/dist/toggle/toggle-button.svelte +3 -3
- package/dist/toggle/toggle-button.svelte.d.ts +3 -3
- package/dist/toggle/toggle-group.svelte +2 -2
- package/dist/toggle/toggle-group.svelte.d.ts +2 -2
- package/dist/tooltip/tooltip.svelte +6 -5
- package/dist/tooltip/tooltip.svelte.d.ts +2 -2
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +0 -1
- package/package.json +5 -5
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import { mergeProps } from "../merge-props.js";
|
|
3
|
+
import { getSliderContext } from "./index.js";
|
|
4
|
+
import type { ClassName } from "../utils.js";
|
|
5
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
6
|
+
import { twMerge } from "tailwind-merge";
|
|
7
|
+
|
|
8
|
+
export type SliderHandleProps = {} & ClassName &
|
|
9
|
+
HTMLAttributes<HTMLDivElement>;
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<script lang="ts">
|
|
13
|
+
let { class: className, ...restProps }: SliderHandleProps = $props();
|
|
14
|
+
|
|
15
|
+
const ctx = getSliderContext();
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<div class="relative">
|
|
19
|
+
<div
|
|
20
|
+
class={twMerge(
|
|
21
|
+
"border-2 border-m3-surface shadow-md",
|
|
22
|
+
|
|
23
|
+
ctx.animated && "transition-all",
|
|
24
|
+
!ctx.disabled && "hover:scale-110 focus:scale-110 active:scale-110",
|
|
25
|
+
|
|
26
|
+
ctx.color === "primary" && "bg-m3-primary",
|
|
27
|
+
ctx.color === "secondary" && "bg-m3-secondary",
|
|
28
|
+
ctx.color === "tertiary" && "bg-m3-tertiary",
|
|
29
|
+
ctx.color === "error" && "bg-m3-error",
|
|
30
|
+
|
|
31
|
+
ctx.size === "xs" && "size-3",
|
|
32
|
+
ctx.size === "sm" && "size-4",
|
|
33
|
+
ctx.size === "md" && "size-5",
|
|
34
|
+
ctx.size === "lg" && "size-6",
|
|
35
|
+
ctx.size === "xl" && "size-7",
|
|
36
|
+
|
|
37
|
+
ctx.radius === "none" && "rounded-none",
|
|
38
|
+
ctx.radius === "xs" && "rounded-xs",
|
|
39
|
+
ctx.radius === "sm" && "rounded-sm",
|
|
40
|
+
ctx.radius === "md" && "rounded-lg",
|
|
41
|
+
ctx.radius === "lg" && "rounded-2xl",
|
|
42
|
+
ctx.radius === "xl" && "rounded-4xl",
|
|
43
|
+
ctx.radius === "full" && "rounded-full",
|
|
44
|
+
|
|
45
|
+
className,
|
|
46
|
+
)}
|
|
47
|
+
{...mergeProps(restProps, {
|
|
48
|
+
onpointerenter: () => (ctx.hovered = true),
|
|
49
|
+
onpointerleave: () => (ctx.hovered = false),
|
|
50
|
+
})}
|
|
51
|
+
></div>
|
|
52
|
+
|
|
53
|
+
{@render ctx.handleLabelRenderer({})}
|
|
54
|
+
</div>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ClassName } from "../utils.js";
|
|
2
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
3
|
+
export type SliderHandleProps = {} & ClassName & HTMLAttributes<HTMLDivElement>;
|
|
4
|
+
declare const SliderHandle: import("svelte").Component<SliderHandleProps, {}, "">;
|
|
5
|
+
type SliderHandle = ReturnType<typeof SliderHandle>;
|
|
6
|
+
export default SliderHandle;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ClassName } from "../utils.js";
|
|
3
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
4
|
+
import { twMerge } from "tailwind-merge";
|
|
5
|
+
import { getSliderContext } from "./index.js";
|
|
6
|
+
|
|
7
|
+
export type SliderMarkDotProps = {} & ClassName &
|
|
8
|
+
HTMLAttributes<HTMLDivElement>;
|
|
9
|
+
let { class: className, ...restProps }: SliderMarkDotProps = $props();
|
|
10
|
+
const ctx = getSliderContext();
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<div
|
|
14
|
+
class={twMerge(
|
|
15
|
+
"rounded-full bg-m3-surface-container-lowest",
|
|
16
|
+
|
|
17
|
+
ctx.size === "sm" && "size-0.5",
|
|
18
|
+
ctx.size === "md" && "size-1",
|
|
19
|
+
ctx.size === "lg" && "size-1.5",
|
|
20
|
+
ctx.size === "xl" && "size-2",
|
|
21
|
+
|
|
22
|
+
className,
|
|
23
|
+
)}
|
|
24
|
+
{...restProps}
|
|
25
|
+
></div>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ClassName } from "../utils.js";
|
|
2
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
3
|
+
export type SliderMarkDotProps = {} & ClassName & HTMLAttributes<HTMLDivElement>;
|
|
4
|
+
declare const SliderMarkDot: import("svelte").Component<SliderMarkDotProps, {}, "">;
|
|
5
|
+
type SliderMarkDot = ReturnType<typeof SliderMarkDot>;
|
|
6
|
+
export default SliderMarkDot;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { mergeProps } from "../merge-props.js";
|
|
3
|
+
import type { ClassName } from "../utils.js";
|
|
4
|
+
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
5
|
+
import { twMerge } from "tailwind-merge";
|
|
6
|
+
import { getSliderContext } from "./slider-context.svelte.js";
|
|
7
|
+
|
|
8
|
+
export type SliderMarkLabelProps = {
|
|
9
|
+
value: number;
|
|
10
|
+
label?: string;
|
|
11
|
+
} & ClassName &
|
|
12
|
+
HTMLButtonAttributes;
|
|
13
|
+
let {
|
|
14
|
+
value,
|
|
15
|
+
label,
|
|
16
|
+
class: className,
|
|
17
|
+
...restProps
|
|
18
|
+
}: SliderMarkLabelProps = $props();
|
|
19
|
+
|
|
20
|
+
const ctx = getSliderContext();
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
{#if label}
|
|
24
|
+
<button
|
|
25
|
+
class={twMerge(
|
|
26
|
+
"absolute top-full mt-2 text-xs whitespace-nowrap text-m3-on-surface-variant",
|
|
27
|
+
"left-1/2 -translate-x-1/2",
|
|
28
|
+
className,
|
|
29
|
+
)}
|
|
30
|
+
{...mergeProps(restProps, {
|
|
31
|
+
onpointerdown: (e: PointerEvent) => e.stopImmediatePropagation(),
|
|
32
|
+
onclick: () => (ctx.value = value),
|
|
33
|
+
})}
|
|
34
|
+
>
|
|
35
|
+
{label}
|
|
36
|
+
</button>
|
|
37
|
+
{/if}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ClassName } from "../utils.js";
|
|
2
|
+
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
3
|
+
export type SliderMarkLabelProps = {
|
|
4
|
+
value: number;
|
|
5
|
+
label?: string;
|
|
6
|
+
} & ClassName & HTMLButtonAttributes;
|
|
7
|
+
declare const SliderMarkLabel: import("svelte").Component<SliderMarkLabelProps, {}, "">;
|
|
8
|
+
type SliderMarkLabel = ReturnType<typeof SliderMarkLabel>;
|
|
9
|
+
export default SliderMarkLabel;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ClassName } from "../utils.js";
|
|
3
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
4
|
+
import { twMerge } from "tailwind-merge";
|
|
5
|
+
import { getSliderContext } from "./index.js";
|
|
6
|
+
|
|
7
|
+
export type SliderMarkProps = {
|
|
8
|
+
value: number;
|
|
9
|
+
label?: string;
|
|
10
|
+
} & ClassName &
|
|
11
|
+
HTMLAttributes<HTMLDivElement>;
|
|
12
|
+
|
|
13
|
+
let {
|
|
14
|
+
value,
|
|
15
|
+
label,
|
|
16
|
+
class: className,
|
|
17
|
+
...restProps
|
|
18
|
+
}: SliderMarkProps = $props();
|
|
19
|
+
|
|
20
|
+
const ctx = getSliderContext();
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<div
|
|
24
|
+
class={twMerge(
|
|
25
|
+
"absolute top-1/2 -translate-x-1/2 -translate-y-1/2",
|
|
26
|
+
className,
|
|
27
|
+
)}
|
|
28
|
+
style={`left: ${ctx.getPositionFromValue(value)}%`}
|
|
29
|
+
{...restProps}
|
|
30
|
+
>
|
|
31
|
+
{@render ctx.markDotRenderer({})}
|
|
32
|
+
{@render ctx.markLabelRenderer({ value, label })}
|
|
33
|
+
</div>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ClassName } from "../utils.js";
|
|
2
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
3
|
+
export type SliderMarkProps = {
|
|
4
|
+
value: number;
|
|
5
|
+
label?: string;
|
|
6
|
+
} & ClassName & HTMLAttributes<HTMLDivElement>;
|
|
7
|
+
declare const SliderMark: import("svelte").Component<SliderMarkProps, {}, "">;
|
|
8
|
+
type SliderMark = ReturnType<typeof SliderMark>;
|
|
9
|
+
export default SliderMark;
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import {
|
|
3
|
+
COLORS,
|
|
4
|
+
RADII,
|
|
5
|
+
SIZES,
|
|
6
|
+
type Color,
|
|
7
|
+
type ColorProp,
|
|
8
|
+
type Radius,
|
|
9
|
+
type RadiusProp,
|
|
10
|
+
type Size,
|
|
11
|
+
type SizeProp,
|
|
12
|
+
} from "../base.js";
|
|
13
|
+
import { mergeProps } from "../merge-props.js";
|
|
14
|
+
import {
|
|
15
|
+
setSliderContext,
|
|
16
|
+
SliderContext,
|
|
17
|
+
SliderHandle,
|
|
18
|
+
SliderHandleLabel,
|
|
19
|
+
SliderHandleLabelArrow,
|
|
20
|
+
SliderMark,
|
|
21
|
+
SliderMarkDot,
|
|
22
|
+
SliderMarkLabel,
|
|
23
|
+
type SliderHandleLabelArrowProps,
|
|
24
|
+
type SliderHandleLabelProps,
|
|
25
|
+
type SliderHandleProps,
|
|
26
|
+
type SliderMarkDotProps,
|
|
27
|
+
type SliderMarkLabelProps,
|
|
28
|
+
type SliderMarkProps,
|
|
29
|
+
} from "./index.js";
|
|
30
|
+
import type { ClassName } from "../utils.js";
|
|
31
|
+
import type { Snippet } from "svelte";
|
|
32
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
33
|
+
import { twMerge } from "tailwind-merge";
|
|
34
|
+
|
|
35
|
+
export const SLIDER_COLORS = COLORS;
|
|
36
|
+
export type SliderColor = Color;
|
|
37
|
+
export type SliderColorProp = ColorProp;
|
|
38
|
+
|
|
39
|
+
export const SLIDER_SIZES = SIZES;
|
|
40
|
+
export type SliderSize = Size;
|
|
41
|
+
export type SliderSizeProp = SizeProp;
|
|
42
|
+
|
|
43
|
+
export const SLIDER_RADII = RADII;
|
|
44
|
+
export type SliderRadius = Radius;
|
|
45
|
+
export type SliderRadiusProp = RadiusProp;
|
|
46
|
+
|
|
47
|
+
export type Mark = {
|
|
48
|
+
value: number;
|
|
49
|
+
label?: string;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export type SliderProps = {
|
|
53
|
+
value?: number;
|
|
54
|
+
min?: number;
|
|
55
|
+
max?: number;
|
|
56
|
+
step?: number;
|
|
57
|
+
marks?: Mark[];
|
|
58
|
+
disabled?: boolean;
|
|
59
|
+
label?: (value: number) => string;
|
|
60
|
+
labelAlwaysOn?: boolean;
|
|
61
|
+
inverted?: boolean;
|
|
62
|
+
restrictToMarks?: boolean;
|
|
63
|
+
onChange?: (value: number) => void;
|
|
64
|
+
onChangeEnd?: (value: number) => void;
|
|
65
|
+
sliderHandle?: Snippet<[SliderHandleProps]>;
|
|
66
|
+
sliderHandleLabel?: Snippet<[SliderHandleLabelProps]>;
|
|
67
|
+
sliderHandleLabelArrow?: Snippet<[SliderHandleLabelArrowProps]>;
|
|
68
|
+
sliderMark?: Snippet<[SliderMarkProps]>;
|
|
69
|
+
sliderMarkDot?: Snippet<[SliderMarkDotProps]>;
|
|
70
|
+
sliderMarkLabel?: Snippet<[SliderMarkLabelProps]>;
|
|
71
|
+
} & ClassName &
|
|
72
|
+
SliderColorProp &
|
|
73
|
+
SliderSizeProp &
|
|
74
|
+
SliderRadiusProp &
|
|
75
|
+
HTMLAttributes<HTMLDivElement>;
|
|
76
|
+
</script>
|
|
77
|
+
|
|
78
|
+
<script lang="ts">
|
|
79
|
+
let {
|
|
80
|
+
value = $bindable(0),
|
|
81
|
+
min = 0,
|
|
82
|
+
max = 100,
|
|
83
|
+
step = 1,
|
|
84
|
+
marks = [],
|
|
85
|
+
disabled = false,
|
|
86
|
+
label = (val: number) => val.toString(),
|
|
87
|
+
labelAlwaysOn = false,
|
|
88
|
+
inverted = false,
|
|
89
|
+
restrictToMarks = false,
|
|
90
|
+
onChange,
|
|
91
|
+
onChangeEnd,
|
|
92
|
+
sliderHandle = defaultSliderHandle,
|
|
93
|
+
sliderHandleLabel = defaultSliderHandleLabel,
|
|
94
|
+
sliderHandleLabelArrow = defaultSliderHandleLabelArrow,
|
|
95
|
+
sliderMark = defaultSliderMark,
|
|
96
|
+
sliderMarkDot = defaultSliderMarkDot,
|
|
97
|
+
sliderMarkLabel = defaultSliderMarkLabel,
|
|
98
|
+
class: className,
|
|
99
|
+
color = "primary",
|
|
100
|
+
size = "md",
|
|
101
|
+
radius = "full",
|
|
102
|
+
...restProps
|
|
103
|
+
}: SliderProps = $props();
|
|
104
|
+
|
|
105
|
+
const ctx = setSliderContext(
|
|
106
|
+
new SliderContext(
|
|
107
|
+
() => value,
|
|
108
|
+
(newValue) => (value = newValue),
|
|
109
|
+
() => min,
|
|
110
|
+
() => max,
|
|
111
|
+
() => step,
|
|
112
|
+
() => marks,
|
|
113
|
+
() => disabled,
|
|
114
|
+
label,
|
|
115
|
+
() => labelAlwaysOn,
|
|
116
|
+
() => inverted,
|
|
117
|
+
() => restrictToMarks,
|
|
118
|
+
() => color,
|
|
119
|
+
() => size,
|
|
120
|
+
() => radius,
|
|
121
|
+
onChange,
|
|
122
|
+
onChangeEnd,
|
|
123
|
+
sliderHandle,
|
|
124
|
+
sliderHandleLabel,
|
|
125
|
+
sliderHandleLabelArrow,
|
|
126
|
+
sliderMark,
|
|
127
|
+
sliderMarkDot,
|
|
128
|
+
sliderMarkLabel,
|
|
129
|
+
),
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
const SIZE_RATIO: Record<Size, number> = {
|
|
133
|
+
xs: 1.5,
|
|
134
|
+
sm: 2,
|
|
135
|
+
md: 2.5,
|
|
136
|
+
lg: 3,
|
|
137
|
+
xl: 3.5,
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
let ratio = $derived(SIZE_RATIO[ctx.size]);
|
|
141
|
+
</script>
|
|
142
|
+
|
|
143
|
+
{#snippet defaultSliderHandle(props: SliderHandleProps)}
|
|
144
|
+
<SliderHandle {...props} />
|
|
145
|
+
{/snippet}
|
|
146
|
+
|
|
147
|
+
{#snippet defaultSliderHandleLabel(props: SliderHandleLabelProps)}
|
|
148
|
+
<SliderHandleLabel {...props} />
|
|
149
|
+
{/snippet}
|
|
150
|
+
|
|
151
|
+
{#snippet defaultSliderHandleLabelArrow(props: SliderHandleLabelArrowProps)}
|
|
152
|
+
<SliderHandleLabelArrow {...props} />
|
|
153
|
+
{/snippet}
|
|
154
|
+
|
|
155
|
+
{#snippet defaultSliderMark(props: SliderMarkProps)}
|
|
156
|
+
<SliderMark {...props} />
|
|
157
|
+
{/snippet}
|
|
158
|
+
|
|
159
|
+
{#snippet defaultSliderMarkDot(props: SliderMarkDotProps)}
|
|
160
|
+
<SliderMarkDot {...props} />
|
|
161
|
+
{/snippet}
|
|
162
|
+
|
|
163
|
+
{#snippet defaultSliderMarkLabel(props: SliderMarkLabelProps)}
|
|
164
|
+
<SliderMarkLabel {...props} />
|
|
165
|
+
{/snippet}
|
|
166
|
+
|
|
167
|
+
<!-- Track -->
|
|
168
|
+
<div
|
|
169
|
+
class={twMerge(
|
|
170
|
+
"cursor-pointer bg-m3-surface-container-highest px-2 select-none",
|
|
171
|
+
|
|
172
|
+
ctx.disabled && "cursor-not-allowed opacity-50",
|
|
173
|
+
|
|
174
|
+
ctx.radius === "none" && "rounded-none",
|
|
175
|
+
ctx.radius === "xs" && "rounded-xs",
|
|
176
|
+
ctx.radius === "sm" && "rounded-sm",
|
|
177
|
+
ctx.radius === "md" && "rounded-lg",
|
|
178
|
+
ctx.radius === "lg" && "rounded-2xl",
|
|
179
|
+
ctx.radius === "xl" && "rounded-4xl",
|
|
180
|
+
ctx.radius === "full" && "rounded-full",
|
|
181
|
+
|
|
182
|
+
ctx.size === "xs" && "my-1 h-0.5 px-1.5",
|
|
183
|
+
ctx.size === "sm" && "my-1 h-1 px-2",
|
|
184
|
+
ctx.size === "md" && "my-1 h-2 px-2.5",
|
|
185
|
+
ctx.size === "lg" && "my-1 h-3 px-3",
|
|
186
|
+
ctx.size === "xl" && "my-1 h-4 px-3.5",
|
|
187
|
+
|
|
188
|
+
marks.length > 0 && "mb-6",
|
|
189
|
+
|
|
190
|
+
className,
|
|
191
|
+
)}
|
|
192
|
+
{...mergeProps(restProps, {
|
|
193
|
+
role: "slider",
|
|
194
|
+
tabindex: ctx.disabled ? -1 : 0,
|
|
195
|
+
"aria-valuenow": ctx.value,
|
|
196
|
+
"aria-valuemin": ctx.min,
|
|
197
|
+
"aria-valuemax": ctx.max,
|
|
198
|
+
"aria-disabled": ctx.disabled,
|
|
199
|
+
onpointerdown: ctx.pointerDown,
|
|
200
|
+
onpointermove: ctx.pointerMove,
|
|
201
|
+
onpointerup: ctx.pointerUp,
|
|
202
|
+
onkeydown: ctx.keyDown,
|
|
203
|
+
onfocus: ctx.focus,
|
|
204
|
+
onblur: ctx.blur,
|
|
205
|
+
})}
|
|
206
|
+
>
|
|
207
|
+
<div bind:this={ctx.sliderEl} class="relative h-full">
|
|
208
|
+
<!-- Filled track -->
|
|
209
|
+
<div
|
|
210
|
+
class={twMerge(
|
|
211
|
+
"absolute h-full",
|
|
212
|
+
|
|
213
|
+
ctx.animated && "transition-all",
|
|
214
|
+
|
|
215
|
+
ctx.color === "primary" && "bg-m3-primary",
|
|
216
|
+
ctx.color === "secondary" && "bg-m3-secondary",
|
|
217
|
+
ctx.color === "tertiary" && "bg-m3-tertiary",
|
|
218
|
+
ctx.color === "error" && "bg-m3-error",
|
|
219
|
+
|
|
220
|
+
ctx.radius === "none" && "rounded-none",
|
|
221
|
+
ctx.radius === "xs" && "rounded-xs",
|
|
222
|
+
ctx.radius === "sm" && "rounded-sm",
|
|
223
|
+
ctx.radius === "md" && "rounded-lg",
|
|
224
|
+
ctx.radius === "lg" && "rounded-2xl",
|
|
225
|
+
ctx.radius === "xl" && "rounded-4xl",
|
|
226
|
+
ctx.radius === "full" && "rounded-full",
|
|
227
|
+
)}
|
|
228
|
+
style={ctx.inverted
|
|
229
|
+
? `right: 0; margin-right: calc(var(--spacing) * -${ratio}); width: calc(${100 - ctx.position}% + var(--spacing) * ${ratio})`
|
|
230
|
+
: `left: 0; margin-left: calc(var(--spacing) * -${ratio}); width: calc(${ctx.position}% + var(--spacing) * ${ratio})`}
|
|
231
|
+
></div>
|
|
232
|
+
|
|
233
|
+
<!-- Marks -->
|
|
234
|
+
{#each marks as { value, label } (value)}
|
|
235
|
+
{@render ctx.markRenderer({ value, label })}
|
|
236
|
+
{/each}
|
|
237
|
+
|
|
238
|
+
<!-- Handle -->
|
|
239
|
+
<div
|
|
240
|
+
class={twMerge(
|
|
241
|
+
"absolute top-1/2 -translate-x-1/2 -translate-y-1/2",
|
|
242
|
+
ctx.animated && "transition-all",
|
|
243
|
+
)}
|
|
244
|
+
style={`left: ${ctx.position}%`}
|
|
245
|
+
>
|
|
246
|
+
{@render ctx.handleRenderer({})}
|
|
247
|
+
</div>
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type Color, type ColorProp, type Radius, type RadiusProp, type Size, type SizeProp } from "../base.js";
|
|
2
|
+
import { type SliderHandleLabelArrowProps, type SliderHandleLabelProps, type SliderHandleProps, type SliderMarkDotProps, type SliderMarkLabelProps, type SliderMarkProps } from "./index.js";
|
|
3
|
+
import type { ClassName } from "../utils.js";
|
|
4
|
+
import type { Snippet } from "svelte";
|
|
5
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
6
|
+
export declare const SLIDER_COLORS: readonly ["primary", "secondary", "tertiary", "error", "plain", "inherit"];
|
|
7
|
+
export type SliderColor = Color;
|
|
8
|
+
export type SliderColorProp = ColorProp;
|
|
9
|
+
export declare const SLIDER_SIZES: readonly ["xs", "sm", "md", "lg", "xl"];
|
|
10
|
+
export type SliderSize = Size;
|
|
11
|
+
export type SliderSizeProp = SizeProp;
|
|
12
|
+
export declare const SLIDER_RADII: readonly ["none", "xs", "sm", "md", "lg", "xl", "full"];
|
|
13
|
+
export type SliderRadius = Radius;
|
|
14
|
+
export type SliderRadiusProp = RadiusProp;
|
|
15
|
+
export type Mark = {
|
|
16
|
+
value: number;
|
|
17
|
+
label?: string;
|
|
18
|
+
};
|
|
19
|
+
export type SliderProps = {
|
|
20
|
+
value?: number;
|
|
21
|
+
min?: number;
|
|
22
|
+
max?: number;
|
|
23
|
+
step?: number;
|
|
24
|
+
marks?: Mark[];
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
label?: (value: number) => string;
|
|
27
|
+
labelAlwaysOn?: boolean;
|
|
28
|
+
inverted?: boolean;
|
|
29
|
+
restrictToMarks?: boolean;
|
|
30
|
+
onChange?: (value: number) => void;
|
|
31
|
+
onChangeEnd?: (value: number) => void;
|
|
32
|
+
sliderHandle?: Snippet<[SliderHandleProps]>;
|
|
33
|
+
sliderHandleLabel?: Snippet<[SliderHandleLabelProps]>;
|
|
34
|
+
sliderHandleLabelArrow?: Snippet<[SliderHandleLabelArrowProps]>;
|
|
35
|
+
sliderMark?: Snippet<[SliderMarkProps]>;
|
|
36
|
+
sliderMarkDot?: Snippet<[SliderMarkDotProps]>;
|
|
37
|
+
sliderMarkLabel?: Snippet<[SliderMarkLabelProps]>;
|
|
38
|
+
} & ClassName & SliderColorProp & SliderSizeProp & SliderRadiusProp & HTMLAttributes<HTMLDivElement>;
|
|
39
|
+
declare const Slider: import("svelte").Component<SliderProps, {}, "value">;
|
|
40
|
+
type Slider = ReturnType<typeof Slider>;
|
|
41
|
+
export default Slider;
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
SwitchRadiusProp,
|
|
5
5
|
SwitchSizeProp,
|
|
6
6
|
} from "./index.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import type { ClassName } from "../utils.js";
|
|
8
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
9
9
|
import { twMerge } from "tailwind-merge";
|
|
10
10
|
|
|
11
11
|
export type SwitchThumbProps = {} & ClassName &
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SwitchColorProp, SwitchRadiusProp, SwitchSizeProp } from "./index.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import type { ClassName } from "../utils.js";
|
|
3
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
4
4
|
export type SwitchThumbProps = {} & ClassName & SwitchColorProp & SwitchSizeProp & SwitchRadiusProp & HTMLAttributes<HTMLDivElement>;
|
|
5
5
|
declare const SwitchThumb: import("svelte").Component<SwitchThumbProps, {}, "">;
|
|
6
6
|
type SwitchThumb = ReturnType<typeof SwitchThumb>;
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
} from "../base.js";
|
|
13
13
|
import { mergeProps } from "../merge-props.js";
|
|
14
14
|
import { SwitchThumb, type SwitchThumbProps } from "./index.js";
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
15
|
+
import type { ClassName } from "../utils.js";
|
|
16
|
+
import type { Snippet } from "svelte";
|
|
17
|
+
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
18
18
|
import { twMerge } from "tailwind-merge";
|
|
19
19
|
|
|
20
20
|
export const SWITCH_COLORS = COLORS;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { type Color, type ColorProp, type Radius, type RadiusProp, type Size, type SizeProp } from "../base.js";
|
|
2
2
|
import { type SwitchThumbProps } from "./index.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
export declare const SWITCH_COLORS: readonly ["primary", "secondary", "tertiary", "error", "inherit"];
|
|
3
|
+
import type { ClassName } from "../utils.js";
|
|
4
|
+
import type { Snippet } from "svelte";
|
|
5
|
+
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
6
|
+
export declare const SWITCH_COLORS: readonly ["primary", "secondary", "tertiary", "error", "plain", "inherit"];
|
|
7
7
|
export type SwitchColor = Color;
|
|
8
8
|
export type SwitchColorProp = ColorProp;
|
|
9
|
-
export declare const SWITCH_SIZES: readonly ["xs", "sm", "md", "lg", "xl"
|
|
9
|
+
export declare const SWITCH_SIZES: readonly ["xs", "sm", "md", "lg", "xl"];
|
|
10
10
|
export type SwitchSize = Size;
|
|
11
11
|
export type SwitchSizeProp = SizeProp;
|
|
12
|
-
export declare const SWITCH_RADII: readonly ["xs", "sm", "md", "lg", "xl", "
|
|
12
|
+
export declare const SWITCH_RADII: readonly ["none", "xs", "sm", "md", "lg", "xl", "full"];
|
|
13
13
|
export type SwitchRadius = Radius;
|
|
14
14
|
export type SwitchRadiusProp = RadiusProp;
|
|
15
15
|
export type SwitchProps = {
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
type Size,
|
|
11
11
|
type SizeProp,
|
|
12
12
|
} from "../base.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
13
|
+
import type { ClassName } from "../utils.js";
|
|
14
|
+
import type { HTMLTextareaAttributes } from "svelte/elements";
|
|
15
15
|
import { twMerge } from "tailwind-merge";
|
|
16
16
|
|
|
17
17
|
export const TEXTAREA_VARIANTS = ["outlined", "filled", "inherit"] as const;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { type Color, type ColorProp, type Radius, type RadiusProp, type Size, type SizeProp } from "../base.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import type { ClassName } from "../utils.js";
|
|
3
|
+
import type { HTMLTextareaAttributes } from "svelte/elements";
|
|
4
4
|
export declare const TEXTAREA_VARIANTS: readonly ["outlined", "filled", "inherit"];
|
|
5
5
|
export type TextareaVariant = (typeof TEXTAREA_VARIANTS)[number];
|
|
6
6
|
export type TextareaVariantProp = {
|
|
7
7
|
variant?: TextareaVariant;
|
|
8
8
|
};
|
|
9
|
-
export declare const TEXTAREA_COLORS: readonly ["primary", "secondary", "tertiary", "error", "inherit"];
|
|
9
|
+
export declare const TEXTAREA_COLORS: readonly ["primary", "secondary", "tertiary", "error", "plain", "inherit"];
|
|
10
10
|
export type TextareaColor = Color;
|
|
11
11
|
export type TextareaColorProp = ColorProp;
|
|
12
|
-
export declare const TEXTAREA_SIZES: readonly ["xs", "sm", "md", "lg", "xl"
|
|
12
|
+
export declare const TEXTAREA_SIZES: readonly ["xs", "sm", "md", "lg", "xl"];
|
|
13
13
|
export type TextareaSize = Size;
|
|
14
14
|
export type TextareaSizeProp = SizeProp;
|
|
15
|
-
export declare const TEXTAREA_RADII: readonly ["xs", "sm", "md", "lg", "xl", "
|
|
15
|
+
export declare const TEXTAREA_RADII: readonly ["none", "xs", "sm", "md", "lg", "xl", "full"];
|
|
16
16
|
export type TextareaRadius = Radius;
|
|
17
17
|
export type TextareaRadiusProp = RadiusProp;
|
|
18
18
|
export type TextareaProps = ClassName & TextareaVariantProp & TextareaSizeProp & TextareaRadiusProp & TextareaColorProp & Omit<HTMLTextareaAttributes, "size">;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
|
-
import {
|
|
2
|
+
import type { Variants } from "../base.js";
|
|
3
3
|
import { mergeProps } from "../merge-props.js";
|
|
4
4
|
import { getToggleContext } from "./index.js";
|
|
5
5
|
import { noop, type ClassName, type ElementRef } from "../utils.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import type { Snippet } from "svelte";
|
|
7
|
+
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
8
8
|
import { twMerge } from "tailwind-merge";
|
|
9
9
|
|
|
10
10
|
export type ToggleButtonProps<T> = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Variants } from "../base.js";
|
|
2
2
|
import { type ClassName, type ElementRef } from "../utils.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import type { Snippet } from "svelte";
|
|
4
|
+
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
5
5
|
export type ToggleButtonProps<T> = {
|
|
6
6
|
value: T;
|
|
7
7
|
children: Snippet;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
2
|
import { setToggleContext, ToggleContext } from "./index.js";
|
|
3
3
|
import { noop, type ClassName, type ElementRef } from "../utils.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import type { Snippet } from "svelte";
|
|
5
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
6
6
|
import { twMerge } from "tailwind-merge";
|
|
7
7
|
|
|
8
8
|
export type ToggleGroupProps<T> = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ClassName, type ElementRef } from "../utils.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
4
4
|
export type ToggleGroupProps<T> = {
|
|
5
5
|
value?: T;
|
|
6
6
|
onChange?: (value?: T) => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
2
|
import { Popover, type PopoverProps } from "../popover/index.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import type { ClassName } from "../utils.js";
|
|
4
|
+
import type { Snippet } from "svelte";
|
|
5
5
|
import { twMerge } from "tailwind-merge";
|
|
6
6
|
|
|
7
7
|
export type TooltipTriggerProps = {
|
|
@@ -36,8 +36,9 @@
|
|
|
36
36
|
...restProps
|
|
37
37
|
}: TooltipProps = $props();
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
"ontouchstart" in window || navigator.maxTouchPoints > 0;
|
|
39
|
+
function isTouchDevice() {
|
|
40
|
+
return "ontouchstart" in window || navigator.maxTouchPoints > 0;
|
|
41
|
+
}
|
|
41
42
|
|
|
42
43
|
let timeout: number;
|
|
43
44
|
|
|
@@ -64,7 +65,7 @@
|
|
|
64
65
|
}
|
|
65
66
|
: {
|
|
66
67
|
ref: (ref) => (anchorEl = ref),
|
|
67
|
-
onmouseenter: () => !isTouchDevice && show(),
|
|
68
|
+
onmouseenter: () => !isTouchDevice() && show(),
|
|
68
69
|
onmouseleave: () => hide(),
|
|
69
70
|
ontouchstart: () => show(delay),
|
|
70
71
|
ontouchend: () => cancel(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type PopoverProps } from "../popover/index.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import type { ClassName } from "../utils.js";
|
|
3
|
+
import type { Snippet } from "svelte";
|
|
4
4
|
export type TooltipTriggerProps = {
|
|
5
5
|
ref: (el: HTMLElement) => void;
|
|
6
6
|
onclick?: () => void;
|