@widgetic/design-system 0.5.21 → 0.5.23

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 (246) hide show
  1. package/README.md +2 -0
  2. package/dist/components/CopyableHeader.svelte +260 -448
  3. package/dist/components/CopyableHeader.svelte.d.ts +8 -5
  4. package/dist/components/EmptyState.svelte +100 -128
  5. package/dist/components/EmptyState.svelte.d.ts +16 -19
  6. package/dist/components/GenerateLoader.svelte +17 -10
  7. package/dist/components/PasswordInput.svelte +41 -44
  8. package/dist/components/PasswordInput.svelte.d.ts +2 -0
  9. package/dist/components/ThumbHashImage.svelte +117 -119
  10. package/dist/components/WScrollArea.svelte +47 -41
  11. package/dist/components/chat/ActivityRow.svelte +115 -0
  12. package/dist/components/chat/ActivityRow.svelte.d.ts +18 -0
  13. package/dist/components/chat/ChatHeader.svelte +114 -0
  14. package/dist/components/chat/ChatHeader.svelte.d.ts +26 -0
  15. package/dist/components/chat/Composer.svelte +172 -0
  16. package/dist/components/chat/Composer.svelte.d.ts +27 -0
  17. package/dist/components/chat/Message.svelte +158 -0
  18. package/dist/components/chat/Message.svelte.d.ts +28 -0
  19. package/dist/components/chat/OptionRow.svelte +59 -0
  20. package/dist/components/chat/OptionRow.svelte.d.ts +14 -0
  21. package/dist/components/chat/PlanCard.svelte +220 -0
  22. package/dist/components/chat/PlanCard.svelte.d.ts +34 -0
  23. package/dist/components/chat/QuestionCard.svelte +265 -0
  24. package/dist/components/chat/QuestionCard.svelte.d.ts +38 -0
  25. package/dist/components/chat/ScrollToBottom.svelte +51 -0
  26. package/dist/components/chat/ScrollToBottom.svelte.d.ts +11 -0
  27. package/dist/components/chat/SuggestionCard.svelte +79 -0
  28. package/dist/components/chat/SuggestionCard.svelte.d.ts +20 -0
  29. package/dist/components/chat/TaskRow.svelte +59 -0
  30. package/dist/components/chat/TaskRow.svelte.d.ts +11 -0
  31. package/dist/components/chat/composerLogic.d.ts +16 -0
  32. package/dist/components/chat/composerLogic.js +29 -0
  33. package/dist/components/chat/index.d.ts +16 -0
  34. package/dist/components/chat/index.js +16 -0
  35. package/dist/components/chat/questionCardLogic.d.ts +11 -0
  36. package/dist/components/chat/questionCardLogic.js +39 -0
  37. package/dist/components/index.d.ts +10 -1
  38. package/dist/components/index.js +10 -0
  39. package/dist/components/modals/ActionModal.svelte +186 -180
  40. package/dist/components/modals/BaseModal.svelte +404 -395
  41. package/dist/components/modals/BaseModal.svelte.d.ts +3 -0
  42. package/dist/components/modals/NewItemDialog.svelte +200 -243
  43. package/dist/components/modals/Portal.svelte +107 -105
  44. package/dist/components/modals/README.md +16 -2
  45. package/dist/components/modals/RenameDialog.svelte +234 -292
  46. package/dist/components/navigation/Breadcrumbs.svelte +415 -377
  47. package/dist/components/navigation/Breadcrumbs.svelte.d.ts +3 -2
  48. package/dist/components/navigation/types.d.ts +2 -0
  49. package/dist/components/pdf/PDFViewer.svelte +54 -1
  50. package/dist/components/search-input/SearchInput.svelte +51 -104
  51. package/dist/components/search-input/SearchInput.svelte.d.ts +9 -27
  52. package/dist/components/shad-editor/editor.css +1 -1
  53. package/dist/components/shad-editor/i18n/messages.d.ts +1 -1
  54. package/dist/components/shad-editor/i18n/messages.js +1 -1
  55. package/dist/components/shell/AppShell.svelte +52 -0
  56. package/dist/components/shell/AppShell.svelte.d.ts +13 -0
  57. package/dist/components/shell/Banner.svelte +90 -0
  58. package/dist/components/shell/Banner.svelte.d.ts +61 -0
  59. package/dist/components/shell/ErrorState.svelte +60 -0
  60. package/dist/components/shell/ErrorState.svelte.d.ts +13 -0
  61. package/dist/components/shell/Link.svelte +63 -0
  62. package/dist/components/shell/Link.svelte.d.ts +53 -0
  63. package/dist/components/shell/NavDrawer.svelte +117 -0
  64. package/dist/components/shell/NavDrawer.svelte.d.ts +10 -0
  65. package/dist/components/shell/NavRow.svelte +128 -0
  66. package/dist/components/shell/NavRow.svelte.d.ts +65 -0
  67. package/dist/components/shell/NavSectionLabel.svelte +27 -0
  68. package/dist/components/shell/NavSectionLabel.svelte.d.ts +9 -0
  69. package/dist/components/shell/NotificationRow.svelte +76 -0
  70. package/dist/components/shell/NotificationRow.svelte.d.ts +16 -0
  71. package/dist/components/shell/PageHeader.svelte +42 -0
  72. package/dist/components/shell/PageHeader.svelte.d.ts +12 -0
  73. package/dist/components/shell/ProfileRow.svelte +95 -0
  74. package/dist/components/shell/ProfileRow.svelte.d.ts +54 -0
  75. package/dist/components/shell/SettingsDialog.svelte +118 -0
  76. package/dist/components/shell/SettingsDialog.svelte.d.ts +19 -0
  77. package/dist/components/shell/SettingsNav.svelte +46 -0
  78. package/dist/components/shell/SettingsNav.svelte.d.ts +11 -0
  79. package/dist/components/shell/Sidebar.svelte +82 -0
  80. package/dist/components/shell/Sidebar.svelte.d.ts +25 -0
  81. package/dist/components/shell/Stat.svelte +63 -0
  82. package/dist/components/shell/Stat.svelte.d.ts +58 -0
  83. package/dist/components/shell/TopBar.svelte +37 -0
  84. package/dist/components/shell/TopBar.svelte.d.ts +11 -0
  85. package/dist/components/shell/WidgetRow.svelte +126 -0
  86. package/dist/components/shell/WidgetRow.svelte.d.ts +78 -0
  87. package/dist/components/shell/error-state-messages.d.ts +7 -0
  88. package/dist/components/shell/error-state-messages.js +9 -0
  89. package/dist/components/shell/index.d.ts +22 -0
  90. package/dist/components/shell/index.js +25 -0
  91. package/dist/components/shell/link-external.d.ts +2 -0
  92. package/dist/components/shell/link-external.js +7 -0
  93. package/dist/components/shell/messages.d.ts +7 -0
  94. package/dist/components/shell/messages.js +5 -0
  95. package/dist/components/shell/settings-nav-types.d.ts +12 -0
  96. package/dist/components/shell/settings-nav-types.js +3 -0
  97. package/dist/components/shell/shell-utils.d.ts +7 -0
  98. package/dist/components/shell/shell-utils.js +27 -0
  99. package/dist/components/shell/stat-tone.d.ts +3 -0
  100. package/dist/components/shell/stat-tone.js +11 -0
  101. package/dist/components/toast/ToasterModal.svelte +102 -168
  102. package/dist/components/toast/ToasterModal.svelte.d.ts +2 -12
  103. package/dist/components/ui/accordion/accordion-content.svelte +3 -2
  104. package/dist/components/ui/accordion/accordion-item.svelte +10 -1
  105. package/dist/components/ui/accordion/accordion-trigger.svelte +4 -3
  106. package/dist/components/ui/alert/alert-description.svelte +5 -1
  107. package/dist/components/ui/alert/alert-title.svelte +2 -1
  108. package/dist/components/ui/alert/index.d.ts +13 -11
  109. package/dist/components/ui/alert/index.js +4 -4
  110. package/dist/components/ui/avatar/avatar-utils.d.ts +2 -0
  111. package/dist/components/ui/avatar/avatar-utils.js +9 -0
  112. package/dist/components/ui/avatar/avatar.svelte +63 -0
  113. package/dist/components/ui/avatar/avatar.svelte.d.ts +80 -0
  114. package/dist/components/ui/avatar/index.d.ts +4 -0
  115. package/dist/components/ui/avatar/index.js +4 -0
  116. package/dist/components/ui/badge/badge.svelte +22 -10
  117. package/dist/components/ui/badge/badge.svelte.d.ts +14 -15
  118. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +2 -2
  119. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +1 -1
  120. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +1 -1
  121. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +2 -2
  122. package/dist/components/ui/button/button-padding.d.ts +9 -0
  123. package/dist/components/ui/button/button-padding.js +15 -0
  124. package/dist/components/ui/button/button.svelte +81 -31
  125. package/dist/components/ui/button/button.svelte.d.ts +48 -29
  126. package/dist/components/ui/calendar/calendar-cell.svelte +1 -1
  127. package/dist/components/ui/calendar/calendar-head-cell.svelte +1 -1
  128. package/dist/components/ui/calendar/calendar-next-button.svelte +2 -2
  129. package/dist/components/ui/calendar/calendar-prev-button.svelte +2 -2
  130. package/dist/components/ui/card/card-description.svelte +1 -1
  131. package/dist/components/ui/card/card-title.svelte +1 -1
  132. package/dist/components/ui/card/card.svelte +1 -1
  133. package/dist/components/ui/checkbox/checkbox.svelte +9 -5
  134. package/dist/components/ui/chip/chip.svelte +48 -0
  135. package/dist/components/ui/chip/chip.svelte.d.ts +13 -0
  136. package/dist/components/ui/chip/index.d.ts +2 -0
  137. package/dist/components/ui/chip/index.js +2 -0
  138. package/dist/components/ui/command/command-dialog.svelte +1 -1
  139. package/dist/components/ui/command/command-input.svelte +4 -4
  140. package/dist/components/ui/command/command-item.svelte +1 -1
  141. package/dist/components/ui/command/command.svelte +1 -1
  142. package/dist/components/ui/dialog/dialog-content.svelte +4 -4
  143. package/dist/components/ui/dialog/dialog-description.svelte +1 -1
  144. package/dist/components/ui/dialog/dialog-overlay.svelte +1 -1
  145. package/dist/components/ui/dialog/dialog-title.svelte +1 -1
  146. package/dist/components/ui/drawer/drawer-content.svelte +1 -1
  147. package/dist/components/ui/drawer/drawer-overlay.svelte +1 -1
  148. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +5 -5
  149. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
  150. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +1 -1
  151. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +20 -2
  152. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +4 -0
  153. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +5 -1
  154. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +3 -3
  155. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +2 -1
  156. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  157. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +3 -3
  158. package/dist/components/ui/field/field-ids.d.ts +7 -0
  159. package/dist/components/ui/field/field-ids.js +15 -0
  160. package/dist/components/ui/field/field.svelte +62 -0
  161. package/dist/components/ui/field/field.svelte.d.ts +21 -0
  162. package/dist/components/ui/field/index.d.ts +3 -0
  163. package/dist/components/ui/field/index.js +3 -0
  164. package/dist/components/ui/hover-card/hover-card-content.svelte +1 -1
  165. package/dist/components/ui/icon-button/icon-button.svelte +72 -0
  166. package/dist/components/ui/icon-button/icon-button.svelte.d.ts +90 -0
  167. package/dist/components/ui/icon-button/index.d.ts +2 -0
  168. package/dist/components/ui/icon-button/index.js +4 -0
  169. package/dist/components/ui/input/index.d.ts +1 -0
  170. package/dist/components/ui/input/input.svelte +11 -4
  171. package/dist/components/ui/input/input.svelte.d.ts +4 -1
  172. package/dist/components/ui/input-otp/input-otp-separator.svelte +2 -2
  173. package/dist/components/ui/input-otp/input-otp-slot.svelte +5 -4
  174. package/dist/components/ui/input-otp/input-otp-slot.svelte.d.ts +1 -1
  175. package/dist/components/ui/input-otp/input-otp.svelte +1 -1
  176. package/dist/components/ui/label/label.svelte +3 -2
  177. package/dist/components/ui/popover/popover-content.svelte +1 -1
  178. package/dist/components/ui/progress/progress.svelte +19 -5
  179. package/dist/components/ui/progress/progress.svelte.d.ts +4 -2
  180. package/dist/components/ui/radio-group/radio-group-item.svelte +4 -4
  181. package/dist/components/ui/range-calendar/range-calendar-head-cell.svelte +1 -1
  182. package/dist/components/ui/range-calendar/range-calendar-next-button.svelte +2 -2
  183. package/dist/components/ui/range-calendar/range-calendar-prev-button.svelte +2 -2
  184. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +4 -1
  185. package/dist/components/ui/scroll-area/scroll-area.svelte +1 -1
  186. package/dist/components/ui/select/select-content.svelte +1 -3
  187. package/dist/components/ui/select/select-item.svelte +5 -4
  188. package/dist/components/ui/select/select-scroll-down-button.svelte +2 -2
  189. package/dist/components/ui/select/select-scroll-up-button.svelte +2 -2
  190. package/dist/components/ui/select/select-trigger.svelte +4 -3
  191. package/dist/components/ui/skeleton/index.d.ts +2 -0
  192. package/dist/components/ui/skeleton/index.js +2 -0
  193. package/dist/components/ui/skeleton/skeleton.svelte +24 -0
  194. package/dist/components/ui/skeleton/skeleton.svelte.d.ts +8 -0
  195. package/dist/components/ui/slider/slider.svelte +5 -10
  196. package/dist/components/ui/sonner/sonner.svelte +19 -13
  197. package/dist/components/ui/stepper-button/index.d.ts +3 -0
  198. package/dist/components/ui/stepper-button/index.js +2 -0
  199. package/dist/components/ui/stepper-button/stepper-button.svelte +37 -0
  200. package/dist/components/ui/stepper-button/stepper-button.svelte.d.ts +9 -0
  201. package/dist/components/ui/switch/switch.svelte +8 -3
  202. package/dist/components/ui/table/table-cell.svelte +1 -1
  203. package/dist/components/ui/table/table-head.svelte +1 -1
  204. package/dist/components/ui/table/table-row.svelte +1 -1
  205. package/dist/components/ui/tabs/tabs-list.svelte +1 -1
  206. package/dist/components/ui/tabs/tabs-trigger.svelte +1 -1
  207. package/dist/components/ui/tag/index.d.ts +2 -0
  208. package/dist/components/ui/tag/index.js +2 -0
  209. package/dist/components/ui/tag/tag.svelte +42 -0
  210. package/dist/components/ui/tag/tag.svelte.d.ts +11 -0
  211. package/dist/components/ui/textarea/textarea.svelte +4 -3
  212. package/dist/components/ui/textarea/textarea.svelte.d.ts +2 -2
  213. package/dist/components/ui/toggle/toggle.svelte +9 -9
  214. package/dist/components/ui/toggle/toggle.svelte.d.ts +14 -21
  215. package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
  216. package/dist/fonts/Inter/Inter-Black.woff2 +0 -0
  217. package/dist/fonts/Inter/Inter-BlackItalic.woff2 +0 -0
  218. package/dist/fonts/Inter/Inter-Bold.woff2 +0 -0
  219. package/dist/fonts/Inter/Inter-BoldItalic.woff2 +0 -0
  220. package/dist/fonts/Inter/Inter-ExtraBold.woff2 +0 -0
  221. package/dist/fonts/Inter/Inter-ExtraBoldItalic.woff2 +0 -0
  222. package/dist/fonts/Inter/Inter-ExtraLight-BETA.woff2 +0 -0
  223. package/dist/fonts/Inter/Inter-ExtraLightItalic-BETA.woff2 +0 -0
  224. package/dist/fonts/Inter/Inter-Italic.woff2 +0 -0
  225. package/dist/fonts/Inter/Inter-Light-BETA.woff2 +0 -0
  226. package/dist/fonts/Inter/Inter-LightItalic-BETA.woff2 +0 -0
  227. package/dist/fonts/Inter/Inter-Medium.woff2 +0 -0
  228. package/dist/fonts/Inter/Inter-MediumItalic.woff2 +0 -0
  229. package/dist/fonts/Inter/Inter-Regular.woff2 +0 -0
  230. package/dist/fonts/Inter/Inter-SemiBold.woff2 +0 -0
  231. package/dist/fonts/Inter/Inter-SemiBoldItalic.woff2 +0 -0
  232. package/dist/fonts/Inter/Inter-Thin-BETA.woff2 +0 -0
  233. package/dist/fonts/Inter/Inter-ThinItalic-BETA.woff2 +0 -0
  234. package/dist/fonts/Inter/Inter-italic.var.woff2 +0 -0
  235. package/dist/fonts/Inter/Inter-upright.var.woff2 +0 -0
  236. package/dist/fonts/Inter/Inter.var.woff2 +0 -0
  237. package/dist/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 +0 -0
  238. package/dist/i18n/audit/designSystemWords.d.ts +1 -1
  239. package/dist/i18n/audit/designSystemWords.js +1 -1
  240. package/dist/styles/fonts.css +18 -14
  241. package/dist/styles/global.css +7 -19
  242. package/dist/styles/tokens.css +332 -0
  243. package/dist/utils.d.ts +27 -0
  244. package/dist/utils.js +33 -2
  245. package/package.json +2 -1
  246. package/tailwind.config.ts +7 -47
