svelora 3.0.1 → 3.0.2

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 (107) hide show
  1. package/dist/Accordion/Accordion.svelte +66 -97
  2. package/dist/Alert/Alert.svelte +39 -64
  3. package/dist/Alert/Alert.svelte.d.ts +1 -1
  4. package/dist/Avatar/Avatar.svelte +35 -75
  5. package/dist/AvatarGroup/AvatarGroup.svelte +38 -55
  6. package/dist/Badge/Badge.svelte +28 -50
  7. package/dist/Banner/Banner.svelte +46 -41
  8. package/dist/Banner/Banner.svelte.d.ts +1 -1
  9. package/dist/Breadcrumb/Breadcrumb.svelte +32 -26
  10. package/dist/Button/Button.svelte +70 -138
  11. package/dist/Calendar/Calendar.svelte +94 -157
  12. package/dist/Calendar/Calendar.svelte.d.ts +1 -1
  13. package/dist/Card/Card.svelte +18 -31
  14. package/dist/Carousel/Carousel.svelte +118 -173
  15. package/dist/Checkbox/Checkbox.svelte +52 -97
  16. package/dist/CheckboxGroup/CheckboxGroup.svelte +62 -107
  17. package/dist/CheckboxGroup/CheckboxGroup.svelte.d.ts +1 -1
  18. package/dist/Chip/Chip.svelte +22 -34
  19. package/dist/CodeBlock/CodeBlock.svelte +42 -59
  20. package/dist/Collapsible/Collapsible.svelte +22 -38
  21. package/dist/Collapsible/Collapsible.svelte.d.ts +1 -1
  22. package/dist/Collapsible/CollapsibleTestWrapper.svelte +2 -5
  23. package/dist/Collapsible/CollapsibleTestWrapper.svelte.d.ts +1 -1
  24. package/dist/Command/Command.svelte +40 -77
  25. package/dist/Command/Command.svelte.d.ts +1 -1
  26. package/dist/Command/CommandTestWrapper.svelte +2 -10
  27. package/dist/Command/CommandTestWrapper.svelte.d.ts +1 -1
  28. package/dist/Container/Container.svelte +11 -14
  29. package/dist/ContextMenu/ContextMenu.svelte +51 -114
  30. package/dist/ContextMenu/ContextMenu.svelte.d.ts +1 -1
  31. package/dist/Drawer/Drawer.svelte +72 -110
  32. package/dist/Drawer/DrawerTriggerTestWrapper.svelte +1 -2
  33. package/dist/DropdownMenu/DropdownMenu.svelte +63 -124
  34. package/dist/DropdownMenu/DropdownMenu.svelte.d.ts +1 -1
  35. package/dist/DropdownMenu/DropdownMenuTriggerTestWrapper.svelte +2 -5
  36. package/dist/Editor/Editor.svelte +441 -576
  37. package/dist/Editor/Editor.svelte.d.ts +1 -1
  38. package/dist/Editor/EditorUrlPrompt.svelte +40 -53
  39. package/dist/Editor/SlashPopup.svelte +12 -24
  40. package/dist/Empty/Empty.svelte +32 -63
  41. package/dist/FieldGroup/FieldGroup.svelte +23 -38
  42. package/dist/FileUpload/FileUpload.svelte +242 -320
  43. package/dist/FileUpload/FileUpload.svelte.d.ts +1 -1
  44. package/dist/Fonts/Fonts.svelte +15 -37
  45. package/dist/Form/Form.svelte +112 -170
  46. package/dist/FormField/FormField.svelte +102 -135
  47. package/dist/Icon/Icon.svelte +7 -32
  48. package/dist/Input/Input.svelte +71 -141
  49. package/dist/Input/Input.svelte.d.ts +2 -2
  50. package/dist/Kbd/Kbd.svelte +18 -34
  51. package/dist/Link/Link.svelte +129 -196
  52. package/dist/LocaleButton/LocaleButton.svelte +165 -0
  53. package/dist/LocaleButton/LocaleButton.svelte.d.ts +5 -0
  54. package/dist/LocaleButton/index.d.ts +2 -0
  55. package/dist/LocaleButton/index.js +1 -0
  56. package/dist/LocaleButton/locale-button.types.d.ts +182 -0
  57. package/dist/LocaleButton/locale-button.types.js +1 -0
  58. package/dist/LocaleButton/locale-button.variants.d.ts +61 -0
  59. package/dist/LocaleButton/locale-button.variants.js +34 -0
  60. package/dist/Modal/Modal.svelte +52 -106
  61. package/dist/Modal/ModalTriggerTestWrapper.svelte +1 -2
  62. package/dist/Pagination/Pagination.svelte +48 -92
  63. package/dist/Pagination/pagination.variants.d.ts +1 -1
  64. package/dist/PinInput/PinInput.svelte +57 -111
  65. package/dist/PinInput/PinInput.svelte.d.ts +1 -1
  66. package/dist/Popover/Popover.svelte +28 -61
  67. package/dist/Popover/Popover.svelte.d.ts +1 -1
  68. package/dist/Progress/Progress.svelte +75 -94
  69. package/dist/RadioGroup/RadioGroup.svelte +54 -99
  70. package/dist/RadioGroup/RadioGroup.svelte.d.ts +1 -1
  71. package/dist/Select/Select.svelte +112 -269
  72. package/dist/Select/Select.svelte.d.ts +1 -1
  73. package/dist/SelectMenu/SelectMenu.svelte +211 -409
  74. package/dist/SelectMenu/SelectMenu.svelte.d.ts +1 -1
  75. package/dist/SelectMenu/SelectMenuFormFieldTestWrapper.svelte +3 -6
  76. package/dist/Separator/Separator.svelte +29 -44
  77. package/dist/Skeleton/Skeleton.svelte +11 -23
  78. package/dist/Slideover/Slideover.svelte +52 -106
  79. package/dist/Slideover/SlideoverTriggerTestWrapper.svelte +1 -2
  80. package/dist/Slider/Slider.svelte +48 -84
  81. package/dist/Slider/Slider.svelte.d.ts +1 -1
  82. package/dist/Stepper/Stepper.svelte +139 -132
  83. package/dist/Stepper/Stepper.svelte.d.ts +1 -1
  84. package/dist/Switch/Switch.svelte +62 -98
  85. package/dist/Table/Table.svelte +232 -283
  86. package/dist/Table/table.variants.d.ts +1 -1
  87. package/dist/Tabs/Tabs.svelte +96 -129
  88. package/dist/Tabs/Tabs.svelte.d.ts +1 -1
  89. package/dist/Textarea/Textarea.svelte +90 -173
  90. package/dist/Textarea/Textarea.svelte.d.ts +1 -1
  91. package/dist/ThemeModeButton/ThemeModeButton.svelte +16 -38
  92. package/dist/Timeline/Timeline.svelte +75 -54
  93. package/dist/Toast/Toaster.svelte +8 -25
  94. package/dist/Tooltip/Tooltip.svelte +34 -66
  95. package/dist/Tooltip/Tooltip.svelte.d.ts +1 -1
  96. package/dist/Tooltip/TooltipTestWrapper.svelte +2 -5
  97. package/dist/User/User.svelte +33 -49
  98. package/dist/docs/navigation.js +6 -0
  99. package/dist/hooks/HookContextProbe.svelte +2 -4
  100. package/dist/hooks/HookContextProvider.svelte +8 -6
  101. package/dist/hooks/HookEmitProbe.svelte +8 -11
  102. package/dist/i18n.d.ts +2 -0
  103. package/dist/i18n.js +19 -0
  104. package/dist/index.d.ts +1 -0
  105. package/dist/index.js +1 -0
  106. package/dist/mcp/svelora-docs.data.json +4 -2
  107. package/package.json +16 -8
