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.
Files changed (157) hide show
  1. package/dist/alert/alert.svelte +174 -19
  2. package/dist/alert/alert.svelte.d.ts +26 -3
  3. package/dist/alert/index.d.ts +1 -1
  4. package/dist/alert/index.js +1 -1
  5. package/dist/autocomplete/autocomplete-content.svelte +2 -2
  6. package/dist/autocomplete/autocomplete-content.svelte.d.ts +2 -2
  7. package/dist/autocomplete/autocomplete-item.svelte +3 -3
  8. package/dist/autocomplete/autocomplete-item.svelte.d.ts +3 -3
  9. package/dist/autocomplete/autocomplete.svelte +2 -2
  10. package/dist/autocomplete/autocomplete.svelte.d.ts +2 -2
  11. package/dist/base.d.ts +3 -3
  12. package/dist/base.js +3 -2
  13. package/dist/box/box.svelte +2 -2
  14. package/dist/box/box.svelte.d.ts +2 -2
  15. package/dist/breadcrumbs/breadcrumbs.svelte +1 -1
  16. package/dist/breadcrumbs/breadcrumbs.svelte.d.ts +1 -1
  17. package/dist/button/button.svelte +3 -3
  18. package/dist/button/button.svelte.d.ts +3 -3
  19. package/dist/chip/chip.svelte +1 -1
  20. package/dist/chip/chip.svelte.d.ts +1 -1
  21. package/dist/command/action.svelte.d.ts +1 -1
  22. package/dist/command/action.svelte.js +0 -1
  23. package/dist/command/command-content.svelte +2 -2
  24. package/dist/command/command-content.svelte.d.ts +2 -2
  25. package/dist/command/command-input.svelte +2 -2
  26. package/dist/command/command-input.svelte.d.ts +2 -2
  27. package/dist/command/command-item.svelte +3 -3
  28. package/dist/command/command-item.svelte.d.ts +3 -3
  29. package/dist/command/command.svelte +2 -2
  30. package/dist/command/command.svelte.d.ts +2 -2
  31. package/dist/common/divider.svelte +2 -2
  32. package/dist/common/divider.svelte.d.ts +2 -2
  33. package/dist/common/header.svelte +3 -3
  34. package/dist/common/header.svelte.d.ts +3 -3
  35. package/dist/dialog/dialog-button.svelte +1 -1
  36. package/dist/dialog/dialog-button.svelte.d.ts +1 -1
  37. package/dist/dialog/dialog.svelte +2 -2
  38. package/dist/dialog/dialog.svelte.d.ts +2 -2
  39. package/dist/dialog/dialoguer-context.svelte.d.ts +3 -3
  40. package/dist/dialog/dialoguer-context.svelte.js +0 -3
  41. package/dist/dialog/dialoguer.svelte +1 -1
  42. package/dist/dialog/dialoguer.svelte.d.ts +1 -1
  43. package/dist/fab/fab.svelte +1 -1
  44. package/dist/fab/fab.svelte.d.ts +1 -1
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.js +1 -0
  47. package/dist/input/input.svelte +1 -1
  48. package/dist/input/input.svelte.d.ts +4 -4
  49. package/dist/link/link.svelte +1 -1
  50. package/dist/link/link.svelte.d.ts +1 -1
  51. package/dist/markdown/markdown-blockquote.svelte +3 -3
  52. package/dist/markdown/markdown-blockquote.svelte.d.ts +3 -3
  53. package/dist/markdown/markdown-br.svelte +3 -3
  54. package/dist/markdown/markdown-br.svelte.d.ts +3 -3
  55. package/dist/markdown/markdown-code.svelte +3 -3
  56. package/dist/markdown/markdown-code.svelte.d.ts +3 -3
  57. package/dist/markdown/markdown-codespan.svelte +3 -3
  58. package/dist/markdown/markdown-codespan.svelte.d.ts +3 -3
  59. package/dist/markdown/markdown-context.svelte.d.ts +1 -1
  60. package/dist/markdown/markdown-context.svelte.js +0 -1
  61. package/dist/markdown/markdown-def.svelte +3 -3
  62. package/dist/markdown/markdown-def.svelte.d.ts +3 -3
  63. package/dist/markdown/markdown-del.svelte +3 -3
  64. package/dist/markdown/markdown-del.svelte.d.ts +3 -3
  65. package/dist/markdown/markdown-em.svelte +3 -3
  66. package/dist/markdown/markdown-em.svelte.d.ts +3 -3
  67. package/dist/markdown/markdown-escape.svelte +2 -2
  68. package/dist/markdown/markdown-escape.svelte.d.ts +2 -2
  69. package/dist/markdown/markdown-heading.svelte +3 -3
  70. package/dist/markdown/markdown-heading.svelte.d.ts +3 -3
  71. package/dist/markdown/markdown-hr.svelte +3 -3
  72. package/dist/markdown/markdown-hr.svelte.d.ts +3 -3
  73. package/dist/markdown/markdown-html.svelte +2 -2
  74. package/dist/markdown/markdown-html.svelte.d.ts +2 -2
  75. package/dist/markdown/markdown-image.svelte +3 -3
  76. package/dist/markdown/markdown-image.svelte.d.ts +3 -3
  77. package/dist/markdown/markdown-link.svelte +3 -3
  78. package/dist/markdown/markdown-link.svelte.d.ts +3 -3
  79. package/dist/markdown/markdown-list-item.svelte +3 -3
  80. package/dist/markdown/markdown-list-item.svelte.d.ts +3 -3
  81. package/dist/markdown/markdown-list.svelte +3 -3
  82. package/dist/markdown/markdown-list.svelte.d.ts +3 -3
  83. package/dist/markdown/markdown-paragraph.svelte +3 -3
  84. package/dist/markdown/markdown-paragraph.svelte.d.ts +3 -3
  85. package/dist/markdown/markdown-space.svelte +2 -2
  86. package/dist/markdown/markdown-space.svelte.d.ts +2 -2
  87. package/dist/markdown/markdown-strong.svelte +3 -3
  88. package/dist/markdown/markdown-strong.svelte.d.ts +3 -3
  89. package/dist/markdown/markdown-table-cell.svelte +3 -6
  90. package/dist/markdown/markdown-table-cell.svelte.d.ts +3 -3
  91. package/dist/markdown/markdown-table.svelte +2 -2
  92. package/dist/markdown/markdown-table.svelte.d.ts +2 -2
  93. package/dist/markdown/markdown-text.svelte +2 -2
  94. package/dist/markdown/markdown-text.svelte.d.ts +2 -2
  95. package/dist/markdown/markdown-token.svelte +1 -1
  96. package/dist/markdown/markdown-token.svelte.d.ts +1 -1
  97. package/dist/markdown/markdown-tokens.svelte +1 -1
  98. package/dist/markdown/markdown-tokens.svelte.d.ts +1 -1
  99. package/dist/markdown/markdown.svelte +1 -1
  100. package/dist/markdown/markdown.svelte.d.ts +1 -1
  101. package/dist/menu/menu-actions.svelte +1 -1
  102. package/dist/menu/menu-actions.svelte.d.ts +1 -1
  103. package/dist/menu/menu-content.svelte +2 -2
  104. package/dist/menu/menu-content.svelte.d.ts +2 -2
  105. package/dist/menu/menu-item.svelte +3 -3
  106. package/dist/menu/menu-item.svelte.d.ts +3 -3
  107. package/dist/menu/menu-trigger.svelte +4 -4
  108. package/dist/menu/menu-trigger.svelte.d.ts +4 -4
  109. package/dist/menu/menu.svelte +2 -2
  110. package/dist/menu/menu.svelte.d.ts +2 -2
  111. package/dist/modal/modal.svelte +3 -3
  112. package/dist/modal/modal.svelte.d.ts +3 -3
  113. package/dist/popover/popover.svelte +2 -2
  114. package/dist/popover/popover.svelte.d.ts +2 -2
  115. package/dist/portal/proxy.svelte +1 -1
  116. package/dist/portal/proxy.svelte.d.ts +1 -1
  117. package/dist/progress/circular-progress.svelte +1 -1
  118. package/dist/progress/circular-progress.svelte.d.ts +1 -1
  119. package/dist/shortcut/shortcut-badge.svelte +2 -2
  120. package/dist/shortcut/shortcut-badge.svelte.d.ts +2 -2
  121. package/dist/shortcut/shortcut.d.ts +2 -0
  122. package/dist/shortcut/shortcut.js +2 -0
  123. package/dist/skeleton/skeleton.svelte +1 -1
  124. package/dist/skeleton/skeleton.svelte.d.ts +1 -1
  125. package/dist/slider/index.d.ts +8 -0
  126. package/dist/slider/index.js +8 -0
  127. package/dist/slider/slider-context.svelte.d.ts +50 -0
  128. package/dist/slider/slider-context.svelte.js +198 -0
  129. package/dist/slider/slider-handle-label-arrow.svelte +18 -0
  130. package/dist/slider/slider-handle-label-arrow.svelte.d.ts +6 -0
  131. package/dist/slider/slider-handle-label.svelte +35 -0
  132. package/dist/slider/slider-handle-label.svelte.d.ts +6 -0
  133. package/dist/slider/slider-handle.svelte +54 -0
  134. package/dist/slider/slider-handle.svelte.d.ts +6 -0
  135. package/dist/slider/slider-mark-dot.svelte +25 -0
  136. package/dist/slider/slider-mark-dot.svelte.d.ts +6 -0
  137. package/dist/slider/slider-mark-label.svelte +37 -0
  138. package/dist/slider/slider-mark-label.svelte.d.ts +9 -0
  139. package/dist/slider/slider-mark.svelte +33 -0
  140. package/dist/slider/slider-mark.svelte.d.ts +9 -0
  141. package/dist/slider/slider.svelte +249 -0
  142. package/dist/slider/slider.svelte.d.ts +41 -0
  143. package/dist/switch/switch-thumb.svelte +2 -2
  144. package/dist/switch/switch-thumb.svelte.d.ts +2 -2
  145. package/dist/switch/switch.svelte +3 -3
  146. package/dist/switch/switch.svelte.d.ts +6 -6
  147. package/dist/textarea/textarea.svelte +2 -2
  148. package/dist/textarea/textarea.svelte.d.ts +5 -5
  149. package/dist/toggle/toggle-button.svelte +3 -3
  150. package/dist/toggle/toggle-button.svelte.d.ts +3 -3
  151. package/dist/toggle/toggle-group.svelte +2 -2
  152. package/dist/toggle/toggle-group.svelte.d.ts +2 -2
  153. package/dist/tooltip/tooltip.svelte +6 -5
  154. package/dist/tooltip/tooltip.svelte.d.ts +2 -2
  155. package/dist/utils.d.ts +1 -1
  156. package/dist/utils.js +0 -1
  157. package/package.json +5 -5
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { getMarkdownContext, MarkdownTokens } from "./index.js";
3
- import { type MarkedToken } from "marked";
3
+ import type { MarkedToken } from "marked";
4
4
 
