negodesign 0.0.71 → 0.0.73

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 (392) hide show
  1. package/README.md +115 -23
  2. package/dist/components/NegoDesign.svelte +7 -2
  3. package/dist/components/core/carousel/badge/ui/CarouselBadge.svelte +3 -5
  4. package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte +2 -2
  5. package/dist/components/core/carousel/highlights/ui/CarouselHighlights.svelte +2 -2
  6. package/dist/components/core/carousel/product/ui/CarouselProduct.svelte +2 -2
  7. package/dist/components/core/carousel/promotion/ui/CarouselPromotion.svelte +2 -2
  8. package/dist/components/core/datatable/data/columns-create.d.ts +1 -1
  9. package/dist/components/core/datatable/data/data-table.d.ts +3 -3
  10. package/dist/components/core/datatable/data/resolve-cell-badge.svelte.d.ts +2 -2
  11. package/dist/components/core/datatable/data/resolve-cell-badge.svelte.js +2 -1
  12. package/dist/components/core/datatable/data/resolve-cell.svelte.d.ts +2 -2
  13. package/dist/components/core/datatable/data/resolve-header.svelte.d.ts +2 -2
  14. package/dist/components/core/datatable/ui/DataTableActions.svelte +1 -1
  15. package/dist/components/core/datatable/ui/DataTableActions.svelte.d.ts +1 -1
  16. package/dist/components/core/datatable/ui/DataTableContent.svelte +1 -1
  17. package/dist/components/core/datatable/ui/DataTableContent.svelte.d.ts +1 -1
  18. package/dist/components/core/datatable/ui/DataTableCore.svelte +23 -26
  19. package/dist/components/core/datatable/ui/DataTableListFilter.svelte +3 -2
  20. package/dist/components/core/datatable/ui/DataTableListFilter.svelte.d.ts +1 -1
  21. package/dist/components/core/datatable/ui/DataTableListPagination.svelte +1 -1
  22. package/dist/components/core/datatable/ui/DataTableListPagination.svelte.d.ts +1 -1
  23. package/dist/components/core/datatable/ui/columns-create.svelte.d.ts +1 -1
  24. package/dist/components/core/panel/LeftHero.svelte +2 -2
  25. package/dist/components/core/sidebar/data/nav-top-bar-sidebar.d.ts +13 -4
  26. package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte +3 -3
  27. package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte +0 -2
  28. package/dist/components/core/sidebar/ui/navbar/nav-menu-header-sidebar.svelte +4 -5
  29. package/dist/components/pages/product-details/shared/ProductDetailFilesVertical.svelte +0 -1
  30. package/dist/components/pages/profile-user/shared/ProfileUserAddress.svelte +2 -3
  31. package/dist/components/pages/profile-user/shared/ProfileUserTabs.svelte +3 -1
  32. package/dist/components/ui/avatar/avatar-fallback.svelte +22 -12
  33. package/dist/components/ui/avatar/avatar-fallback.svelte.d.ts +3 -2
  34. package/dist/components/ui/avatar/avatar-image.svelte +31 -9
  35. package/dist/components/ui/avatar/avatar-image.svelte.d.ts +3 -2
  36. package/dist/components/ui/avatar/avatar.svelte +23 -9
  37. package/dist/components/ui/avatar/avatar.svelte.d.ts +6 -3
  38. package/dist/components/ui/avatar/context.svelte.d.ts +7 -0
  39. package/dist/components/ui/avatar/context.svelte.js +10 -0
  40. package/dist/components/ui/badge/badge.svelte +24 -26
  41. package/dist/components/ui/badge/badge.svelte.d.ts +15 -33
  42. package/dist/components/ui/button/button.svelte +35 -31
  43. package/dist/components/ui/button/button.svelte.d.ts +24 -61
  44. package/dist/components/ui/carousel/autoplay.d.ts +7 -0
  45. package/dist/components/ui/carousel/autoplay.js +7 -0
  46. package/dist/components/ui/carousel/carousel-content.svelte +31 -17
  47. package/dist/components/ui/carousel/carousel-item.svelte +2 -3
  48. package/dist/components/ui/carousel/carousel-next.svelte +1 -1
  49. package/dist/components/ui/carousel/carousel-previous.svelte +1 -1
  50. package/dist/components/ui/carousel/carousel.svelte +162 -30
  51. package/dist/components/ui/carousel/context.d.ts +23 -14
  52. package/dist/components/ui/carousel/context.js +4 -4
  53. package/dist/components/ui/carousel/index.d.ts +2 -0
  54. package/dist/components/ui/carousel/index.js +1 -0
  55. package/dist/components/ui/checkbox/checkbox.svelte +74 -17
  56. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +17 -2
  57. package/dist/components/ui/collapsible/collapsible-content.svelte +27 -3
  58. package/dist/components/ui/collapsible/collapsible-content.svelte.d.ts +8 -2
  59. package/dist/components/ui/collapsible/collapsible-trigger.svelte +48 -3
  60. package/dist/components/ui/collapsible/collapsible-trigger.svelte.d.ts +10 -2
  61. package/dist/components/ui/collapsible/collapsible.svelte +62 -6
  62. package/dist/components/ui/collapsible/collapsible.svelte.d.ts +21 -2
  63. package/dist/components/ui/data-table/data-table.svelte.d.ts +2 -40
  64. package/dist/components/ui/data-table/data-table.svelte.js +1 -110
  65. package/dist/components/ui/data-table/flex-render.svelte +5 -5
  66. package/dist/components/ui/data-table/flex-render.svelte.d.ts +2 -2
  67. package/dist/components/ui/data-table/index.d.ts +2 -1
  68. package/dist/components/ui/data-table/index.js +1 -1
  69. package/dist/components/ui/data-table/table-core.svelte.d.ts +117 -0
  70. package/dist/components/ui/data-table/table-core.svelte.js +260 -0
  71. package/dist/components/ui/drawer/drawer-close.svelte +38 -3
  72. package/dist/components/ui/drawer/drawer-close.svelte.d.ts +10 -2
  73. package/dist/components/ui/drawer/drawer-content.svelte +67 -18
  74. package/dist/components/ui/drawer/drawer-content.svelte.d.ts +5 -4
  75. package/dist/components/ui/drawer/drawer-description.svelte +9 -6
  76. package/dist/components/ui/drawer/drawer-description.svelte.d.ts +3 -2
  77. package/dist/components/ui/drawer/drawer-nested.svelte +28 -5
  78. package/dist/components/ui/drawer/drawer-nested.svelte.d.ts +8 -1
  79. package/dist/components/ui/drawer/drawer-overlay.svelte +18 -9
  80. package/dist/components/ui/drawer/drawer-overlay.svelte.d.ts +3 -2
  81. package/dist/components/ui/drawer/drawer-portal.svelte +16 -3
  82. package/dist/components/ui/drawer/drawer-portal.svelte.d.ts +3 -1
  83. package/dist/components/ui/drawer/drawer-title.svelte +9 -6
  84. package/dist/components/ui/drawer/drawer-title.svelte.d.ts +3 -2
  85. package/dist/components/ui/drawer/drawer-trigger.svelte +39 -3
  86. package/dist/components/ui/drawer/drawer-trigger.svelte.d.ts +10 -2
  87. package/dist/components/ui/drawer/drawer.svelte +67 -4
  88. package/dist/components/ui/drawer/drawer.svelte.d.ts +23 -1
  89. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +18 -8
  90. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +8 -2
  91. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +53 -28
  92. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +8 -3
  93. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +93 -17
  94. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -6
  95. package/dist/components/ui/dropdown-menu/dropdown-menu-context.svelte.d.ts +26 -0
  96. package/dist/components/ui/dropdown-menu/dropdown-menu-context.svelte.js +27 -0
  97. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +14 -8
  98. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +6 -3
  99. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +18 -3
  100. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +7 -2
  101. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +42 -8
  102. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +9 -2
  103. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +9 -5
  104. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +5 -2
  105. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +3 -3
  106. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte.d.ts +5 -1
  107. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +36 -8
  108. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +9 -2
  109. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +59 -23
  110. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +12 -2
  111. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +11 -7
  112. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +6 -2
  113. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +26 -9
  114. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +8 -2
  115. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +39 -11
  116. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -2
  117. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +73 -3
  118. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte.d.ts +8 -1
  119. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +65 -3
  120. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +12 -2
  121. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +50 -3
  122. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte.d.ts +9 -1
  123. package/dist/components/ui/empty/empty-content.svelte +2 -5
  124. package/dist/components/ui/empty/empty-description.svelte +2 -5
  125. package/dist/components/ui/empty/empty-header.svelte +2 -2
  126. package/dist/components/ui/empty/empty-media.svelte +17 -16
  127. package/dist/components/ui/empty/empty-media.svelte.d.ts +10 -19
  128. package/dist/components/ui/empty/empty-title.svelte +2 -2
  129. package/dist/components/ui/empty/empty.svelte +2 -5
  130. package/dist/components/ui/input-otp/context.svelte.d.ts +22 -0
  131. package/dist/components/ui/input-otp/context.svelte.js +8 -0
  132. package/dist/components/ui/input-otp/input-otp-group.svelte +5 -2
  133. package/dist/components/ui/input-otp/input-otp-separator.svelte +5 -5
  134. package/dist/components/ui/input-otp/input-otp-slot.svelte +50 -17
  135. package/dist/components/ui/input-otp/input-otp-slot.svelte.d.ts +7 -2
  136. package/dist/components/ui/input-otp/input-otp.svelte +167 -8
  137. package/dist/components/ui/input-otp/input-otp.svelte.d.ts +17 -2
  138. package/dist/components/ui/label/label.svelte +10 -10
  139. package/dist/components/ui/label/label.svelte.d.ts +3 -2
  140. package/dist/components/ui/language-switcher/language-switcher.svelte +4 -3
  141. package/dist/components/ui/light-switch/light-switch.svelte +12 -6
  142. package/dist/components/ui/phone-input/country-selector.svelte +64 -78
  143. package/dist/components/ui/phone-input/country-selector.svelte.d.ts +6 -6
  144. package/dist/components/ui/phone-input/flag.svelte +3 -12
  145. package/dist/components/ui/phone-input/flag.svelte.d.ts +1 -1
  146. package/dist/components/ui/phone-input/flags.d.ts +2 -1
  147. package/dist/components/ui/phone-input/flags.js +4 -8
  148. package/dist/components/ui/phone-input/index.d.ts +1 -1
  149. package/dist/components/ui/phone-input/phone-input.svelte +106 -21
  150. package/dist/components/ui/phone-input/phone-input.svelte.d.ts +1 -2
  151. package/dist/components/ui/phone-input/types.d.ts +16 -1
  152. package/dist/components/ui/popover/popover-close.svelte +22 -3
  153. package/dist/components/ui/popover/popover-close.svelte.d.ts +7 -2
  154. package/dist/components/ui/popover/popover-content.svelte +80 -18
  155. package/dist/components/ui/popover/popover-content.svelte.d.ts +10 -6
  156. package/dist/components/ui/popover/popover-context.svelte.d.ts +13 -0
  157. package/dist/components/ui/popover/popover-context.svelte.js +13 -0
  158. package/dist/components/ui/popover/popover-portal.svelte +3 -3
  159. package/dist/components/ui/popover/popover-portal.svelte.d.ts +5 -1
  160. package/dist/components/ui/popover/popover-trigger.svelte +62 -10
  161. package/dist/components/ui/popover/popover-trigger.svelte.d.ts +12 -2
  162. package/dist/components/ui/popover/popover.svelte +50 -3
  163. package/dist/components/ui/popover/popover.svelte.d.ts +9 -1
  164. package/dist/components/ui/separator/separator.svelte +17 -11
  165. package/dist/components/ui/separator/separator.svelte.d.ts +7 -2
  166. package/dist/components/ui/sidebar/context.svelte.d.ts +15 -23
  167. package/dist/components/ui/sidebar/context.svelte.js +33 -21
  168. package/dist/components/ui/sidebar/sidebar-content.svelte +1 -1
  169. package/dist/components/ui/sidebar/sidebar-footer.svelte +1 -1
  170. package/dist/components/ui/sidebar/sidebar-group-content.svelte +1 -1
  171. package/dist/components/ui/sidebar/sidebar-menu-action.svelte +3 -2
  172. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +35 -66
  173. package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +9 -38
  174. package/dist/components/ui/sidebar/sidebar-provider.svelte +28 -18
  175. package/dist/components/ui/sidebar/sidebar-provider.svelte.d.ts +3 -0
  176. package/dist/components/ui/sidebar/sidebar-rail.svelte +1 -1
  177. package/dist/components/ui/sidebar/sidebar-separator.svelte +11 -8
  178. package/dist/components/ui/sidebar/sidebar-separator.svelte.d.ts +3 -11
  179. package/dist/components/ui/sidebar/sidebar-trigger.svelte +2 -2
  180. package/dist/components/ui/sidebar/sidebar.svelte +34 -23
  181. package/dist/components/ui/sidebar/sidebar.svelte.d.ts +1 -1
  182. package/dist/components/ui/skeleton/skeleton.svelte +7 -4
  183. package/dist/components/ui/skeleton/skeleton.svelte.d.ts +1 -1
  184. package/dist/components/ui/star-rating/star-rating-star.svelte +57 -31
  185. package/dist/components/ui/star-rating/star-rating-star.svelte.d.ts +1 -1
  186. package/dist/components/ui/star-rating/star-rating.svelte +143 -13
  187. package/dist/components/ui/star-rating/star-rating.svelte.d.ts +31 -2
  188. package/dist/components/ui/star-rating/types.d.ts +6 -1
  189. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte +26 -9
  190. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte.d.ts +9 -2
  191. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte +15 -8
  192. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte.d.ts +8 -2
  193. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte +65 -34
  194. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte.d.ts +14 -2
  195. package/dist/components/ui/underline-tabs/underline-tabs.svelte +49 -20
  196. package/dist/components/ui/underline-tabs/underline-tabs.svelte.d.ts +10 -2
  197. package/dist/components/ui/underline-tabs/underline-tabs.svelte.js +6 -59
  198. package/dist/docs/ApiTable.svelte +42 -0
  199. package/dist/docs/ApiTable.svelte.d.ts +7 -0
  200. package/dist/docs/CodeBlock.svelte +26 -0
  201. package/dist/docs/CodeBlock.svelte.d.ts +7 -0
  202. package/dist/docs/DocsHeader.svelte +25 -0
  203. package/dist/docs/DocsHeader.svelte.d.ts +6 -0
  204. package/dist/docs/DocsSidebar.svelte +99 -0
  205. package/dist/docs/DocsSidebar.svelte.d.ts +3 -0
  206. package/dist/docs/components.d.ts +27 -0
  207. package/dist/docs/components.js +897 -0
  208. package/dist/globals.css +466 -1590
  209. package/dist/styles/globals.css +136 -2
  210. package/dist/theme.svelte.d.ts +7 -0
  211. package/dist/theme.svelte.js +33 -0
  212. package/dist/utils.d.ts +4 -4
  213. package/dist/utils.js +18 -3
  214. package/package.json +4 -34
  215. package/dist/components/ui/chart/chart-container.svelte +0 -80
  216. package/dist/components/ui/chart/chart-container.svelte.d.ts +0 -9
  217. package/dist/components/ui/chart/chart-style.svelte +0 -37
  218. package/dist/components/ui/chart/chart-style.svelte.d.ts +0 -8
  219. package/dist/components/ui/chart/chart-tooltip.svelte +0 -184
  220. package/dist/components/ui/chart/chart-tooltip.svelte.d.ts +0 -27
  221. package/dist/components/ui/chart/chart-utils.d.ts +0 -36
  222. package/dist/components/ui/chart/chart-utils.js +0 -38
  223. package/dist/components/ui/chart/index.d.ts +0 -4
  224. package/dist/components/ui/chart/index.js +0 -4
  225. package/dist/components/ui/command/command-dialog.svelte +0 -42
  226. package/dist/components/ui/command/command-dialog.svelte.d.ts +0 -14
  227. package/dist/components/ui/command/command-empty.svelte +0 -17
  228. package/dist/components/ui/command/command-empty.svelte.d.ts +0 -4
  229. package/dist/components/ui/command/command-group.svelte +0 -33
  230. package/dist/components/ui/command/command-group.svelte.d.ts +0 -7
  231. package/dist/components/ui/command/command-input.svelte +0 -33
  232. package/dist/components/ui/command/command-input.svelte.d.ts +0 -4
  233. package/dist/components/ui/command/command-item.svelte +0 -27
  234. package/dist/components/ui/command/command-item.svelte.d.ts +0 -4
  235. package/dist/components/ui/command/command-link-item.svelte +0 -20
  236. package/dist/components/ui/command/command-link-item.svelte.d.ts +0 -4
  237. package/dist/components/ui/command/command-list.svelte +0 -20
  238. package/dist/components/ui/command/command-list.svelte.d.ts +0 -4
  239. package/dist/components/ui/command/command-loading.svelte +0 -7
  240. package/dist/components/ui/command/command-loading.svelte.d.ts +0 -4
  241. package/dist/components/ui/command/command-separator.svelte +0 -17
  242. package/dist/components/ui/command/command-separator.svelte.d.ts +0 -4
  243. package/dist/components/ui/command/command-shortcut.svelte +0 -23
  244. package/dist/components/ui/command/command-shortcut.svelte.d.ts +0 -5
  245. package/dist/components/ui/command/command.svelte +0 -28
  246. package/dist/components/ui/command/command.svelte.d.ts +0 -8
  247. package/dist/components/ui/command/index.d.ts +0 -12
  248. package/dist/components/ui/command/index.js +0 -14
  249. package/dist/components/ui/dialog/dialog-close.svelte +0 -11
  250. package/dist/components/ui/dialog/dialog-close.svelte.d.ts +0 -4
  251. package/dist/components/ui/dialog/dialog-content.svelte +0 -48
  252. package/dist/components/ui/dialog/dialog-content.svelte.d.ts +0 -13
  253. package/dist/components/ui/dialog/dialog-description.svelte +0 -20
  254. package/dist/components/ui/dialog/dialog-description.svelte.d.ts +0 -4
  255. package/dist/components/ui/dialog/dialog-footer.svelte +0 -32
  256. package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +0 -8
  257. package/dist/components/ui/dialog/dialog-header.svelte +0 -20
  258. package/dist/components/ui/dialog/dialog-header.svelte.d.ts +0 -5
  259. package/dist/components/ui/dialog/dialog-overlay.svelte +0 -20
  260. package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +0 -4
  261. package/dist/components/ui/dialog/dialog-portal.svelte +0 -7
  262. package/dist/components/ui/dialog/dialog-portal.svelte.d.ts +0 -3
  263. package/dist/components/ui/dialog/dialog-title.svelte +0 -17
  264. package/dist/components/ui/dialog/dialog-title.svelte.d.ts +0 -4
  265. package/dist/components/ui/dialog/dialog-trigger.svelte +0 -11
  266. package/dist/components/ui/dialog/dialog-trigger.svelte.d.ts +0 -4
  267. package/dist/components/ui/dialog/dialog.svelte +0 -7
  268. package/dist/components/ui/dialog/dialog.svelte.d.ts +0 -3
  269. package/dist/components/ui/dialog/index.d.ts +0 -11
  270. package/dist/components/ui/dialog/index.js +0 -13
  271. package/dist/components/ui/input-group/index.d.ts +0 -7
  272. package/dist/components/ui/input-group/index.js +0 -9
  273. package/dist/components/ui/input-group/input-group-addon.svelte +0 -59
  274. package/dist/components/ui/input-group/input-group-addon.svelte.d.ts +0 -38
  275. package/dist/components/ui/input-group/input-group-button.svelte +0 -49
  276. package/dist/components/ui/input-group/input-group-button.svelte.d.ts +0 -32
  277. package/dist/components/ui/input-group/input-group-input.svelte +0 -23
  278. package/dist/components/ui/input-group/input-group-input.svelte.d.ts +0 -11
  279. package/dist/components/ui/input-group/input-group-text.svelte +0 -22
  280. package/dist/components/ui/input-group/input-group-text.svelte.d.ts +0 -5
  281. package/dist/components/ui/input-group/input-group-textarea.svelte +0 -23
  282. package/dist/components/ui/input-group/input-group-textarea.svelte.d.ts +0 -3
  283. package/dist/components/ui/input-group/input-group.svelte +0 -24
  284. package/dist/components/ui/input-group/input-group.svelte.d.ts +0 -5
  285. package/dist/components/ui/navigation-menu/index.d.ts +0 -9
  286. package/dist/components/ui/navigation-menu/index.js +0 -11
  287. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +0 -20
  288. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte.d.ts +0 -4
  289. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +0 -22
  290. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte.d.ts +0 -4
  291. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +0 -17
  292. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte.d.ts +0 -4
  293. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +0 -17
  294. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte.d.ts +0 -4
  295. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +0 -20
  296. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte.d.ts +0 -4
  297. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +0 -30
  298. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte.d.ts +0 -5
  299. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +0 -22
  300. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte.d.ts +0 -4
  301. package/dist/components/ui/navigation-menu/navigation-menu.svelte +0 -31
  302. package/dist/components/ui/navigation-menu/navigation-menu.svelte.d.ts +0 -7
  303. package/dist/components/ui/scroll-area/index.d.ts +0 -3
  304. package/dist/components/ui/scroll-area/index.js +0 -5
  305. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +0 -30
  306. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +0 -4
  307. package/dist/components/ui/scroll-area/scroll-area.svelte +0 -43
  308. package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +0 -11
  309. package/dist/components/ui/select/index.d.ts +0 -12
  310. package/dist/components/ui/select/index.js +0 -14
  311. package/dist/components/ui/select/select-content.svelte +0 -45
  312. package/dist/components/ui/select/select-content.svelte.d.ts +0 -11
  313. package/dist/components/ui/select/select-group-heading.svelte +0 -21
  314. package/dist/components/ui/select/select-group-heading.svelte.d.ts +0 -10
  315. package/dist/components/ui/select/select-group.svelte +0 -17
  316. package/dist/components/ui/select/select-group.svelte.d.ts +0 -4
  317. package/dist/components/ui/select/select-item.svelte +0 -41
  318. package/dist/components/ui/select/select-item.svelte.d.ts +0 -4
  319. package/dist/components/ui/select/select-label.svelte +0 -20
  320. package/dist/components/ui/select/select-label.svelte.d.ts +0 -6
  321. package/dist/components/ui/select/select-portal.svelte +0 -7
  322. package/dist/components/ui/select/select-portal.svelte.d.ts +0 -3
  323. package/dist/components/ui/select/select-scroll-down-button.svelte +0 -21
  324. package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +0 -4
  325. package/dist/components/ui/select/select-scroll-up-button.svelte +0 -21
  326. package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +0 -4
  327. package/dist/components/ui/select/select-separator.svelte +0 -18
  328. package/dist/components/ui/select/select-separator.svelte.d.ts +0 -4
  329. package/dist/components/ui/select/select-trigger.svelte +0 -30
  330. package/dist/components/ui/select/select-trigger.svelte.d.ts +0 -8
  331. package/dist/components/ui/select/select.svelte +0 -11
  332. package/dist/components/ui/select/select.svelte.d.ts +0 -3
  333. package/dist/components/ui/sheet/index.d.ts +0 -11
  334. package/dist/components/ui/sheet/index.js +0 -13
  335. package/dist/components/ui/sheet/sheet-close.svelte +0 -7
  336. package/dist/components/ui/sheet/sheet-close.svelte.d.ts +0 -4
  337. package/dist/components/ui/sheet/sheet-content.svelte +0 -56
  338. package/dist/components/ui/sheet/sheet-content.svelte.d.ts +0 -15
  339. package/dist/components/ui/sheet/sheet-description.svelte +0 -17
  340. package/dist/components/ui/sheet/sheet-description.svelte.d.ts +0 -4
  341. package/dist/components/ui/sheet/sheet-footer.svelte +0 -20
  342. package/dist/components/ui/sheet/sheet-footer.svelte.d.ts +0 -5
  343. package/dist/components/ui/sheet/sheet-header.svelte +0 -20
  344. package/dist/components/ui/sheet/sheet-header.svelte.d.ts +0 -5
  345. package/dist/components/ui/sheet/sheet-overlay.svelte +0 -17
  346. package/dist/components/ui/sheet/sheet-overlay.svelte.d.ts +0 -4
  347. package/dist/components/ui/sheet/sheet-portal.svelte +0 -7
  348. package/dist/components/ui/sheet/sheet-portal.svelte.d.ts +0 -3
  349. package/dist/components/ui/sheet/sheet-title.svelte +0 -17
  350. package/dist/components/ui/sheet/sheet-title.svelte.d.ts +0 -4
  351. package/dist/components/ui/sheet/sheet-trigger.svelte +0 -7
  352. package/dist/components/ui/sheet/sheet-trigger.svelte.d.ts +0 -4
  353. package/dist/components/ui/sheet/sheet.svelte +0 -7
  354. package/dist/components/ui/sheet/sheet.svelte.d.ts +0 -3
  355. package/dist/components/ui/spinner/index.d.ts +0 -1
  356. package/dist/components/ui/spinner/index.js +0 -1
  357. package/dist/components/ui/spinner/spinner.svelte +0 -26
  358. package/dist/components/ui/spinner/spinner.svelte.d.ts +0 -4
  359. package/dist/components/ui/tabs/index.d.ts +0 -5
  360. package/dist/components/ui/tabs/index.js +0 -7
  361. package/dist/components/ui/tabs/tabs-content.svelte +0 -17
  362. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +0 -4
  363. package/dist/components/ui/tabs/tabs-list.svelte +0 -40
  364. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +0 -25
  365. package/dist/components/ui/tabs/tabs-trigger.svelte +0 -23
  366. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +0 -4
  367. package/dist/components/ui/tabs/tabs.svelte +0 -19
  368. package/dist/components/ui/tabs/tabs.svelte.d.ts +0 -4
  369. package/dist/components/ui/textarea/index.d.ts +0 -2
  370. package/dist/components/ui/textarea/index.js +0 -4
  371. package/dist/components/ui/textarea/textarea.svelte +0 -23
  372. package/dist/components/ui/textarea/textarea.svelte.d.ts +0 -5
  373. package/dist/components/ui/tooltip/index.d.ts +0 -6
  374. package/dist/components/ui/tooltip/index.js +0 -8
  375. package/dist/components/ui/tooltip/tooltip-content.svelte +0 -52
  376. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +0 -11
  377. package/dist/components/ui/tooltip/tooltip-portal.svelte +0 -7
  378. package/dist/components/ui/tooltip/tooltip-portal.svelte.d.ts +0 -4
  379. package/dist/components/ui/tooltip/tooltip-provider.svelte +0 -7
  380. package/dist/components/ui/tooltip/tooltip-provider.svelte.d.ts +0 -4
  381. package/dist/components/ui/tooltip/tooltip-trigger.svelte +0 -7
  382. package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +0 -25
  383. package/dist/components/ui/tooltip/tooltip.svelte +0 -7
  384. package/dist/components/ui/tooltip/tooltip.svelte.d.ts +0 -25
  385. package/dist/vitest-examples/Welcome.svelte +0 -8
  386. package/dist/vitest-examples/Welcome.svelte.d.ts +0 -13
  387. package/dist/vitest-examples/Welcome.svelte.spec.d.ts +0 -1
  388. package/dist/vitest-examples/Welcome.svelte.spec.js +0 -11
  389. package/dist/vitest-examples/greet.d.ts +0 -1
  390. package/dist/vitest-examples/greet.js +0 -3
  391. package/dist/vitest-examples/greet.spec.d.ts +0 -1
  392. package/dist/vitest-examples/greet.spec.js +0 -7