@@ -1,9 +1,6 @@
1
- <script lang="ts">import FormField from '../FormField/FormField.svelte';
2
- import SelectMenu from './SelectMenu.svelte';
3
- import type { SelectMenuItemType } from './select-menu.types.js';
4
- let { items = [] }: {
5
- items?: SelectMenuItemType[];
6
- } = $props();
1
+ <script lang="ts">import FormField from "../FormField/FormField.svelte";
2
+ import SelectMenu from "./SelectMenu.svelte";
3
+ let { items = [] } = $props();
7
4
  </script>
8
5
 
9
6
  <FormField name="fruit" label="Fruit">
@@ -1,49 +1,34 @@
1
- <script lang="ts" module>
2
- import type { SeparatorProps } from './separator.types.js'
3
-
4
- export type Props = SeparatorProps
1
+ <script lang="ts" module>export {};
5
2
  </script>
6
3
 
7
- <script lang="ts">
8
- import { Separator } from 'bits-ui'
9
- import Avatar from '../Avatar/Avatar.svelte'
10
- import type { AvatarSize } from '../Avatar/avatar.types.js'
11
- import { getComponentConfig } from '../config.js'
12
- import Icon from '../Icon/Icon.svelte'
13
- import { separatorDefaults, separatorVariants } from './separator.variants.js'
14
-
15
- const config = getComponentConfig('separator', separatorDefaults)
16
-
17
- let {
18
- ref = $bindable(null),
19
- ui,
20
- label,
21
- icon,
22
- avatar,
23
- color = config.defaultVariants.color,
24
- size = config.defaultVariants.size,
25
- type = config.defaultVariants.type,
26
- orientation = config.defaultVariants.orientation,
27
- position = config.defaultVariants.position,
28
- decorative = false,
29
- class: className,
30
- content,
31
- ...restProps
32
- }: Props = $props()
33
-
34
- const hasContent = $derived(!!label || !!icon || !!avatar || !!content)
35
-
36
- const classes = $derived.by(() => {
37
- const slots = separatorVariants({ color, size, type, orientation })
38
- return {
39
- root: slots.root({ class: [config.slots.root, className, ui?.root] }),
40
- border: slots.border({ class: [config.slots.border, ui?.border] }),
41
- container: slots.container({ class: [config.slots.container, ui?.container] }),
42
- icon: slots.icon({ class: [config.slots.icon, ui?.icon] }),
43
- avatar: slots.avatar({ class: [config.slots.avatar, ui?.avatar] }),
44
- label: slots.label({ class: [config.slots.label, ui?.label] })
45
- }
46
- })
4
+ <script lang="ts">import { Separator } from "bits-ui";
5
+ import Avatar from "../Avatar/Avatar.svelte";
6
+ import { getComponentConfig } from "../config.js";
7
+ import Icon from "../Icon/Icon.svelte";
8
+ import { separatorDefaults, separatorVariants } from "./separator.variants.js";
9
+ const config = getComponentConfig("separator", separatorDefaults);
10
+ let { ref = $bindable(null), ui, label, icon, avatar, color = config.defaultVariants.color, size = config.defaultVariants.size, type = config.defaultVariants.type, orientation = config.defaultVariants.orientation, position = config.defaultVariants.position, decorative = false, class: className, content, ...restProps } = $props();
11
+ const hasContent = $derived(!!label || !!icon || !!avatar || !!content);
12
+ const classes = $derived.by(() => {
13
+ const slots = separatorVariants({
14
+ color,
15
+ size,
16
+ type,
17
+ orientation
18
+ });
19
+ return {
20
+ root: slots.root({ class: [
21
+ config.slots.root,
22
+ className,
23
+ ui?.root
24
+ ] }),
25
+ border: slots.border({ class: [config.slots.border, ui?.border] }),
26
+ container: slots.container({ class: [config.slots.container, ui?.container] }),
27
+ icon: slots.icon({ class: [config.slots.icon, ui?.icon] }),
28
+ avatar: slots.avatar({ class: [config.slots.avatar, ui?.avatar] }),
29
+ label: slots.label({ class: [config.slots.label, ui?.label] })
30
+ };
31
+ });
47
32
  </script>