5
5
  export type MarkdownTokenProps = {
6
6
  token: MarkedToken;
@@ -1,4 +1,4 @@
1
- import { type MarkedToken } from "marked";
1
+ import type { MarkedToken } from "marked";
2
2
  export type MarkdownTokenProps = {
3
3
  token: MarkedToken;
4
4
  };
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { MarkdownToken } from "./index.js";
3
- import { type MarkedToken } from "marked";
3
+ import type { MarkedToken } from "marked";
4
4
 
5
5
  export type MarkdownTokensProps = {
6
6
  tokens: MarkedToken[];
@@ -1,4 +1,4 @@
1
- import { type MarkedToken } from "marked";
1
+ import type { MarkedToken } from "marked";
2
2
  export type MarkdownTokensProps = {
3
3
  tokens: MarkedToken[];
4
4
  };
@@ -32,7 +32,7 @@
32
32
  type MarkedToken,
33
33
  type Tokens,
34
34
  } from "marked";
35
- import { type Snippet } from "svelte";
35
+ import type { Snippet } from "svelte";
36
36
 
37
37
  export type MarkdownProps = {
38
38
  value: string;
@@ -1,6 +1,6 @@
1
1
  import { type MarkdownComponentProps } from "./index.js";
2
2
  import { type MarkedOptions, type Tokens } from "marked";
3
- import { type Snippet } from "svelte";
3
+ import type { Snippet } from "svelte";
4
4
  export type MarkdownProps = {
5
5
  value: string;
6
6
  options?: MarkedOptions;
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import { type Action } from "../command/index.js";
2
+ import type { Action } from "../command/index.js";
3
3
  import { MenuDivider, MenuHeader, MenuItem } from "./index.js";
4
4
  import { Check } from "@lucide/svelte";
5
5
 
@@ -1,4 +1,4 @@
1
- import { type Action } from "../command/index.js";
1
+ import type { Action } from "../command/index.js";
2
2
  export type MenuActionsProps = {
3
3
  actions: Action[];
4
4
  };
@@ -3,8 +3,8 @@
3
3
  import { getMenuContext } from "./index.js";
4
4
  import { mergeComponentProps } from "../merge-props.js";
5
5
  import { Popover, type PopoverProps } from "../popover/index.js";
6
- import { type ClassName } from "../utils.js";
7
- import { type Snippet } from "svelte";
6
+ import type { ClassName } from "../utils.js";
7
+ import type { Snippet } from "svelte";
8
8
  import { twMerge } from "tailwind-merge";
9
9
 
10
10
  export type MenuContentProps = {
@@ -1,7 +1,7 @@
1
1
  import { type Variants } from "../base.js";
2
2
  import { type PopoverProps } from "../popover/index.js";
3
- import { type ClassName } from "../utils.js";
4
- import { type Snippet } from "svelte";
3
+ import type { ClassName } from "../utils.js";
4
+ import type { Snippet } from "svelte";
5
5
  export type MenuContentProps = {
6
6
  children: Snippet;
7
7
  } & ClassName & Variants & Omit<PopoverProps, "children" | "open">;
@@ -3,9 +3,9 @@
3
3
  import { getMenuContext } from "./index.js";
4
4
  import { mergeProps } from "../merge-props.js";
5
5
  import { Shortcut } from "../shortcut/index.js";
6
- import { type ClassName, type ElementRef } from "../utils.js";
7
- import { type Snippet } from "svelte";
8
- import { type HTMLButtonAttributes } from "svelte/elements";
6
+ import type { ClassName, ElementRef } from "../utils.js";
7
+ import type { Snippet } from "svelte";
8
+ import type { HTMLButtonAttributes } from "svelte/elements";
9
9
  import { twMerge } from "tailwind-merge";
10
10
 
11
11
  export type MenuItemProps = {
@@ -1,7 +1,7 @@
1
1
  import { type Variants } from "../base.js";
2
- import { type ClassName, type ElementRef } from "../utils.js";
3
- import { type Snippet } from "svelte";
4
- import { type HTMLButtonAttributes } from "svelte/elements";
2
+ import type { ClassName, ElementRef } from "../utils.js";
3
+ import type { Snippet } from "svelte";
4
+ import type { HTMLButtonAttributes } from "svelte/elements";
5
5
  export type MenuItemProps = {
6
6
  onSelect?: (el: HTMLElement) => void;
7
7
  children: Snippet<[]>;
@@ -1,11 +1,11 @@
1
1
  <script lang="ts" module>
2
- import { type Variants } from "../base.js";
2
+ import type { Variants } from "../base.js";
3
3
  import { getMenuContext } from "./index.js";
4
4
  import { mergeProps } from "../merge-props.js";
5
5
  import { Shortcut } from "../shortcut/index.js";
6
- import { type ClassName } from "../utils.js";
7
- import { type Snippet } from "svelte";
8
- import { type HTMLButtonAttributes } from "svelte/elements";
6
+ import type { ClassName } from "../utils.js";
7
+ import type { Snippet } from "svelte";
8
+ import type { HTMLButtonAttributes } from "svelte/elements";
9
9
  import { twMerge } from "tailwind-merge";
10
10
 
11
11
  export type MenuTriggerProps = {
@@ -1,7 +1,7 @@
1
- import { type Variants } from "../base.js";
2
- import { type ClassName } from "../utils.js";
3
- import { type Snippet } from "svelte";
4
- import { type HTMLButtonAttributes } from "svelte/elements";
1
+ import type { Variants } from "../base.js";
2
+ import type { ClassName } from "../utils.js";
3
+ import type { Snippet } from "svelte";
4
+ import type { HTMLButtonAttributes } from "svelte/elements";
5
5
  export type MenuTriggerProps = {
6
6
  children?: Snippet;
7
7
  } & ClassName & Variants & HTMLButtonAttributes;
@@ -1,7 +1,7 @@
1
1
  <script module lang="ts">
2
2
  import { MenuContext, setMenuContext } from "./index.js";
3
- import { type ElementRef } from "../utils.js";
4
- import { type Snippet } from "svelte";
3
+ import type { ElementRef } from "../utils.js";
4
+ import type { Snippet } from "svelte";
5
5
 
6
6
  export type MenuProps = {
7
7
  open?: boolean;
@@ -1,5 +1,5 @@
1
- import { type ElementRef } from "../utils.js";
2
- import { type Snippet } from "svelte";
1
+ import type { ElementRef } from "../utils.js";
2
+ import type { Snippet } from "svelte";
3
3
  export type MenuProps = {
4
4
  open?: boolean;
5
5
  children: Snippet;
@@ -2,9 +2,9 @@
2
2
  import { events } from "../index.js";
3
3
  import { mergeProps } from "../merge-props.js";
4
4
  import { Shortcut } from "../shortcut/index.js";
5
- import { type ClassName } from "../utils.js";
6
- import { type Snippet } from "svelte";
7
- import { type HTMLDialogAttributes } from "svelte/elements";
5
+ import type { ClassName } from "../utils.js";
6
+ import type { Snippet } from "svelte";
7
+ import type { HTMLDialogAttributes } from "svelte/elements";
8
8
  import { scale } from "svelte/transition";
9
9
  import { twMerge } from "tailwind-merge";
10
10
 
@@ -1,6 +1,6 @@
1
- import { type ClassName } from "../utils.js";
2
- import { type Snippet } from "svelte";
3
- import { type HTMLDialogAttributes } from "svelte/elements";
1
+ import type { ClassName } from "../utils.js";
2
+ import type { Snippet } from "svelte";
3
+ import type { HTMLDialogAttributes } from "svelte/elements";
4
4
  export type ModalProps = {
5
5
  ref?: HTMLDialogElement;
6
6
  onCancel?: () => void;
@@ -9,8 +9,8 @@
9
9
  type ToggleEventWithTarget,
10
10
  } from "../utils.js";
11
11
  import * as floatingUi from "@floating-ui/dom";
12
- import { type Snippet } from "svelte";
13
- import { type HTMLAttributes } from "svelte/elements";
12
+ import type { Snippet } from "svelte";
13
+ import type { HTMLAttributes } from "svelte/elements";
14
14
  import { scale } from "svelte/transition";
15
15
  import { twMerge, type ClassNameValue } from "tailwind-merge";
16
16
 
@@ -1,7 +1,7 @@
1
1
  import { type ClassName, type ElementRef } from "../utils.js";
2
2
  import * as floatingUi from "@floating-ui/dom";
3
- import { type Snippet } from "svelte";
4
- import { type HTMLAttributes } from "svelte/elements";
3
+ import type { Snippet } from "svelte";
4
+ import type { HTMLAttributes } from "svelte/elements";
5
5
  import { type ClassNameValue } from "tailwind-merge";
6
6
  export type PopoverProps = {
7
7
  arrow?: boolean;
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" module>
2
- import { type Snippet } from "svelte";
2
+ import type { Snippet } from "svelte";
3
3
 
4
4
  export type ProxyProps = { children?: Snippet };
5
5
  </script>
@@ -1,4 +1,4 @@
1
- import { type Snippet } from "svelte";
1
+ import type { Snippet } from "svelte";
2
2
  export type ProxyProps = {
3
3
  children?: Snippet;
4
4
  };
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" module>
2
- import { type Snippet } from "svelte";
2
+ import type { Snippet } from "svelte";
3
3
  export type CircularProgressProps = {
4
4
  children?: Snippet;
5
5
  progress?: number;
@@ -1,4 +1,4 @@
1
- import { type Snippet } from "svelte";
1
+ import type { Snippet } from "svelte";
2
2
  export type CircularProgressProps = {
3
3
  children?: Snippet;
4
4
  progress?: number;
@@ -1,8 +1,8 @@
1
1
  <script module lang="ts">
2
2
  import { Box } from "../box/index.js";
3
- import { type Shortcut } from "./index.js";
3
+ import type { Shortcut } from "./index.js";
4
4
  import { noop, type ClassName, type ElementRef } from "../utils.js";
5
- import { type HTMLInputAttributes } from "svelte/elements";
5
+ import type { HTMLInputAttributes } from "svelte/elements";
6
6
  import { twMerge, type ClassNameValue } from "tailwind-merge";
7
7
 
8
8
  export type ShortcutBadgeProps = {
@@ -1,6 +1,6 @@
1
- import { type Shortcut } from "./index.js";
1
+ import type { Shortcut } from "./index.js";
2
2
  import { type ClassName, type ElementRef } from "../utils.js";
3
- import { type HTMLInputAttributes } from "svelte/elements";
3
+ import type { HTMLInputAttributes } from "svelte/elements";
4
4
  import { type ClassNameValue } from "tailwind-merge";
5
5
  export type ShortcutBadgeProps = {
6
6
  shortcut: Shortcut;
@@ -19,6 +19,8 @@ export declare class Shortcut {
19
19
  static fromEvent(event: KeyboardEvent): Shortcut;
20
20
  static ARROW_UP: Shortcut;
21
21
  static ARROW_DOWN: Shortcut;
22
+ static ARROW_LEFT: Shortcut;
23
+ static ARROW_RIGHT: Shortcut;
22
24
  static END: Shortcut;
23
25
  static ENTER: Shortcut;
24
26
  static ESCAPE: Shortcut;
@@ -85,6 +85,8 @@ export class Shortcut {
85
85
  }
86
86
  static ARROW_UP = new Shortcut({ key: "ArrowUp" });
87
87
  static ARROW_DOWN = new Shortcut({ key: "ArrowDown" });
88
+ static ARROW_LEFT = new Shortcut({ key: "ArrowLeft" });
89
+ static ARROW_RIGHT = new Shortcut({ key: "ArrowRight" });
88
90
  static END = new Shortcut({ key: "End" });
89
91
  static ENTER = new Shortcut({ key: "Enter" });
90
92
  static ESCAPE = new Shortcut({ key: "Escape" });
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { Box, type BoxProps } from "../box/index.js";
3
- import { type Snippet } from "svelte";
3
+ import type { Snippet } from "svelte";
4
4
  import { twMerge } from "tailwind-merge";
5
5
 
6
6
  export type SkeletonProps = { children?: Snippet } & BoxProps;
@@ -1,5 +1,5 @@
1
1
  import { type BoxProps } from "../box/index.js";
2
- import { type Snippet } from "svelte";
2
+ import type { Snippet } from "svelte";
3
3
  export type SkeletonProps = {
4
4
  children?: Snippet;
5
5
  } & BoxProps;
@@ -0,0 +1,8 @@
1
+ export { getSliderContext, setSliderContext, SliderContext, } from "./slider-context.svelte.js";
2
+ export { default as SliderHandleLabelArrow, type SliderHandleLabelArrowProps, } from "./slider-handle-label-arrow.svelte";
3
+ export { default as SliderHandleLabel, type SliderHandleLabelProps, } from "./slider-handle-label.svelte";
4
+ export { default as SliderHandle, type SliderHandleProps, } from "./slider-handle.svelte";
5
+ export { default as SliderMarkDot, type SliderMarkDotProps, } from "./slider-mark-dot.svelte";
6
+ export { default as SliderMarkLabel, type SliderMarkLabelProps, } from "./slider-mark-label.svelte";
7
+ export { default as SliderMark, type SliderMarkProps, } from "./slider-mark.svelte";
8
+ export { default as Slider, SLIDER_COLORS, SLIDER_RADII, SLIDER_SIZES, type Mark, type SliderColor, type SliderColorProp, type SliderProps, type SliderRadius, type SliderRadiusProp, type SliderSize, type SliderSizeProp, } from "./slider.svelte";
@@ -0,0 +1,8 @@
1
+ export { getSliderContext, setSliderContext, SliderContext, } from "./slider-context.svelte.js";
2
+ export { default as SliderHandleLabelArrow, } from "./slider-handle-label-arrow.svelte";
3
+ export { default as SliderHandleLabel, } from "./slider-handle-label.svelte";
4
+ export { default as SliderHandle, } from "./slider-handle.svelte";
5
+ export { default as SliderMarkDot, } from "./slider-mark-dot.svelte";
6
+ export { default as SliderMarkLabel, } from "./slider-mark-label.svelte";
7
+ export { default as SliderMark, } from "./slider-mark.svelte";
8
+ export { default as Slider, SLIDER_COLORS, SLIDER_RADII, SLIDER_SIZES, } from "./slider.svelte";
@@ -0,0 +1,50 @@
1
+ import type { SliderColor, SliderHandleLabelArrowProps, SliderHandleLabelProps, SliderHandleProps, SliderMarkDotProps, SliderMarkLabelProps, SliderMarkProps, SliderRadius, SliderSize } from "./index.js";
2
+ import { type Snippet } from "svelte";
3
+ export type Mark = {
4
+ value: number;
5
+ label?: string;
6
+ };
7
+ export declare class SliderContext {
8
+ #private;
9
+ onChange: ((value: number) => void) | undefined;
10
+ onChangeEnd: ((value: number) => void) | undefined;
11
+ handleRenderer: Snippet<[SliderHandleProps]>;
12
+ handleLabelRenderer: Snippet<[SliderHandleLabelProps]>;
13
+ handleLabelArrowRenderer: Snippet<[SliderHandleLabelArrowProps]>;
14
+ markRenderer: Snippet<[SliderMarkProps]>;
15
+ markDotRenderer: Snippet<[SliderMarkDotProps]>;
16
+ markLabelRenderer: Snippet<[SliderMarkLabelProps]>;
17
+ sliderEl: HTMLDivElement;
18
+ hovered: boolean;
19
+ clicked: boolean;
20
+ dragging: boolean;
21
+ focused: boolean;
22
+ constructor(getValue: () => number, setValue: (val: number) => void, min: () => number, max: () => number, step: () => number, marks: () => Mark[], disabled: () => boolean, label: (value: number) => string, labelAlwaysOn: () => boolean, inverted: () => boolean, restrictToMarks: () => boolean, color: () => SliderColor, size: () => SliderSize, radius: () => SliderRadius, onChange: ((value: number) => void) | undefined, onChangeEnd: ((value: number) => void) | undefined, handleRenderer: Snippet<[SliderHandleProps]>, handleLabelRenderer: Snippet<[SliderHandleLabelProps]>, handleLabelArrowRenderer: Snippet<[SliderHandleLabelArrowProps]>, markRenderer: Snippet<[SliderMarkProps]>, markDotRenderer: Snippet<[SliderMarkDotProps]>, markLabelRenderer: Snippet<[SliderMarkLabelProps]>);
23
+ get value(): number;
24
+ set value(value: number);
25
+ get min(): number;
26
+ get max(): number;
27
+ get step(): number;
28
+ get marks(): Mark[];
29
+ get disabled(): boolean;
30
+ get label(): string;
31
+ get labelAlwaysOn(): boolean;
32
+ get inverted(): boolean;
33
+ get restrictToMarks(): boolean;
34
+ get color(): SliderColor;
35
+ get size(): SliderSize;
36
+ get radius(): SliderRadius;
37
+ get position(): number;
38
+ get animated(): boolean;
39
+ clamp: (val: number, minVal: number, maxVal: number) => number;
40
+ getValueFromPosition: (position: number) => number;
41
+ getPositionFromValue: (val: number) => number;
42
+ pointerDown: (event: PointerEvent) => void;
43
+ pointerMove: (event: PointerEvent) => void;
44
+ pointerUp: (event: PointerEvent) => void;
45
+ keyDown: (event: KeyboardEvent) => void;
46
+ focus: () => void;
47
+ blur: () => void;
48
+ }
49
+ export declare function setSliderContext(state: SliderContext): SliderContext;
50
+ export declare function getSliderContext(): SliderContext;
@@ -0,0 +1,198 @@
1
+ import { Bindable } from "../bindable.svelte.js";
2
+ import { Shortcut } from "../shortcut/shortcut.js";
3
+ import { getContext, setContext } from "svelte";
4
+ export class SliderContext {
5
+ #value;
6
+ #min;
7
+ #max;
8
+ #step;
9
+ #marks;
10
+ #disabled;
11
+ #label;
12
+ #labelAlwaysOn;
13
+ #inverted;
14
+ #restrictToMarks;
15
+ #color;
16
+ #size;
17
+ #radius;
18
+ onChange;
19
+ onChangeEnd;
20
+ handleRenderer;
21
+ handleLabelRenderer;
22
+ handleLabelArrowRenderer;
23
+ markRenderer;
24
+ markDotRenderer;
25
+ markLabelRenderer;
26
+ sliderEl;
27
+ hovered = $state(false);
28
+ clicked = $state(false);
29
+ dragging = $state(false);
30
+ focused = $state(false);
31
+ constructor(getValue, setValue, min, max, step, marks, disabled, label, labelAlwaysOn, inverted, restrictToMarks, color, size, radius, onChange, onChangeEnd, handleRenderer, handleLabelRenderer, handleLabelArrowRenderer, markRenderer, markDotRenderer, markLabelRenderer) {
32
+ this.#value = new Bindable(getValue());
33
+ this.#value.bind(getValue, setValue);
34
+ this.#min = min;
35
+ this.#max = max;
36
+ this.#step = step;
37
+ this.#marks = marks;
38
+ this.#disabled = disabled;
39
+ this.#label = label;
40
+ this.#labelAlwaysOn = labelAlwaysOn;
41
+ this.#inverted = inverted;
42
+ this.#restrictToMarks = restrictToMarks;
43
+ this.#color = color;
44
+ this.#size = size;
45
+ this.#radius = radius;
46
+ this.onChange = onChange;
47
+ this.onChangeEnd = onChangeEnd;
48
+ this.handleRenderer = handleRenderer;
49
+ this.handleLabelRenderer = handleLabelRenderer;
50
+ this.handleLabelArrowRenderer = handleLabelArrowRenderer;
51
+ this.markRenderer = markRenderer;
52
+ this.markDotRenderer = markDotRenderer;
53
+ this.markLabelRenderer = markLabelRenderer;
54
+ }
55
+ get value() {
56
+ return this.#value.value;
57
+ }
58
+ set value(value) {
59
+ this.#value.value = this.clamp(value, this.min, this.max);
60
+ this.onChange?.(this.value);
61
+ }
62
+ get min() {
63
+ return this.#min();
64
+ }
65
+ get max() {
66
+ return this.#max();
67
+ }
68
+ get step() {
69
+ return this.#step();
70
+ }
71
+ get marks() {
72
+ return this.#marks();
73
+ }
74
+ get disabled() {
75
+ return this.#disabled();
76
+ }
77
+ get label() {
78
+ return this.#label(this.value);
79
+ }
80
+ get labelAlwaysOn() {
81
+ return this.#labelAlwaysOn();
82
+ }
83
+ get inverted() {
84
+ return this.#inverted();
85
+ }
86
+ get restrictToMarks() {
87
+ return this.#restrictToMarks();
88
+ }
89
+ get color() {
90
+ return this.#color();
91
+ }
92
+ get size() {
93
+ return this.#size();
94
+ }
95
+ get radius() {
96
+ return this.#radius();
97
+ }
98
+ get position() {
99
+ return this.getPositionFromValue(this.value);
100
+ }
101
+ get animated() {
102
+ return !this.dragging || this.restrictToMarks;
103
+ }
104
+ clamp = (val, minVal, maxVal) => {
105
+ return Math.min(Math.max(val, minVal), maxVal);
106
+ };
107
+ getValueFromPosition = (position) => {
108
+ const rect = this.sliderEl.getBoundingClientRect();
109
+ const percentage = this.clamp((position - rect.left) / rect.width, 0, 1);
110
+ const range = this.max - this.min;
111
+ let newValue = this.min + (this.inverted ? 1 - percentage : percentage) * range;
112
+ if (this.restrictToMarks && this.marks.length > 0) {
113
+ // Find closest mark
114
+ const closest = this.marks.reduce((prev, curr) => Math.abs(curr.value - newValue) < Math.abs(prev.value - newValue)
115
+ ? curr
116
+ : prev);
117
+ newValue = closest.value;
118
+ }
119
+ else {
120
+ // Round to step
121
+ newValue = Math.round(newValue / this.step) * this.step;
122
+ }
123
+ return this.clamp(newValue, this.min, this.max);
124
+ };
125
+ getPositionFromValue = (val) => {
126
+ const percentage = (val - this.min) / (this.max - this.min);
127
+ return this.inverted ? (1 - percentage) * 100 : percentage * 100;
128
+ };
129
+ pointerDown = (event) => {
130
+ if (this.disabled)
131
+ return;
132
+ this.clicked = true;
133
+ this.sliderEl.setPointerCapture(event.pointerId);
134
+ this.value = this.getValueFromPosition(event.clientX);
135
+ event.preventDefault();
136
+ event.stopImmediatePropagation();
137
+ };
138
+ pointerMove = (event) => {
139
+ if (this.disabled || !this.clicked)
140
+ return;
141
+ this.dragging = true;
142
+ this.value = this.getValueFromPosition(event.clientX);
143
+ event.preventDefault();
144
+ event.stopImmediatePropagation();
145
+ };
146
+ pointerUp = (event) => {
147
+ if (this.disabled || !this.clicked)
148
+ return;
149
+ this.dragging = false;
150
+ this.clicked = false;
151
+ this.sliderEl.releasePointerCapture(event.pointerId);
152
+ this.onChangeEnd?.(this.value);
153
+ event.preventDefault();
154
+ event.stopImmediatePropagation();
155
+ };
156
+ keyDown = (event) => {
157
+ if (this.disabled)
158
+ return;
159
+ if (Shortcut.ARROW_UP.matches(event) ||
160
+ Shortcut.ARROW_RIGHT.matches(event)) {
161
+ this.value = this.value + this.step;
162
+ event.preventDefault();
163
+ event.stopImmediatePropagation();
164
+ }
165
+ else if (Shortcut.ARROW_DOWN.matches(event) ||
166
+ Shortcut.ARROW_LEFT.matches(event)) {
167
+ this.value = this.value - this.step;
168
+ event.preventDefault();
169
+ event.stopImmediatePropagation();
170
+ }
171
+ else if (Shortcut.HOME.matches(event)) {
172
+ this.value = this.min;
173
+ event.preventDefault();
174
+ event.stopImmediatePropagation();
175
+ }
176
+ else if (Shortcut.END.matches(event)) {
177
+ this.value = this.max;
178
+ event.preventDefault();
179
+ event.stopImmediatePropagation();
180
+ }
181
+ this.onChangeEnd?.(this.value);
182
+ };
183
+ focus = () => {
184
+ this.focused = true;
185
+ };
186
+ blur = () => {
187
+ this.focused = false;
188
+ };
189
+ }
190
+ export function setSliderContext(state) {
191
+ return setContext(SliderContext, state);
192
+ }
193
+ export function getSliderContext() {
194
+ const ctx = getContext(SliderContext);
195
+ if (!ctx)
196
+ throw new Error("SliderContext is undefined");
197
+ return ctx;
198
+ }
@@ -0,0 +1,18 @@
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
+
6
+ export type SliderHandleLabelArrowProps = {} & ClassName &
7
+ HTMLAttributes<HTMLDivElement>;
8
+ let { class: className, ...restProps }: SliderHandleLabelArrowProps =
9
+ $props();
10
+ </script>
11
+
12
+ <div
13
+ class={twMerge(
14
+ "absolute top-full left-1/2 h-0 w-0 -translate-x-1/2 border-t-4 border-r-4 border-l-4 border-transparent border-t-m3-outline-variant",
15
+ className,
16
+ )}
17
+ {...restProps}
18
+ ></div>
@@ -0,0 +1,6 @@
1
+ import type { ClassName } from "../utils.js";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ export type SliderHandleLabelArrowProps = {} & ClassName & HTMLAttributes<HTMLDivElement>;
4
+ declare const SliderHandleLabelArrow: import("svelte").Component<SliderHandleLabelArrowProps, {}, "">;
5
+ type SliderHandleLabelArrow = ReturnType<typeof SliderHandleLabelArrow>;
6
+ export default SliderHandleLabelArrow;
@@ -0,0 +1,35 @@
1
+ <script lang="ts">
2
+ import { getSliderContext } from "./index.js";
3
+ import type { ClassName } from "../utils.js";
4
+ import type { HTMLAttributes } from "svelte/elements";
5
+ import { twMerge } from "tailwind-merge";
6
+
7
+ export type SliderHandleLabelProps = {} & ClassName &
8
+ HTMLAttributes<HTMLDivElement>;
9
+ let { class: className, ...restProps }: SliderHandleLabelProps = $props();
10
+
11
+ const ctx = getSliderContext();
12
+
13
+ const showLabel = $derived(
14
+ !ctx.disabled &&
15
+ (ctx.labelAlwaysOn ||
16
+ ctx.clicked ||
17
+ ctx.hovered ||
18
+ ctx.dragging ||
19
+ ctx.focused),
20
+ );
21
+ </script>
22
+
23
+ {#if showLabel}
24
+ <div
25
+ role="tooltip"
26
+ class={twMerge(
27
+ "pointer-events-none absolute bottom-full left-1/2 mb-1 -translate-x-1/2 rounded-md border border-m3-outline-variant bg-m3-surface-container px-2 py-1 text-xs whitespace-nowrap text-m3-on-surface shadow-sm transition-opacity duration-200",
28
+ className,
29
+ )}
30
+ {...restProps}
31
+ >
32
+ {ctx.label}
33
+ {@render ctx.handleLabelArrowRenderer({})}
34
+ </div>
35
+ {/if}
@@ -0,0 +1,6 @@
1
+ import type { ClassName } from "../utils.js";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ export type SliderHandleLabelProps = {} & ClassName & HTMLAttributes<HTMLDivElement>;
4
+ declare const SliderHandleLabel: import("svelte").Component<SliderHandleLabelProps, {}, "">;
5
+ type SliderHandleLabel = ReturnType<typeof SliderHandleLabel>;
6
+ export default SliderHandleLabel;