@@ -0,0 +1,90 @@
1
+ import type { WithElementRef } from "bits-ui";
2
+ import type { HTMLButtonAttributes } from "svelte/elements";
3
+ import type { VariantProps } from "tailwind-variants";
4
+ export declare const iconButtonVariants: import("tailwind-variants").TVReturnType<{
5
+ variant: {
6
+ ghost: string;
7
+ secondary: string;
8
+ outline: string;
9
+ primary: string;
10
+ accent: string;
11
+ };
12
+ size: {
13
+ default: string;
14
+ sm: string;
15
+ };
16
+ }, undefined, "inline-flex shrink-0 items-center justify-center transition-colors duration-fast press-feedback focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:stroke-[1.333]", {
17
+ responsiveVariants?: boolean | (string | number | symbol)[] | {
18
+ size?: boolean | (string | number | symbol)[] | undefined;
19
+ variant?: boolean | (string | number | symbol)[] | undefined;
20
+ } | undefined;
21
+ } & import("tailwind-variants/dist/config.js").TWMConfig & {
22
+ twMergeConfig: {
23
+ classGroups: {
24
+ "font-size": {
25
+ text: ("display-hero" | "heading-page" | "heading-section" | "body" | "body-medium" | "body-large" | "caption" | "caption-medium" | "label" | "label-small" | "code")[];
26
+ }[];
27
+ };
28
+ };
29
+ }, {
30
+ variant: {
31
+ ghost: string;
32
+ secondary: string;
33
+ outline: string;
34
+ primary: string;
35
+ accent: string;
36
+ };
37
+ size: {
38
+ default: string;
39
+ sm: string;
40
+ };
41
+ }, undefined, import("tailwind-variants").TVReturnType<{
42
+ variant: {
43
+ ghost: string;
44
+ secondary: string;
45
+ outline: string;
46
+ primary: string;
47
+ accent: string;
48
+ };
49
+ size: {
50
+ default: string;
51
+ sm: string;
52
+ };
53
+ }, undefined, "inline-flex shrink-0 items-center justify-center transition-colors duration-fast press-feedback focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:stroke-[1.333]", import("tailwind-variants/dist/config.js").TVConfig<{
54
+ variant: {
55
+ ghost: string;
56
+ secondary: string;
57
+ outline: string;
58
+ primary: string;
59
+ accent: string;
60
+ };
61
+ size: {
62
+ default: string;
63
+ sm: string;
64
+ };
65
+ }, {
66
+ variant: {
67
+ ghost: string;
68
+ secondary: string;
69
+ outline: string;
70
+ primary: string;
71
+ accent: string;
72
+ };
73
+ size: {
74
+ default: string;
75
+ sm: string;
76
+ };
77
+ }>, unknown, unknown, undefined>>;
78
+ export type IconButtonVariant = VariantProps<typeof iconButtonVariants>["variant"];
79
+ export type IconButtonSize = VariantProps<typeof iconButtonVariants>["size"];
80
+ export type IconButtonProps = WithElementRef<HTMLButtonAttributes> & {
81
+ ref?: HTMLButtonElement | null;
82
+ class?: string;
83
+ variant?: IconButtonVariant;
84
+ size?: IconButtonSize;
85
+ /** Required for accessibility (aria-label). */
86
+ label: string;
87
+ };
88
+ declare const IconButton: import("svelte").Component<IconButtonProps, {}, "ref">;
89
+ type IconButton = ReturnType<typeof IconButton>;
90
+ export default IconButton;
@@ -0,0 +1,2 @@
1
+ import Root, { type IconButtonProps, type IconButtonSize, type IconButtonVariant, iconButtonVariants } from "./icon-button.svelte";
2
+ export { Root, Root as IconButton, iconButtonVariants, type IconButtonProps, type IconButtonSize, type IconButtonVariant, };
@@ -0,0 +1,4 @@
1
+ import Root, { iconButtonVariants, } from "./icon-button.svelte";
2
+ export { Root,
3
+ //
4
+ Root as IconButton, iconButtonVariants, };
@@ -1,2 +1,3 @@
1
1
  import Root from "./input.svelte";
