@widgetic/design-system 0.5.22 → 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 +402 -399
  41. package/dist/components/modals/BaseModal.svelte.d.ts +1 -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 +1 -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
@@ -1,6 +1,6 @@
1
1
  import type { WithElementRef } from "bits-ui";
2
2
  import type { HTMLAnchorAttributes, HTMLButtonAttributes } from "svelte/elements";
3
- import { type VariantProps } from "tailwind-variants";
3
+ import type { VariantProps } from "tailwind-variants";
4
4
  export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
5
5
  variant: {
6
6
  default: string;
@@ -8,6 +8,8 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
8
8
  outline: string;
9
9
  secondary: string;
10
10
  ghost: string;
11
+ accent: string;
12
+ stroke: string;
11
13
  link: string;
12
14
  };
13
15
  size: {
@@ -15,21 +17,25 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
15
17
  sm: string;
16
18
  lg: string;
17
19
  icon: string;
20
+ "icon-sm": string;
18
21
  };
19
- }, undefined, "ring-offset-background focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", import("tailwind-variants/dist/config.js").TVConfig<{
20
- variant: {
21
- default: string;
22
- destructive: string;
23
- outline: string;
24
- secondary: string;
25
- ghost: string;
26
- link: string;
22
+ iconPadding: {
23
+ true: string;
24
+ false: string;
27
25
  };
28
- size: {
29
- default: string;
30
- sm: string;
31
- lg: string;
32
- icon: string;
26
+ }, undefined, "inline-flex items-center justify-center gap-1 whitespace-nowrap rounded-lg text-label 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]", {
27
+ responsiveVariants?: boolean | (string | number | symbol)[] | {
28
+ size?: boolean | (string | number | symbol)[] | undefined;
29
+ variant?: boolean | (string | number | symbol)[] | undefined;
30
+ iconPadding?: boolean | (string | number | symbol)[] | undefined;
31
+ } | undefined;
32
+ } & import("tailwind-variants/dist/config.js").TWMConfig & {
33
+ twMergeConfig: {
34
+ classGroups: {
35
+ "font-size": {
36
+ text: ("display-hero" | "heading-page" | "heading-section" | "body" | "body-medium" | "body-large" | "caption" | "caption-medium" | "label" | "label-small" | "code")[];
37
+ }[];
38
+ };
33
39
  };
34
40
  }, {
35
41
  variant: {
@@ -38,6 +44,8 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
38
44
  outline: string;
39
45
  secondary: string;
40
46
  ghost: string;
47
+ accent: string;
48
+ stroke: string;
41
49
  link: string;
42
50
  };
43
51
  size: {
@@ -45,21 +53,11 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
45
53
  sm: string;
46
54
  lg: string;
47
55
  icon: string;
56
+ "icon-sm": string;
48
57
  };
49
- }>, {
50
- variant: {
51
- default: string;
52
- destructive: string;
53
- outline: string;
54
- secondary: string;
55
- ghost: string;
56
- link: string;
57
- };
58
- size: {
59
- default: string;
60
- sm: string;
61
- lg: string;
62
- icon: string;
58
+ iconPadding: {
59
+ true: string;
60
+ false: string;
63
61
  };
64
62
  }, undefined, import("tailwind-variants").TVReturnType<{
65
63
  variant: {
@@ -68,6 +66,8 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
68
66
  outline: string;
69
67
  secondary: string;
70
68
  ghost: string;
69
+ accent: string;
70
+ stroke: string;
71
71
  link: string;
72
72
  };
73
73
  size: {
@@ -75,14 +75,21 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
75
75
  sm: string;
76
76
  lg: string;
77
77
  icon: string;
78
+ "icon-sm": string;
78
79
  };
79
- }, undefined, "ring-offset-background focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", import("tailwind-variants/dist/config.js").TVConfig<{
80
+ iconPadding: {
81
+ true: string;
82
+ false: string;
83
+ };
84
+ }, undefined, "inline-flex items-center justify-center gap-1 whitespace-nowrap rounded-lg text-label 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<{
80
85
  variant: {
81
86
  default: string;
82
87
  destructive: string;
83
88
  outline: string;
84
89
  secondary: string;
85
90
  ghost: string;
91
+ accent: string;
92
+ stroke: string;
86
93
  link: string;
87
94
  };
88
95
  size: {
@@ -90,6 +97,11 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
90
97
  sm: string;
91
98
  lg: string;
92
99
  icon: string;
100
+ "icon-sm": string;
101
+ };
102
+ iconPadding: {
103
+ true: string;
104
+ false: string;
93
105
  };
94
106
  }, {
95
107
  variant: {
@@ -98,6 +110,8 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
98
110
  outline: string;
99
111
  secondary: string;
100
112
  ghost: string;
113
+ accent: string;
114
+ stroke: string;
101
115
  link: string;
102
116
  };
103
117
  size: {
@@ -105,6 +119,11 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
105
119
  sm: string;
106
120
  lg: string;
107
121
  icon: string;
122
+ "icon-sm": string;
123
+ };
124
+ iconPadding: {
125
+ true: string;
126
+ false: string;
108
127
  };
109
128
  }>, unknown, unknown, undefined>>;
110
129
  export type ButtonVariant = VariantProps<typeof buttonVariants>["variant"];
@@ -16,7 +16,7 @@
16
16
  <CalendarPrimitive.Cell
17
17
  bind:ref
18
18
  class={cn(
19
- "[&:has([data-selected])]:bg-accent [&:has([data-selected][data-outside-month])]:bg-accent/50 relative size-9 p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([data-selected])]:rounded-md",
19
+ "[&:has([data-selected])]:bg-accent [&:has([data-selected][data-outside-month])]:bg-accent/50 relative size-9 p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([data-selected])]:rounded-lg",
20
20
  className
21
21
  )}
22
22
  {...restProps}
@@ -15,6 +15,6 @@
15
15
 
16
16
  <CalendarPrimitive.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
  <CalendarPrimitive.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
  <CalendarPrimitive.PrevButton
@@ -16,6 +16,6 @@
16
16
  }: CardDescriptionProps = $props();
17
17
  </script>
18
18
 
19
- <p bind:this={ref} class={cn("text-muted-foreground text-sm", className)} {...restProps}>
19
+ <p bind:this={ref} class={cn("text-body text-muted-foreground", className)} {...restProps}>
20
20
  {@render children?.()}
21
21
  </p>
@@ -18,7 +18,7 @@
18
18
  role="heading"
19
19
  aria-level={level}
20
20
  bind:this={ref}
21
- class={cn("text-2xl font-semibold leading-none tracking-tight", className)}
21
+ class={cn("text-heading-section", className)}
22
22
  {...restProps}
23
23
  >
24
24
  {@render children?.()}
@@ -18,7 +18,7 @@
18
18
 
19
19
  <div
20
20
  bind:this={ref}
21
- class={cn("bg-card text-card-foreground rounded-lg border shadow-2xs", className)}
21
+ class={cn("bg-card text-card-foreground border-border rounded-card border", className)}
22
22
  {...restProps}
23
23
  >
24
24
  {@render children?.()}
@@ -1,11 +1,12 @@
1
+ <!-- Figma: Checkbox (component set 170:73, node 170:73). -->
1
2
  <script lang="ts" module>
2
3
  import { Checkbox as CheckboxPrimitive, type WithoutChildrenOrChild } from "bits-ui";
3
4
  export type CheckboxProps = WithoutChildrenOrChild<CheckboxPrimitive.RootProps>;
4
5
  </script>
5
6
 
6
7
  <script lang="ts">
7
- import Check from "lucide-svelte/icons/check";
8
- import Minus from "lucide-svelte/icons/minus";
8
+ import IconCheck from "@tabler/icons-svelte/icons/check";
9
+ import IconMinus from "@tabler/icons-svelte/icons/minus";
9
10
  import { cn } from "../../../utils.js";
10
11
 
11
12
  let {
@@ -20,7 +21,7 @@
20
21
  <CheckboxPrimitive.Root
21
22
  bind:ref
22
23
  class={cn(
23
- "border-primary ring-offset-background focus-visible:ring-ring data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground peer box-content size-4 shrink-0 rounded-sm border focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50",
24
+ "peer flex size-4 shrink-0 items-center justify-center rounded-sm border border-input bg-background text-primary-foreground 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-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:bg-primary",
24
25
  className
25
26
  )}
26
27
  bind:checked
@@ -30,9 +31,12 @@
30
31
  {#snippet children({ checked, indeterminate })}
31
32
  <div class="flex size-4 items-center justify-center text-current">
32
33
  {#if indeterminate}
33
- <Minus class="size-3.5" />
34
+ <IconMinus class="size-3.5 stroke-[1.333]" aria-hidden="true" />
34
35
  {:else}
35
- <Check class={cn("size-3.5", !checked && "text-transparent")} />
36
+ <IconCheck
37
+ class={cn("size-3.5 stroke-[1.333]", !checked && "text-transparent")}
38
+ aria-hidden="true"
39
+ />
36
40
  {/if}
37
41
  </div>
38
42
  {/snippet}
@@ -0,0 +1,48 @@
1
+ <!-- Figma: Chip (component set 65:4, node 65:2). -->
2
+ <script lang="ts">
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import type { Snippet } from "svelte";
5
+ import IconX from "@tabler/icons-svelte/icons/x";
6
+ import { cn } from "../../../utils.js";
7
+
8
+ let {
9
+ class: className,
10
+ label,
11
+ showRemove = false,
12
+ removeLabel = "Remove",
13
+ disabled = false,
14
+ onRemove = undefined,
15
+ leading,
16
+ }: HTMLAttributes<HTMLDivElement> & {
17
+ label: string;
18
+ showRemove?: boolean;
19
+ removeLabel?: string;
20
+ disabled?: boolean;
21
+ onRemove?: () => void;
22
+ leading?: Snippet;
23
+ } = $props();
24
+ </script>
25
+
26
+ <div
27
+ class={cn(
28
+ "inline-flex h-7 max-w-full items-center gap-1.5 rounded-lg border border-border bg-transparent px-2 text-label-small text-foreground transition-colors duration-fast",
29
+ disabled ? "pointer-events-none opacity-50" : "hover:bg-accent",
30
+ className
31
+ )}
32
+ >
33
+ {#if leading}
34
+ <span class="flex shrink-0 items-center">{@render leading()}</span>
35
+ {/if}
36
+ <span class="truncate">{label}</span>
37
+ {#if showRemove && onRemove}
38
+ <button
39
+ type="button"
40
+ class="inline-flex size-4 shrink-0 items-center justify-center text-muted-foreground hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background"
41
+ aria-label={removeLabel}
42
+ {disabled}
43
+ onclick={onRemove}
44
+ >
45
+ <IconX class="size-4 stroke-[1.333]" aria-hidden="true" />
46
+ </button>
47
+ {/if}
48
+ </div>
@@ -0,0 +1,13 @@
1
+ import type { HTMLAttributes } from "svelte/elements";
2
+ import type { Snippet } from "svelte";
3
+ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
4
+ label: string;
5
+ showRemove?: boolean;
6
+ removeLabel?: string;
7
+ disabled?: boolean;
8
+ onRemove?: () => void;
9
+ leading?: Snippet;
10
+ };
11
+ declare const Chip: import("svelte").Component<$$ComponentProps, {}, "">;
12
+ type Chip = ReturnType<typeof Chip>;
13
+ export default Chip;
@@ -0,0 +1,2 @@
1
+ import Root from "./chip.svelte";
2
+ export { Root, Root as Chip };
@@ -0,0 +1,2 @@
1
+ import Root from "./chip.svelte";
2
+ export { Root, Root as Chip };
@@ -23,7 +23,7 @@
23
23
  </script>
24
24
 
25
25
  <Dialog.Root bind:open {...restProps}>
26
- <Dialog.Content class="overflow-hidden p-0 shadow-lg" {portalProps}>
26
+ <Dialog.Content class="overflow-hidden p-0" {portalProps}>
27
27
  <Command
28
28
  class="[&_[data-command-group]:not([hidden])_~[data-command-group]]:pt-0 **:data-command-group:px-2 [&_[data-command-input-wrapper]_svg]:h-5 [&_[data-command-input-wrapper]_svg]:w-5 **:data-command-input:h-12 **:data-command-item:px-2 **:data-command-item:py-3 [&_[data-command-item]_svg]:h-5 [&_[data-command-item]_svg]:w-5"
29
29
  {...restProps}
@@ -4,7 +4,7 @@
4
4
  </script>
5
5
 
6
6
  <script lang="ts">
7
- import Search from "lucide-svelte/icons/search";
7
+ import IconSearch from "@tabler/icons-svelte/icons/search";
8
8
  import { cn } from "../../../utils.js";
9
9
 
10
10
  let {
@@ -15,11 +15,11 @@
15
15
  }: CommandInputProps = $props();
16
16
  </script>
17
17
 
18
- <div class="flex items-center border-b px-2" data-command-input-wrapper="">
19
- <Search class="me-2 size-4 shrink-0 opacity-50" />
18
+ <div class="border-border flex items-center border-b px-2" data-command-input-wrapper="">
19
+ <IconSearch class="text-muted-foreground me-2 size-4 shrink-0 stroke-[1.333]" />
20
20
  <CommandPrimitive.Input
21
21
  class={cn(
22
- "placeholder:text-muted-foreground flex h-11 w-full rounded-md bg-transparent py-3 text-base outline-hidden disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
22
+ "text-body placeholder:text-muted-foreground flex h-9 w-full bg-transparent py-2 outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
23
23
  className
24
24
  )}
25
25
  bind:ref
@@ -15,7 +15,7 @@
15
15
 
16
16
  <CommandPrimitive.Item
17
17
  class={cn(
18
- "aria-selected:bg-accent aria-selected:text-accent-foreground relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
18
+ "text-body aria-selected:bg-accent aria-selected:text-foreground relative flex h-8 cursor-default select-none items-center gap-2 rounded-lg px-2 py-1.5 outline-hidden transition-colors duration-fast data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:stroke-[1.333]",
19
19
  className
20
20
  )}
21
21
  bind:ref
@@ -16,7 +16,7 @@
16
16
 
17
17
  <CommandPrimitive.Root
18
18
  class={cn(
19
- "bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",
19
+ "bg-popover text-popover-foreground border-border flex h-full w-full flex-col overflow-hidden rounded-xl border",
20
20
  className
21
21
  )}
22
22
  bind:value
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { Dialog as DialogPrimitive, type WithoutChildrenOrChild } from "bits-ui";
3
- import X from "lucide-svelte/icons/x";
3
+ import IconX from "@tabler/icons-svelte/icons/x";
4
4
  import type { Snippet } from "svelte";
5
5
  import * as Dialog from "./index.js";
6
6
  import { cn } from "../../../utils.js";
@@ -25,16 +25,16 @@
25
25
  <DialogPrimitive.Content
26
26
  bind:ref
27
27
  class={cn(
28
- "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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] bg-background fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg",
28
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 bg-background border-border fixed start-1/2 top-1/2 z-50 grid w-dialog max-w-[calc(100vw-3rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-panel border p-6 duration-base",
29
29
  className
30
30
  )}
31
31
  {...restProps}
32
32
  >
33
33
  {@render children?.()}
34
34
  <DialogPrimitive.Close
35
- class="ring-offset-background focus:ring-ring absolute end-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-offset-2 disabled:pointer-events-none"
35
+ class="text-foreground hover:bg-accent absolute end-4 top-4 inline-flex size-8 items-center justify-center rounded-lg transition-colors duration-fast 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"
36
36
  >
37
- <X class="size-4" />
37
+ <IconX class="size-4 stroke-[1.333]" />
38
38
  <span class="sr-only">{closeLabel}</span>
39
39
  </DialogPrimitive.Close>
40
40
  </DialogPrimitive.Content>
@@ -15,6 +15,6 @@
15
15
 
16
16
  <DialogPrimitive.Description
17
17
  bind:ref
18
- class={cn("text-muted-foreground text-sm", className)}
18
+ class={cn("text-body text-muted-foreground", className)}
19
19
  {...restProps}
20
20
  />
@@ -16,7 +16,7 @@
16
16
  <DialogPrimitive.Overlay
17
17
  bind:ref
18
18
  class={cn(
19
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",
19
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-foreground/40 backdrop-blur-sm",
20
20
  className
21
21
  )}
22
22
  {...restProps}
@@ -15,6 +15,6 @@
15
15
 
16
16
  <DialogPrimitive.Title
17
17
  bind:ref
18
- class={cn("text-lg font-semibold leading-none tracking-tight", className)}
18
+ class={cn("text-heading-page", className)}
19
19
  {...restProps}
20
20
  />
@@ -19,7 +19,7 @@
19
19
  <DrawerPrimitive.Content
20
20
  bind:ref
21
21
  class={cn(
22
- "bg-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border",
22
+ "bg-background border-border fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-xl border",
23
23
  className
24
24
  )}
25
25
  {...restProps}
@@ -15,6 +15,6 @@
15
15
 
16
16
  <DrawerPrimitive.Overlay
17
17
  bind:ref
18
- class={cn("fixed inset-0 z-50 bg-black/80", className)}
18
+ class={cn("fixed inset-0 z-50 bg-foreground/40 backdrop-blur-sm", className)}
19
19
  {...restProps}
20
20
  />
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { DropdownMenu as DropdownMenuPrimitive, type WithoutChildrenOrChild } from "bits-ui";
3
- import Check from "lucide-svelte/icons/check";
4
- import Minus from "lucide-svelte/icons/minus";
3
+ import IconCheck from "@tabler/icons-svelte/icons/check";
4
+ import IconMinus from "@tabler/icons-svelte/icons/minus";
5
5
  import { cn } from "../../../utils.js";
6
6
  import type { Snippet } from "svelte";
7
7
 
@@ -22,7 +22,7 @@
22
22
  bind:checked
23
23
  bind:indeterminate
24
24
  class={cn(
25
- "data-highlighted:bg-accent data-highlighted:text-accent-foreground relative flex 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
+ "text-body data-highlighted:bg-accent data-highlighted:text-foreground relative flex h-8 cursor-default select-none items-center rounded-lg py-1.5 ps-8 pe-2 outline-hidden transition-colors duration-fast data-disabled:pointer-events-none data-disabled:opacity-50",
26
26
  className
27
27
  )}
28
28
  {...restProps}
@@ -30,9 +30,9 @@
30
30
  {#snippet children({ checked, indeterminate })}
31
31
  <span class="absolute start-2 flex size-3.5 items-center justify-center">
32
32
  {#if indeterminate}
33
- <Minus class="size-4" />
33
+ <IconMinus class="size-4 stroke-[1.333]" />
34
34
  {:else}
35
- <Check class={cn("size-4", !checked && "text-transparent")} />
35
+ <IconCheck class={cn("size-4 stroke-[1.333]", !checked && "text-transparent")} />
36
36
  {/if}
37
37
  </span>
38
38
  {@render childrenProp?.()}
@@ -24,7 +24,7 @@
24
24
  {sideOffset}
25
25
  dir={$textDirection}
26
26
  class={cn(
27
- "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 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-md outline-hidden",
27
+ "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 min-w-[8rem] overflow-hidden rounded-xl border p-1 outline-hidden",
28
28
  className
29
29
  )}
30
30
  {...restProps}
@@ -14,6 +14,6 @@
14
14
 
15
15
  <DropdownMenuPrimitive.GroupHeading
16
16
  bind:ref
17
- class={cn("px-2 py-1.5 text-sm font-semibold", inset && "ps-8", className)}
17
+ class={cn("text-caption-medium text-muted-foreground px-2 pb-1 pt-1.5", inset && "ps-8", className)}
18
18
  {...restProps}
19
19
  />
@@ -6,18 +6,36 @@
6
6
  ref = $bindable(null),
7
7
  class: className,
8
8
  inset,
9
+ description,
10
+ label,
11
+ children,
9
12
  ...restProps
10
13
  }: DropdownMenuPrimitive.ItemProps & {
11
14
  inset?: boolean;
15
+ /** Second line (Menu Item with description — 48px row). */
16
+ description?: string;
17
+ /** Primary line when `description` is set (icons stay in the default slot). */
18
+ label?: string;
12
19
  } = $props();
13
20
  </script>
14
21
 
15
22
  <DropdownMenuPrimitive.Item
16
23
  bind:ref
17
24
  class={cn(
18
- "data-highlighted:bg-accent data-highlighted:text-accent-foreground relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden transition-colors data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
25
+ "text-body data-highlighted:bg-accent data-highlighted:text-foreground relative flex cursor-default select-none items-center gap-2 rounded-lg px-2 py-1.5 outline-hidden transition-colors duration-fast data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:stroke-[1.333] data-[variant=destructive]:text-destructive data-highlighted:data-[variant=destructive]:text-destructive",
26
+ description ? "min-h-12" : "min-h-8",
19
27
  inset && "ps-8",
20
28
  className
21
29
  )}
22
30
  {...restProps}
23
- />
31
+ >
32
+ {#if description && label}
33
+ {@render children?.()}
34
+ <div class="flex min-w-0 flex-1 flex-col gap-0">
35
+ <span class="text-body truncate">{label}</span>
36
+ <span class="text-caption text-muted-foreground truncate">{description}</span>
37
+ </div>
38
+ {:else}
39
+ {@render children?.()}
40
+ {/if}
41
+ </DropdownMenuPrimitive.Item>
@@ -1,6 +1,10 @@
1
1
  import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
2
  type $$ComponentProps = DropdownMenuPrimitive.ItemProps & {
3
3
  inset?: boolean;
4
+ /** Second line (Menu Item with description — 48px row). */
5
+ description?: string;
6
+ /** Primary line when `description` is set (icons stay in the default slot). */
7
+ label?: string;
4
8
  };
5
9
  declare const DropdownMenuItem: import("svelte").Component<$$ComponentProps, {}, "ref">;
6
10
  type DropdownMenuItem = ReturnType<typeof DropdownMenuItem>;
@@ -16,7 +16,11 @@
16
16
 
17
17
  <div
18
18
  bind:this={ref}
19
- class={cn("px-2 py-1.5 text-sm font-semibold", inset && "ps-8", className)}
19
+ class={cn(
20
+ "text-caption-medium text-muted-foreground px-2 pb-1 pt-1.5",
21
+ inset && "ps-8",
22
+ className
23
+ )}
20
24
  {...restProps}
21
25
  >
22
26
  {@render children?.()}
@@ -4,7 +4,7 @@
4
4
  </script>
5
5
 
6
6
  <script lang="ts">
7
- import Circle from "lucide-svelte/icons/circle";
7
+ import IconCircleFilled from "@tabler/icons-svelte/icons/circle-filled";
8
8
  import { cn } from "../../../utils.js";
9
9
 
10
10
  let {
@@ -18,7 +18,7 @@
18
18
  <DropdownMenuPrimitive.RadioItem
19
19
  bind:ref
20
20
  class={cn(
21
- "data-highlighted:bg-accent data-highlighted:text-accent-foreground relative flex 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",
21
+ "text-body data-highlighted:bg-accent data-highlighted:text-foreground relative flex h-8 cursor-default select-none items-center rounded-lg py-1.5 ps-8 pe-2 outline-hidden transition-colors duration-fast data-disabled:pointer-events-none data-disabled:opacity-50",
22
22
  className
23
23
  )}
24
24
  {...restProps}
@@ -26,7 +26,7 @@
26
26
  {#snippet children({ checked })}
27
27
  <span class="absolute start-2 flex size-3.5 items-center justify-center">
28
28
  {#if checked}
29
- <Circle class="size-2 fill-current" />
29
+ <IconCircleFilled class="size-2 stroke-[1.333]" />
30
30
  {/if}
31
31
  </span>
32
32
  {@render childrenProp?.({ checked })}
@@ -13,8 +13,9 @@
13
13
  }: DropdownMenuSeparatorProps = $props();
14
14
  </script>
15
15
 
16
+ <!-- Figma Menu Separator (9px tall): a 1px line with 4px above and below. (py-1 on the line itself drew an 8px band.) -->
16
17
  <DropdownMenuPrimitive.Separator
17
18
  bind:ref
18
- class={cn("bg-muted -mx-1 my-1 h-px", className)}
19
+ class={cn("bg-border my-1 h-px", className)}
19
20
  {...restProps}
20
21
  />