@@ -1,45 +1,70 @@
1
1
  <script lang="ts">
2
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
- import { HugeiconsIcon } from "@hugeicons/svelte"
4
- import { MinusSignIcon } from '@hugeicons/core-free-icons';
5
- import { Tick02Icon } from '@hugeicons/core-free-icons';
6
- import { cn, type WithoutChildrenOrChild } from "../../../utils.js";
2
+ import { HugeiconsIcon } from "@hugeicons/svelte";
3
+ import { MinusSignIcon, Tick02Icon } from "@hugeicons/core-free-icons";
4
+ import { cn } from "../../../utils.js";
7
5
  import type { Snippet } from "svelte";
6
+ import type { HTMLButtonAttributes } from "svelte/elements";
8
7
 
9
8
  let {
10
- ref = $bindable(null),
9
+ ref = $bindable<HTMLButtonElement | null>(null),
11
10
  checked = $bindable(false),
12
11
  indeterminate = $bindable(false),
12
+ onCheckedChange,
13
13
  class: className,
14
- children: childrenProp,
14
+ disabled,
15
+ children,
15
16
  ...restProps
16
- }: WithoutChildrenOrChild<DropdownMenuPrimitive.CheckboxItemProps> & {
17
+ }: HTMLButtonAttributes & {
18
+ ref?: HTMLButtonElement | null;
19
+ checked?: boolean;
20
+ indeterminate?: boolean;
21
+ onCheckedChange?: (checked: boolean) => void;
22
+ class?: string;
23
+ disabled?: boolean;
17
24
  children?: Snippet;
18
25
  } = $props();