2
+ export type { InputProps, InputVariant } from "./input.svelte";
2
3
  export { Root, Root as Input, };
@@ -1,17 +1,23 @@
1
+ <!-- Figma: Input (component set 43:3, node 43:2). -->
1
2
  <script lang="ts" module>
3
+ import type { HTMLInputAttributes } from "svelte/elements";
4
+ import type { WithElementRef } from "bits-ui";
5
+
6
+ export type InputVariant = "outline" | "soft";
2
7
 
3
- export type InputProps = WithElementRef<HTMLInputAttributes>;
8
+ export type InputProps = WithElementRef<HTMLInputAttributes> & {
9
+ variant?: InputVariant;
10
+ };
4
11
  </script>
5
12
 
6
13
  <script lang="ts">
7
- import type { HTMLInputAttributes } from "svelte/elements";
8
- import type { WithElementRef } from "bits-ui";
9
14
  import { cn } from "../../../utils.js";
10
15
 
11
16
  let {
12
17
  ref = $bindable(null),
13
18
  value = $bindable(),
14
19
  class: className,
20
+ variant = "outline",
15
21
  ...restProps
16
22
  }: InputProps = $props();
17
23
  </script>
@@ -19,7 +25,8 @@
19
25
  <input
20
26
  bind:this={ref}
