@kayord/ui 2.1.14 → 3.0.1

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 (272) hide show
  1. package/dist/components/ui/accordion/accordion-content.svelte +7 -2
  2. package/dist/components/ui/accordion/accordion-item.svelte +1 -1
  3. package/dist/components/ui/accordion/accordion-trigger.svelte +9 -3
  4. package/dist/components/ui/accordion/accordion.svelte +14 -2
  5. package/dist/components/ui/alert/alert-action.svelte +15 -0
  6. package/dist/components/ui/alert/alert-action.svelte.d.ts +5 -0
  7. package/dist/components/ui/alert/alert-description.svelte +1 -1
  8. package/dist/components/ui/alert/alert-title.svelte +4 -1
  9. package/dist/components/ui/alert/alert.svelte +2 -2
  10. package/dist/components/ui/alert/alert.svelte.d.ts +2 -2
  11. package/dist/components/ui/alert/index.d.ts +2 -1
  12. package/dist/components/ui/alert/index.js +3 -2
  13. package/dist/components/ui/alert-dialog/alert-dialog-action.svelte +12 -3
  14. package/dist/components/ui/alert-dialog/alert-dialog-action.svelte.d.ts +6 -1
  15. package/dist/components/ui/alert-dialog/alert-dialog-cancel.svelte +12 -3
  16. package/dist/components/ui/alert-dialog/alert-dialog-cancel.svelte.d.ts +6 -1
  17. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte +4 -1
  18. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte.d.ts +1 -0
  19. package/dist/components/ui/alert-dialog/alert-dialog-description.svelte +4 -1
  20. package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte +4 -1
  21. package/dist/components/ui/alert-dialog/alert-dialog-header.svelte +4 -1
  22. package/dist/components/ui/alert-dialog/alert-dialog-media.svelte +23 -0
  23. package/dist/components/ui/alert-dialog/alert-dialog-media.svelte.d.ts +5 -0
  24. package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
  25. package/dist/components/ui/alert-dialog/alert-dialog-title.svelte +4 -1
  26. package/dist/components/ui/alert-dialog/index.d.ts +2 -1
  27. package/dist/components/ui/alert-dialog/index.js +3 -2
  28. package/dist/components/ui/avatar/avatar-badge.svelte +26 -0
  29. package/dist/components/ui/avatar/avatar-badge.svelte.d.ts +5 -0
  30. package/dist/components/ui/avatar/avatar-fallback.svelte +4 -1
  31. package/dist/components/ui/avatar/avatar-group-count.svelte +23 -0
  32. package/dist/components/ui/avatar/avatar-group-count.svelte.d.ts +5 -0
  33. package/dist/components/ui/avatar/avatar-group.svelte +23 -0
  34. package/dist/components/ui/avatar/avatar-group.svelte.d.ts +5 -0
  35. package/dist/components/ui/avatar/avatar-image.svelte +1 -1
  36. package/dist/components/ui/avatar/avatar.svelte +9 -2
  37. package/dist/components/ui/avatar/avatar.svelte.d.ts +4 -1
  38. package/dist/components/ui/avatar/index.d.ts +4 -1
  39. package/dist/components/ui/avatar/index.js +5 -2
  40. package/dist/components/ui/badge/badge.svelte +7 -5
  41. package/dist/components/ui/badge/badge.svelte.d.ts +8 -2
  42. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +3 -3
  43. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +1 -6
  44. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +1 -1
  45. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +1 -1
  46. package/dist/components/ui/breadcrumb/breadcrumb.svelte +8 -1
  47. package/dist/components/ui/button/button.svelte +18 -13
  48. package/dist/components/ui/button/button.svelte.d.ts +11 -5
  49. package/dist/components/ui/button-group/button-group-separator.svelte +4 -1
  50. package/dist/components/ui/button-group/button-group-text.svelte +2 -1
  51. package/dist/components/ui/button-group/button-group.svelte +3 -3
  52. package/dist/components/ui/button-group/button-group.svelte.d.ts +2 -2
  53. package/dist/components/ui/button-group/index.d.ts +2 -2
  54. package/dist/components/ui/button-group/index.js +2 -2
  55. package/dist/components/ui/calendar/calendar-cell.svelte +1 -1
  56. package/dist/components/ui/calendar/calendar-day.svelte +4 -6
  57. package/dist/components/ui/calendar/calendar-grid.svelte +1 -5
  58. package/dist/components/ui/calendar/calendar-month-select.svelte +2 -2
  59. package/dist/components/ui/calendar/calendar-month.svelte +1 -1
  60. package/dist/components/ui/calendar/calendar-next-button.svelte +7 -2
  61. package/dist/components/ui/calendar/calendar-prev-button.svelte +7 -2
  62. package/dist/components/ui/calendar/calendar-year-select.svelte +1 -1
  63. package/dist/components/ui/calendar/calendar.svelte +1 -1
  64. package/dist/components/ui/card/card-action.svelte +1 -1
  65. package/dist/components/ui/card/card-content.svelte +6 -1
  66. package/dist/components/ui/card/card-footer.svelte +1 -1
  67. package/dist/components/ui/card/card-header.svelte +1 -1
  68. package/dist/components/ui/card/card-title.svelte +6 -1
  69. package/dist/components/ui/card/card.svelte +7 -2
  70. package/dist/components/ui/card/card.svelte.d.ts +4 -1
  71. package/dist/components/ui/carousel/carousel-next.svelte +5 -4
  72. package/dist/components/ui/carousel/carousel-previous.svelte +5 -4
  73. package/dist/components/ui/carousel/carousel.svelte +1 -0
  74. package/dist/components/ui/chart/chart-container.svelte +1 -1
  75. package/dist/components/ui/chart/chart-tooltip.svelte +1 -0
  76. package/dist/components/ui/checkbox/checkbox.svelte +5 -5
  77. package/dist/components/ui/command/command-dialog.svelte +12 -10
  78. package/dist/components/ui/command/command-dialog.svelte.d.ts +3 -1
  79. package/dist/components/ui/command/command-group.svelte +4 -1
  80. package/dist/components/ui/command/command-input.svelte +17 -13
  81. package/dist/components/ui/command/command-item.svelte +9 -3
  82. package/dist/components/ui/command/command-list.svelte +1 -1
  83. package/dist/components/ui/command/command-shortcut.svelte +4 -1
  84. package/dist/components/ui/command/command.svelte +1 -1
  85. package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte +7 -4
  86. package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte.d.ts +1 -0
  87. package/dist/components/ui/context-menu/context-menu-content.svelte +1 -1
  88. package/dist/components/ui/context-menu/context-menu-group-heading.svelte +1 -1
  89. package/dist/components/ui/context-menu/context-menu-item.svelte +1 -1
  90. package/dist/components/ui/context-menu/context-menu-label.svelte +1 -1
  91. package/dist/components/ui/context-menu/context-menu-radio-item.svelte +9 -5
  92. package/dist/components/ui/context-menu/context-menu-radio-item.svelte.d.ts +5 -1
  93. package/dist/components/ui/context-menu/context-menu-shortcut.svelte +4 -1
  94. package/dist/components/ui/context-menu/context-menu-sub-content.svelte +1 -1
  95. package/dist/components/ui/context-menu/context-menu-sub-trigger.svelte +3 -3
  96. package/dist/components/ui/context-menu/context-menu-trigger.svelte +8 -2
  97. package/dist/components/ui/dialog/dialog-close.svelte +2 -2
  98. package/dist/components/ui/dialog/dialog-content.svelte +10 -7
  99. package/dist/components/ui/dialog/dialog-description.svelte +4 -1
  100. package/dist/components/ui/dialog/dialog-footer.svelte +17 -2
  101. package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +4 -1
  102. package/dist/components/ui/dialog/dialog-header.svelte +1 -6
  103. package/dist/components/ui/dialog/dialog-overlay.svelte +1 -1
  104. package/dist/components/ui/dialog/dialog-title.svelte +1 -1
  105. package/dist/components/ui/dialog/dialog-trigger.svelte +2 -2
  106. package/dist/components/ui/drawer/drawer-content.svelte +2 -6
  107. package/dist/components/ui/drawer/drawer-header.svelte +9 -1
  108. package/dist/components/ui/drawer/drawer-overlay.svelte +1 -1
  109. package/dist/components/ui/drawer/drawer-title.svelte +1 -1
  110. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +9 -6
  111. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +3 -1
  112. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +1 -1
  113. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +1 -1
  114. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +7 -4
  115. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +4 -1
  116. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  117. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +2 -2
  118. package/dist/components/ui/empty/empty-content.svelte +1 -1
  119. package/dist/components/ui/empty/empty-description.svelte +1 -1
  120. package/dist/components/ui/empty/empty-header.svelte +1 -1
  121. package/dist/components/ui/empty/empty-media.svelte +1 -1
  122. package/dist/components/ui/empty/empty-title.svelte +1 -1
  123. package/dist/components/ui/empty/empty.svelte +1 -1
  124. package/dist/components/ui/field/field-content.svelte +1 -1
  125. package/dist/components/ui/field/field-description.svelte +2 -2
  126. package/dist/components/ui/field/field-error.svelte +1 -1
  127. package/dist/components/ui/field/field-group.svelte +1 -1
  128. package/dist/components/ui/field/field-label.svelte +2 -3
  129. package/dist/components/ui/field/field-legend.svelte +1 -1
  130. package/dist/components/ui/field/field-separator.svelte +1 -1
  131. package/dist/components/ui/field/field-set.svelte +1 -2
  132. package/dist/components/ui/field/field-title.svelte +1 -1
  133. package/dist/components/ui/field/field.svelte +6 -12
  134. package/dist/components/ui/field/field.svelte.d.ts +8 -8
  135. package/dist/components/ui/hover-card/hover-card-content.svelte +1 -1
  136. package/dist/components/ui/input/input.svelte +2 -6
  137. package/dist/components/ui/input-group/input-group-addon.svelte +5 -5
  138. package/dist/components/ui/input-group/input-group-addon.svelte.d.ts +2 -2
  139. package/dist/components/ui/input-group/input-group-button.svelte +4 -4
  140. package/dist/components/ui/input-group/input-group-button.svelte.d.ts +2 -2
  141. package/dist/components/ui/input-group/input-group-input.svelte +1 -1
  142. package/dist/components/ui/input-group/input-group-textarea.svelte +1 -1
  143. package/dist/components/ui/input-group/input-group.svelte +1 -15
  144. package/dist/components/ui/input-otp/input-otp-group.svelte +9 -1
  145. package/dist/components/ui/input-otp/input-otp-separator.svelte +14 -2
  146. package/dist/components/ui/input-otp/input-otp-slot.svelte +3 -5
  147. package/dist/components/ui/input-otp/input-otp.svelte +5 -1
  148. package/dist/components/ui/item/item-content.svelte +4 -1
  149. package/dist/components/ui/item/item-description.svelte +1 -2
  150. package/dist/components/ui/item/item-group.svelte +4 -1
  151. package/dist/components/ui/item/item-media.svelte +4 -3
  152. package/dist/components/ui/item/item-media.svelte.d.ts +2 -2
  153. package/dist/components/ui/item/item-separator.svelte +1 -1
  154. package/dist/components/ui/item/item-title.svelte +4 -1
  155. package/dist/components/ui/item/item.svelte +6 -5
  156. package/dist/components/ui/item/item.svelte.d.ts +5 -2
  157. package/dist/components/ui/kbd/kbd.svelte +1 -3
  158. package/dist/components/ui/menubar/menubar-checkbox-item.svelte +13 -8
  159. package/dist/components/ui/menubar/menubar-checkbox-item.svelte.d.ts +1 -0
  160. package/dist/components/ui/menubar/menubar-content.svelte +2 -2
  161. package/dist/components/ui/menubar/menubar-item.svelte +1 -1
  162. package/dist/components/ui/menubar/menubar-label.svelte +1 -1
  163. package/dist/components/ui/menubar/menubar-radio-item.svelte +11 -5
  164. package/dist/components/ui/menubar/menubar-radio-item.svelte.d.ts +5 -1
  165. package/dist/components/ui/menubar/menubar-shortcut.svelte +4 -1
  166. package/dist/components/ui/menubar/menubar-sub-content.svelte +1 -1
  167. package/dist/components/ui/menubar/menubar-sub-trigger.svelte +3 -3
  168. package/dist/components/ui/menubar/menubar-trigger.svelte +1 -1
  169. package/dist/components/ui/menubar/menubar.svelte +1 -1
  170. package/dist/components/ui/native-select/native-select.svelte +15 -10
  171. package/dist/components/ui/native-select/native-select.svelte.d.ts +4 -1
  172. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +1 -2
  173. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +1 -1
  174. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +1 -1
  175. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +1 -1
  176. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +1 -1
  177. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +2 -4
  178. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte.d.ts +1 -1
  179. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +1 -1
  180. package/dist/components/ui/navigation-menu/navigation-menu.svelte +1 -2
  181. package/dist/components/ui/pagination/index.d.ts +4 -4
  182. package/dist/components/ui/pagination/index.js +4 -4
  183. package/dist/components/ui/pagination/pagination-content.svelte +1 -6
  184. package/dist/components/ui/pagination/pagination-ellipsis.svelte +7 -4
  185. package/dist/components/ui/pagination/pagination-ellipsis.svelte.d.ts +1 -1
  186. package/dist/components/ui/pagination/pagination-link.svelte +14 -15
  187. package/dist/components/ui/pagination/pagination-link.svelte.d.ts +3 -2
  188. package/dist/components/ui/pagination/pagination-next-button.svelte +9 -11
  189. package/dist/components/ui/pagination/pagination-next.svelte +10 -20
  190. package/dist/components/ui/pagination/pagination-next.svelte.d.ts +13 -2
  191. package/dist/components/ui/pagination/pagination-prev-button.svelte +9 -11
  192. package/dist/components/ui/pagination/pagination-previous.svelte +10 -20
  193. package/dist/components/ui/pagination/pagination-previous.svelte.d.ts +13 -2
  194. package/dist/components/ui/pagination/pagination.svelte +1 -1
  195. package/dist/components/ui/popover/index.d.ts +4 -1
  196. package/dist/components/ui/popover/index.js +5 -2
  197. package/dist/components/ui/popover/popover-content.svelte +1 -1
  198. package/dist/components/ui/popover/popover-description.svelte +15 -0
  199. package/dist/components/ui/popover/popover-description.svelte.d.ts +5 -0
  200. package/dist/components/ui/popover/popover-header.svelte +15 -0
  201. package/dist/components/ui/popover/popover-header.svelte.d.ts +5 -0
  202. package/dist/components/ui/popover/popover-title.svelte +15 -0
  203. package/dist/components/ui/popover/popover-title.svelte.d.ts +5 -0
  204. package/dist/components/ui/progress/progress.svelte +2 -2
  205. package/dist/components/ui/radio-group/radio-group-item.svelte +5 -3
  206. package/dist/components/ui/radio-group/radio-group.svelte +1 -1
  207. package/dist/components/ui/range-calendar/range-calendar-cell.svelte +1 -1
  208. package/dist/components/ui/range-calendar/range-calendar-day.svelte +4 -7
  209. package/dist/components/ui/range-calendar/range-calendar-month-select.svelte +1 -1
  210. package/dist/components/ui/range-calendar/range-calendar-next-button.svelte +7 -2
  211. package/dist/components/ui/range-calendar/range-calendar-prev-button.svelte +7 -2
  212. package/dist/components/ui/range-calendar/range-calendar-year-select.svelte +1 -1
  213. package/dist/components/ui/range-calendar/range-calendar.svelte +1 -1
  214. package/dist/components/ui/resizable/resizable-handle.svelte +2 -5
  215. package/dist/components/ui/resizable/resizable-pane-group.svelte +2 -1
  216. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +2 -3
  217. package/dist/components/ui/scroll-area/scroll-area.svelte +1 -1
  218. package/dist/components/ui/select/select-content.svelte +2 -2
  219. package/dist/components/ui/select/select-group.svelte +3 -2
  220. package/dist/components/ui/select/select-item.svelte +3 -3
  221. package/dist/components/ui/select/select-label.svelte +1 -1
  222. package/dist/components/ui/select/select-scroll-down-button.svelte +6 -3
  223. package/dist/components/ui/select/select-scroll-up-button.svelte +6 -3
  224. package/dist/components/ui/select/select-trigger.svelte +3 -3
  225. package/dist/components/ui/separator/separator.svelte +3 -1
  226. package/dist/components/ui/sheet/sheet-content.svelte +20 -27
  227. package/dist/components/ui/sheet/sheet-content.svelte.d.ts +2 -24
  228. package/dist/components/ui/sheet/sheet-header.svelte +1 -1
  229. package/dist/components/ui/sheet/sheet-overlay.svelte +1 -4
  230. package/dist/components/ui/sheet/sheet-title.svelte +1 -1
  231. package/dist/components/ui/sidebar/sidebar-content.svelte +1 -1
  232. package/dist/components/ui/sidebar/sidebar-group-action.svelte +1 -4
  233. package/dist/components/ui/sidebar/sidebar-group-label.svelte +1 -2
  234. package/dist/components/ui/sidebar/sidebar-inset.svelte +1 -2
  235. package/dist/components/ui/sidebar/sidebar-menu-action.svelte +2 -8
  236. package/dist/components/ui/sidebar/sidebar-menu-badge.svelte +1 -6
  237. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +2 -2
  238. package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +2 -2
  239. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +1 -5
  240. package/dist/components/ui/sidebar/sidebar-menu-sub.svelte +1 -2
  241. package/dist/components/ui/sidebar/sidebar-menu.svelte +1 -1
  242. package/dist/components/ui/sidebar/sidebar-rail.svelte +4 -4
  243. package/dist/components/ui/sidebar/sidebar-separator.svelte +1 -1
  244. package/dist/components/ui/sidebar/sidebar-trigger.svelte +3 -3
  245. package/dist/components/ui/sidebar/sidebar.svelte +3 -3
  246. package/dist/components/ui/skeleton/skeleton.svelte +1 -1
  247. package/dist/components/ui/slider/slider.svelte +8 -8
  248. package/dist/components/ui/sonner/sonner.svelte +6 -6
  249. package/dist/components/ui/spinner/spinner.svelte +18 -4
  250. package/dist/components/ui/spinner/spinner.svelte.d.ts +2 -1
  251. package/dist/components/ui/switch/switch.svelte +7 -5
  252. package/dist/components/ui/switch/switch.svelte.d.ts +5 -1
  253. package/dist/components/ui/table/table-cell.svelte +1 -1
  254. package/dist/components/ui/table/table-head.svelte +1 -1
  255. package/dist/components/ui/table/table-row.svelte +1 -4
  256. package/dist/components/ui/tabs/index.d.ts +2 -2
  257. package/dist/components/ui/tabs/index.js +2 -2
  258. package/dist/components/ui/tabs/tabs-content.svelte +6 -1
  259. package/dist/components/ui/tabs/tabs-list.svelte +29 -5
  260. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +22 -1
  261. package/dist/components/ui/tabs/tabs-trigger.svelte +4 -1
  262. package/dist/components/ui/tabs/tabs.svelte +7 -1
  263. package/dist/components/ui/textarea/textarea.svelte +1 -1
  264. package/dist/components/ui/toggle/toggle.svelte +5 -5
  265. package/dist/components/ui/toggle/toggle.svelte.d.ts +2 -2
  266. package/dist/components/ui/toggle-group/toggle-group-item.svelte +1 -1
  267. package/dist/components/ui/toggle-group/toggle-group.svelte +21 -5
  268. package/dist/components/ui/toggle-group/toggle-group.svelte.d.ts +2 -0
  269. package/dist/components/ui/tooltip/tooltip-content.svelte +6 -6
  270. package/dist/components/ui/tooltip/tooltip-provider.svelte +2 -2
  271. package/dist/components/ui/tooltip/tooltip.svelte +4 -1
  272. package/package.json +16 -16