48
33
 
49
34
  <Separator.Root bind:ref class={classes.root} {orientation} {decorative} {...restProps}>
@@ -1,28 +1,16 @@
1
- <script lang="ts" module>
2
- import type { SkeletonProps } from './skeleton.types.js'
3
-
4
- export type Props = SkeletonProps
1
+ <script lang="ts" module>export {};
5
2
  </script>
6
3
 
7
- <script lang="ts">
8
- import { getComponentConfig } from '../config.js'
9
- import { skeletonDefaults, skeletonVariants } from './skeleton.variants.js'
10
-
11
- const config = getComponentConfig('skeleton', skeletonDefaults)
12
-
13
- let {
14
- ref = $bindable(null),
15
- as = 'div',
16
- ui,
17
- class: className,
18
- children,
19
- ...restProps
20
- }: Props = $props()
21
-
22
- const slots = skeletonVariants()
23
- const classes = $derived({
24
- root: slots.root({ class: [config.slots.root, className, ui?.root] })
25
- })
4
+ <script lang="ts">import { getComponentConfig } from "../config.js";
5
+ import { skeletonDefaults, skeletonVariants } from "./skeleton.variants.js";
6
+ const config = getComponentConfig("skeleton", skeletonDefaults);
7
+ let { ref = $bindable(null), as = "div", ui, class: className, children, ...restProps } = $props();
8
+ const slots = skeletonVariants();
9
+ const classes = $derived({ root: slots.root({ class: [
10
+ config.slots.root,
11
+ className,
12
+ ui?.root
13
+ ] }) });
26
14
  </script>