21
27
  class={cn(
22
- "border-input bg-background ring-offset-background placeholder:text-muted-foreground focus-visible:ring-ring flex h-10 w-full rounded-md border px-3 py-2 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
28
+ "flex h-9 w-full min-w-0 rounded-lg border border-input bg-background px-3 py-2 text-body text-foreground transition-colors duration-fast file:border-0 file:bg-transparent file:text-body file:font-medium placeholder:text-muted-foreground hover:bg-accent focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:focus-visible:ring-destructive",
29
+ variant === "soft" && "border-transparent bg-accent hover:bg-accent-hover",
23
30
  className
24
31
  )}
25
32
  bind:value
@@ -1,6 +1,9 @@
1
- export type InputProps = WithElementRef<HTMLInputAttributes>;
2
1
  import type { HTMLInputAttributes } from "svelte/elements";
3
2
  import type { WithElementRef } from "bits-ui";
3
+ export type InputVariant = "outline" | "soft";
4
+ export type InputProps = WithElementRef<HTMLInputAttributes> & {
5
+ variant?: InputVariant;
6
+ };
4
7
  declare const Input: import("svelte").Component<InputProps, {}, "ref" | "value">;
5
8
  type Input = ReturnType<typeof Input>;
6
9
  export default Input;
@@ -6,7 +6,7 @@
6
6
  <script lang="ts">