@@ -17,7 +17,7 @@
17
17
  config: ChartConfig;
18
18
  } = $props();
19
19
 
20
- const chartId = `chart-${id || uid.replace(/:/g, "")}`;
20
+ const chartId = $derived(`chart-${id || uid.replace(/:/g, "")}`);
21
21
 
22
22
  setChartContext({
23
23
  get config() {
@@ -85,6 +85,7 @@
85
85
 
86
86
  <TooltipPrimitive.Root variant="none">
87
87
  <div
88
+ bind:this={ref}
88
89
  class={cn(
89
90
  "border-border/50 bg-background grid min-w-[9rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl",
90
91
  className
@@ -1,8 +1,8 @@
1
1
  <script lang="ts">
2
2
  import { Checkbox as CheckboxPrimitive } from "bits-ui";
3
+ import { cn, type WithoutChildrenOrChild } from "../../../utils.js";
3
4
  import CheckIcon from "@lucide/svelte/icons/check";
4
5
  import MinusIcon from "@lucide/svelte/icons/minus";
5
- import { cn, type WithoutChildrenOrChild } from "../../../utils.js";
6
6
 
7
7
  let {
8
8
  ref = $bindable(null),
@@ -17,7 +17,7 @@
17
17
  bind:ref
18
18
  data-slot="checkbox"
19
19
  class={cn(
20
- "border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive peer flex size-4 shrink-0 items-center justify-center rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
20
+ "border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3",
21
21
  className
22
22
  )}
23
23
  bind:checked
@@ -25,11 +25,11 @@
25
25
  {...restProps}
26
26
  >
27
27
  {#snippet children({ checked, indeterminate })}
28
- <div data-slot="checkbox-indicator" class="text-current transition-none">
28
+ <div data-slot="checkbox-indicator" class="grid place-content-center text-current transition-none [&>svg]:size-3.5">
29
29
  {#if checked}
30
- <CheckIcon class="size-3.5" />
30
+ <CheckIcon />
31
31
  {:else if indeterminate}
32
- <MinusIcon class="size-3.5" />
32
+ <MinusIcon />
33
33
  {/if}
34
34
  </div>
35
35
  {/snippet}
@@ -3,16 +3,18 @@
3
3
  import type { Snippet } from "svelte";
4
4
  import Command from "./command.svelte";
5
5
  import * as Dialog from "../dialog/index.js";
6
- import type { WithoutChildrenOrChild } from "../../../utils.js";
6
+ import { cn, type WithoutChildrenOrChild } from "../../../utils.js";
7
7
 
8
8
  let {
9
9
  open = $bindable(false),
10
10
  ref = $bindable(null),
11
11
  value = $bindable(""),
12
12
  title = "Command Palette",
13
- description = "Search for a command to run",
13
+ description = "Search for a command to run...",
14
+ showCloseButton = false,
14
15
  portalProps,
15
16
  children,
17
+ class: className,
16
18
  ...restProps
17
19
  }: WithoutChildrenOrChild<DialogPrimitive.RootProps> &
18
20
  WithoutChildrenOrChild<CommandPrimitive.RootProps> & {
@@ -20,6 +22,8 @@
20
22
  children: Snippet;
21
23
  title?: string;
22
24
  description?: string;
25
+ showCloseButton?: boolean;
26
+ class?: string;
23
27
  } = $props();
24
28
  </script>
25
29
 
@@ -28,13 +32,11 @@
28
32
  <Dialog.Title>{title}</Dialog.Title>
29
33
  <Dialog.Description>{description}</Dialog.Description>
30
34
  </Dialog.Header>
31
- <Dialog.Content class="overflow-hidden p-0" {portalProps}>
32
- <Command
33
- class="**:data-[slot=command-input-wrapper]:h-12 [&_[data-command-group]]:px-2 [&_[data-command-group]:not([hidden])_~[data-command-group]]:pt-0 [&_[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"
34
- {...restProps}
35
- bind:value
36
- bind:ref
37
- {children}
38
- />
35
+ <Dialog.Content
36
+ class={cn("top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0", className)}
37
+ {showCloseButton}
38
+ {portalProps}
39
+ >
40
+ <Command {...restProps} bind:value bind:ref {children} />
39
41
  </Dialog.Content>
40
42
  </Dialog.Root>
@@ -1,11 +1,13 @@
1
1
  import type { Command as CommandPrimitive, Dialog as DialogPrimitive } from "bits-ui";
2
2
  import type { Snippet } from "svelte";
3
- import type { WithoutChildrenOrChild } from "../../../utils.js";
3
+ import { type WithoutChildrenOrChild } from "../../../utils.js";
4
4
  type $$ComponentProps = WithoutChildrenOrChild<DialogPrimitive.RootProps> & WithoutChildrenOrChild<CommandPrimitive.RootProps> & {
5
5
  portalProps?: DialogPrimitive.PortalProps;
6
6
  children: Snippet;
7
7
  title?: string;
8
8
  description?: string;
9
+ showCloseButton?: boolean;
10
+ class?: string;
9
11
  };
10
12
  declare const CommandDialog: import("svelte").Component<$$ComponentProps, {}, "ref" | "value" | "open">;
11
13
  type CommandDialog = ReturnType<typeof CommandDialog>;
@@ -17,7 +17,10 @@
17
17
  <CommandPrimitive.Group
18
18
  bind:ref
19
19
  data-slot="command-group"
20
- class={cn("text-foreground overflow-hidden p-1", className)}
20
+ class={cn(
21
+ "text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium",
22
+ className
23
+ )}
21
24
  value={value ?? heading ?? `----${useId()}`}
22
25
  {...restProps}
23
26
  >
@@ -1,7 +1,8 @@
1
1
  <script lang="ts">
2
2
  import { Command as CommandPrimitive } from "bits-ui";
3
- import SearchIcon from "@lucide/svelte/icons/search";
4
3
  import { cn } from "../../../utils.js";
4
+ import * as InputGroup from "../input-group/index.js";
5
+ import SearchIcon from "@lucide/svelte/icons/search";
5
6
 
6
7
  let {
7
8
  ref = $bindable(null),
@@ -11,16 +12,19 @@
11
12
  }: CommandPrimitive.InputProps = $props();
12
13
  </script>
13
14
 
14
- <div class="flex h-9 items-center gap-2 border-b ps-3 pe-8" data-slot="command-input-wrapper">
15
- <SearchIcon class="size-4 shrink-0 opacity-50" />
16
- <CommandPrimitive.Input
17
- data-slot="command-input"
18
- class={cn(
19
- "placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
20
- className
21
- )}
22
- bind:ref
23
- {...restProps}
24
- bind:value
25
- />
15
+ <div data-slot="command-input-wrapper" class="p-1 pb-0">
16
+ <InputGroup.Root
17
+ class="bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!"
18
+ >
19
+ <CommandPrimitive.Input
20
+ data-slot="command-input"
21
+ class={cn("w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className)}
22
+ bind:ref
23
+ {...restProps}
24
+ bind:value
25
+ />
26
+ <InputGroup.Addon>
27
+ <SearchIcon class="size-4 shrink-0 opacity-50" />
28
+ </InputGroup.Addon>
29
+ </InputGroup.Root>
26
30
  </div>
@@ -1,16 +1,22 @@
1
1
  <script lang="ts">
2
2
  import { Command as CommandPrimitive } from "bits-ui";
3
3
  import { cn } from "../../../utils.js";
4
+ import CheckIcon from "@lucide/svelte/icons/check";
4
5
 
5
- let { ref = $bindable(null), class: className, ...restProps }: CommandPrimitive.ItemProps = $props();
6
+ let { ref = $bindable(null), class: className, children, ...restProps }: CommandPrimitive.ItemProps = $props();
6
7
  </script>
7
8
 
8
9
  <CommandPrimitive.Item
9
10
  bind:ref
10
11
  data-slot="command-item"
11
12
  class={cn(
12
- "aria-selected:bg-accent aria-selected:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
13
+ "group/command-item data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
13
14
  className
14
15
  )}
15
16
  {...restProps}
16
- />
17
+ >
18
+ {@render children?.()}
19
+ <CheckIcon
20
+ class="cn-command-item-indicator ml-auto opacity-0 group-has-[[data-slot=command-shortcut]]/command-item:hidden group-data-[checked=true]/command-item:opacity-100"
21
+ />
22
+ </CommandPrimitive.Item>
@@ -8,6 +8,6 @@
8
8
  <CommandPrimitive.List
9
9
  bind:ref
10
10
  data-slot="command-list"
11
- class={cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className)}
11
+ class={cn("no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none", className)}
12
12
  {...restProps}
13
13
  />
@@ -13,7 +13,10 @@
13
13
  <span
14
14
  bind:this={ref}
15
15
  data-slot="command-shortcut"
16
- class={cn("text-muted-foreground ms-auto text-xs tracking-widest", className)}
16
+ class={cn(
17
+ "text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-xs tracking-widest",
18
+ className
19
+ )}
17
20
  {...restProps}
18
21
  >
19
22
  {@render children?.()}
@@ -20,6 +20,6 @@
20
20
  bind:value
21
21
  bind:ref
22
22
  data-slot="command"
23
- class={cn("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md", className)}
23
+ class={cn("bg-popover text-popover-foreground flex size-full flex-col overflow-hidden rounded-xl! p-1", className)}
24
24
  {...restProps}
25
25
  />
@@ -1,17 +1,19 @@
1
1
  <script lang="ts">
2
2
  import { ContextMenu as ContextMenuPrimitive } from "bits-ui";
3
- import CheckIcon from "@lucide/svelte/icons/check";
4
3
  import { cn, type WithoutChildrenOrChild } from "../../../utils.js";
5
4
  import type { Snippet } from "svelte";
5
+ import CheckIcon from "@lucide/svelte/icons/check";
6
6
 
7
7
  let {
8
8
  ref = $bindable(null),
9
9
  checked = $bindable(false),
10
10
  indeterminate = $bindable(false),
11
11
  class: className,
12
+ inset,
12
13
  children: childrenProp,
13
14
  ...restProps
14
15
  }: WithoutChildrenOrChild<ContextMenuPrimitive.CheckboxItemProps> & {
16
+ inset?: boolean;
15
17
  children?: Snippet;
16
18
  } = $props();
17
19
  </script>
@@ -21,16 +23,17 @@
21
23
  bind:checked
22
24
  bind:indeterminate
23
25
  data-slot="context-menu-checkbox-item"
26
+ data-inset={inset}
24
27
  class={cn(
25
- "data-highlighted:bg-accent data-highlighted:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 ps-8 pe-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
28
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
26
29
  className
27
30
  )}
28
31
  {...restProps}
29
32
  >
30
33
  {#snippet children({ checked })}
31
- <span class="pointer-events-none absolute start-2 flex size-3.5 items-center justify-center">
34
+ <span class="pointer-events-none absolute right-2">
32
35
  {#if checked}
33
- <CheckIcon class="size-4" />
36
+ <CheckIcon />
34
37
  {/if}
35
38
  </span>
36
39
  {@render childrenProp?.()}
@@ -2,6 +2,7 @@ import { ContextMenu as ContextMenuPrimitive } from "bits-ui";
2
2
  import { type WithoutChildrenOrChild } from "../../../utils.js";
3
3
  import type { Snippet } from "svelte";
4
4
  type $$ComponentProps = WithoutChildrenOrChild<ContextMenuPrimitive.CheckboxItemProps> & {
5
+ inset?: boolean;
5
6
  children?: Snippet;
6
7
  };
7
8
  declare const ContextMenuCheckboxItem: import("svelte").Component<$$ComponentProps, {}, "ref" | "checked" | "indeterminate">;
@@ -20,7 +20,7 @@
20
20
  bind:ref
21
21
  data-slot="context-menu-content"
22
22
  class={cn(
23
- "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-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--bits-context-menu-content-available-height) min-w-[8rem] origin-(--bits-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
23
+ "data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground z-50 min-w-36 overflow-x-hidden overflow-y-auto rounded-lg p-1 shadow-md ring-1 duration-100 outline-none",
24
24
  className
25
25
  )}
26
26
  {...restProps}
@@ -16,6 +16,6 @@
16
16
  bind:ref
17
17
  data-slot="context-menu-group-heading"
18
18
  data-inset={inset}
19
- class={cn("text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:ps-8", className)}
19
+ class={cn("text-foreground px-2 py-1.5 text-sm font-medium data-inset:ps-8", className)}
20
20
  {...restProps}
21
21
  />
@@ -20,7 +20,7 @@
20
20
  data-inset={inset}
21
21
  data-variant={variant}
22
22
  class={cn(
23
- "data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:data-highlighted:bg-destructive/10 dark:data-[variant=destructive]:data-highlighted:bg-destructive/20 data-[variant=destructive]:data-highlighted:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:ps-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
23
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
24
24
  className
25
25
  )}
26
26
  {...restProps}
@@ -17,7 +17,7 @@
17
17
  bind:this={ref}
18
18
  data-slot="context-menu-label"
19
19
  data-inset={inset}
20
- class={cn("text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:ps-8", className)}
20
+ class={cn("text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7 data-inset:pl-8", className)}
21
21
  {...restProps}
22
22
  >
23
23
  {@render children?.()}
@@ -1,29 +1,33 @@
1
1
  <script lang="ts">
2
2
  import { ContextMenu as ContextMenuPrimitive } from "bits-ui";
3
- import CircleIcon from "@lucide/svelte/icons/circle";
4
3
  import { cn, type WithoutChild } from "../../../utils.js";
4
+ import CheckIcon from "@lucide/svelte/icons/check";
5
5
 
6
6
  let {
7
7
  ref = $bindable(null),
8
8
  class: className,
9
+ inset,
9
10
  children: childrenProp,
10
11
  ...restProps
11
- }: WithoutChild<ContextMenuPrimitive.RadioItemProps> = $props();
12
+ }: WithoutChild<ContextMenuPrimitive.RadioItemProps> & {
13
+ inset?: boolean;
14
+ } = $props();
12
15
  </script>
13
16
 
14
17
  <ContextMenuPrimitive.RadioItem
15
18
  bind:ref
16
19
  data-slot="context-menu-radio-item"
20
+ data-inset={inset}
17
21
  class={cn(
18
- "data-highlighted:bg-accent data-highlighted:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 ps-8 pe-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
22
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
19
23
  className
20
24
  )}
21
25
  {...restProps}
22
26
  >
23
27
  {#snippet children({ checked })}
24
- <span class="pointer-events-none absolute start-2 flex size-3.5 items-center justify-center">
28
+ <span class="pointer-events-none absolute right-2">
25
29
  {#if checked}
26
- <CircleIcon class="size-2 fill-current" />
30
+ <CheckIcon />
27
31
  {/if}
28
32
  </span>
29
33
  {@render childrenProp?.({ checked })}
@@ -1,4 +1,8 @@
1
1
  import { ContextMenu as ContextMenuPrimitive } from "bits-ui";
2
- declare const ContextMenuRadioItem: import("svelte").Component<Omit<ContextMenuPrimitive.RadioItemProps, "child">, {}, "ref">;
2
+ import { type WithoutChild } from "../../../utils.js";
3
+ type $$ComponentProps = WithoutChild<ContextMenuPrimitive.RadioItemProps> & {
4
+ inset?: boolean;
5
+ };
6
+ declare const ContextMenuRadioItem: import("svelte").Component<$$ComponentProps, {}, "ref">;
3
7
  type ContextMenuRadioItem = ReturnType<typeof ContextMenuRadioItem>;
4
8
  export default ContextMenuRadioItem;
@@ -13,7 +13,10 @@
13
13
  <span
14
14
  bind:this={ref}
15
15
  data-slot="context-menu-shortcut"
16
- class={cn("text-muted-foreground ms-auto text-xs tracking-widest", className)}
16
+ class={cn(
17
+ "text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest",
18
+ className
19
+ )}
17
20
  {...restProps}
18
21
  >
19
22
  {@render children?.()}
@@ -9,7 +9,7 @@
9
9
  bind:ref
10
10
  data-slot="context-menu-sub-content"
11
11
  class={cn(
12
- "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-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--bits-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
12
+ "data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 min-w-32 rounded-lg border p-1 shadow-lg duration-100",
13
13
  className
14
14
  )}
15
15
  {...restProps}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { ContextMenu as ContextMenuPrimitive } from "bits-ui";
3
- import ChevronRightIcon from "@lucide/svelte/icons/chevron-right";
4
3
  import { cn, type WithoutChild } from "../../../utils.js";
4
+ import ChevronRightIcon from "@lucide/svelte/icons/chevron-right";
5
5
 
6
6
  let {
7
7
  ref = $bindable(null),
@@ -19,11 +19,11 @@
19
19
  data-slot="context-menu-sub-trigger"
20
20
  data-inset={inset}
21
21
  class={cn(
22
- "data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:ps-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
22
+ "focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none data-inset:ps-8 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
23
23
  className
24
24
  )}
25
25
  {...restProps}
26
26
  >
27
27
  {@render children?.()}
28
- <ChevronRightIcon class="ms-auto" />
28
+ <ChevronRightIcon class="ml-auto" />
29
29
  </ContextMenuPrimitive.SubTrigger>
@@ -1,7 +1,13 @@
1
1
  <script lang="ts">
2
2
  import { ContextMenu as ContextMenuPrimitive } from "bits-ui";
3
+ import { cn } from "../../../utils.js";
3
4
 
4
- let { ref = $bindable(null), ...restProps }: ContextMenuPrimitive.TriggerProps = $props();
5
+ let { ref = $bindable(null), class: className, ...restProps }: ContextMenuPrimitive.TriggerProps = $props();
5
6
  </script>
6
7
 
7
- <ContextMenuPrimitive.Trigger bind:ref data-slot="context-menu-trigger" {...restProps} />
8
+ <ContextMenuPrimitive.Trigger
9
+ bind:ref
10
+ data-slot="context-menu-trigger"
11
+ class={cn("cn-context-menu-trigger select-none", className)}
12
+ {...restProps}
13
+ />
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { Dialog as DialogPrimitive } from "bits-ui";
3
3
 
4
- let { ref = $bindable(null), ...restProps }: DialogPrimitive.CloseProps = $props();
4
+ let { ref = $bindable(null), type = "button", ...restProps }: DialogPrimitive.CloseProps = $props();
5
5
  </script>
6
6
 
7
- <DialogPrimitive.Close bind:ref data-slot="dialog-close" {...restProps} />
7
+ <DialogPrimitive.Close bind:ref data-slot="dialog-close" {type} {...restProps} />
@@ -1,11 +1,12 @@
1
1
  <script lang="ts">
2
2
  import { Dialog as DialogPrimitive } from "bits-ui";
3
3
  import DialogPortal from "./dialog-portal.svelte";
4
- import XIcon from "@lucide/svelte/icons/x";
5
4
  import type { Snippet } from "svelte";
6
5
  import * as Dialog from "./index.js";
7
6
  import { cn, type WithoutChildrenOrChild } from "../../../utils.js";
8
7
  import type { ComponentProps } from "svelte";
8
+ import { Button } from "../button/index.js";
9
+ import XIcon from "@lucide/svelte/icons/x";
9
10
 
10
11
  let {
11
12
  ref = $bindable(null),
@@ -27,18 +28,20 @@
27
28
  bind:ref
28
29
  data-slot="dialog-content"
29
30
  class={cn(
30
- "bg-background 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
31
+ "bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl p-4 text-sm ring-1 duration-100 outline-none sm:max-w-sm",
31
32
  className
32
33
  )}
33
34
  {...restProps}
34
35
  >
35
36
  {@render children?.()}
36
37
  {#if showCloseButton}
37
- <DialogPrimitive.Close
38
- class="ring-offset-background focus:ring-ring absolute end-4 top-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
39
- >
40
- <XIcon />
41
- <span class="sr-only">Close</span>
38
+ <DialogPrimitive.Close data-slot="dialog-close">
39
+ {#snippet child({ props })}
40
+ <Button variant="ghost" class="absolute top-2 right-2" size="icon-sm" {...props}>
41
+ <XIcon />
42
+ <span class="sr-only">Close</span>
43
+ </Button>
44
+ {/snippet}
42
45
  </DialogPrimitive.Close>
43
46
  {/if}
44
47
  </DialogPrimitive.Content>
@@ -8,6 +8,9 @@
8
8
  <DialogPrimitive.Description
9
9
  bind:ref
10
10
  data-slot="dialog-description"
11
- class={cn("text-muted-foreground text-sm", className)}
11
+ class={cn(
12
+ "text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3",
13
+ className
14
+ )}
12
15
  {...restProps}
13
16
  />
@@ -1,20 +1,35 @@
1
1
  <script lang="ts">
2
2
  import { cn, type WithElementRef } from "../../../utils.js";
3
3
  import type { HTMLAttributes } from "svelte/elements";
4
+ import { Dialog as DialogPrimitive } from "bits-ui";
5
+ import { Button } from "../button/index.js";
4
6
 
5
7
  let {
6
8
  ref = $bindable(null),
7
9
  class: className,
8
10
  children,
11
+ showCloseButton = false,
9
12
  ...restProps
10
- }: WithElementRef<HTMLAttributes<HTMLDivElement>> = $props();
13
+ }: WithElementRef<HTMLAttributes<HTMLDivElement>> & {
14
+ showCloseButton?: boolean;
15
+ } = $props();
11
16
  </script>
12
17
 
13
18
  <div
14
19
  bind:this={ref}
15
20
  data-slot="dialog-footer"
16
- class={cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className)}
21
+ class={cn(
22
+ "bg-muted/50 -mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t p-4 sm:flex-row sm:justify-end",
23
+ className
24
+ )}
17
25
  {...restProps}
18
26
  >
19
27
  {@render children?.()}
28
+ {#if showCloseButton}
29
+ <DialogPrimitive.Close>
30
+ {#snippet child({ props })}
31
+ <Button variant="outline" {...props}>Close</Button>
32
+ {/snippet}
33
+ </DialogPrimitive.Close>
34
+ {/if}
20
35
  </div>
@@ -1,5 +1,8 @@
1
1
  import { type WithElementRef } from "../../../utils.js";
2
2
  import type { HTMLAttributes } from "svelte/elements";
3
- declare const DialogFooter: import("svelte").Component<WithElementRef<HTMLAttributes<HTMLDivElement>>, {}, "ref">;
3
+ type $$ComponentProps = WithElementRef<HTMLAttributes<HTMLDivElement>> & {
4
+ showCloseButton?: boolean;
5
+ };
6
+ declare const DialogFooter: import("svelte").Component<$$ComponentProps, {}, "ref">;
4
7
  type DialogFooter = ReturnType<typeof DialogFooter>;
5
8
  export default DialogFooter;
@@ -10,11 +10,6 @@
10
10
  }: WithElementRef<HTMLAttributes<HTMLDivElement>> = $props();
11
11
  </script>
12
12
 
13
- <div
14
- bind:this={ref}
15
- data-slot="dialog-header"
16
- class={cn("flex flex-col gap-2 text-center sm:text-start", className)}
17
- {...restProps}
18
- >
13
+ <div bind:this={ref} data-slot="dialog-header" class={cn("flex flex-col gap-2", className)} {...restProps}>
19
14
  {@render children?.()}
20
15
  </div>
@@ -9,7 +9,7 @@
9
9
  bind:ref
10
10
  data-slot="dialog-overlay"
11
11
  class={cn(
12
- "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/50",
12
+ "data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs",
13
13
  className
14
14
  )}
15
15
  {...restProps}
@@ -8,6 +8,6 @@
8
8
  <DialogPrimitive.Title
9
9
  bind:ref
10
10
  data-slot="dialog-title"
11
- class={cn("text-lg leading-none font-semibold", className)}
11
+ class={cn("text-base leading-none font-medium", className)}
12
12
  {...restProps}
13
13
  />
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { Dialog as DialogPrimitive } from "bits-ui";
3
3
 
4
- let { ref = $bindable(null), ...restProps }: DialogPrimitive.TriggerProps = $props();
4
+ let { ref = $bindable(null), type = "button", ...restProps }: DialogPrimitive.TriggerProps = $props();
5
5
  </script>
6
6
 
7
- <DialogPrimitive.Trigger bind:ref data-slot="dialog-trigger" {...restProps} />
7
+ <DialogPrimitive.Trigger bind:ref data-slot="dialog-trigger" {type} {...restProps} />
@@ -23,17 +23,13 @@
23
23
  bind:ref
24
24
  data-slot="drawer-content"
25
25
  class={cn(
26
- "group/drawer-content bg-background fixed z-50 flex h-auto flex-col",
27
- "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b",
28
- "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t",
29
- "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:end-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-s data-[vaul-drawer-direction=right]:sm:max-w-sm",
30
- "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:start-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-e data-[vaul-drawer-direction=left]:sm:max-w-sm",
26
+ "bg-background group/drawer-content fixed z-50 flex h-auto flex-col text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm",
31
27
  className
32
28
  )}
33
29
  {...restProps}
34
30
  >
35
31
  <div
36
- class="bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"
32
+ class="bg-muted bg-muted mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"
37
33
  ></div>
38
34
  {@render children?.()}
39
35
  </DrawerPrimitive.Content>