26
+
27
+ let isChecked = $derived(indeterminate || checked);
28
+
29
+ let highlighted = $state(false);
30
+
31
+ function handleClick() {
32
+ checked = !checked;
33
+ indeterminate = false;
34
+ onCheckedChange?.(checked);
35
+ }
19
36
  </script>
20
37
 
21
- <DropdownMenuPrimitive.CheckboxItem
22
- bind:ref
23
- bind:checked
24
- bind:indeterminate
38
+ <button
39
+ bind:this={ref}
40
+ type="button"
41
+ role="menuitemcheckbox"
42
+ tabindex="-1"
25
43
  data-slot="dropdown-menu-checkbox-item"
44
+ data-state={isChecked ? "checked" : "unchecked"}
45
+ data-highlighted={highlighted || undefined}
46
+ aria-checked={isChecked}
47
+ {disabled}
48
+ onclick={handleClick}
49
+ onfocus={() => (highlighted = true)}
50
+ onblur={() => (highlighted = false)}
51
+ onmouseenter={() => (highlighted = true)}
52
+ onmouseleave={() => (highlighted = false)}
26
53
  class={cn(
27
- "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
28
- className
54
+ "relative flex w-full cursor-pointer items-center justify-start gap-2.5 rounded-lg px-2 py-1.5 pr-8 text-sm outline-none select-none hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
55
+ className,
29
56
  )}