27
15
 
28
16
  <svelte:element
@@ -1,111 +1,57 @@
1
- <script lang="ts" module>
2
- import type { SlideoverProps } from './slideover.types.js'
3
-
4
- export type Props = SlideoverProps
1
+ <script lang="ts" module>export {};
5
2
  </script>
6
3
 
7
- <script lang="ts">
8
- import { Dialog } from 'bits-ui'
9
- import Button from '../Button/Button.svelte'
10
- import { getComponentConfig } from '../config.js'
11
- import { slideoverDefaults, slideoverVariants } from './slideover.variants.js'
12
-
13
- const config = getComponentConfig('slideover', slideoverDefaults)
14
-
15
- let {
16
- open = $bindable(false),
17
- onOpenChange,
18
- onOpenChangeComplete,
19
- trapFocus = true,
20
- preventScroll = true,
21
- onOpenAutoFocus,
22
- onCloseAutoFocus,
23
- onEscapeKeydown,
24
- onInteractOutside,
25
- forceMount,
26
- restoreScrollDelay,
27
- title,
28
- description,
29
- side = config.defaultVariants.side ?? 'right',
30
- overlay: showOverlay = config.defaultVariants.overlay ?? true,
31
- transition = config.defaultVariants.transition ?? 'slide',
32
- size = config.defaultVariants.size ?? 'md',
33
- inset = config.defaultVariants.inset ?? false,
34
- portal = true,
35
- close: closeProp = true,
36
- dismissible = true,
37
- ui,
38
- class: className,
39
- children,
40
- content: contentSlot,
41
- header: headerSlot,
42
- titleSlot,
43
- descriptionSlot,
44
- actions: actionsSlot,
45
- body: bodySlot,
46
- footer: footerSlot,
47
- closeSlot
48
- }: Props = $props()
49
-
50
- const showClose = $derived(!!closeProp)
51
- const closeProps = $derived(typeof closeProp === 'object' ? closeProp : {})
52
-
53
- const hasTitle = $derived(!!title || !!titleSlot)
54
- const hasDescription = $derived(!!description || !!descriptionSlot)
55
- const hasHeading = $derived(hasTitle || hasDescription)
56
- const hasHeader = $derived(
57
- !!headerSlot || hasHeading || !!actionsSlot || showClose || !!closeSlot
58
- )
59
-
60
- const resolvedTransition = $derived(
61
- transition === false ? 'none' : transition === true ? 'slide' : transition
62
- )
63
-
64
- const variantSlots = $derived(
65
- slideoverVariants({
66
- transition: resolvedTransition,
67
- side,
68
- size,
69
- inset,
70
- overlay: showOverlay
71
- })
72
- )
73
-
74
- const classes = $derived({
75
- overlay: variantSlots.overlay({ class: [config.slots.overlay, ui?.overlay] }),
76
- content: variantSlots.content({ class: [config.slots.content, ui?.content] }),
77
- header: variantSlots.header({ class: [config.slots.header, ui?.header] }),
78
- wrapper: variantSlots.wrapper({ class: [config.slots.wrapper, ui?.wrapper] }),
79
- title: variantSlots.title({ class: [config.slots.title, ui?.title] }),
80
- description: variantSlots.description({
81
- class: [config.slots.description, ui?.description]
82
- }),
83
- actions: variantSlots.actions({ class: [config.slots.actions, ui?.actions] }),
84
- body: variantSlots.body({ class: [config.slots.body, ui?.body] }),
85
- footer: variantSlots.footer({ class: [config.slots.footer, ui?.footer] }),
86
- close: variantSlots.close({ class: [config.slots.close, ui?.close] })
87
- })
88
-
89
- const contentProps = $derived.by(() => {
90
- const behavior = dismissible ? ('close' as const) : ('ignore' as const)
91
- return {
92
- trapFocus,
93
- preventScroll,
94
- escapeKeydownBehavior: behavior,
95
- interactOutsideBehavior: behavior,
96
- onOpenAutoFocus,
97
- onCloseAutoFocus,
98
- onEscapeKeydown,
99
- onInteractOutside,
100
- forceMount,
101
- restoreScrollDelay
102
- }
103
- })
104
-
105
- function handleOpenChange(value: boolean) {
106
- open = value
107
- onOpenChange?.(value)
108
- }
4
+ <script lang="ts">import { Dialog } from "bits-ui";
5
+ import Button from "../Button/Button.svelte";
6
+ import { getComponentConfig } from "../config.js";
7
+ import { slideoverDefaults, slideoverVariants } from "./slideover.variants.js";
8
+ const config = getComponentConfig("slideover", slideoverDefaults);
9
+ let { open = $bindable(false), onOpenChange, onOpenChangeComplete, trapFocus = true, preventScroll = true, onOpenAutoFocus, onCloseAutoFocus, onEscapeKeydown, onInteractOutside, forceMount, restoreScrollDelay, title, description, side = config.defaultVariants.side ?? "right", overlay: showOverlay = config.defaultVariants.overlay ?? true, transition = config.defaultVariants.transition ?? "slide", size = config.defaultVariants.size ?? "md", inset = config.defaultVariants.inset ?? false, portal = true, close: closeProp = true, dismissible = true, ui, class: className, children, content: contentSlot, header: headerSlot, titleSlot, descriptionSlot, actions: actionsSlot, body: bodySlot, footer: footerSlot, closeSlot } = $props();
10
+ const showClose = $derived(!!closeProp);
11
+ const closeProps = $derived(typeof closeProp === "object" ? closeProp : {});
12
+ const hasTitle = $derived(!!title || !!titleSlot);
13
+ const hasDescription = $derived(!!description || !!descriptionSlot);
14
+ const hasHeading = $derived(hasTitle || hasDescription);
15
+ const hasHeader = $derived(!!headerSlot || hasHeading || !!actionsSlot || showClose || !!closeSlot);
16
+ const resolvedTransition = $derived(transition === false ? "none" : transition === true ? "slide" : transition);
17
+ const variantSlots = $derived(slideoverVariants({
18
+ transition: resolvedTransition,
19
+ side,
20
+ size,
21
+ inset,
22
+ overlay: showOverlay
23
+ }));
24
+ const classes = $derived({
25
+ overlay: variantSlots.overlay({ class: [config.slots.overlay, ui?.overlay] }),
26
+ content: variantSlots.content({ class: [config.slots.content, ui?.content] }),
27
+ header: variantSlots.header({ class: [config.slots.header, ui?.header] }),
28
+ wrapper: variantSlots.wrapper({ class: [config.slots.wrapper, ui?.wrapper] }),
29
+ title: variantSlots.title({ class: [config.slots.title, ui?.title] }),
30
+ description: variantSlots.description({ class: [config.slots.description, ui?.description] }),
31
+ actions: variantSlots.actions({ class: [config.slots.actions, ui?.actions] }),
32
+ body: variantSlots.body({ class: [config.slots.body, ui?.body] }),
33
+ footer: variantSlots.footer({ class: [config.slots.footer, ui?.footer] }),
34
+ close: variantSlots.close({ class: [config.slots.close, ui?.close] })
35
+ });
36
+ const contentProps = $derived.by(() => {
37
+ const behavior = dismissible ? "close" : "ignore";
38
+ return {
39
+ trapFocus,
40
+ preventScroll,
41
+ escapeKeydownBehavior: behavior,
42
+ interactOutsideBehavior: behavior,
43
+ onOpenAutoFocus,
44
+ onCloseAutoFocus,
45
+ onEscapeKeydown,
46
+ onInteractOutside,
47
+ forceMount,
48
+ restoreScrollDelay
49
+ };
50
+ });
51
+ function handleOpenChange(value) {
52
+ open = value;
53
+ onOpenChange?.(value);
54
+ }
109
55
  </script>