7
7
  import type { HTMLAttributes } from "svelte/elements";
8
8
  import type { WithElementRef } from "bits-ui";
9
- import Dot from "lucide-svelte/icons/dot";
9
+ import IconMinus from "@tabler/icons-svelte/icons/minus";
10
10
 
11
11
  let {
12
12
  ref = $bindable(null),
@@ -19,6 +19,6 @@
19
19
  {#if children}
20
20
  {@render children?.()}
21
21
  {:else}
22
- <Dot />
22
+ <IconMinus class="size-4 stroke-[1.333] text-muted-foreground" aria-hidden="true" />
23
23
  {/if}
24
24
  </div>
@@ -4,7 +4,7 @@
4
4
  </script>
5
5
 
6
6
  <script lang="ts">
7
- import type { ComponentProps } from "svelte";
7
+ import type { ComponentProps } from "svelte";
8
8
  import { cn } from "../../../utils.js";
9
9
 
10
10
  let {
@@ -19,8 +19,9 @@
19
19
  {cell}
20
20
  bind:ref
21
21
  class={cn(
22
- "border-input relative flex h-10 w-10 items-center justify-center border-y border-e text-sm transition-all first:rounded-s-md first:border-s last:rounded-e-md",
23
- cell.isActive && "ring-ring ring-offset-background z-10 ring-2",
22
+ "relative flex h-9 w-9 items-center justify-center rounded-lg border border-input bg-background text-body transition-colors duration-fast first:rounded-s-lg last:rounded-e-lg",
23
+ cell.isActive &&
24
+ "z-10 ring-2 ring-ring ring-offset-2 ring-offset-background outline-hidden",
24
25
  className
25
26
  )}
26
27
  {...restProps}
@@ -28,7 +29,7 @@
28
29
  {cell.char}
29
30
  {#if cell.hasFakeCaret}
30
31
  <div class="pointer-events-none absolute inset-0 flex items-center justify-center">
31
- <div class="animate-caret-blink bg-foreground h-4 w-px duration-1000"></div>
32
+ <div class="animate-caret-blink h-4 w-px bg-foreground duration-1000"></div>
32
33
  </div>
33
34
  {/if}
34
35
  </InputOTPPrimitive.Cell>
@@ -3,7 +3,7 @@ export type InputOtpSlotProps = ComponentProps<typeof InputOTPPrimitive.Cell>;
3
3
  import type { ComponentProps } from "svelte";
4
4
  declare const InputOtpSlot: import("svelte").Component<Omit<{
5
5
  cell: import("bits-ui").PinInputCell;
6
- }, "children" | "child"> & {
6
+ }, "child" | "children"> & {
7
7
  child?: import("svelte").Snippet<[{
8
8
  props: Record<string, unknown>;
9
9
  }]> | undefined;
@@ -4,7 +4,7 @@
4
4
  </script>
5
5
 
6
6
  <script lang="ts">
7
- import type { ComponentProps } from "svelte";
7
+ import type { ComponentProps } from "svelte";
8
8
  import { cn } from "../../../utils.js";
9
9
 
10
10
  let {
@@ -1,10 +1,11 @@
1
+ <!-- Figma: Field label (Field 105:27 uses Label/Default). -->
1
2
  <script lang="ts" module>
2
3
  import { Label as LabelPrimitive } from "bits-ui";
3
4
  export type LabelProps = LabelPrimitive.RootProps;
4
5
  </script>
5
6
 
6
7
  <script lang="ts">
7
- import { cn } from "../../../utils.js";
8
+ import { cn } from "../../../utils.js";
8
9
 
9
10
  let {
10
11
  ref = $bindable(null),
@@ -16,7 +17,7 @@
16
17
  <LabelPrimitive.Root
17
18
  bind:ref
18
19
  class={cn(
19
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
20
+ "text-label text-foreground peer-disabled:pointer-events-none peer-disabled:opacity-50",
20
21
  className
21
22
  )}
22
23
  {...restProps}
@@ -26,7 +26,7 @@
26
26
  {align}
27
27
  dir={$textDirection}
28
28
  class={cn(
29
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-hidden",
29
+ "bg-popover text-popover-foreground border-border data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-xl border p-4 outline-hidden",
30
30
  className
31
31
  )}
32
32
  {...restProps}
@@ -1,29 +1,43 @@
1
+ <!-- Figma: Progress Bar (component set 270:695, node 270:695). -->
1
2
  <script lang="ts" module>
2
3
  import { Progress as ProgressPrimitive, type WithoutChildrenOrChild } from "bits-ui";
3
- export type ProgressProps = WithoutChildrenOrChild<ProgressPrimitive.RootProps>;
4
+ export type ProgressProps = WithoutChildrenOrChild<ProgressPrimitive.RootProps> & {
5
+ tone?: "default" | "destructive";
6
+ };
4
7
  </script>
5
8
 
6
9
  <script lang="ts">
7
- import { cn } from "../../../utils.js";
10
+ import { cn } from "../../../utils.js";
8
11
 
9
12
  let {
10
13
  ref = $bindable(null),
11
14
  class: className,
12
15
  max = 100,
13
16
  value,
17
+ tone = "default",
14
18
  ...restProps
15
19
  }: ProgressProps = $props();
20
+
21
+ const percent = $derived.by(() => {
22
+ const maxValue = max ?? 100;
23
+ if (maxValue <= 0) return 0;
24
+ const raw = ((value ?? 0) / maxValue) * 100;
25
+ return Math.min(100, Math.max(0, raw));
26
+ });
16
27
  </script>
17
28
 
18
29
  <ProgressPrimitive.Root
19
30
  bind:ref
20
- class={cn("bg-secondary relative h-4 w-full overflow-hidden rounded-full", className)}
31
+ class={cn("relative h-1 w-full overflow-hidden rounded-full bg-muted", className)}
21
32
  {value}
22
33
  {max}
23
34
  {...restProps}
24
35
  >
25
36
  <div
26
- class="bg-primary h-full w-full flex-1 -translate-x-(--progress-remaining) transition-all rtl:translate-x-(--progress-remaining)"
27
- style={`--progress-remaining: ${100 - (100 * (value ?? 0)) / (max ?? 1)}%`}
37
+ class={cn(
38
+ "absolute inset-y-0 start-0 transition-[width] duration-base ease-standard motion-reduce:transition-none",
39
+ tone === "destructive" ? "bg-destructive" : "bg-primary"
40
+ )}
41
+ style={`width: ${percent}%`}
28
42
  ></div>
29
43
  </ProgressPrimitive.Root>
@@ -1,5 +1,7 @@
1
1
  import { Progress as ProgressPrimitive, type WithoutChildrenOrChild } from "bits-ui";
2
- export type ProgressProps = WithoutChildrenOrChild<ProgressPrimitive.RootProps>;
3
- declare const Progress: import("svelte").Component<Omit<Omit<ProgressPrimitive.RootProps, "child">, "children">, {}, "ref">;
2
+ export type ProgressProps = WithoutChildrenOrChild<ProgressPrimitive.RootProps> & {
3
+ tone?: "default" | "destructive";
4
+ };
5
+ declare const Progress: import("svelte").Component<ProgressProps, {}, "ref">;
4
6
  type Progress = ReturnType<typeof Progress>;
5
7
  export default Progress;
@@ -1,10 +1,10 @@
1
+ <!-- Figma: Radio (component set 170:96, node 170:96). -->
1
2
  <script lang="ts" module>
2
3
  import { RadioGroup as RadioGroupPrimitive, type WithoutChildrenOrChild } from "bits-ui";
3
4
  export type RadioGroupItemProps = WithoutChildrenOrChild<RadioGroupPrimitive.ItemProps>;
4
5
  </script>
5
6
 
6
7
  <script lang="ts">
7
- import Circle from "lucide-svelte/icons/circle";
8
8
  import { cn } from "../../../utils.js";
9
9
 
10
10
  let {
@@ -17,15 +17,15 @@
17
17
  <RadioGroupPrimitive.Item
18
18
  bind:ref
19
19
  class={cn(
20
- "border-primary text-primary ring-offset-background focus-visible:ring-ring aspect-square size-4 rounded-full border focus:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
20
+ "aspect-square size-4 shrink-0 rounded-full border border-input bg-background text-primary transition-colors duration-fast hover:bg-accent focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[state=checked]:border-primary",
21
21
  className
22
22
  )}
23
23
  {...restProps}
24
24
  >
25
25
  {#snippet children({ checked })}
26
- <div class="flex items-center justify-center">
26
+ <div class="flex size-full items-center justify-center">
27
27
  {#if checked}
28
- <Circle class="size-2.5 fill-current text-current" />
28
+ <div class="size-2 rounded-full bg-primary" aria-hidden="true"></div>
29
29
  {/if}
30
30
  </div>
31
31
  {/snippet}
@@ -15,6 +15,6 @@
15
15
 
16
16
  <RangeCalendarPrimitive.HeadCell
17
17
  bind:ref
18
- class={cn("text-muted-foreground w-9 rounded-md text-[0.8rem] font-normal", className)}
18
+ class={cn("text-caption text-muted-foreground w-9 rounded-lg font-normal", className)}
19
19
  {...restProps}
20
20
  />
@@ -11,7 +11,7 @@
11
11
  </script>
12
12
 
13
13
  <script lang="ts">
14
- import ChevronRight from "lucide-svelte/icons/chevron-right";
14
+ import IconChevronRight from "@tabler/icons-svelte/icons/chevron-right";
15
15
  import { buttonVariants } from "../button/index.js";
16
16
  import { cn } from "../../../utils.js";
17
17
 
@@ -25,7 +25,7 @@
25
25
  </script>
26
26
 
27
27
  {#snippet Fallback()}
28
- <ChevronRight class="size-4 rtl:-scale-x-100" />
28
+ <IconChevronRight class="size-4 stroke-[1.333] rtl:-scale-x-100" />
29
29
  {/snippet}
30
30
 
31
31
  <RangeCalendarPrimitive.NextButton
@@ -11,7 +11,7 @@
11
11
  </script>
12
12
 
13
13
  <script lang="ts">
14
- import ChevronLeft from "lucide-svelte/icons/chevron-left";
14
+ import IconChevronLeft from "@tabler/icons-svelte/icons/chevron-left";
15
15
  import { buttonVariants } from "../button/index.js";
16
16
  import { cn } from "../../../utils.js";
17
17
 
@@ -25,7 +25,7 @@
25
25
  </script>
26
26
 
27
27
  {#snippet Fallback()}
28
- <ChevronLeft class="size-4 rtl:-scale-x-100" />
28
+ <IconChevronLeft class="size-4 stroke-[1.333] rtl:-scale-x-100" />
29
29
  {/snippet}
30
30
 
31
31
  <RangeCalendarPrimitive.PrevButton
@@ -28,6 +28,9 @@
28
28
  >
29
29
  {@render children?.()}
30
30
  <ScrollAreaPrimitive.Thumb
31
- class={cn("bg-border relative rounded-full", orientation === "vertical" && "flex-1")}
31
+ class={cn(
32
+ "bg-muted-foreground/30 hover:bg-muted-foreground/50 relative rounded-full transition-colors duration-fast",
33
+ orientation === "vertical" && "flex-1"
34
+ )}
32
35
  />
33
36
  </ScrollAreaPrimitive.Scrollbar>
@@ -24,7 +24,7 @@
24
24
  </script>
25
25
 
26
26
  <ScrollAreaPrimitive.Root bind:ref dir={$textDirection} {...restProps} class={cn("relative overflow-hidden", className)}>
27
- <ScrollAreaPrimitive.Viewport class="h-full w-full rounded-[inherit]">
27
+ <ScrollAreaPrimitive.Viewport class="h-full w-full" style="border-radius: inherit">
28
28
  {@render children?.()}
29
29
  </ScrollAreaPrimitive.Viewport>
30
30
  {#if orientation === "vertical" || orientation === "both"}
@@ -5,8 +5,6 @@
5
5
  import { cn } from "../../../utils.js";
6
6
  import { useTextDirection } from "../../textDirection.js";
7
7
 
8
- // The library writes dir="ltr" on the floating element unless it is told the direction: left to right text and
9
- // alignment inside a menu of a right to left screen.
10
8
  const textDirection = useTextDirection();
11
9
 
12
10
  let {
@@ -27,7 +25,7 @@
27
25
  {sideOffset}
28
26
  dir={$textDirection}
29
27
  class={cn(
30
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 bg-popover text-popover-foreground relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
28
+ "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border border-border bg-popover text-popover-foreground data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
31
29
  className
32
30
  )}
33
31
  {...restProps}
@@ -1,11 +1,12 @@
1
+ <!-- Figma: Select Option (component set 170:135, node 170:135). -->
1
2
  <script lang="ts" module>
2
3
  import { Select as SelectPrimitive, type WithoutChild } from "bits-ui";
3
4
  export type SelectItemProps = WithoutChild<SelectPrimitive.ItemProps>;
4
5
  </script>
5
6
 
6
7
  <script lang="ts">
7
- import Check from "lucide-svelte/icons/check";
8
- import { cn } from "../../../utils.js";
8
+ import IconCheck from "@tabler/icons-svelte/icons/check";
9
+ import { cn } from "../../../utils.js";
9
10
 
10
11
  let {
11
12
  ref = $bindable(null),
@@ -21,7 +22,7 @@
21
22
  bind:ref
22
23
  {value}
23
24
  class={cn(
24
- "data-highlighted:bg-accent data-highlighted:text-accent-foreground relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-hidden data-disabled:pointer-events-none data-disabled:opacity-50",
25
+ "relative flex h-8 w-full cursor-default select-none items-center gap-2 rounded-lg px-2 py-1.5 ps-8 text-body outline-hidden data-[highlighted]:bg-accent data-[selected]:bg-brand-subtle data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
25
26
  className
26
27
  )}
27
28
  {...restProps}
@@ -29,7 +30,7 @@
29
30
  {#snippet children({ selected, highlighted })}
30
31
  <span class="absolute start-2 flex size-3.5 items-center justify-center">
31
32
  {#if selected}
32
- <Check class="size-4" />
33
+ <IconCheck class="size-4 stroke-[1.333]" aria-hidden="true" />
33
34
  {/if}
34
35
  </span>
35
36
  {#if childrenProp}
@@ -4,7 +4,7 @@
4
4
  </script>
5
5
 
6
6
  <script lang="ts">
7
- import ChevronDown from "lucide-svelte/icons/chevron-down";
7
+ import IconChevronDown from "@tabler/icons-svelte/icons/chevron-down";
8
8
  import { cn } from "../../../utils.js";
9
9
 
10
10
  let {
@@ -19,5 +19,5 @@
19
19
  class={cn("flex cursor-default items-center justify-center py-1", className)}
20
20
  {...restProps}
21
21
  >
22
- <ChevronDown class="size-4" />
22
+ <IconChevronDown class="size-4 stroke-[1.333]" aria-hidden="true" />
23
23
  </SelectPrimitive.ScrollDownButton>
@@ -4,7 +4,7 @@
4
4
  </script>
5
5
 
6
6
  <script lang="ts">
7
- import ChevronUp from "lucide-svelte/icons/chevron-up";
7
+ import IconChevronUp from "@tabler/icons-svelte/icons/chevron-up";
8
8
  import { cn } from "../../../utils.js";
9
9
 
10
10
  let {
@@ -19,5 +19,5 @@
19
19
  class={cn("flex cursor-default items-center justify-center py-1", className)}
20
20
  {...restProps}
21
21
  >
22
- <ChevronUp class="size-4" />
22
+ <IconChevronUp class="size-4 stroke-[1.333]" aria-hidden="true" />
23
23
  </SelectPrimitive.ScrollUpButton>
@@ -1,10 +1,11 @@
1
+ <!-- Figma: Select (328:135) and Select Trigger (268:97). -->
1
2
  <script lang="ts" module>
2
3
  import { Select as SelectPrimitive, type WithoutChild } from "bits-ui";
3
4
  export type SelectTriggerProps = WithoutChild<SelectPrimitive.TriggerProps>;
4
5
  </script>
5
6
 
6
7
  <script lang="ts">
7
- import ChevronDown from "lucide-svelte/icons/chevron-down";
8
+ import IconChevronDown from "@tabler/icons-svelte/icons/chevron-down";
8
9
  import { cn } from "../../../utils.js";
9
10
 
10
11
  let {
@@ -18,11 +19,11 @@
18
19
  <SelectPrimitive.Trigger
19
20
  bind:ref
20
21
  class={cn(
21
- "border-input bg-background ring-offset-background data-placeholder:text-muted-foreground focus:ring-ring flex h-10 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:outline-hidden focus:ring-2 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
22
+ "flex h-9 w-full items-center justify-between gap-2 rounded-lg border border-input bg-background px-3 py-2 text-start text-body transition-colors duration-fast hover:bg-accent focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[placeholder]:text-muted-foreground aria-invalid:border-destructive [&>span]:line-clamp-1",
22
23
  className
23
24
  )}
24
25
  {...restProps}
25
26
  >
26
27
  {@render children?.()}
27
- <ChevronDown class="size-4 opacity-50" />
28
+ <IconChevronDown class="size-4 shrink-0 stroke-[1.333] opacity-50" aria-hidden="true" />
28
29
  </SelectPrimitive.Trigger>
@@ -0,0 +1,2 @@
1
+ import Root from "./skeleton.svelte";
2
+ export { Root, Root as Skeleton };
@@ -0,0 +1,2 @@
1
+ import Root from "./skeleton.svelte";
2
+ export { Root, Root as Skeleton };
@@ -0,0 +1,24 @@
1
+ <!-- Figma: Skeleton (component set 131:2, node 131:10). -->
2
+ <script lang="ts">
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import { cn } from "../../../utils.js";
5
+
6
+ let {
7
+ class: className,
8
+ pulse = "high",
9
+ ...restProps
10
+ }: HTMLAttributes<HTMLDivElement> & {
11
+ /** Figma Pulse: High (default) | Low (50% opacity). */
12
+ pulse?: "high" | "low";
13
+ } = $props();
14
+ </script>
15
+
16
+ <div
17
+ class={cn(
18
+ "rounded-lg bg-muted motion-reduce:opacity-100 motion-safe:animate-pulse",
19
+ pulse === "low" && "opacity-50",
20
+ className
21
+ )}
22
+ aria-hidden="true"
23
+ {...restProps}
24
+ ></div>
@@ -0,0 +1,8 @@
1
+ import type { HTMLAttributes } from "svelte/elements";
2
+ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
3
+ /** Figma Pulse: High (default) | Low (50% opacity). */
4
+ pulse?: "high" | "low";
5
+ };
6
+ declare const Skeleton: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type Skeleton = ReturnType<typeof Skeleton>;
8
+ export default Skeleton;
@@ -1,14 +1,13 @@
1
+ <!-- Figma: IC Slider (Editor); track input, range primary, 4px track / 16px thumb. -->
1
2
  <script lang="ts" module>
2
3
  import { Slider as SliderPrimitive, type WithoutChildrenOrChild } from "bits-ui";
3
4
  export type SliderProps = WithoutChildrenOrChild<SliderPrimitive.RootProps>;
4
5
  </script>
5
6
 
6
7
  <script lang="ts">
7
- import { cn } from "../../../utils.js";
8
+ import { cn } from "../../../utils.js";
8
9
  import { useTextDirection } from "../../textDirection.js";
9
10
 
10
- // The slider of the library is left to right unless it is told: on a right to left screen the smallest value is at the
11
- // right end, like the rest of the screen, and the arrow keys follow.
12
11
  const textDirection = useTextDirection();
13
12
 
14
13
  let {
@@ -19,10 +18,6 @@
19
18
  }: SliderProps = $props();
20
19
  </script>
21
20
 
22
- <!--
23
- Discriminated Unions + Destructing (required for bindable) do not
24
- get along, so we shut typescript up by casting `value` to `never`.
25
- -->
26
21
  <SliderPrimitive.Root
27
22
  bind:value={value as never}
28
23
  bind:ref
@@ -31,13 +26,13 @@ get along, so we shut typescript up by casting `value` to `never`.
31
26
  {...restProps}
32
27
  >
33
28
  {#snippet children({ thumbs })}
34
- <span class="bg-secondary relative h-2 w-full grow overflow-hidden rounded-full">
35
- <SliderPrimitive.Range class="bg-primary absolute h-full" />
29
+ <span class="relative h-1 w-full grow overflow-hidden rounded-full bg-input">
30
+ <SliderPrimitive.Range class="absolute z-10 h-full rounded-full bg-primary" />
36
31
  </span>
37
32
  {#each thumbs as thumb}
38
33
  <SliderPrimitive.Thumb
39
34
  index={thumb}
40
- class="border-primary bg-background ring-offset-background focus-visible:ring-ring block size-5 rounded-full border-2 transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"
35
+ class="relative z-20 block size-4 rounded-full border-2 border-primary bg-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50"
41
36
  />
42
37
  {/each}
43
38
  {/snippet}