30
57
  {...restProps}
31
58
  >
32
- {#snippet children({ checked, indeterminate })}
33
- <span
34
- class="absolute right-2 flex items-center justify-center pointer-events-none"
35
- data-slot="dropdown-menu-checkbox-item-indicator"
36
- >
37
- {#if indeterminate}
38
- <HugeiconsIcon icon={MinusSignIcon} strokeWidth={2} />
39
- {:else if checked}
40
- <HugeiconsIcon icon={Tick02Icon} strokeWidth={2} />
41
- {/if}
42
- </span>
43
- {@render childrenProp?.()}
44
- {/snippet}
45
- </DropdownMenuPrimitive.CheckboxItem>
59
+ <span
60
+ class="absolute right-2 flex size-4 items-center justify-center pointer-events-none"
61
+ data-slot="dropdown-menu-checkbox-item-indicator"
62
+ >
63
+ {#if indeterminate}
64
+ <HugeiconsIcon icon={MinusSignIcon} strokeWidth={2} class="size-4" />
65
+ {:else if checked}
66
+ <HugeiconsIcon icon={Tick02Icon} strokeWidth={2} class="size-4" />
67
+ {/if}
68
+ </span>
69
+ {@render children?.()}
70
+ </button>
@@ -1,7 +1,12 @@
1
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
- import { type WithoutChildrenOrChild } from "../../../utils.js";
3
1
  import type { Snippet } from "svelte";
4
- type $$ComponentProps = WithoutChildrenOrChild<DropdownMenuPrimitive.CheckboxItemProps> & {
2
+ import type { HTMLButtonAttributes } from "svelte/elements";
3
+ type $$ComponentProps = HTMLButtonAttributes & {
4
+ ref?: HTMLButtonElement | null;
5
+ checked?: boolean;
6
+ indeterminate?: boolean;
7
+ onCheckedChange?: (checked: boolean) => void;
8
+ class?: string;
9
+ disabled?: boolean;
5
10
  children?: Snippet;
6
11
  };
7
12
  declare const DropdownMenuCheckboxItem: import("svelte").Component<$$ComponentProps, {}, "ref" | "checked" | "indeterminate">;
@@ -1,31 +1,107 @@
1
1
  <script lang="ts">
2
- import { cn, type WithoutChildrenOrChild } from "../../../utils.js";
3
- import DropdownMenuPortal from "./dropdown-menu-portal.svelte";
4
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
5
- import type { ComponentProps } from "svelte";
2
+ import { getDropdownMenuContext } from "./dropdown-menu-context.svelte.js";
3
+ import { cn } from "../../../utils.js";
4
+ import type { Snippet } from "svelte";
5
+ import type { HTMLAttributes } from "svelte/elements";
6
6
 
7
7
  let {
8
- ref = $bindable(null),
9
- sideOffset = 4,
8
+ ref = $bindable<HTMLDivElement | null>(null),
10
9
  align = "start",
10
+ side = "bottom",
11
+ sideOffset = 4,
11
12
  portalProps,
12
13
  class: className,
14
+ children,
13
15
  ...restProps
14
- }: DropdownMenuPrimitive.ContentProps & {
15
- portalProps?: WithoutChildrenOrChild<ComponentProps<typeof DropdownMenuPortal>>;
16
+ }: HTMLAttributes<HTMLDivElement> & {
17
+ ref?: HTMLDivElement | null;
18
+ align?: "start" | "center" | "end";
19
+ side?: "top" | "right" | "bottom" | "left" | "inline-start" | "inline-end";
20
+ sideOffset?: number;
21
+ portalProps?: Record<string, unknown>;
22
+ class?: string;
23
+ children?: Snippet;
16
24
  } = $props();
25
+
26
+ const store = getDropdownMenuContext();
27
+
28
+ let anchorWidth = $state(0);
29
+
30
+ $effect(() => {
31
+ if (!store.open) return;
32
+ const width = store.anchorEl?.getBoundingClientRect().width ?? 0;
33
+ if (width > 0) anchorWidth = width;
34
+ });
35
+
36
+ $effect(() => {
37
+ if (!store.open) return;
38
+ function handlePointerDown(event: PointerEvent) {
39
+ const target = event.target as Node;
40
+ if (store.anchorEl?.contains(target)) return;
41
+ if (ref?.contains(target)) return;
42
+ store.closeMenu();
43
+ }
44
+ function handleKeydown(event: KeyboardEvent) {
45
+ if (event.key === "Escape") {
46
+ store.closeMenu();
47
+ store.anchorEl?.focus();
48
+ }
49
+ }
50
+ document.addEventListener("pointerdown", handlePointerDown);
51
+ document.addEventListener("keydown", handleKeydown);
52
+ return () => {
53
+ document.removeEventListener("pointerdown", handlePointerDown);
54
+ document.removeEventListener("keydown", handleKeydown);
55
+ };
56
+ });
57
+
58
+ let positionClasses = $derived.by(() => {
59
+ const horizontal =
60
+ side === "right" || side === "left" || side === "inline-start" || side === "inline-end";
61
+ if (horizontal) {
62
+ const sideClass = side === "left" || side === "inline-start" ? "right-full" : "left-full";
63
+ const alignClass =
64
+ align === "end"
65
+ ? "bottom-0"
66
+ : align === "center"
67
+ ? "top-1/2 -translate-y-1/2"
68
+ : "top-0";
69
+ const margin =
70
+ side === "left" || side === "inline-start"
71
+ ? `margin-right: ${sideOffset + 4}px`
72
+ : `margin-left: ${sideOffset + 4}px`;
73
+ return { sideClass, alignClass, margin };
74
+ }
75
+ const sideClass = side === "top" ? "bottom-full" : "top-full";
76
+ const alignClass =
77
+ align === "end" ? "end-0" : align === "center" ? "start-1/2 -translate-x-1/2" : "start-0";
78
+ const margin =
79
+ side === "top"
80
+ ? `margin-bottom: ${sideOffset + 4}px`
81
+ : `margin-top: ${sideOffset + 4}px`;
82
+ return { sideClass, alignClass, margin };
83
+ });
84
+
85
+ let contentStyle = $derived(
86
+ `${positionClasses.margin}${anchorWidth > 0 ? `;--bits-dropdown-menu-anchor-width: ${anchorWidth}px` : ""}`,
87
+ );
17
88
  </script>
18
89
 
19
- <DropdownMenuPortal {...portalProps}>
20
- <DropdownMenuPrimitive.Content
21
- bind:ref
90
+ {#if store.open}
91
+ <div
92
+ bind:this={ref}
22
93
  data-slot="dropdown-menu-content"
23
- {sideOffset}
24
- {align}
94
+ role="menu"
95
+ data-state={store.open ? "open" : "closed"}
96
+ style={contentStyle}
25
97
  class={cn(
26
- "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/5 bg-popover text-popover-foreground dark:ring-foreground/10 min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 z-50 w-(--bits-dropdown-menu-anchor-width) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden",
27
- className
98
+ "absolute z-50 min-w-48 overflow-x-hidden overflow-y-auto rounded-2xl p-1 shadow-2xl ring-1 ring-foreground/5 bg-popover text-popover-foreground outline-none animate-zoom-in",
99
+ positionClasses.sideClass,
100
+ positionClasses.alignClass,
101
+ className,
28
102
  )}
29
103
  {...restProps}
30
- />
31
- </DropdownMenuPortal>
104
+ >
105
+ {@render children?.()}
106
+ </div>
107
+ {/if}
@@ -1,9 +1,13 @@
1
- import { type WithoutChildrenOrChild } from "../../../utils.js";
2
- import DropdownMenuPortal from "./dropdown-menu-portal.svelte";
3
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
4
- import type { ComponentProps } from "svelte";
5
- type $$ComponentProps = DropdownMenuPrimitive.ContentProps & {
6
- portalProps?: WithoutChildrenOrChild<ComponentProps<typeof DropdownMenuPortal>>;
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
4
+ ref?: HTMLDivElement | null;
5
+ align?: "start" | "center" | "end";
6
+ side?: "top" | "right" | "bottom" | "left" | "inline-start" | "inline-end";
7
+ sideOffset?: number;
8
+ portalProps?: Record<string, unknown>;
9
+ class?: string;
10
+ children?: Snippet;
7
11
  };
8
12
  declare const DropdownMenuContent: import("svelte").Component<$$ComponentProps, {}, "ref">;
9
13
  type DropdownMenuContent = ReturnType<typeof DropdownMenuContent>;
@@ -0,0 +1,26 @@
1
+ export type DropdownMenuStore = {
2
+ open: boolean;
3
+ anchorId: string;
4
+ anchorEl: HTMLElement | null;
5
+ clickEvent: MouseEvent | null;
6
+ toggle: () => void;
7
+ openMenu: () => void;
8
+ closeMenu: () => void;
9
+ setAnchor: (el: HTMLElement | null) => void;
10
+ };
11
+ export type DropdownMenuSubStore = {
12
+ open: boolean;
13
+ };
14
+ export type DropdownRadioGroupStore = {
15
+ state: {
16
+ value: string;
17
+ };
18
+ setValue: (value: string) => void;
19
+ };
20
+ export declare function generateDropdownMenuId(): string;
21
+ export declare function setDropdownMenuContext(store: DropdownMenuStore): DropdownMenuStore;
22
+ export declare function getDropdownMenuContext(): DropdownMenuStore;
23
+ export declare function setDropdownMenuSubContext(store: DropdownMenuSubStore): DropdownMenuSubStore;
24
+ export declare function getDropdownMenuSubContext(): DropdownMenuSubStore;
25
+ export declare function setDropdownMenuRadioGroupContext(ctx: DropdownRadioGroupStore): DropdownRadioGroupStore;
26
+ export declare function getDropdownMenuRadioGroupContext(): DropdownRadioGroupStore;
@@ -0,0 +1,27 @@
1
+ import { getContext, setContext } from "svelte";
2
+ const DROPDOWN_MENU_CONTEXT_KEY = Symbol("dropdown-menu-context");
3
+ const DROPDOWN_MENU_SUB_CONTEXT_KEY = Symbol("dropdown-menu-sub-context");
4
+ const DROPDOWN_MENU_RADIO_GROUP_CONTEXT_KEY = Symbol("dropdown-menu-radio-group-context");
5
+ let dropdownMenuIdCounter = 0;
6
+ export function generateDropdownMenuId() {
7
+ dropdownMenuIdCounter += 1;
8
+ return `dropdown-menu-${dropdownMenuIdCounter.toString(36)}`;
9
+ }
10
+ export function setDropdownMenuContext(store) {
11
+ return setContext(DROPDOWN_MENU_CONTEXT_KEY, store);
12
+ }
13
+ export function getDropdownMenuContext() {
14
+ return getContext(DROPDOWN_MENU_CONTEXT_KEY);
15
+ }
16
+ export function setDropdownMenuSubContext(store) {
17
+ return setContext(DROPDOWN_MENU_SUB_CONTEXT_KEY, store);
18
+ }
19
+ export function getDropdownMenuSubContext() {
20
+ return getContext(DROPDOWN_MENU_SUB_CONTEXT_KEY);
21
+ }
22
+ export function setDropdownMenuRadioGroupContext(ctx) {
23
+ return setContext(DROPDOWN_MENU_RADIO_GROUP_CONTEXT_KEY, ctx);
24
+ }
25
+ export function getDropdownMenuRadioGroupContext() {
26
+ return getContext(DROPDOWN_MENU_RADIO_GROUP_CONTEXT_KEY);
27
+ }
@@ -1,22 +1,28 @@
1
1
  <script lang="ts">
2
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
2
  import { cn } from "../../../utils.js";
4
- import type { ComponentProps } from "svelte";
3
+ import type { Snippet } from "svelte";
4
+ import type { HTMLAttributes } from "svelte/elements";
5
5
 
6
6
  let {
7
- ref = $bindable(null),
7
+ ref = $bindable<HTMLDivElement | null>(null),
8
8
  class: className,
9
9
  inset,
10
+ children,
10
11
  ...restProps
11
- }: ComponentProps<typeof DropdownMenuPrimitive.GroupHeading> & {
12
+ }: HTMLAttributes<HTMLDivElement> & {
13
+ ref?: HTMLDivElement | null;
14
+ class?: string;
12
15
  inset?: boolean;
16
+ children?: Snippet;
13
17
  } = $props();
14
18
  </script>
15
19
 
16
- <DropdownMenuPrimitive.GroupHeading
17
- bind:ref
20
+ <div
21
+ bind:this={ref}
18
22
  data-slot="dropdown-menu-group-heading"
19
23
  data-inset={inset}
20
- class={cn("px-2 py-1.5 text-sm font-semibold data-[inset]:ps-8", className)}
24
+ class={cn("px-2 py-1.5 text-xs font-medium text-muted-foreground", className)}
21
25
  {...restProps}
22
- />
26
+ >
27
+ {@render children?.()}
28
+ </div>
@@ -1,7 +1,10 @@
1
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
- import type { ComponentProps } from "svelte";
3
- type $$ComponentProps = ComponentProps<typeof DropdownMenuPrimitive.GroupHeading> & {
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
4
+ ref?: HTMLDivElement | null;
5
+ class?: string;
4
6
  inset?: boolean;
7
+ children?: Snippet;
5
8
  };
6
9
  declare const DropdownMenuGroupHeading: import("svelte").Component<$$ComponentProps, {}, "ref">;
7
10
  type DropdownMenuGroupHeading = ReturnType<typeof DropdownMenuGroupHeading>;
@@ -1,7 +1,22 @@
1
1
  <script lang="ts">
2
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
+ import type { Snippet } from "svelte";
3
+ import type { HTMLAttributes } from "svelte/elements";
3
4
 
4
- let { ref = $bindable(null), ...restProps }: DropdownMenuPrimitive.GroupProps = $props();
5
+ let {
6
+ ref = $bindable<HTMLDivElement | null>(null),
7
+ children,
8
+ ...restProps
9
+ }: HTMLAttributes<HTMLDivElement> & {
10
+ ref?: HTMLDivElement | null;
11
+ children?: Snippet;
12
+ } = $props();
5
13
  </script>
6
14
 
7
- <DropdownMenuPrimitive.Group bind:ref data-slot="dropdown-menu-group" {...restProps} />
15
+ <div
16
+ bind:this={ref}
17
+ role="group"
18
+ data-slot="dropdown-menu-group"
19
+ {...restProps}
20
+ >
21
+ {@render children?.()}
22
+ </div>
@@ -1,4 +1,9 @@
1
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
- declare const DropdownMenuGroup: import("svelte").Component<DropdownMenuPrimitive.GroupProps, {}, "ref">;
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
4
+ ref?: HTMLDivElement | null;
5
+ children?: Snippet;
6
+ };
7
+ declare const DropdownMenuGroup: import("svelte").Component<$$ComponentProps, {}, "ref">;
3
8
  type DropdownMenuGroup = ReturnType<typeof DropdownMenuGroup>;
4
9
  export default DropdownMenuGroup;
@@ -1,27 +1,61 @@
1
1
  <script lang="ts">
2
2
  import { cn } from "../../../utils.js";
3
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+ import { getDropdownMenuContext } from "./dropdown-menu-context.svelte.js";
4
+ import type { Snippet } from "svelte";
5
+ import type { HTMLButtonAttributes } from "svelte/elements";
4
6
 
5
7
  let {
6
- ref = $bindable(null),
8
+ ref = $bindable<HTMLButtonElement | null>(null),
7
9
  class: className,
10
+ disabled,
8
11
  inset,
9
12
  variant = "default",
13
+ onSelect,
14
+ onclick,
15
+ children,
10
16
  ...restProps
11
- }: DropdownMenuPrimitive.ItemProps & {
17
+ }: HTMLButtonAttributes & {
18
+ ref?: HTMLButtonElement | null;
19
+ class?: string;
20
+ disabled?: boolean;
12
21
  inset?: boolean;
13
22
  variant?: "default" | "destructive";
23
+ onSelect?: (event: MouseEvent) => void;
24
+ onclick?: (event: MouseEvent) => void;
25
+ children?: Snippet;
14
26
  } = $props();
27
+
28
+ const store = getDropdownMenuContext();
29
+
30
+ let highlighted = $state(false);
31
+
32
+ function handleSelect(event: MouseEvent) {
33
+ onclick?.(event);
34
+ onSelect?.(event);
35
+ store.closeMenu();
36
+ }
15
37
  </script>
16
38
 
17
- <DropdownMenuPrimitive.Item
18
- bind:ref
39
+ <button
40
+ bind:this={ref}
41
+ type="button"
42
+ role="menuitem"
43
+ tabindex="-1"
19
44
  data-slot="dropdown-menu-item"
20
45
  data-inset={inset}
21
46
  data-variant={variant}
47
+ data-highlighted={highlighted || undefined}
48
+ {disabled}
49
+ onclick={handleSelect}
50
+ onfocus={() => (highlighted = true)}
51
+ onblur={() => (highlighted = false)}
52
+ onmouseenter={() => (highlighted = true)}
53
+ onmouseleave={() => (highlighted = false)}
22
54
  class={cn(
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 not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl px-3 py-2 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0",
24
- className
55
+ "group/dropdown-menu-item relative flex w-full cursor-pointer items-center justify-start gap-2 rounded-lg px-2 py-1.5 text-sm outline-none select-none hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
56
+ className,
25
57
  )}
26
58
  {...restProps}
27
- />
59
+ >
60
+ {@render children?.()}
61
+ </button>
@@ -1,7 +1,14 @@
1
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
- type $$ComponentProps = DropdownMenuPrimitive.ItemProps & {
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLButtonAttributes } from "svelte/elements";
3
+ type $$ComponentProps = HTMLButtonAttributes & {
4
+ ref?: HTMLButtonElement | null;
5
+ class?: string;
6
+ disabled?: boolean;
3
7
  inset?: boolean;
4
8
  variant?: "default" | "destructive";
9
+ onSelect?: (event: MouseEvent) => void;
10
+ onclick?: (event: MouseEvent) => void;
11
+ children?: Snippet;
5
12
  };
6
13
  declare const DropdownMenuItem: import("svelte").Component<$$ComponentProps, {}, "ref">;
7
14
  type DropdownMenuItem = ReturnType<typeof DropdownMenuItem>;
@@ -1,15 +1,19 @@
1
1
  <script lang="ts">
2
- import { cn, type WithElementRef } from "../../../utils.js";
2
+ import { cn } from "../../../utils.js";
3
+ import type { Snippet } from "svelte";
3
4
  import type { HTMLAttributes } from "svelte/elements";
4
5
 
5
6
  let {
6
- ref = $bindable(null),
7
+ ref = $bindable<HTMLDivElement | null>(null),
7
8
  class: className,
8
9
  inset,
9
10
  children,
10
11
  ...restProps
11
- }: WithElementRef<HTMLAttributes<HTMLDivElement>> & {
12
+ }: HTMLAttributes<HTMLDivElement> & {
13
+ ref?: HTMLDivElement | null;
14
+ class?: string;
12
15
  inset?: boolean;
16
+ children?: Snippet;
13
17
  } = $props();
14
18
  </script>
15
19
 
@@ -17,8 +21,8 @@
17
21
  bind:this={ref}
18
22
  data-slot="dropdown-menu-label"
19
23
  data-inset={inset}
20
- class={cn("text-muted-foreground px-3 py-2.5 text-xs data-inset:pl-9.5 data-[inset]:pl-8", className)}
24
+ class={cn("px-2 py-1.5 text-sm font-medium text-foreground", className)}
21
25
  {...restProps}
22
26
  >
23
27
  {@render children?.()}
24
- </div>
28
+ </div>
@@ -1,7 +1,10 @@
1
- import { type WithElementRef } from "../../../utils.js";
1
+ import type { Snippet } from "svelte";
2
2
  import type { HTMLAttributes } from "svelte/elements";
3
- type $$ComponentProps = WithElementRef<HTMLAttributes<HTMLDivElement>> & {
3
+ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
4
+ ref?: HTMLDivElement | null;
5
+ class?: string;
4
6
  inset?: boolean;
7
+ children?: Snippet;
5
8
  };
6
9
  declare const DropdownMenuLabel: import("svelte").Component<$$ComponentProps, {}, "ref">;
7
10
  type DropdownMenuLabel = ReturnType<typeof DropdownMenuLabel>;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
+ import type { Snippet } from "svelte";
3
3
 
4
- let { ...restProps }: DropdownMenuPrimitive.PortalProps = $props();
4
+ let { children }: { children?: Snippet } = $props();
5
5
  </script>
6
6
 
7
- <DropdownMenuPrimitive.Portal {...restProps} />
7
+ {@render children?.()}
@@ -1,3 +1,7 @@
1
- declare const DropdownMenuPortal: import("svelte").Component<import("bits-ui").PortalProps, {}, "">;
1
+ import type { Snippet } from "svelte";
2
+ type $$ComponentProps = {
3
+ children?: Snippet;
4
+ };
5
+ declare const DropdownMenuPortal: import("svelte").Component<$$ComponentProps, {}, "">;
2
6
  type DropdownMenuPortal = ReturnType<typeof DropdownMenuPortal>;
3
7
  export default DropdownMenuPortal;
@@ -1,16 +1,44 @@
1
1
  <script lang="ts">
2
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
+ import { setDropdownMenuRadioGroupContext } from "./dropdown-menu-context.svelte.js";
3
+ import type { Snippet } from "svelte";
4
+ import type { HTMLAttributes } from "svelte/elements";
3
5
 
4
6
  let {
5
- ref = $bindable(null),
6
- value = $bindable(),
7
+ ref = $bindable<HTMLDivElement | null>(null),
8
+ value = $bindable<string>(),
9
+ onValueChange,
10
+ children,
7
11
  ...restProps
8
- }: DropdownMenuPrimitive.RadioGroupProps = $props();
12
+ }: HTMLAttributes<HTMLDivElement> & {
13
+ ref?: HTMLDivElement | null;
14
+ value?: string;
15
+ onValueChange?: (value: string) => void;
16
+ children?: Snippet;
17
+ } = $props();
18
+
19
+ let groupState = $state({ value: value ?? "" });
20
+
21
+ $effect(() => {
22
+ if (value !== undefined && value !== groupState.value) {
23
+ groupState.value = value;
24
+ }
25
+ });
26
+
27
+ function setValue(next: string) {
28
+ if (next === groupState.value) return;
29
+ groupState.value = next;
30
+ value = next;
31
+ onValueChange?.(next);
32
+ }
33
+
34
+ setDropdownMenuRadioGroupContext({ state: groupState, setValue });
9
35
  </script>
10
36
 
11
- <DropdownMenuPrimitive.RadioGroup
12
- bind:ref
13
- bind:value
37
+ <div
38
+ bind:this={ref}
39
+ role="radiogroup"
14
40
  data-slot="dropdown-menu-radio-group"
15
41
  {...restProps}
16
- />
42
+ >
43
+ {@render children?.()}
44
+ </div>
@@ -1,4 +1,11 @@
1
- import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
- declare const DropdownMenuRadioGroup: import("svelte").Component<DropdownMenuPrimitive.RadioGroupProps, {}, "ref" | "value">;
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
4
+ ref?: HTMLDivElement | null;
5
+ value?: string;
6
+ onValueChange?: (value: string) => void;
7
+ children?: Snippet;
8
+ };
9
+ declare const DropdownMenuRadioGroup: import("svelte").Component<$$ComponentProps, {}, "ref" | "value">;
3
10
  type DropdownMenuRadioGroup = ReturnType<typeof DropdownMenuRadioGroup>;
4
11
  export default DropdownMenuRadioGroup;