110
56
 
111
57
  {#snippet titleEl()}
@@ -1,5 +1,4 @@
1
- <script lang="ts">
2
- import Slideover from './Slideover.svelte'
1
+ <script lang="ts">import Slideover from "./Slideover.svelte";
3
2
  </script>
4
3
 
5
4
  <Slideover title="Trigger test" description="D">
@@ -1,89 +1,53 @@
1
- <script lang="ts" module>
2
- import type { SliderProps } from './slider.types.js'
3
-
4
- export type Props = SliderProps
1
+ <script lang="ts" module>export {};
5
2
  </script>
6
3
 
7
- <script lang="ts">
8
- import { Slider, useId } from 'bits-ui'
9
- import { getComponentConfig } from '../config.js'
10
- import { useFormField, useFormFieldEmit } from '../hooks/useFormField.svelte.js'
11
- import { sliderDefaults, sliderVariants } from './slider.variants.js'
12
-
13
- const config = getComponentConfig('slider', sliderDefaults)
14
-
15
- let {
16
- ref = $bindable(null),
17
- id,
18
- value = $bindable(0),
19
- onValueChange,
20
- onValueCommit,
21
- min = 0,
22
- max = 100,
23
- step = 1,
24
- orientation = config.defaultVariants.orientation,
25
- disabled = false,
26
- autoSort = true,
27
- dir,
28
- thumbPositioning,
29
- trackPadding,
30
- color = config.defaultVariants.color,
31
- size,
32
- tooltip = false,
33
- name,
34
- class: className,
35
- ui,
36
- ...restProps
37
- }: Props = $props()
38
-
39
- const formFieldContext = useFormField()
40
- const emit = useFormFieldEmit()
41
-
42
- const autoId = useId()
43
- const hasError = $derived(
44
- formFieldContext?.error !== undefined && formFieldContext?.error !== false
45
- )
46
- const resolvedId = $derived(id ?? formFieldContext?.ariaId ?? autoId)
47
- const resolvedName = $derived(name ?? formFieldContext?.name)
48
- const resolvedSize = $derived(size ?? formFieldContext?.size ?? config.defaultVariants.size)
49
- const resolvedColor = $derived(hasError ? 'error' : color)
50
- const ariaDescribedBy = $derived(
51
- !formFieldContext
52
- ? undefined
53
- : hasError
54
- ? `${formFieldContext.ariaId}-error`
55
- : `${formFieldContext.ariaId}-description ${formFieldContext.ariaId}-help`
56
- )
57
-
58
- const asArray = $derived(Array.isArray(value) ? value : [value ?? min])
59
- const isMultiple = $derived(Array.isArray(value))
60
-
61
- function handleValueChange(v: number[]) {
62
- value = isMultiple ? v : (v[0] ?? min)
63
- emit.onInput()
64
- onValueChange?.(value)
65
- }
66
-
67
- function handleValueCommit(v: number[]) {
68
- emit.onChange()
69
- onValueCommit?.(isMultiple ? v : (v[0] ?? min))
70
- }
71
-
72
- const slots = $derived(
73
- sliderVariants({ color: resolvedColor, size: resolvedSize, orientation, disabled })
74
- )
75
-
76
- const classes = $derived.by(() => {
77
- const u = ui ?? {}
78
- return {
79
- root: slots.root({ class: [config.slots.root, className, u.root] }),
80
- base: slots.base({ class: [config.slots.base, u.base] }),
81
- track: slots.track({ class: [config.slots.track, u.track] }),
82
- range: slots.range({ class: [config.slots.range, u.range] }),
83
- thumb: slots.thumb({ class: [config.slots.thumb, u.thumb] }),
84
- tooltip: slots.tooltip({ class: [config.slots.tooltip, u.tooltip] })
85
- }
86
- })
4
+ <script lang="ts">import { Slider, useId } from "bits-ui";
5
+ import { getComponentConfig } from "../config.js";
6
+ import { useFormField, useFormFieldEmit } from "../hooks/useFormField.svelte.js";
7
+ import { sliderDefaults, sliderVariants } from "./slider.variants.js";
8
+ const config = getComponentConfig("slider", sliderDefaults);
9
+ let { ref = $bindable(null), id, value = $bindable(0), onValueChange, onValueCommit, min = 0, max = 100, step = 1, orientation = config.defaultVariants.orientation, disabled = false, autoSort = true, dir, thumbPositioning, trackPadding, color = config.defaultVariants.color, size, tooltip = false, name, class: className, ui, ...restProps } = $props();
10
+ const formFieldContext = useFormField();
11
+ const emit = useFormFieldEmit();
12
+ const autoId = useId();
13
+ const hasError = $derived(formFieldContext?.error !== undefined && formFieldContext?.error !== false);
14
+ const resolvedId = $derived(id ?? formFieldContext?.ariaId ?? autoId);
15
+ const resolvedName = $derived(name ?? formFieldContext?.name);
16
+ const resolvedSize = $derived(size ?? formFieldContext?.size ?? config.defaultVariants.size);
17
+ const resolvedColor = $derived(hasError ? "error" : color);
18
+ const ariaDescribedBy = $derived(!formFieldContext ? undefined : hasError ? `${formFieldContext.ariaId}-error` : `${formFieldContext.ariaId}-description ${formFieldContext.ariaId}-help`);
19
+ const asArray = $derived(Array.isArray(value) ? value : [value ?? min]);
20
+ const isMultiple = $derived(Array.isArray(value));
21
+ function handleValueChange(v) {
22
+ value = isMultiple ? v : v[0] ?? min;
23
+ emit.onInput();
24
+ onValueChange?.(value);
25
+ }
26
+ function handleValueCommit(v) {
27
+ emit.onChange();
28
+ onValueCommit?.(isMultiple ? v : v[0] ?? min);
29
+ }
30
+ const slots = $derived(sliderVariants({
31
+ color: resolvedColor,
32
+ size: resolvedSize,
33
+ orientation,
34
+ disabled
35
+ }));
36
+ const classes = $derived.by(() => {
37
+ const u = ui ?? {};
38
+ return {
39
+ root: slots.root({ class: [
40
+ config.slots.root,
41
+ className,
42
+ u.root
43
+ ] }),
44
+ base: slots.base({ class: [config.slots.base, u.base] }),
45
+ track: slots.track({ class: [config.slots.track, u.track] }),
46
+ range: slots.range({ class: [config.slots.range, u.range] }),
47
+ thumb: slots.thumb({ class: [config.slots.thumb, u.thumb] }),
48
+ tooltip: slots.tooltip({ class: [config.slots.tooltip, u.tooltip] })
49
+ };
50
+ });
87
51
  </script>
88
52
 
89
53
  <div bind:this={ref} class={classes.root} {...restProps}>
@@ -1,6 +1,6 @@
1
1
  import type { SliderProps } from './slider.types.js';
2
2
  export type Props = SliderProps;
3
3
  import { Slider } from 'bits-ui';
4
- declare const Slider: import("svelte").Component<SliderProps, {}, "value" | "ref">;
4
+ declare const Slider: import("svelte").Component<SliderProps, {}, "ref" | "value">;
5
5
  type Slider = ReturnType<typeof Slider>;
6
6
  export default Slider;