@neut/ui 0.0.17 → 0.0.18

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 (707) hide show
  1. package/dist/components/accordion/Accordion/Accordion.js +3 -0
  2. package/dist/components/accordion/Accordion/Accordion.js.map +1 -1
  3. package/dist/components/accordion/AccordionContent/AccordionContent.js +27 -21
  4. package/dist/components/accordion/AccordionContent/AccordionContent.js.map +1 -1
  5. package/dist/components/accordion/AccordionItem/AccordionItem.js +3 -0
  6. package/dist/components/accordion/AccordionItem/AccordionItem.js.map +1 -1
  7. package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js +19 -18
  8. package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js.map +1 -1
  9. package/dist/components/alert/Alert/Alert.js +8 -3
  10. package/dist/components/alert/Alert/Alert.js.map +1 -1
  11. package/dist/components/alert/AlertAction/AlertAction.js +8 -3
  12. package/dist/components/alert/AlertAction/AlertAction.js.map +1 -1
  13. package/dist/components/alert/AlertDescription/AlertDescription.js +8 -3
  14. package/dist/components/alert/AlertDescription/AlertDescription.js.map +1 -1
  15. package/dist/components/alert/AlertTitle/AlertTitle.js +8 -3
  16. package/dist/components/alert/AlertTitle/AlertTitle.js.map +1 -1
  17. package/dist/components/alert-dialog/AlertDialog/AlertDialog.d.ts +3 -1
  18. package/dist/components/alert-dialog/AlertDialog/AlertDialog.js +6 -1
  19. package/dist/components/alert-dialog/AlertDialog/AlertDialog.js.map +1 -1
  20. package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js +9 -7
  21. package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js.map +1 -1
  22. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.types.d.ts +9 -3
  23. package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.js +8 -3
  24. package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.js.map +1 -1
  25. package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.js +8 -3
  26. package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.js.map +1 -1
  27. package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.js +8 -3
  28. package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.js.map +1 -1
  29. package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.js +8 -3
  30. package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.js.map +1 -1
  31. package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.js +8 -3
  32. package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.js.map +1 -1
  33. package/dist/components/aspect-ratio/AspectRatio.js +3 -0
  34. package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
  35. package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.js +15 -7
  36. package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.js.map +1 -1
  37. package/dist/components/avatar/Avatar/Avatar.context.d.ts +7 -0
  38. package/dist/components/avatar/Avatar/Avatar.context.js +1 -1
  39. package/dist/components/avatar/Avatar/Avatar.context.js.map +1 -1
  40. package/dist/components/avatar/Avatar/Avatar.js +7 -2
  41. package/dist/components/avatar/Avatar/Avatar.js.map +1 -1
  42. package/dist/components/avatar/AvatarBadge/AvatarBadge.js +8 -3
  43. package/dist/components/avatar/AvatarBadge/AvatarBadge.js.map +1 -1
  44. package/dist/components/avatar/AvatarFallback/AvatarFallback.js +10 -5
  45. package/dist/components/avatar/AvatarFallback/AvatarFallback.js.map +1 -1
  46. package/dist/components/avatar/AvatarGroup/AvatarGroup.js +8 -3
  47. package/dist/components/avatar/AvatarGroup/AvatarGroup.js.map +1 -1
  48. package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js +8 -3
  49. package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js.map +1 -1
  50. package/dist/components/avatar/AvatarImage/AvatarImage.js +19 -12
  51. package/dist/components/avatar/AvatarImage/AvatarImage.js.map +1 -1
  52. package/dist/components/badge/Badge.js +9 -4
  53. package/dist/components/badge/Badge.js.map +1 -1
  54. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js +8 -3
  55. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js.map +1 -1
  56. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js +8 -3
  57. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js.map +1 -1
  58. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js +3 -0
  59. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js.map +1 -1
  60. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js +8 -3
  61. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js.map +1 -1
  62. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js +8 -3
  63. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js.map +1 -1
  64. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js +8 -3
  65. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js.map +1 -1
  66. package/dist/components/bubble/BubbleContent/BubbleContent.js +21 -10
  67. package/dist/components/bubble/BubbleContent/BubbleContent.js.map +1 -1
  68. package/dist/components/button/Button.js +3 -0
  69. package/dist/components/button/Button.js.map +1 -1
  70. package/dist/components/button-group/ButtonGroup/ButtonGroup.js +3 -0
  71. package/dist/components/button-group/ButtonGroup/ButtonGroup.js.map +1 -1
  72. package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js +16 -7
  73. package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js.map +1 -1
  74. package/dist/components/calendar/Calendar/Calendar.d.ts +2 -3
  75. package/dist/components/calendar/Calendar/Calendar.js +89 -264
  76. package/dist/components/calendar/Calendar/Calendar.js.map +1 -1
  77. package/dist/components/calendar/Calendar/Calendar.options.d.ts +43 -0
  78. package/dist/components/calendar/Calendar/Calendar.options.js +38 -0
  79. package/dist/components/calendar/Calendar/Calendar.options.js.map +1 -0
  80. package/dist/components/calendar/Calendar/Calendar.selection.d.ts +16 -0
  81. package/dist/components/calendar/Calendar/Calendar.selection.js +50 -0
  82. package/dist/components/calendar/Calendar/Calendar.selection.js.map +1 -0
  83. package/dist/components/calendar/Calendar/Calendar.styles.d.ts +8 -0
  84. package/dist/components/calendar/Calendar/Calendar.styles.js +32 -0
  85. package/dist/components/calendar/Calendar/Calendar.styles.js.map +1 -0
  86. package/dist/components/calendar/Calendar/Calendar.utils.d.ts +3 -1
  87. package/dist/components/calendar/Calendar/Calendar.utils.js +4 -1
  88. package/dist/components/calendar/Calendar/Calendar.utils.js.map +1 -1
  89. package/dist/components/calendar/Calendar/CalendarDay.d.ts +28 -0
  90. package/dist/components/calendar/Calendar/CalendarDay.js +41 -0
  91. package/dist/components/calendar/Calendar/CalendarDay.js.map +1 -0
  92. package/dist/components/calendar/Calendar/CalendarMonth.d.ts +35 -0
  93. package/dist/components/calendar/Calendar/CalendarMonth.js +127 -0
  94. package/dist/components/calendar/Calendar/CalendarMonth.js.map +1 -0
  95. package/dist/components/calendar/Calendar/CalendarMonthCaption.d.ts +22 -0
  96. package/dist/components/calendar/Calendar/CalendarMonthCaption.js +103 -0
  97. package/dist/components/calendar/Calendar/CalendarMonthCaption.js.map +1 -0
  98. package/dist/components/calendar/index.js +3 -2
  99. package/dist/components/card/Card/Card.js +3 -0
  100. package/dist/components/card/Card/Card.js.map +1 -1
  101. package/dist/components/card/CardAction/CardAction.js +8 -3
  102. package/dist/components/card/CardAction/CardAction.js.map +1 -1
  103. package/dist/components/card/CardContent/CardContent.js +8 -3
  104. package/dist/components/card/CardContent/CardContent.js.map +1 -1
  105. package/dist/components/card/CardDescription/CardDescription.js +8 -3
  106. package/dist/components/card/CardDescription/CardDescription.js.map +1 -1
  107. package/dist/components/card/CardFooter/CardFooter.js +8 -3
  108. package/dist/components/card/CardFooter/CardFooter.js.map +1 -1
  109. package/dist/components/card/CardHeader/CardHeader.js +8 -3
  110. package/dist/components/card/CardHeader/CardHeader.js.map +1 -1
  111. package/dist/components/card/CardTitle/CardTitle.js +8 -3
  112. package/dist/components/card/CardTitle/CardTitle.js.map +1 -1
  113. package/dist/components/carousel/Carousel/Carousel.context.js +1 -1
  114. package/dist/components/carousel/Carousel/Carousel.context.js.map +1 -1
  115. package/dist/components/carousel/Carousel/Carousel.js +19 -12
  116. package/dist/components/carousel/Carousel/Carousel.js.map +1 -1
  117. package/dist/components/carousel/Carousel/useKeyboardNavigation.d.ts +11 -1
  118. package/dist/components/carousel/Carousel/useKeyboardNavigation.js +5 -4
  119. package/dist/components/carousel/Carousel/useKeyboardNavigation.js.map +1 -1
  120. package/dist/components/carousel/CarouselContent/CarouselContent.js +8 -3
  121. package/dist/components/carousel/CarouselContent/CarouselContent.js.map +1 -1
  122. package/dist/components/carousel/CarouselNext/CarouselNext.js +29 -16
  123. package/dist/components/carousel/CarouselNext/CarouselNext.js.map +1 -1
  124. package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js +29 -16
  125. package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js.map +1 -1
  126. package/dist/components/checkbox/Checkbox/Checkbox.js +32 -25
  127. package/dist/components/checkbox/Checkbox/Checkbox.js.map +1 -1
  128. package/dist/components/collapsible/Collapsible/Collapsible.context.js +1 -1
  129. package/dist/components/collapsible/Collapsible/Collapsible.context.js.map +1 -1
  130. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js +13 -12
  131. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js.map +1 -1
  132. package/dist/components/combobox/Combobox/Combobox.js +52 -52
  133. package/dist/components/combobox/Combobox/Combobox.js.map +1 -1
  134. package/dist/components/combobox/Combobox/Combobox.types.d.ts +15 -6
  135. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js +7 -3
  136. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js.map +1 -1
  137. package/dist/components/combobox/ComboboxClear/ComboboxClear.js +1 -1
  138. package/dist/components/combobox/ComboboxClear/ComboboxClear.js.map +1 -1
  139. package/dist/components/combobox/ComboboxInput/ComboboxInput.js +26 -10
  140. package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -1
  141. package/dist/components/combobox/ComboboxItem/ComboboxItem.js +6 -5
  142. package/dist/components/combobox/ComboboxItem/ComboboxItem.js.map +1 -1
  143. package/dist/components/combobox/ComboboxList/ComboboxList.js +17 -11
  144. package/dist/components/combobox/ComboboxList/ComboboxList.js.map +1 -1
  145. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js +8 -1
  146. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js.map +1 -1
  147. package/dist/components/context-menu/ContextMenu/ContextMenu.js +10 -8
  148. package/dist/components/context-menu/ContextMenu/ContextMenu.js.map +1 -1
  149. package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.d.ts +33 -0
  150. package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.js +41 -0
  151. package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.js.map +1 -0
  152. package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.d.ts +25 -0
  153. package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.js +20 -0
  154. package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.js.map +1 -0
  155. package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.d.ts +31 -0
  156. package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.js +39 -0
  157. package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.js.map +1 -0
  158. package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js +70 -136
  159. package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js.map +1 -1
  160. package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js +2 -1
  161. package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js.map +1 -1
  162. package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js +20 -10
  163. package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js.map +1 -1
  164. package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.d.ts +24 -0
  165. package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.js +26 -0
  166. package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.js.map +1 -0
  167. package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.d.ts +35 -0
  168. package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.js +17 -0
  169. package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.js.map +1 -0
  170. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.d.ts +9 -11
  171. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js +36 -33
  172. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js.map +1 -1
  173. package/dist/components/context-menu/context-menu.keyboard.d.ts +29 -0
  174. package/dist/components/context-menu/context-menu.keyboard.js +52 -0
  175. package/dist/components/context-menu/context-menu.keyboard.js.map +1 -0
  176. package/dist/components/context-menu/context-menu.typeahead.d.ts +27 -0
  177. package/dist/components/context-menu/context-menu.typeahead.js +19 -0
  178. package/dist/components/context-menu/context-menu.typeahead.js.map +1 -0
  179. package/dist/components/context-menu/context-menu.utils.d.ts +5 -2
  180. package/dist/components/context-menu/context-menu.utils.js +17 -39
  181. package/dist/components/context-menu/context-menu.utils.js.map +1 -1
  182. package/dist/components/date-picker/DatePicker/DatePicker.js +6 -0
  183. package/dist/components/date-picker/DatePicker/DatePicker.js.map +1 -1
  184. package/dist/components/dialog/Dialog/Dialog.context.js +1 -1
  185. package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -1
  186. package/dist/components/dialog/Dialog/Dialog.js +24 -15
  187. package/dist/components/dialog/Dialog/Dialog.js.map +1 -1
  188. package/dist/components/dialog/Dialog/Dialog.types.d.ts +5 -0
  189. package/dist/components/dialog/DialogClose/DialogClose.js +20 -19
  190. package/dist/components/dialog/DialogClose/DialogClose.js.map +1 -1
  191. package/dist/components/dialog/DialogContent/DialogContent.context.js +1 -1
  192. package/dist/components/dialog/DialogContent/DialogContent.context.js.map +1 -1
  193. package/dist/components/dialog/DialogDescription/DialogDescription.js +8 -3
  194. package/dist/components/dialog/DialogDescription/DialogDescription.js.map +1 -1
  195. package/dist/components/dialog/DialogFooter/DialogFooter.js +8 -3
  196. package/dist/components/dialog/DialogFooter/DialogFooter.js.map +1 -1
  197. package/dist/components/dialog/DialogHeader/DialogHeader.js +8 -3
  198. package/dist/components/dialog/DialogHeader/DialogHeader.js.map +1 -1
  199. package/dist/components/dialog/DialogOverlay/DialogOverlay.js +3 -0
  200. package/dist/components/dialog/DialogOverlay/DialogOverlay.js.map +1 -1
  201. package/dist/components/dialog/DialogSurface/DialogSurface.js +34 -26
  202. package/dist/components/dialog/DialogSurface/DialogSurface.js.map +1 -1
  203. package/dist/components/dialog/DialogTitle/DialogTitle.js +8 -3
  204. package/dist/components/dialog/DialogTitle/DialogTitle.js.map +1 -1
  205. package/dist/components/drawer/Drawer/Drawer.js +1 -1
  206. package/dist/components/drawer/Drawer/Drawer.js.map +1 -1
  207. package/dist/components/drawer/Drawer/create-change-event-details.js +4 -20
  208. package/dist/components/drawer/Drawer/create-change-event-details.js.map +1 -1
  209. package/dist/components/drawer/DrawerContent/drawer-swipe.utils.d.ts +32 -0
  210. package/dist/components/drawer/DrawerContent/drawer-swipe.utils.js +36 -0
  211. package/dist/components/drawer/DrawerContent/drawer-swipe.utils.js.map +1 -0
  212. package/dist/components/drawer/DrawerContent/useDrawerSwipe.d.ts +3 -0
  213. package/dist/components/drawer/DrawerContent/useDrawerSwipe.js +22 -42
  214. package/dist/components/drawer/DrawerContent/useDrawerSwipe.js.map +1 -1
  215. package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js +1 -1
  216. package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js.map +1 -1
  217. package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js +7 -7
  218. package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js.map +1 -1
  219. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.d.ts +7 -1
  220. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js +10 -10
  221. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js.map +1 -1
  222. package/dist/components/field/Field/Field.js +3 -0
  223. package/dist/components/field/Field/Field.js.map +1 -1
  224. package/dist/components/field/FieldContent/FieldContent.js +8 -3
  225. package/dist/components/field/FieldContent/FieldContent.js.map +1 -1
  226. package/dist/components/field/FieldDescription/FieldDescription.js +8 -3
  227. package/dist/components/field/FieldDescription/FieldDescription.js.map +1 -1
  228. package/dist/components/field/FieldError/FieldError.js +8 -3
  229. package/dist/components/field/FieldError/FieldError.js.map +1 -1
  230. package/dist/components/field/FieldGroup/FieldGroup.js +8 -3
  231. package/dist/components/field/FieldGroup/FieldGroup.js.map +1 -1
  232. package/dist/components/field/FieldLabel/FieldLabel.js +3 -0
  233. package/dist/components/field/FieldLabel/FieldLabel.js.map +1 -1
  234. package/dist/components/field/FieldLegend/FieldLegend.js +3 -0
  235. package/dist/components/field/FieldLegend/FieldLegend.js.map +1 -1
  236. package/dist/components/field/FieldSeparator/FieldSeparator.js +3 -0
  237. package/dist/components/field/FieldSeparator/FieldSeparator.js.map +1 -1
  238. package/dist/components/field/FieldSet/FieldSet.js +8 -3
  239. package/dist/components/field/FieldSet/FieldSet.js.map +1 -1
  240. package/dist/components/field/FieldTitle/FieldTitle.js +8 -3
  241. package/dist/components/field/FieldTitle/FieldTitle.js.map +1 -1
  242. package/dist/components/image/Image.utils.d.ts +14 -16
  243. package/dist/components/image/Image.utils.js +146 -190
  244. package/dist/components/image/Image.utils.js.map +1 -1
  245. package/dist/components/image/ImageElement.js +31 -27
  246. package/dist/components/image/ImageElement.js.map +1 -1
  247. package/dist/components/image/lib/blur.d.ts +31 -0
  248. package/dist/components/image/lib/blur.js +24 -0
  249. package/dist/components/image/lib/blur.js.map +1 -0
  250. package/dist/components/image/lib/dev-checks.d.ts +52 -0
  251. package/dist/components/image/lib/handle-loading.d.ts +13 -0
  252. package/dist/components/image/lib/handle-loading.js +20 -0
  253. package/dist/components/image/lib/handle-loading.js.map +1 -0
  254. package/dist/components/image/lib/loader.d.ts +39 -0
  255. package/dist/components/image/lib/loader.js +57 -0
  256. package/dist/components/image/lib/loader.js.map +1 -0
  257. package/dist/components/image/lib/static-import.d.ts +14 -0
  258. package/dist/components/image/lib/static-import.js +17 -0
  259. package/dist/components/image/lib/static-import.js.map +1 -0
  260. package/dist/components/input-group/InputGroup/InputGroup.js +8 -3
  261. package/dist/components/input-group/InputGroup/InputGroup.js.map +1 -1
  262. package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js +3 -0
  263. package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js.map +1 -1
  264. package/dist/components/input-group/InputGroupButton/InputGroupButton.js +3 -0
  265. package/dist/components/input-group/InputGroupButton/InputGroupButton.js.map +1 -1
  266. package/dist/components/input-group/InputGroupInput/InputGroupInput.js +3 -0
  267. package/dist/components/input-group/InputGroupInput/InputGroupInput.js.map +1 -1
  268. package/dist/components/input-group/InputGroupText/InputGroupText.js +8 -3
  269. package/dist/components/input-group/InputGroupText/InputGroupText.js.map +1 -1
  270. package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js +3 -0
  271. package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js.map +1 -1
  272. package/dist/components/item/Item/Item.js +9 -0
  273. package/dist/components/item/Item/Item.js.map +1 -1
  274. package/dist/components/item/ItemActions/ItemActions.js +8 -3
  275. package/dist/components/item/ItemActions/ItemActions.js.map +1 -1
  276. package/dist/components/item/ItemContent/ItemContent.js +8 -3
  277. package/dist/components/item/ItemContent/ItemContent.js.map +1 -1
  278. package/dist/components/item/ItemDescription/ItemDescription.js +8 -3
  279. package/dist/components/item/ItemDescription/ItemDescription.js.map +1 -1
  280. package/dist/components/item/ItemFooter/ItemFooter.js +8 -3
  281. package/dist/components/item/ItemFooter/ItemFooter.js.map +1 -1
  282. package/dist/components/item/ItemGroup/ItemGroup.js +8 -3
  283. package/dist/components/item/ItemGroup/ItemGroup.js.map +1 -1
  284. package/dist/components/item/ItemHeader/ItemHeader.js +8 -3
  285. package/dist/components/item/ItemHeader/ItemHeader.js.map +1 -1
  286. package/dist/components/item/ItemMedia/ItemMedia.js +3 -0
  287. package/dist/components/item/ItemMedia/ItemMedia.js.map +1 -1
  288. package/dist/components/item/ItemSeparator/ItemSeparator.js +3 -0
  289. package/dist/components/item/ItemSeparator/ItemSeparator.js.map +1 -1
  290. package/dist/components/item/ItemTitle/ItemTitle.js +8 -3
  291. package/dist/components/item/ItemTitle/ItemTitle.js.map +1 -1
  292. package/dist/components/kbd/Kbd.js +16 -6
  293. package/dist/components/kbd/Kbd.js.map +1 -1
  294. package/dist/components/label/Label.js +3 -0
  295. package/dist/components/label/Label.js.map +1 -1
  296. package/dist/components/marker/Marker/Marker.styles.d.ts +1 -1
  297. package/dist/components/message-scroller/message-scroller.anchoring.d.ts +60 -0
  298. package/dist/components/message-scroller/message-scroller.anchoring.js +139 -0
  299. package/dist/components/message-scroller/message-scroller.anchoring.js.map +1 -0
  300. package/dist/components/message-scroller/message-scroller.anchors.d.ts +12 -0
  301. package/dist/components/message-scroller/message-scroller.anchors.js +23 -0
  302. package/dist/components/message-scroller/message-scroller.anchors.js.map +1 -0
  303. package/dist/components/message-scroller/message-scroller.commands.d.ts +43 -0
  304. package/dist/components/message-scroller/message-scroller.commands.js +51 -0
  305. package/dist/components/message-scroller/message-scroller.commands.js.map +1 -0
  306. package/dist/components/message-scroller/message-scroller.dom-measure.d.ts +29 -0
  307. package/dist/components/message-scroller/message-scroller.dom-measure.js +37 -0
  308. package/dist/components/message-scroller/message-scroller.dom-measure.js.map +1 -0
  309. package/dist/components/message-scroller/message-scroller.measure.d.ts +27 -0
  310. package/dist/components/message-scroller/message-scroller.measure.js +21 -0
  311. package/dist/components/message-scroller/message-scroller.measure.js.map +1 -0
  312. package/dist/components/message-scroller/message-scroller.scroll-state.d.ts +54 -0
  313. package/dist/components/message-scroller/message-scroller.scroll-state.js +74 -0
  314. package/dist/components/message-scroller/message-scroller.scroll-state.js.map +1 -0
  315. package/dist/components/message-scroller/message-scroller.scroll-target.d.ts +27 -0
  316. package/dist/components/message-scroller/message-scroller.scroll-target.js +33 -0
  317. package/dist/components/message-scroller/message-scroller.scroll-target.js.map +1 -0
  318. package/dist/components/message-scroller/message-scroller.utils.d.ts +7 -0
  319. package/dist/components/message-scroller/message-scroller.utils.js +3 -2
  320. package/dist/components/message-scroller/message-scroller.utils.js.map +1 -1
  321. package/dist/components/message-scroller/message-scroller.visibility.d.ts +43 -0
  322. package/dist/components/message-scroller/message-scroller.visibility.js +82 -0
  323. package/dist/components/message-scroller/message-scroller.visibility.js.map +1 -0
  324. package/dist/components/message-scroller/useMessageScrollerEngine.js +87 -337
  325. package/dist/components/message-scroller/useMessageScrollerEngine.js.map +1 -1
  326. package/dist/components/number-input/NumberInput/NumberInput.js +21 -19
  327. package/dist/components/number-input/NumberInput/NumberInput.js.map +1 -1
  328. package/dist/components/number-input/NumberInput/NumberInput.utils.d.ts +6 -2
  329. package/dist/components/number-input/NumberInput/NumberInput.utils.js +1 -3
  330. package/dist/components/number-input/NumberInput/NumberInput.utils.js.map +1 -1
  331. package/dist/components/number-input/NumberInput/create-change-event-details.d.ts +1 -2
  332. package/dist/components/number-input/NumberInput/create-change-event-details.js +4 -20
  333. package/dist/components/number-input/NumberInput/create-change-event-details.js.map +1 -1
  334. package/dist/components/pagination/Pagination/Pagination.js +8 -3
  335. package/dist/components/pagination/Pagination/Pagination.js.map +1 -1
  336. package/dist/components/pagination/PaginationContent/PaginationContent.js +8 -3
  337. package/dist/components/pagination/PaginationContent/PaginationContent.js.map +1 -1
  338. package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js +8 -3
  339. package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js.map +1 -1
  340. package/dist/components/pagination/PaginationLink/PaginationLink.js +3 -0
  341. package/dist/components/pagination/PaginationLink/PaginationLink.js.map +1 -1
  342. package/dist/components/pagination/PaginationNext/PaginationNext.js +3 -0
  343. package/dist/components/pagination/PaginationNext/PaginationNext.js.map +1 -1
  344. package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js +3 -0
  345. package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js.map +1 -1
  346. package/dist/components/popover/PopoverContent/PopoverContent.js +3 -0
  347. package/dist/components/popover/PopoverContent/PopoverContent.js.map +1 -1
  348. package/dist/components/progress/Progress/Progress.context.js +1 -1
  349. package/dist/components/progress/Progress/Progress.context.js.map +1 -1
  350. package/dist/components/progress/Progress/Progress.js +3 -0
  351. package/dist/components/progress/Progress/Progress.js.map +1 -1
  352. package/dist/components/progress/ProgressIndicator/ProgressIndicator.js +3 -0
  353. package/dist/components/progress/ProgressIndicator/ProgressIndicator.js.map +1 -1
  354. package/dist/components/progress/ProgressLabel/ProgressLabel.js +8 -3
  355. package/dist/components/progress/ProgressLabel/ProgressLabel.js.map +1 -1
  356. package/dist/components/progress/ProgressTrack/ProgressTrack.js +3 -0
  357. package/dist/components/progress/ProgressTrack/ProgressTrack.js.map +1 -1
  358. package/dist/components/progress/ProgressValue/ProgressValue.js +8 -3
  359. package/dist/components/progress/ProgressValue/ProgressValue.js.map +1 -1
  360. package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.d.ts +48 -0
  361. package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.js +23 -0
  362. package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.js.map +1 -0
  363. package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js +62 -49
  364. package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js.map +1 -1
  365. package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js +4 -1
  366. package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js.map +1 -1
  367. package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js +1 -2
  368. package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js.map +1 -1
  369. package/dist/components/questionnaire/questionnaire.answers.d.ts +42 -0
  370. package/dist/components/questionnaire/questionnaire.answers.js +62 -0
  371. package/dist/components/questionnaire/questionnaire.answers.js.map +1 -0
  372. package/dist/components/questionnaire/questionnaire.aria.d.ts +34 -0
  373. package/dist/components/questionnaire/questionnaire.aria.js +28 -0
  374. package/dist/components/questionnaire/questionnaire.aria.js.map +1 -0
  375. package/dist/components/questionnaire/questionnaire.dom-watch.d.ts +9 -0
  376. package/dist/components/questionnaire/questionnaire.dom-watch.js +18 -0
  377. package/dist/components/questionnaire/questionnaire.dom-watch.js.map +1 -0
  378. package/dist/components/questionnaire/questionnaire.focus.d.ts +26 -0
  379. package/dist/components/questionnaire/questionnaire.focus.js +19 -0
  380. package/dist/components/questionnaire/questionnaire.focus.js.map +1 -0
  381. package/dist/components/questionnaire/questionnaire.item-view.d.ts +50 -0
  382. package/dist/components/questionnaire/questionnaire.item-view.js +36 -0
  383. package/dist/components/questionnaire/questionnaire.item-view.js.map +1 -0
  384. package/dist/components/questionnaire/questionnaire.keys.d.ts +29 -0
  385. package/dist/components/questionnaire/questionnaire.keys.js +34 -0
  386. package/dist/components/questionnaire/questionnaire.keys.js.map +1 -0
  387. package/dist/components/questionnaire/questionnaire.registry.d.ts +21 -0
  388. package/dist/components/questionnaire/questionnaire.registry.js +15 -0
  389. package/dist/components/questionnaire/questionnaire.registry.js.map +1 -0
  390. package/dist/components/questionnaire/questionnaire.shortcuts.d.ts +24 -0
  391. package/dist/components/questionnaire/questionnaire.shortcuts.js +31 -0
  392. package/dist/components/questionnaire/questionnaire.shortcuts.js.map +1 -0
  393. package/dist/components/questionnaire/questionnaire.utils.d.ts +17 -1
  394. package/dist/components/questionnaire/questionnaire.utils.js +5 -2
  395. package/dist/components/questionnaire/questionnaire.utils.js.map +1 -1
  396. package/dist/components/questionnaire/questionnaire.validation.d.ts +43 -0
  397. package/dist/components/questionnaire/questionnaire.validation.js +17 -0
  398. package/dist/components/questionnaire/questionnaire.validation.js.map +1 -0
  399. package/dist/components/questionnaire/useQuestionnaireItem.d.ts +0 -2
  400. package/dist/components/questionnaire/useQuestionnaireItem.js +83 -121
  401. package/dist/components/questionnaire/useQuestionnaireItem.js.map +1 -1
  402. package/dist/components/questionnaire/useQuestionnaireRoot.js +78 -99
  403. package/dist/components/questionnaire/useQuestionnaireRoot.js.map +1 -1
  404. package/dist/components/radio-group/RadioGroup/RadioGroup.js +3 -0
  405. package/dist/components/radio-group/RadioGroup/RadioGroup.js.map +1 -1
  406. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js +3 -0
  407. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js.map +1 -1
  408. package/dist/components/resizable/ResizableHandle/resizable.handle-drag.d.ts +37 -0
  409. package/dist/components/resizable/ResizableHandle/resizable.handle-drag.js +37 -0
  410. package/dist/components/resizable/ResizableHandle/resizable.handle-drag.js.map +1 -0
  411. package/dist/components/resizable/ResizableHandle/resizable.handle-keys.d.ts +24 -0
  412. package/dist/components/resizable/ResizableHandle/resizable.handle-keys.js +36 -0
  413. package/dist/components/resizable/ResizableHandle/resizable.handle-keys.js.map +1 -0
  414. package/dist/components/resizable/ResizableHandle/useResizableHandle.d.ts +3 -4
  415. package/dist/components/resizable/ResizableHandle/useResizableHandle.js +30 -63
  416. package/dist/components/resizable/ResizableHandle/useResizableHandle.js.map +1 -1
  417. package/dist/components/resizable/ResizablePanel/ResizablePanel.d.ts +4 -2
  418. package/dist/components/resizable/ResizablePanel/ResizablePanel.js +23 -50
  419. package/dist/components/resizable/ResizablePanel/ResizablePanel.js.map +1 -1
  420. package/dist/components/resizable/ResizablePanel/useResizablePanel.d.ts +30 -0
  421. package/dist/components/resizable/ResizablePanel/useResizablePanel.js +37 -0
  422. package/dist/components/resizable/ResizablePanel/useResizablePanel.js.map +1 -0
  423. package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.d.ts +4 -1
  424. package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js +10 -17
  425. package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js.map +1 -1
  426. package/dist/components/resizable/ResizablePanelGroup/useDragCursor.d.ts +11 -0
  427. package/dist/components/resizable/ResizablePanelGroup/useDragCursor.js +17 -0
  428. package/dist/components/resizable/ResizablePanelGroup/useDragCursor.js.map +1 -0
  429. package/dist/components/resizable/resizable.collapse.d.ts +27 -0
  430. package/dist/components/resizable/resizable.collapse.js +24 -0
  431. package/dist/components/resizable/resizable.collapse.js.map +1 -0
  432. package/dist/components/resizable/resizable.commands.d.ts +32 -0
  433. package/dist/components/resizable/resizable.commands.js +40 -0
  434. package/dist/components/resizable/resizable.commands.js.map +1 -0
  435. package/dist/components/resizable/resizable.constraints.d.ts +23 -0
  436. package/dist/components/resizable/resizable.constraints.js +32 -0
  437. package/dist/components/resizable/resizable.constraints.js.map +1 -0
  438. package/dist/components/resizable/resizable.lifecycle.d.ts +35 -0
  439. package/dist/components/resizable/resizable.lifecycle.js +32 -0
  440. package/dist/components/resizable/resizable.lifecycle.js.map +1 -0
  441. package/dist/components/resizable/resizable.registry.d.ts +31 -0
  442. package/dist/components/resizable/resizable.registry.js +38 -0
  443. package/dist/components/resizable/resizable.registry.js.map +1 -0
  444. package/dist/components/resizable/resizable.reporting.d.ts +36 -0
  445. package/dist/components/resizable/resizable.reporting.js +33 -0
  446. package/dist/components/resizable/resizable.reporting.js.map +1 -0
  447. package/dist/components/resizable/resizable.resize.d.ts +47 -0
  448. package/dist/components/resizable/resizable.resize.js +28 -0
  449. package/dist/components/resizable/resizable.resize.js.map +1 -0
  450. package/dist/components/resizable/resizable.sizes.d.ts +31 -0
  451. package/dist/components/resizable/resizable.sizes.js +46 -0
  452. package/dist/components/resizable/resizable.sizes.js.map +1 -0
  453. package/dist/components/resizable/resizable.storage.d.ts +17 -0
  454. package/dist/components/resizable/resizable.storage.js +29 -0
  455. package/dist/components/resizable/resizable.storage.js.map +1 -0
  456. package/dist/components/resizable/resizable.utils.d.ts +10 -3
  457. package/dist/components/resizable/resizable.utils.js +16 -10
  458. package/dist/components/resizable/resizable.utils.js.map +1 -1
  459. package/dist/components/resizable/useResizablePanelGroup.js +62 -164
  460. package/dist/components/resizable/useResizablePanelGroup.js.map +1 -1
  461. package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js +1 -1
  462. package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js.map +1 -1
  463. package/dist/components/scroll-area/ScrollArea/ScrollArea.d.ts +9 -0
  464. package/dist/components/scroll-area/ScrollArea/ScrollArea.js +28 -39
  465. package/dist/components/scroll-area/ScrollArea/ScrollArea.js.map +1 -1
  466. package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js +3 -3
  467. package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js.map +1 -1
  468. package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.d.ts +22 -0
  469. package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.js +34 -0
  470. package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.js.map +1 -0
  471. package/dist/components/scroll-area/ScrollBar/ScrollBar.d.ts +8 -0
  472. package/dist/components/scroll-area/ScrollBar/ScrollBar.js +38 -71
  473. package/dist/components/scroll-area/ScrollBar/ScrollBar.js.map +1 -1
  474. package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.d.ts +56 -0
  475. package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.js +61 -0
  476. package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.js.map +1 -0
  477. package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.d.ts +25 -0
  478. package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.js +26 -0
  479. package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.js.map +1 -0
  480. package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.d.ts +19 -0
  481. package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.js +37 -0
  482. package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.js.map +1 -0
  483. package/dist/components/scroll-arrows/ScrollArrowButton.d.ts +5 -7
  484. package/dist/components/scroll-arrows/ScrollArrowButton.js +14 -44
  485. package/dist/components/scroll-arrows/ScrollArrowButton.js.map +1 -1
  486. package/dist/components/scroll-arrows/ScrollArrows.d.ts +4 -3
  487. package/dist/components/scroll-arrows/ScrollArrows.js +16 -22
  488. package/dist/components/scroll-arrows/ScrollArrows.js.map +1 -1
  489. package/dist/components/scroll-arrows/ScrollArrows.types.d.ts +7 -7
  490. package/dist/components/scroll-arrows/useHoverScroll.d.ts +29 -0
  491. package/dist/components/scroll-arrows/useHoverScroll.js +39 -0
  492. package/dist/components/scroll-arrows/useHoverScroll.js.map +1 -0
  493. package/dist/components/select/SelectContent/useSelectContent.js +3 -3
  494. package/dist/components/select/SelectGroup/SelectGroup.d.ts +8 -2
  495. package/dist/components/select/SelectGroup/SelectGroup.js +20 -6
  496. package/dist/components/select/SelectGroup/SelectGroup.js.map +1 -1
  497. package/dist/components/select/SelectGroup/SelectGroup.types.d.ts +9 -0
  498. package/dist/components/select/SelectGroup/index.d.ts +1 -0
  499. package/dist/components/select/SelectTrigger/SelectTrigger.js.map +1 -1
  500. package/dist/components/select/SelectTrigger/useSelectTrigger.js +1 -1
  501. package/dist/components/select/SelectTrigger/useSelectTrigger.js.map +1 -1
  502. package/dist/components/separator/Separator.js +3 -0
  503. package/dist/components/separator/Separator.js.map +1 -1
  504. package/dist/components/sheet/SheetClose/SheetClose.js +18 -17
  505. package/dist/components/sheet/SheetClose/SheetClose.js.map +1 -1
  506. package/dist/components/sidebar/Sidebar/Sidebar.js +14 -6
  507. package/dist/components/sidebar/Sidebar/Sidebar.js.map +1 -1
  508. package/dist/components/sidebar/SidebarContent/SidebarContent.js +8 -3
  509. package/dist/components/sidebar/SidebarContent/SidebarContent.js.map +1 -1
  510. package/dist/components/sidebar/SidebarFooter/SidebarFooter.js +8 -3
  511. package/dist/components/sidebar/SidebarFooter/SidebarFooter.js.map +1 -1
  512. package/dist/components/sidebar/SidebarGroup/SidebarGroup.js +8 -3
  513. package/dist/components/sidebar/SidebarGroup/SidebarGroup.js.map +1 -1
  514. package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js +3 -0
  515. package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js.map +1 -1
  516. package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js +8 -3
  517. package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js.map +1 -1
  518. package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js +3 -0
  519. package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js.map +1 -1
  520. package/dist/components/sidebar/SidebarHeader/SidebarHeader.js +8 -3
  521. package/dist/components/sidebar/SidebarHeader/SidebarHeader.js.map +1 -1
  522. package/dist/components/sidebar/SidebarInput/SidebarInput.js +3 -0
  523. package/dist/components/sidebar/SidebarInput/SidebarInput.js.map +1 -1
  524. package/dist/components/sidebar/SidebarInset/SidebarInset.js +8 -3
  525. package/dist/components/sidebar/SidebarInset/SidebarInset.js.map +1 -1
  526. package/dist/components/sidebar/SidebarMenu/SidebarMenu.js +8 -3
  527. package/dist/components/sidebar/SidebarMenu/SidebarMenu.js.map +1 -1
  528. package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js +8 -3
  529. package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js.map +1 -1
  530. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js +6 -0
  531. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js.map +1 -1
  532. package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js +8 -3
  533. package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js.map +1 -1
  534. package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js +8 -3
  535. package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js.map +1 -1
  536. package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js +8 -3
  537. package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js.map +1 -1
  538. package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js +3 -0
  539. package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js.map +1 -1
  540. package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js +8 -3
  541. package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js.map +1 -1
  542. package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js +1 -1
  543. package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js.map +1 -1
  544. package/dist/components/sidebar/SidebarProvider/SidebarProvider.js +30 -27
  545. package/dist/components/sidebar/SidebarProvider/SidebarProvider.js.map +1 -1
  546. package/dist/components/sidebar/SidebarProvider/useIsMobile.d.ts +10 -0
  547. package/dist/components/sidebar/SidebarProvider/useIsMobile.js +14 -0
  548. package/dist/components/sidebar/SidebarProvider/useIsMobile.js.map +1 -0
  549. package/dist/components/sidebar/SidebarRail/SidebarRail.js +8 -3
  550. package/dist/components/sidebar/SidebarRail/SidebarRail.js.map +1 -1
  551. package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js +3 -0
  552. package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js.map +1 -1
  553. package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js +3 -0
  554. package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js.map +1 -1
  555. package/dist/components/skeleton/Skeleton.js +8 -3
  556. package/dist/components/skeleton/Skeleton.js.map +1 -1
  557. package/dist/components/slider/Slider/Slider.context.js +1 -1
  558. package/dist/components/slider/Slider/Slider.context.js.map +1 -1
  559. package/dist/components/slider/Slider/Slider.js +3 -0
  560. package/dist/components/slider/Slider/Slider.js.map +1 -1
  561. package/dist/components/slider/SliderControl/SliderControl.js +4 -1
  562. package/dist/components/slider/SliderControl/SliderControl.js.map +1 -1
  563. package/dist/components/slider/SliderIndicator/SliderIndicator.js +3 -0
  564. package/dist/components/slider/SliderIndicator/SliderIndicator.js.map +1 -1
  565. package/dist/components/slider/SliderThumb/SliderThumb.js +18 -3
  566. package/dist/components/slider/SliderThumb/SliderThumb.js.map +1 -1
  567. package/dist/components/slider/SliderThumb/useSliderThumb.d.ts +1 -0
  568. package/dist/components/slider/SliderThumb/useSliderThumb.js +3 -2
  569. package/dist/components/slider/SliderThumb/useSliderThumb.js.map +1 -1
  570. package/dist/components/slider/SliderTrack/SliderTrack.js +3 -0
  571. package/dist/components/slider/SliderTrack/SliderTrack.js.map +1 -1
  572. package/dist/components/spinner/Spinner.js +3 -0
  573. package/dist/components/spinner/Spinner.js.map +1 -1
  574. package/dist/components/switch/Switch.js +7 -0
  575. package/dist/components/switch/Switch.js.map +1 -1
  576. package/dist/components/tabs/Tabs/Tabs.context.js +1 -1
  577. package/dist/components/tabs/Tabs/Tabs.context.js.map +1 -1
  578. package/dist/components/tabs/Tabs/useTabsKeyboard.d.ts +7 -11
  579. package/dist/components/tabs/Tabs/useTabsKeyboard.js +8 -42
  580. package/dist/components/tabs/Tabs/useTabsKeyboard.js.map +1 -1
  581. package/dist/components/tabs/TabsList/TabsList.context.js +1 -1
  582. package/dist/components/tabs/TabsList/TabsList.context.js.map +1 -1
  583. package/dist/components/tabs/TabsList/TabsList.js +10 -10
  584. package/dist/components/tabs/TabsList/TabsList.js.map +1 -1
  585. package/dist/components/tabs/TabsTrigger/TabsTrigger.js +8 -8
  586. package/dist/components/tabs/TabsTrigger/TabsTrigger.js.map +1 -1
  587. package/dist/components/textarea/Textarea.js +8 -3
  588. package/dist/components/textarea/Textarea.js.map +1 -1
  589. package/dist/components/time-picker/TimePicker/create-change-event-details.d.ts +1 -2
  590. package/dist/components/time-picker/TimePicker/create-change-event-details.js +4 -20
  591. package/dist/components/time-picker/TimePicker/create-change-event-details.js.map +1 -1
  592. package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js +1 -3
  593. package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js.map +1 -1
  594. package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.d.ts +34 -0
  595. package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.js +43 -0
  596. package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.js.map +1 -0
  597. package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js +34 -59
  598. package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js.map +1 -1
  599. package/dist/components/toast/Toast/Toast.d.ts +8 -2
  600. package/dist/components/toast/Toast/Toast.js +92 -146
  601. package/dist/components/toast/Toast/Toast.js.map +1 -1
  602. package/dist/components/toast/Toast/Toast.types.d.ts +1 -1
  603. package/dist/components/toast/Toast/Toast.types.js.map +1 -1
  604. package/dist/components/toast/Toast/Toast.utils.d.ts +47 -0
  605. package/dist/components/toast/Toast/Toast.utils.js +47 -0
  606. package/dist/components/toast/Toast/Toast.utils.js.map +1 -0
  607. package/dist/components/toast/Toast/ToastActionButton.d.ts +16 -0
  608. package/dist/components/toast/Toast/ToastActionButton.js +27 -0
  609. package/dist/components/toast/Toast/ToastActionButton.js.map +1 -0
  610. package/dist/components/toast/Toast/ToastActions.d.ts +12 -0
  611. package/dist/components/toast/Toast/ToastActions.js +65 -0
  612. package/dist/components/toast/Toast/ToastActions.js.map +1 -0
  613. package/dist/components/toast/Toast/ToastCloseButton.d.ts +12 -0
  614. package/dist/components/toast/Toast/ToastCloseButton.js +26 -0
  615. package/dist/components/toast/Toast/ToastCloseButton.js.map +1 -0
  616. package/dist/components/toast/Toast/ToastContent.d.ts +8 -0
  617. package/dist/components/toast/Toast/ToastContent.js +30 -0
  618. package/dist/components/toast/Toast/ToastContent.js.map +1 -0
  619. package/dist/components/toast/Toast/ToastIcon.d.ts +14 -0
  620. package/dist/components/toast/Toast/ToastIcon.js +36 -0
  621. package/dist/components/toast/Toast/ToastIcon.js.map +1 -0
  622. package/dist/components/toast/Toast/useToastLifecycle.d.ts +29 -0
  623. package/dist/components/toast/Toast/useToastLifecycle.js +30 -0
  624. package/dist/components/toast/Toast/useToastLifecycle.js.map +1 -0
  625. package/dist/components/toast/Toaster/ToastViewport.d.ts +33 -0
  626. package/dist/components/toast/Toaster/ToastViewport.js +73 -0
  627. package/dist/components/toast/Toaster/ToastViewport.js.map +1 -0
  628. package/dist/components/toast/Toaster/Toaster.d.ts +4 -0
  629. package/dist/components/toast/Toaster/Toaster.js +64 -82
  630. package/dist/components/toast/Toaster/Toaster.js.map +1 -1
  631. package/dist/components/toast/Toaster/Toaster.utils.d.ts +15 -0
  632. package/dist/components/toast/Toaster/Toaster.utils.js +4 -1
  633. package/dist/components/toast/Toaster/Toaster.utils.js.map +1 -1
  634. package/dist/components/toast/Toaster/useToaster.d.ts +28 -0
  635. package/dist/components/toast/Toaster/useToaster.js +26 -0
  636. package/dist/components/toast/Toaster/useToaster.js.map +1 -0
  637. package/dist/components/toast/index.js +4 -3
  638. package/dist/components/toast/state/promise-toast.d.ts +17 -0
  639. package/dist/components/toast/state/promise-toast.js +33 -0
  640. package/dist/components/toast/state/promise-toast.js.map +1 -0
  641. package/dist/components/toast/state/store.d.ts +21 -0
  642. package/dist/components/toast/state/store.js +45 -0
  643. package/dist/components/toast/state/store.js.map +1 -0
  644. package/dist/components/toast/state/toast.d.ts +9 -10
  645. package/dist/components/toast/state/toast.js +30 -89
  646. package/dist/components/toast/state/toast.js.map +1 -1
  647. package/dist/components/toggle/Toggle/Toggle.js +2 -1
  648. package/dist/components/toggle/Toggle/Toggle.js.map +1 -1
  649. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js +1 -1
  650. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -1
  651. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.d.ts +6 -2
  652. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js +4 -20
  653. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js.map +1 -1
  654. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.d.ts +7 -10
  655. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js +10 -40
  656. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js.map +1 -1
  657. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js +5 -5
  658. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -1
  659. package/dist/components/tooltip/TooltipContent/usePresence.d.ts +27 -0
  660. package/dist/components/tooltip/TooltipContent/usePresence.js +24 -0
  661. package/dist/components/tooltip/TooltipContent/usePresence.js.map +1 -0
  662. package/dist/components/tooltip/TooltipContent/useTooltipContent.js +22 -35
  663. package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
  664. package/dist/hooks/useFontLoader.js +1 -1
  665. package/dist/hooks/useFontLoader.js.map +1 -1
  666. package/dist/hooks/useScrollLock.js +13 -16
  667. package/dist/hooks/useScrollLock.js.map +1 -1
  668. package/dist/index.js +328 -320
  669. package/dist/lib/positioner/index.d.ts +1 -0
  670. package/dist/lib/positioner/utils/dom.d.ts +8 -0
  671. package/dist/lib/positioner/utils/dom.js +1 -1
  672. package/dist/lib/positioner/utils/dom.js.map +1 -1
  673. package/dist/types/props.types.d.ts +1 -1
  674. package/dist/ui.css +1 -1
  675. package/dist/utils/call-event-handler.d.ts +16 -0
  676. package/dist/utils/call-event-handler.js +15 -0
  677. package/dist/utils/call-event-handler.js.map +1 -0
  678. package/dist/utils/clsx.d.ts +1 -1
  679. package/dist/utils/clsx.js +2 -7
  680. package/dist/utils/create-change-event-details.d.ts +25 -0
  681. package/dist/utils/create-change-event-details.js +25 -0
  682. package/dist/utils/create-change-event-details.js.map +1 -0
  683. package/dist/utils/get-style.d.ts +7 -9
  684. package/dist/utils/get-style.js +16 -0
  685. package/dist/utils/get-style.js.map +1 -0
  686. package/dist/utils/index.d.ts +8 -0
  687. package/dist/utils/index.js +7 -1
  688. package/dist/utils/number.d.ts +7 -0
  689. package/dist/utils/number.js +8 -0
  690. package/dist/utils/number.js.map +1 -0
  691. package/dist/utils/roving-navigation.d.ts +64 -0
  692. package/dist/utils/roving-navigation.js +66 -0
  693. package/dist/utils/roving-navigation.js.map +1 -0
  694. package/dist/utils/string.d.ts +17 -0
  695. package/dist/utils/string.js +11 -0
  696. package/dist/utils/string.js.map +1 -0
  697. package/package.json +18 -7
  698. package/dist/components/carousel/Carousel/Carousel.utils.d.ts +0 -0
  699. package/dist/components/field/FieldError/useFieldError.d.ts +0 -0
  700. package/dist/components/hover-card/hover-card.utils.d.ts +0 -6
  701. package/dist/components/tabs/Tabs/call-event-handler.d.ts +0 -5
  702. package/dist/components/tabs/Tabs/call-event-handler.js +0 -9
  703. package/dist/components/tabs/Tabs/call-event-handler.js.map +0 -1
  704. package/dist/components/toggle-group/call-event-handler.d.ts +0 -5
  705. package/dist/components/toggle-group/call-event-handler.js +0 -9
  706. package/dist/components/toggle-group/call-event-handler.js.map +0 -1
  707. package/dist/utils/clsx.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Toaster.utils.js","names":["VIEWPORT_OFFSET","MOBILE_VIEWPORT_OFFSET","getPositionClass","position","toPx","value","resolveOffsetStyle","style","y","x","normalize","fallback","desktop","offset","mobile","mobileOffset","getDocumentDirection","dir"],"sources":["../../../../src/components/toast/Toaster/Toaster.utils.ts"],"sourcesContent":["import type { JSX } from \"solid-js\";\nimport type { Position, SwipeDirection } from \"../Toast/Toast.types\";\nimport type { Offset } from \"./Toaster.types\";\n\nconst VIEWPORT_OFFSET = \"24px\";\nconst MOBILE_VIEWPORT_OFFSET = \"16px\";\n\nexport function getPositionClass(position: Position): string {\n switch (position) {\n case \"top-left\":\n return \"top-0 left-0\";\n case \"top-right\":\n return \"top-0 right-0\";\n case \"top-center\":\n return \"top-0 left-1/2 -translate-x-1/2\";\n case \"bottom-left\":\n return \"bottom-0 left-0\";\n case \"bottom-right\":\n return \"bottom-0 right-0\";\n case \"bottom-center\":\n return \"bottom-0 left-1/2 -translate-x-1/2\";\n }\n}\n\nfunction toPx(value: string | number): string {\n return typeof value === \"number\" ? `${value}px` : value;\n}\n\nexport function resolveOffsetStyle(\n position: Position,\n offset?: Offset,\n mobileOffset?: Offset,\n): JSX.CSSProperties {\n const style: JSX.CSSProperties = {};\n const [y, x] = position.split(\"-\");\n\n const normalize = (value: Offset | undefined, fallback: string) =>\n typeof value === \"object\" && value !== null\n ? value\n : {\n top: value ?? fallback,\n right: value ?? fallback,\n bottom: value ?? fallback,\n left: value ?? fallback,\n };\n\n const desktop = normalize(offset, VIEWPORT_OFFSET);\n const mobile = normalize(mobileOffset, MOBILE_VIEWPORT_OFFSET);\n\n if (y === \"top\") {\n style.top = toPx(desktop.top ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-top\"] = toPx(mobile.top ?? MOBILE_VIEWPORT_OFFSET);\n } else {\n style.bottom = toPx(desktop.bottom ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-bottom\"] = toPx(\n mobile.bottom ?? MOBILE_VIEWPORT_OFFSET,\n );\n }\n\n if (x === \"left\") {\n style.left = toPx(desktop.left ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-left\"] = toPx(mobile.left ?? MOBILE_VIEWPORT_OFFSET);\n } else if (x === \"right\") {\n style.right = toPx(desktop.right ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-right\"] = toPx(\n mobile.right ?? MOBILE_VIEWPORT_OFFSET,\n );\n }\n\n return style;\n}\n\nexport function getDefaultSwipeDirections(\n position: Position,\n): SwipeDirection[] {\n const [y, x] = position.split(\"-\");\n const directions: SwipeDirection[] = [];\n if (y) directions.push(y as SwipeDirection);\n if (x) directions.push(x as SwipeDirection);\n return directions;\n}\n\nexport function getDocumentDirection(): \"rtl\" | \"ltr\" | \"auto\" {\n if (typeof document === \"undefined\") return \"ltr\";\n const dir = document.documentElement.getAttribute(\"dir\");\n if (dir === \"auto\" || !dir) {\n return getComputedStyle(document.documentElement).direction as\n | \"rtl\"\n | \"ltr\"\n | \"auto\";\n }\n return dir as \"rtl\" | \"ltr\" | \"auto\";\n}\n"],"mappings":";AAIA,IAAMA,IAAkB,QAClBC,IAAyB;AAE/B,SAAgBC,EAAiB,GAA4B;CAC3D,QAAQC,GAAR;EACE,KAAK,YACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,KAAK,cACH,OAAO;EACT,KAAK,eACH,OAAO;EACT,KAAK,gBACH,OAAO;EACT,KAAK,iBACH,OAAO;CACX;AACF;AAEA,SAASC,EAAK,GAAgC;CAC5C,OAAO,OAAOC,KAAU,WAAW,GAAGA,EAAM,MAAMA;AACpD;AAEA,SAAgBC,EACd,GACA,GACA,GACmB;CACnB,IAAMC,IAA2B,CAAC,GAC5B,CAACC,GAAGC,KAAKN,EAAS,MAAM,GAAG,GAE3BO,KAAa,GAA2B,MAC5C,OAAOL,KAAU,YAAYA,IACzBA,IACA;EACE,KAAKA,KAASM;EACd,OAAON,KAASM;EAChB,QAAQN,KAASM;EACjB,MAAMN,KAASM;CACjB,GAEAC,IAAUF,EAAUG,GAAQb,CAAe,GAC3Cc,IAASJ,EAAUK,GAAcd,CAAsB;CAsB7D,OApBIO,MAAM,SACR,EAAM,MAAMJ,EAAKQ,EAAQ,OAAOZ,CAAe,GAC/C,EAAM,yBAAyBI,EAAKU,EAAO,OAAOb,CAAsB,MAExE,EAAM,SAASG,EAAKQ,EAAQ,UAAUZ,CAAe,GACrD,EAAM,4BAA4BI,EAChCU,EAAO,UAAUb,CACnB,IAGEQ,MAAM,UACR,EAAM,OAAOL,EAAKQ,EAAQ,QAAQZ,CAAe,GACjD,EAAM,0BAA0BI,EAAKU,EAAO,QAAQb,CAAsB,KACjEQ,MAAM,YACf,EAAM,QAAQL,EAAKQ,EAAQ,SAASZ,CAAe,GACnD,EAAM,2BAA2BI,EAC/BU,EAAO,SAASb,CAClB,IAGKM;AACT;AAYA,SAAgBS,IAA+C;CAC7D,IAAI,OAAO,WAAa,KAAa,OAAO;CAC5C,IAAMC,IAAM,SAAS,gBAAgB,aAAa,KAAK;CAOvD,OANIA,MAAQ,UAAU,CAACA,IACd,iBAAiB,SAAS,eAAe,CAAC,CAAC,YAK7CA;AACT"}
1
+ {"version":3,"file":"Toaster.utils.js","names":["VIEWPORT_OFFSET","MOBILE_VIEWPORT_OFFSET","getPositionClass","position","toPx","value","resolveOffsetStyle","style","y","x","normalize","fallback","desktop","offset","mobile","mobileOffset","getDocumentDirection","dir","getViewportLayoutClass","expanded"],"sources":["../../../../src/components/toast/Toaster/Toaster.utils.ts"],"sourcesContent":["import type { JSX } from \"solid-js\";\nimport type { Position, SwipeDirection } from \"../Toast/Toast.types\";\nimport type { Offset } from \"./Toaster.types\";\n\nconst VIEWPORT_OFFSET = \"24px\";\nconst MOBILE_VIEWPORT_OFFSET = \"16px\";\n\nexport function getPositionClass(position: Position): string {\n switch (position) {\n case \"top-left\":\n return \"top-0 left-0\";\n case \"top-right\":\n return \"top-0 right-0\";\n case \"top-center\":\n return \"top-0 left-1/2 -translate-x-1/2\";\n case \"bottom-left\":\n return \"bottom-0 left-0\";\n case \"bottom-right\":\n return \"bottom-0 right-0\";\n case \"bottom-center\":\n return \"bottom-0 left-1/2 -translate-x-1/2\";\n }\n}\n\nfunction toPx(value: string | number): string {\n return typeof value === \"number\" ? `${value}px` : value;\n}\n\nexport function resolveOffsetStyle(\n position: Position,\n offset?: Offset,\n mobileOffset?: Offset,\n): JSX.CSSProperties {\n const style: JSX.CSSProperties = {};\n const [y, x] = position.split(\"-\");\n\n const normalize = (value: Offset | undefined, fallback: string) =>\n typeof value === \"object\" && value !== null\n ? value\n : {\n top: value ?? fallback,\n right: value ?? fallback,\n bottom: value ?? fallback,\n left: value ?? fallback,\n };\n\n const desktop = normalize(offset, VIEWPORT_OFFSET);\n const mobile = normalize(mobileOffset, MOBILE_VIEWPORT_OFFSET);\n\n if (y === \"top\") {\n style.top = toPx(desktop.top ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-top\"] = toPx(mobile.top ?? MOBILE_VIEWPORT_OFFSET);\n } else {\n style.bottom = toPx(desktop.bottom ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-bottom\"] = toPx(\n mobile.bottom ?? MOBILE_VIEWPORT_OFFSET,\n );\n }\n\n if (x === \"left\") {\n style.left = toPx(desktop.left ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-left\"] = toPx(mobile.left ?? MOBILE_VIEWPORT_OFFSET);\n } else if (x === \"right\") {\n style.right = toPx(desktop.right ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-right\"] = toPx(\n mobile.right ?? MOBILE_VIEWPORT_OFFSET,\n );\n }\n\n return style;\n}\n\n/**\n * 根据位置推导默认的滑动关闭方向。\n *\n * `Position` 的第二段可能是 `\"center\"`,而它**不是**合法的 `SwipeDirection`\n * (只有 top/right/bottom/left)。之前实现直接把它 `as SwipeDirection` 塞进结果,\n * 导致 `top-center` 会产出 `[\"top\", \"center\"]` —— 调用方按方向匹配手势时\n * 永远命中不了 `\"center\"`,等于多了一个无效方向。\n * 这里按白名单过滤,保证返回的每一项都是真正可用的方向。\n */\nexport function getDefaultSwipeDirections(\n position: Position,\n): SwipeDirection[] {\n const [y, x] = position.split(\"-\");\n const directions: SwipeDirection[] = [];\n if (y === \"top\" || y === \"bottom\") directions.push(y);\n // 只有 left / right 能滑动关闭;center 位置没有水平滑动方向\n if (x === \"left\" || x === \"right\") directions.push(x);\n return directions;\n}\n\nexport function getDocumentDirection(): \"rtl\" | \"ltr\" | \"auto\" {\n if (typeof document === \"undefined\") return \"ltr\";\n const dir = document.documentElement.getAttribute(\"dir\");\n if (dir === \"auto\" || !dir) {\n return getComputedStyle(document.documentElement).direction as\n | \"rtl\"\n | \"ltr\"\n | \"auto\";\n }\n return dir as \"rtl\" | \"ltr\" | \"auto\";\n}\n\n/**\n * 视口的排布类名:收起时用 `grid` 把多层叠在同一格(靠 Toast 的 transform 错开),\n * 展开时按位置改成纵向 flex——顶部位置正向排、底部位置反向排,\n * 保证\"最新的一条永远靠近视口边缘\"。\n */\nexport function getViewportLayoutClass(\n position: Position,\n expanded: boolean,\n): string {\n if (!expanded) return \"grid\";\n return position.startsWith(\"top\") ? \"flex flex-col\" : \"flex flex-col-reverse\";\n}\n"],"mappings":";AAIA,IAAMA,IAAkB,QAClBC,IAAyB;AAE/B,SAAgBC,EAAiB,GAA4B;CAC3D,QAAQC,GAAR;EACE,KAAK,YACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,KAAK,cACH,OAAO;EACT,KAAK,eACH,OAAO;EACT,KAAK,gBACH,OAAO;EACT,KAAK,iBACH,OAAO;CACX;AACF;AAEA,SAASC,EAAK,GAAgC;CAC5C,OAAO,OAAOC,KAAU,WAAW,GAAGA,EAAM,MAAMA;AACpD;AAEA,SAAgBC,EACd,GACA,GACA,GACmB;CACnB,IAAMC,IAA2B,CAAC,GAC5B,CAACC,GAAGC,KAAKN,EAAS,MAAM,GAAG,GAE3BO,KAAa,GAA2B,MAC5C,OAAOL,KAAU,YAAYA,IACzBA,IACA;EACE,KAAKA,KAASM;EACd,OAAON,KAASM;EAChB,QAAQN,KAASM;EACjB,MAAMN,KAASM;CACjB,GAEAC,IAAUF,EAAUG,GAAQb,CAAe,GAC3Cc,IAASJ,EAAUK,GAAcd,CAAsB;CAsB7D,OApBIO,MAAM,SACR,EAAM,MAAMJ,EAAKQ,EAAQ,OAAOZ,CAAe,GAC/C,EAAM,yBAAyBI,EAAKU,EAAO,OAAOb,CAAsB,MAExE,EAAM,SAASG,EAAKQ,EAAQ,UAAUZ,CAAe,GACrD,EAAM,4BAA4BI,EAChCU,EAAO,UAAUb,CACnB,IAGEQ,MAAM,UACR,EAAM,OAAOL,EAAKQ,EAAQ,QAAQZ,CAAe,GACjD,EAAM,0BAA0BI,EAAKU,EAAO,QAAQb,CAAsB,KACjEQ,MAAM,YACf,EAAM,QAAQL,EAAKQ,EAAQ,SAASZ,CAAe,GACnD,EAAM,2BAA2BI,EAC/BU,EAAO,SAASb,CAClB,IAGKM;AACT;AAsBA,SAAgBS,IAA+C;CAC7D,IAAI,OAAO,WAAa,KAAa,OAAO;CAC5C,IAAMC,IAAM,SAAS,gBAAgB,aAAa,KAAK;CAOvD,OANIA,MAAQ,UAAU,CAACA,IACd,iBAAiB,SAAS,eAAe,CAAC,CAAC,YAK7CA;AACT;AAOA,SAAgBC,EACd,GACA,GACQ;CAER,OADKC,IACEhB,EAAS,WAAW,KAAK,IAAI,kBAAkB,0BADhC;AAExB"}
@@ -0,0 +1,28 @@
1
+ import { Accessor, Setter } from 'solid-js';
2
+ import { Position, ToastT } from '../Toast/Toast.types';
3
+ export interface UseToasterOptions {
4
+ /** 当前 Toaster 要展示的全部 toast(由 state 层提供,便于独立测试) */
5
+ toasts: Accessor<ToastT[]>;
6
+ /** 只展示属于该 toasterId 的 toast;缺省时展示无归属的 toast */
7
+ toasterId: Accessor<string | undefined>;
8
+ position: Accessor<Position>;
9
+ visibleToasts: Accessor<number>;
10
+ expand: Accessor<boolean | undefined>;
11
+ hotkey: Accessor<string[]>;
12
+ }
13
+ export interface ToasterState {
14
+ /** 展开态:悬停、热键或 `expand` 置位时为 true */
15
+ expanded: Accessor<boolean>;
16
+ setExpanded: Setter<boolean>;
17
+ /** 需要渲染的视口位置(默认位置 + toast 自带位置去重) */
18
+ possiblePositions: Accessor<Position[]>;
19
+ /** 某个视口下真正要渲染的 toast(含 visibleToasts 截断) */
20
+ visibleToastsForPosition: (position: Position) => ToastT[];
21
+ }
22
+ /**
23
+ * Toaster 的"选择与展开"算法:从一堆 toast 里挑出当前 Toaster 该渲染的那些、
24
+ * 归到各自的位置视口,并维护展开态(悬停由渲染层调用 `setExpanded`)。
25
+ *
26
+ * 这里不读全局 store —— `toasts` 由调用方注入,算法本身可以脱离 store 单独推理。
27
+ */
28
+ export declare function useToaster(options: UseToasterOptions): ToasterState;
@@ -0,0 +1,26 @@
1
+ import { createMemo as e, createSignal as t, onCleanup as n, onMount as r } from "solid-js";
2
+ //#region src/components/toast/Toaster/useToaster.ts
3
+ function i(i) {
4
+ let [a, o] = t(!1), s = e(() => {
5
+ let e = i.toasterId();
6
+ return e ? i.toasts().filter((t) => t.toasterId === e) : i.toasts().filter((e) => !e.toasterId);
7
+ }), c = e(() => Array.from(new Set([i.position()].concat(s().filter((e) => e.position).map((e) => e.position))))), l = (e) => s().filter((t) => t.position ? t.position === e : e === i.position());
8
+ return r(() => {
9
+ let e = (e) => {
10
+ i.hotkey().length > 0 && i.hotkey().every((t) => e[t] || e.code === t) && o(!0), e.code === "Escape" && o(!1);
11
+ };
12
+ document.addEventListener("keydown", e), n(() => document.removeEventListener("keydown", e));
13
+ }), {
14
+ expanded: a,
15
+ setExpanded: o,
16
+ possiblePositions: c,
17
+ visibleToastsForPosition: (e) => {
18
+ let t = l(e);
19
+ return i.expand() ? t : t.slice(0, i.visibleToasts());
20
+ }
21
+ };
22
+ }
23
+ //#endregion
24
+ export { i as useToaster };
25
+
26
+ //# sourceMappingURL=useToaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToaster.js","names":["useToaster","expanded","setExpanded","createSignal","filteredToasts","createMemo","id","options","toast","possiblePositions","toastsForPosition","position","onMount","onKeyDown","event","key","onCleanup","list"],"sources":["../../../../src/components/toast/Toaster/useToaster.ts"],"sourcesContent":["import {\n type Accessor,\n type Setter,\n createMemo,\n createSignal,\n onCleanup,\n onMount,\n} from \"solid-js\";\nimport type { Position, ToastT } from \"../Toast/Toast.types\";\n\nexport interface UseToasterOptions {\n /** 当前 Toaster 要展示的全部 toast(由 state 层提供,便于独立测试) */\n toasts: Accessor<ToastT[]>;\n /** 只展示属于该 toasterId 的 toast;缺省时展示无归属的 toast */\n toasterId: Accessor<string | undefined>;\n position: Accessor<Position>;\n visibleToasts: Accessor<number>;\n expand: Accessor<boolean | undefined>;\n hotkey: Accessor<string[]>;\n}\n\nexport interface ToasterState {\n /** 展开态:悬停、热键或 `expand` 置位时为 true */\n expanded: Accessor<boolean>;\n setExpanded: Setter<boolean>;\n /** 需要渲染的视口位置(默认位置 + toast 自带位置去重) */\n possiblePositions: Accessor<Position[]>;\n /** 某个视口下真正要渲染的 toast(含 visibleToasts 截断) */\n visibleToastsForPosition: (position: Position) => ToastT[];\n}\n\n/**\n * Toaster 的\"选择与展开\"算法:从一堆 toast 里挑出当前 Toaster 该渲染的那些、\n * 归到各自的位置视口,并维护展开态(悬停由渲染层调用 `setExpanded`)。\n *\n * 这里不读全局 store —— `toasts` 由调用方注入,算法本身可以脱离 store 单独推理。\n */\nexport function useToaster(options: UseToasterOptions): ToasterState {\n const [expanded, setExpanded] = createSignal(false);\n\n const filteredToasts = createMemo(() => {\n const id = options.toasterId();\n return id\n ? options.toasts().filter((toast) => toast.toasterId === id)\n : options.toasts().filter((toast) => !toast.toasterId);\n });\n\n // 每个 toast 可以指定自己的位置,因此视口集合是\"默认位置 + 出现过的位置\"去重\n const possiblePositions = createMemo(() =>\n Array.from(\n new Set(\n [options.position()].concat(\n filteredToasts()\n .filter((toast) => toast.position)\n .map((toast) => toast.position as Position),\n ),\n ),\n ),\n );\n\n const toastsForPosition = (position: Position) =>\n filteredToasts().filter((toast) => {\n if (toast.position) return toast.position === position;\n return position === options.position();\n });\n\n const visibleToastsForPosition = (position: Position) => {\n const list = toastsForPosition(position);\n if (options.expand()) return list;\n return list.slice(0, options.visibleToasts());\n };\n\n onMount(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n const hotkeyPressed =\n options.hotkey().length > 0 &&\n options\n .hotkey()\n .every((key) => (event as any)[key] || event.code === key);\n if (hotkeyPressed) setExpanded(true);\n if (event.code === \"Escape\") setExpanded(false);\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n return { expanded, setExpanded, possiblePositions, visibleToastsForPosition };\n}\n"],"mappings":";;AAqCA,SAAgBA,EAAW,GAA0C;CACnE,IAAM,CAACC,GAAUC,KAAeC,EAAa,EAAK,GAE5CC,IAAiBC,QAAiB;EACtC,IAAMC,IAAKC,EAAQ,UAAU;EAC7B,OAAOD,IACHC,EAAQ,OAAO,CAAC,CAAC,QAAQ,MAAUC,EAAM,cAAcF,CAAE,IACzDC,EAAQ,OAAO,CAAC,CAAC,QAAQ,MAAU,CAACC,EAAM,SAAS;CACzD,CAAC,GAGKC,IAAoBJ,QACxB,MAAM,KACJ,IAAI,IACF,CAACE,EAAQ,SAAS,CAAC,CAAC,CAAC,OACnBH,EAAe,CAAC,CACb,QAAQ,MAAUI,EAAM,QAAQ,CAAC,CACjC,KAAK,MAAUA,EAAM,QAAoB,CAC9C,CACF,CACF,CACF,GAEME,KAAqB,MACzBN,EAAe,CAAC,CAAC,QAAQ,MACnBI,EAAM,WAAiBA,EAAM,aAAaG,IACvCA,MAAaJ,EAAQ,SAAS,CACtC;CAuBH,OAfAK,QAAc;EACZ,IAAMC,KAAa,MAAyB;GAO1C,AALEN,EAAQ,OAAO,CAAC,CAAC,SAAS,KAC1BA,EACG,OAAO,CAAC,CACR,OAAO,MAASO,EAAcC,MAAQD,EAAM,SAASC,CAAG,KAC1Cb,EAAY,EAAI,GAC/BY,EAAM,SAAS,YAAUZ,EAAY,EAAK;EAChD;EAGA,AADA,SAAS,iBAAiB,WAAWW,CAAS,GAC9CG,QAAgB,SAAS,oBAAoB,WAAWH,CAAS,CAAC;CACpE,CAAC,GAEM;EAAE;EAAU;EAAa;EAAmB,2BArBjB,MAAuB;GACvD,IAAMI,IAAOP,EAAkBC,CAAQ;GAEvC,OADIJ,EAAQ,OAAO,IAAUU,IACtBA,EAAK,MAAM,GAAGV,EAAQ,cAAc,CAAC;EAC9C;CAiB4E;AAC9E"}
@@ -1,4 +1,5 @@
1
- import { Toast as e } from "./Toast/Toast.js";
2
- import { getHistory as t, getToasts as n, toast as r, useSonner as i } from "./state/toast.js";
1
+ import { getHistory as e, getToasts as t, useSonner as n } from "./state/store.js";
2
+ import { toast as r } from "./state/toast.js";
3
+ import { Toast as i } from "./Toast/Toast.js";
3
4
  import { Toaster as a } from "./Toaster/Toaster.js";
4
- export { e as Toast, a as Toaster, t as getHistory, n as getToasts, r as toast, i as useSonner };
5
+ export { i as Toast, a as Toaster, e as getHistory, t as getToasts, r as toast, n as useSonner };
@@ -0,0 +1,17 @@
1
+ import { PromiseData, PromiseT } from '../Toast/Toast.types';
2
+ import { CreateToastInput } from './store';
3
+ /** promise 编排需要的最小写入能力;测试可注入假实现,不必碰全局 store */
4
+ export interface PromiseToastPorts {
5
+ show(data: CreateToastInput): string;
6
+ dismiss(id: string): void;
7
+ }
8
+ /**
9
+ * `toast.promise` 的编排:先按需挂一条 loading,再根据 settle 结果替换成
10
+ * success/error;resolver 返回 `undefined` 表示"不想留提示",此时收起 loading。
11
+ *
12
+ * 成功与失败除"用哪个 resolver、报哪种 type"外完全一致,因此共用 `settle`。
13
+ *
14
+ * 返回 loading 那条 toast 的 id(没有 loading 时为 `undefined`;公开 API 的
15
+ * 返回类型仍按历史约定标成 `string`,故调用方做了断言)。
16
+ */
17
+ export declare function createPromiseToast<Data = any>(promise: PromiseT<Data>, data: PromiseData<Data> | undefined, ports: PromiseToastPorts): string | undefined;
@@ -0,0 +1,33 @@
1
+ //#region src/components/toast/state/promise-toast.ts
2
+ async function e(e, t) {
3
+ return typeof e == "function" ? await e(t) : e;
4
+ }
5
+ function t(t, n, r) {
6
+ if (!n) return;
7
+ let i;
8
+ n.loading !== void 0 && (i = r.show({
9
+ ...n,
10
+ type: "loading",
11
+ message: n.loading
12
+ }));
13
+ let a = async (t, a) => {
14
+ let o = await e(t === "success" ? n.success : n.error, a);
15
+ if (o === void 0) {
16
+ i !== void 0 && r.dismiss(i);
17
+ return;
18
+ }
19
+ r.show({
20
+ id: i,
21
+ type: t,
22
+ message: o,
23
+ description: await e(n.description, a)
24
+ });
25
+ };
26
+ return Promise.resolve(typeof t == "function" ? t() : t).then((e) => a("success", e)).catch((e) => a("error", e)).finally(() => {
27
+ n.finally?.();
28
+ }), i;
29
+ }
30
+ //#endregion
31
+ export { t as createPromiseToast };
32
+
33
+ //# sourceMappingURL=promise-toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise-toast.js","names":["resolveValue","resolver","value","createPromiseToast","data","id","ports","settle","message","type","outcome","promise","result","error"],"sources":["../../../../src/components/toast/state/promise-toast.ts"],"sourcesContent":["import type { JSXElement } from \"solid-js\";\nimport type { PromiseData, PromiseT } from \"../Toast/Toast.types\";\nimport type { CreateToastInput } from \"./store\";\n\n/** promise 编排需要的最小写入能力;测试可注入假实现,不必碰全局 store */\nexport interface PromiseToastPorts {\n show(data: CreateToastInput): string;\n dismiss(id: string): void;\n}\n\ntype PromiseOutcome = \"success\" | \"error\";\n\nasync function resolveValue(resolver: unknown, value: unknown) {\n return typeof resolver === \"function\"\n ? await (resolver as (input: unknown) => JSXElement | string)(value)\n : resolver;\n}\n\n/**\n * `toast.promise` 的编排:先按需挂一条 loading,再根据 settle 结果替换成\n * success/error;resolver 返回 `undefined` 表示\"不想留提示\",此时收起 loading。\n *\n * 成功与失败除\"用哪个 resolver、报哪种 type\"外完全一致,因此共用 `settle`。\n *\n * 返回 loading 那条 toast 的 id(没有 loading 时为 `undefined`;公开 API 的\n * 返回类型仍按历史约定标成 `string`,故调用方做了断言)。\n */\nexport function createPromiseToast<Data = any>(\n promise: PromiseT<Data>,\n data: PromiseData<Data> | undefined,\n ports: PromiseToastPorts,\n): string | undefined {\n if (!data) return undefined;\n\n let id: string | undefined;\n if (data.loading !== undefined) {\n id = ports.show({\n ...data,\n type: \"loading\",\n message: data.loading,\n } as CreateToastInput);\n }\n\n const settle = async (type: PromiseOutcome, outcome: unknown) => {\n const message = await resolveValue(\n type === \"success\" ? data.success : data.error,\n outcome,\n );\n\n if (message === undefined) {\n if (id !== undefined) ports.dismiss(id);\n return;\n }\n\n ports.show({\n id,\n type,\n message: message as JSXElement,\n description: (await resolveValue(\n data.description,\n outcome,\n )) as JSXElement,\n });\n };\n\n Promise.resolve(typeof promise === \"function\" ? promise() : promise)\n .then((result) => settle(\"success\", result))\n .catch((error) => settle(\"error\", error))\n .finally(() => {\n data.finally?.();\n });\n\n return id;\n}\n"],"mappings":";AAYA,eAAeA,EAAa,GAAmB,GAAgB;CAC7D,OAAO,OAAOC,KAAa,aACvB,MAAOA,EAAqDC,CAAK,IACjED;AACN;AAWA,SAAgBE,EACd,GACA,GACA,GACoB;CACpB,IAAI,CAACC,GAAM;CAEX,IAAIC;CACJ,AAAID,EAAK,YAAY,KAAA,MACnB,IAAKE,EAAM,KAAK;EACd,GAAGF;EACH,MAAM;EACN,SAASA,EAAK;CAChB,CAAqB;CAGvB,IAAMG,IAAS,OAAO,GAAsB,MAAqB;EAC/D,IAAMC,IAAU,MAAMR,EACpBS,MAAS,YAAYL,EAAK,UAAUA,EAAK,OACzCM,CACF;EAEA,IAAIF,MAAY,KAAA,GAAW;GACzB,AAAIH,MAAO,KAAA,KAAWC,EAAM,QAAQD,CAAE;GACtC;EACF;EAEA,EAAM,KAAK;GACT;GACA;GACS;GACT,aAAc,MAAML,EAClBI,EAAK,aACLM,CACF;EACF,CAAC;CACH;CASA,OAPA,QAAQ,QAAQ,OAAOC,KAAY,aAAaA,EAAQ,IAAIA,CAAO,CAAC,CACjE,MAAM,MAAWJ,EAAO,WAAWK,CAAM,CAAC,CAAC,CAC3C,OAAO,MAAUL,EAAO,SAASM,CAAK,CAAC,CAAC,CACxC,cAAc;EACb,EAAK,UAAU;CACjB,CAAC,GAEIR;AACT"}
@@ -0,0 +1,21 @@
1
+ import { JSXElement } from 'solid-js';
2
+ import { ExternalToast, PromiseT, ToastT, ToastTypes } from '../Toast/Toast.types';
3
+ export declare function useSonner(): {
4
+ toasts: ToastT[];
5
+ };
6
+ export declare function getToasts(): ToastT[];
7
+ export declare function getHistory(): ToastT[];
8
+ export type CreateToastInput = ExternalToast & {
9
+ message?: JSXElement;
10
+ type?: ToastTypes;
11
+ jsx?: JSXElement;
12
+ promise?: PromiseT;
13
+ };
14
+ /**
15
+ * 新建一条 toast;同 id 已存在时原地更新(`message` 缺省则保留原标题)。
16
+ * 新 toast 插到队首,因此列表顺序天然是"新 → 旧"。
17
+ */
18
+ export declare function createToast(data: CreateToastInput): string;
19
+ /** 标记退场:真正的移除发生在退场动画结束后(由 Toast 调 `removeToast`)。 */
20
+ export declare function dismissToast(id?: string): string | undefined;
21
+ export declare function removeToast(id: string): void;
@@ -0,0 +1,45 @@
1
+ import { createUniqueId as e } from "solid-js";
2
+ import { createStore as t, produce as n } from "solid-js/store";
3
+ //#region src/components/toast/state/store.ts
4
+ var [r, i] = t([]);
5
+ function a() {
6
+ return { toasts: r };
7
+ }
8
+ function o() {
9
+ return r;
10
+ }
11
+ function s() {
12
+ return r;
13
+ }
14
+ function c(t) {
15
+ let r = t.id ?? e();
16
+ return i(n((e) => {
17
+ let n = e.find((e) => e.id === r), i = {
18
+ ...t,
19
+ id: r,
20
+ title: t.message,
21
+ dismissible: t.dismissible ?? !0
22
+ };
23
+ n ? Object.assign(n, i, { title: t.message ?? n.title }) : e.unshift(i);
24
+ })), r;
25
+ }
26
+ function l(e) {
27
+ return i(n((t) => {
28
+ if (e !== void 0) {
29
+ let n = t.find((t) => t.id === e);
30
+ n && (n.delete = !0);
31
+ return;
32
+ }
33
+ for (let e of t) e.delete = !0;
34
+ })), e;
35
+ }
36
+ function u(e) {
37
+ i(n((t) => {
38
+ let n = t.findIndex((t) => t.id === e);
39
+ n !== -1 && t.splice(n, 1);
40
+ }));
41
+ }
42
+ //#endregion
43
+ export { c as createToast, l as dismissToast, s as getHistory, o as getToasts, u as removeToast, a as useSonner };
44
+
45
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","names":["toasts","setToasts","createStore","useSonner","getToasts","getHistory","createToast","id","data","createUniqueId","produce","existing","list","toast","next","dismissToast","item","removeToast","index"],"sources":["../../../../src/components/toast/state/store.ts"],"sourcesContent":["import { createUniqueId, type JSXElement } from \"solid-js\";\nimport { createStore, produce } from \"solid-js/store\";\nimport type {\n ExternalToast,\n PromiseT,\n ToastT,\n ToastTypes,\n} from \"../Toast/Toast.types\";\n\n/**\n * 全部 toast 的单一数据源。\n *\n * 只在本模块内写入:外部通过 `useSonner()` 读取、通过下面三个原语修改,\n * 保证\"列表怎么变\"只有一处实现(更新同 id、标记删除、真正移除)。\n */\nconst [toasts, setToasts] = createStore<ToastT[]>([]);\n\nexport function useSonner() {\n return { toasts };\n}\n\nexport function getToasts() {\n return toasts;\n}\n\nexport function getHistory() {\n return toasts;\n}\n\nexport type CreateToastInput = ExternalToast & {\n message?: JSXElement;\n type?: ToastTypes;\n jsx?: JSXElement;\n promise?: PromiseT;\n};\n\n/**\n * 新建一条 toast;同 id 已存在时原地更新(`message` 缺省则保留原标题)。\n * 新 toast 插到队首,因此列表顺序天然是\"新 → 旧\"。\n */\nexport function createToast(data: CreateToastInput): string {\n const id = data.id ?? createUniqueId();\n\n setToasts(\n produce((list) => {\n const existing = list.find((toast) => toast.id === id);\n const next: ToastT = {\n ...data,\n id,\n title: data.message,\n dismissible: data.dismissible ?? true,\n } as ToastT;\n\n if (existing) {\n Object.assign(existing, next, {\n title: data.message ?? existing.title,\n });\n } else {\n list.unshift(next);\n }\n }),\n );\n\n return id;\n}\n\n/** 标记退场:真正的移除发生在退场动画结束后(由 Toast 调 `removeToast`)。 */\nexport function dismissToast(id?: string) {\n setToasts(\n produce((list) => {\n if (id !== undefined) {\n const toast = list.find((item) => item.id === id);\n if (toast) toast.delete = true;\n return;\n }\n for (const toast of list) toast.delete = true;\n }),\n );\n\n return id;\n}\n\nexport function removeToast(id: string) {\n setToasts(\n produce((list) => {\n const index = list.findIndex((toast) => toast.id === id);\n if (index !== -1) list.splice(index, 1);\n }),\n );\n}\n"],"mappings":";;;AAeA,IAAM,CAACA,GAAQC,KAAaC,EAAsB,CAAC,CAAC;AAEpD,SAAgBC,IAAY;CAC1B,OAAO,EAAE,UAAO;AAClB;AAEA,SAAgBC,IAAY;CAC1B,OAAOJ;AACT;AAEA,SAAgBK,IAAa;CAC3B,OAAOL;AACT;AAaA,SAAgBM,EAAY,GAAgC;CAC1D,IAAMC,IAAKC,EAAK,MAAMC,EAAe;CAsBrC,OApBAR,EACES,GAAS,MAAS;EAChB,IAAMC,IAAWC,EAAK,MAAM,MAAUC,EAAM,OAAON,CAAE,GAC/CO,IAAe;GACnB,GAAGN;GACH;GACA,OAAOA,EAAK;GACZ,aAAaA,EAAK,eAAe;EACnC;EAEA,AAAIG,IACF,OAAO,OAAOA,GAAUG,GAAM,EAC5B,OAAON,EAAK,WAAWG,EAAS,MAClC,CAAC,IAEDC,EAAK,QAAQE,CAAI;CAErB,CAAC,CACH,GAEOP;AACT;AAGA,SAAgBQ,EAAa,GAAa;CAYxC,OAXAd,EACES,GAAS,MAAS;EAChB,IAAIH,MAAO,KAAA,GAAW;GACpB,IAAMM,IAAQD,EAAK,MAAM,MAASI,EAAK,OAAOT,CAAE;GAChD,AAAIM,MAAO,EAAM,SAAS;GAC1B;EACF;EACA,KAAK,IAAMA,KAASD,GAAM,EAAM,SAAS;CAC3C,CAAC,CACH,GAEOL;AACT;AAEA,SAAgBU,EAAY,GAAY;CACtC,EACEP,GAAS,MAAS;EAChB,IAAMQ,IAAQN,EAAK,WAAW,MAAUC,EAAM,OAAON,CAAE;EACvD,AAAIW,MAAU,MAAIN,EAAK,OAAOM,GAAO,CAAC;CACxC,CAAC,CACH;AACF"}
@@ -1,12 +1,11 @@
1
1
  import { JSXElement } from 'solid-js';
2
- import { ExternalToast, PromiseData, PromiseT, ToastT } from '../Toast/Toast.types';
3
- export declare function useSonner(): {
4
- toasts: ToastT[];
5
- };
6
- export declare function getToasts(): ToastT[];
7
- export declare function getHistory(): ToastT[];
8
- declare function dismissToast(id?: string): string | undefined;
9
- declare function removeToast(id: string): void;
2
+ import { ExternalToast, PromiseData, PromiseT } from '../Toast/Toast.types';
3
+ import { dismissToast, getHistory, getToasts, removeToast, useSonner } from './store';
4
+ /**
5
+ * 公开 API:把 store 原语包装成"一条 toast 怎么发出去"的语义化入口。
6
+ * 这里只做参数装配,状态变更全部委托给 `store`,promise 编排委托给
7
+ * `promise-toast`。
8
+ */
10
9
  export declare const toast: ((message: JSXElement, data?: ExternalToast) => string) & {
11
10
  success: (message: JSXElement, data?: ExternalToast) => string;
12
11
  info: (message: JSXElement, data?: ExternalToast) => string;
@@ -16,9 +15,9 @@ export declare const toast: ((message: JSXElement, data?: ExternalToast) => stri
16
15
  message: (message: JSXElement, data?: ExternalToast) => string;
17
16
  custom: (jsx: (id: string) => JSXElement, data?: ExternalToast) => string;
18
17
  dismiss: typeof dismissToast;
19
- promise: <Data = any>(promise: PromiseT<Data>, data?: PromiseData<Data>) => string | undefined;
18
+ promise: <Data = any>(promise: PromiseT<Data>, data?: PromiseData<Data>) => string;
20
19
  getToasts: typeof getToasts;
21
20
  getHistory: typeof getHistory;
22
21
  remove: typeof removeToast;
23
22
  };
24
- export { dismissToast, removeToast };
23
+ export { dismissToast, getHistory, getToasts, removeToast, useSonner };
@@ -1,116 +1,57 @@
1
- import { createUniqueId as e } from "solid-js";
2
- import { createStore as t, produce as n } from "solid-js/store";
3
- //#region src/components/toast/state/toast.ts
4
- var [r, i] = t([]);
5
- function a() {
6
- return { toasts: r };
7
- }
8
- function o() {
9
- return r;
10
- }
11
- function s() {
12
- return r;
13
- }
14
- function c(t) {
15
- let r = t.id ?? e();
16
- return i(n((e) => {
17
- let n = e.find((e) => e.id === r), i = {
18
- ...t,
19
- id: r,
20
- title: t.message,
21
- dismissible: t.dismissible ?? !0
22
- };
23
- n ? Object.assign(n, i, { title: t.message ?? n.title }) : e.unshift(i);
24
- })), r;
25
- }
26
- function l(e) {
27
- return i(n(e === void 0 ? (e) => {
28
- for (let t of e) t.delete = !0;
29
- } : (t) => {
30
- let n = t.find((t) => t.id === e);
31
- n && (n.delete = !0);
32
- })), e;
33
- }
34
- function u(e) {
35
- i(n((t) => {
36
- let n = t.findIndex((t) => t.id === e);
37
- n !== -1 && t.splice(n, 1);
38
- }));
39
- }
40
- var d = Object.assign((e, t) => c({
41
- ...t,
1
+ import { createPromiseToast as e } from "./promise-toast.js";
2
+ import { createToast as t, dismissToast as n, getHistory as r, getToasts as i, removeToast as a, useSonner as o } from "./store.js";
3
+ import { createUniqueId as s } from "solid-js";
4
+ var c = Object.assign((e, n) => t({
5
+ ...n,
42
6
  message: e
43
7
  }), {
44
- success: (e, t) => c({
45
- ...t,
8
+ success: (e, n) => t({
9
+ ...n,
46
10
  type: "success",
47
11
  message: e
48
12
  }),
49
- info: (e, t) => c({
50
- ...t,
13
+ info: (e, n) => t({
14
+ ...n,
51
15
  type: "info",
52
16
  message: e
53
17
  }),
54
- warning: (e, t) => c({
55
- ...t,
18
+ warning: (e, n) => t({
19
+ ...n,
56
20
  type: "warning",
57
21
  message: e
58
22
  }),
59
- error: (e, t) => c({
60
- ...t,
23
+ error: (e, n) => t({
24
+ ...n,
61
25
  type: "error",
62
26
  message: e
63
27
  }),
64
- loading: (e, t) => c({
65
- ...t,
28
+ loading: (e, n) => t({
29
+ ...n,
66
30
  type: "loading",
67
31
  message: e
68
32
  }),
69
- message: (e, t) => c({
70
- ...t,
33
+ message: (e, n) => t({
34
+ ...n,
71
35
  message: e
72
36
  }),
73
- custom: (t, n) => {
74
- let r = n?.id ?? e();
75
- return c({
37
+ custom: (e, n) => {
38
+ let r = n?.id ?? s();
39
+ return t({
76
40
  ...n,
77
41
  id: r,
78
- jsx: t(r)
42
+ jsx: e(r)
79
43
  });
80
44
  },
81
- dismiss: l,
82
- promise: (e, t) => {
83
- if (!t) return;
84
- let n;
85
- return t.loading !== void 0 && (n = c({
86
- ...t,
87
- type: "loading",
88
- message: t.loading
89
- })), Promise.resolve(typeof e == "function" ? e() : e).then(async (e) => {
90
- let r = typeof t.success == "function" ? await t.success(e) : t.success;
91
- r === void 0 ? n !== void 0 && l(n) : c({
92
- id: n,
93
- type: "success",
94
- message: r,
95
- description: typeof t.description == "function" ? await t.description(e) : t.description
96
- });
97
- }).catch(async (e) => {
98
- let r = typeof t.error == "function" ? await t.error(e) : t.error;
99
- r === void 0 ? n !== void 0 && l(n) : c({
100
- id: n,
101
- type: "error",
102
- message: r,
103
- description: typeof t.description == "function" ? await t.description(e) : t.description
104
- });
105
- }).finally(() => {
106
- t.finally?.();
107
- }), n;
108
- },
109
- getToasts: o,
110
- getHistory: s,
111
- remove: u
45
+ dismiss: n,
46
+ promise: (r, i) => e(r, i, {
47
+ show: t,
48
+ dismiss: n
49
+ }),
50
+ getToasts: i,
51
+ getHistory: r,
52
+ remove: a
112
53
  });
113
54
  //#endregion
114
- export { l as dismissToast, s as getHistory, o as getToasts, u as removeToast, d as toast, a as useSonner };
55
+ export { n as dismissToast, r as getHistory, i as getToasts, a as removeToast, c as toast, o as useSonner };
115
56
 
116
57
  //# sourceMappingURL=toast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","names":["toasts","setToasts","createStore","useSonner","getToasts","getHistory","createToast","id","data","createUniqueId","produce","existing","list","toast","next","dismissToast","item","removeToast","index","jsx","promise","message","result","error"],"sources":["../../../../src/components/toast/state/toast.ts"],"sourcesContent":["import { createUniqueId, type JSXElement } from \"solid-js\";\nimport { createStore, produce } from \"solid-js/store\";\nimport type {\n ExternalToast,\n PromiseData,\n PromiseT,\n ToastT,\n ToastTypes,\n} from \"../Toast/Toast.types\";\n\nconst [toasts, setToasts] = createStore<ToastT[]>([]);\n\nexport function useSonner() {\n return { toasts };\n}\n\nexport function getToasts() {\n return toasts;\n}\n\nexport function getHistory() {\n return toasts;\n}\n\nfunction createToast(\n data: ExternalToast & {\n message?: JSXElement;\n type?: ToastTypes;\n jsx?: JSXElement;\n promise?: PromiseT;\n },\n): string {\n const id = data.id ?? createUniqueId();\n\n setToasts(\n produce((list) => {\n const existing = list.find((toast) => toast.id === id);\n const next: ToastT = {\n ...data,\n id,\n title: data.message,\n dismissible: data.dismissible ?? true,\n } as ToastT;\n\n if (existing) {\n Object.assign(existing, next, {\n title: data.message ?? existing.title,\n });\n } else {\n list.unshift(next);\n }\n }),\n );\n\n return id;\n}\n\nfunction dismissToast(id?: string) {\n if (id !== undefined) {\n setToasts(\n produce((list) => {\n const toast = list.find((item) => item.id === id);\n if (toast) toast.delete = true;\n }),\n );\n } else {\n setToasts(\n produce((list) => {\n for (const toast of list) toast.delete = true;\n }),\n );\n }\n return id;\n}\n\nfunction removeToast(id: string) {\n setToasts(\n produce((list) => {\n const index = list.findIndex((toast) => toast.id === id);\n if (index !== -1) list.splice(index, 1);\n }),\n );\n}\n\nconst toastFunction = (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, message });\n\nexport const toast = Object.assign(toastFunction, {\n success: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"success\", message }),\n info: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"info\", message }),\n warning: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"warning\", message }),\n error: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"error\", message }),\n loading: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"loading\", message }),\n message: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, message }),\n custom: (jsx: (id: string) => JSXElement, data?: ExternalToast) => {\n const id = data?.id ?? createUniqueId();\n return createToast({ ...data, id, jsx: jsx(id) });\n },\n dismiss: dismissToast,\n promise: <Data = any>(promise: PromiseT<Data>, data?: PromiseData<Data>) => {\n if (!data) return;\n\n let id: string | undefined;\n if (data.loading !== undefined) {\n id = createToast({\n ...data,\n type: \"loading\",\n message: data.loading,\n } as any);\n }\n\n Promise.resolve(typeof promise === \"function\" ? promise() : promise)\n .then(async (result) => {\n const message =\n typeof data.success === \"function\"\n ? await data.success(result)\n : data.success;\n\n if (message !== undefined) {\n createToast({\n id,\n type: \"success\",\n message: message as JSXElement,\n description:\n typeof data.description === \"function\"\n ? await data.description(result)\n : data.description,\n } as any);\n } else if (id !== undefined) {\n dismissToast(id);\n }\n })\n .catch(async (error) => {\n const message =\n typeof data.error === \"function\"\n ? await data.error(error)\n : data.error;\n\n if (message !== undefined) {\n createToast({\n id,\n type: \"error\",\n message: message as JSXElement,\n description:\n typeof data.description === \"function\"\n ? await data.description(error)\n : data.description,\n } as any);\n } else if (id !== undefined) {\n dismissToast(id);\n }\n })\n .finally(() => {\n data.finally?.();\n });\n\n return id as string;\n },\n getToasts,\n getHistory,\n remove: removeToast,\n});\n\nexport { dismissToast, removeToast };\n"],"mappings":";;;AAUA,IAAM,CAACA,GAAQC,KAAaC,EAAsB,CAAC,CAAC;AAEpD,SAAgBC,IAAY;CAC1B,OAAO,EAAE,UAAO;AAClB;AAEA,SAAgBC,IAAY;CAC1B,OAAOJ;AACT;AAEA,SAAgBK,IAAa;CAC3B,OAAOL;AACT;AAEA,SAASM,EACP,GAMQ;CACR,IAAMC,IAAKC,EAAK,MAAMC,EAAe;CAsBrC,OApBAR,EACES,GAAS,MAAS;EAChB,IAAMC,IAAWC,EAAK,MAAM,MAAUC,EAAM,OAAON,CAAE,GAC/CO,IAAe;GACnB,GAAGN;GACH;GACA,OAAOA,EAAK;GACZ,aAAaA,EAAK,eAAe;EACnC;EAEA,AAAIG,IACF,OAAO,OAAOA,GAAUG,GAAM,EAC5B,OAAON,EAAK,WAAWG,EAAS,MAClC,CAAC,IAEDC,EAAK,QAAQE,CAAI;CAErB,CAAC,CACH,GAEOP;AACT;AAEA,SAASQ,EAAa,GAAa;CAejC,OANEd,EACES,EATAH,MAAO,KAAA,KASE,MAAS;EAChB,KAAK,IAAMM,KAASD,GAAM,EAAM,SAAS;CAC3C,KATS,MAAS;EAChB,IAAMC,IAAQD,EAAK,MAAM,MAASI,EAAK,OAAOT,CAAE;EAChD,AAAIM,MAAO,EAAM,SAAS;CAC5B,CALO,CAYT,GAEKN;AACT;AAEA,SAASU,EAAY,GAAY;CAC/B,EACEP,GAAS,MAAS;EAChB,IAAMQ,IAAQN,EAAK,WAAW,MAAUC,EAAM,OAAON,CAAE;EACvD,AAAIW,MAAU,MAAIN,EAAK,OAAOM,GAAO,CAAC;CACxC,CAAC,CACH;AACF;AAKA,IAAaL,IAAQ,OAAO,QAHL,GAAqB,MAC1CP,EAAY;CAAE,GAAGE;CAAM;AAAQ,CAAC,GAEgB;CAChD,UAAU,GAAqB,MAC7BF,EAAY;EAAE,GAAGE;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,OAAO,GAAqB,MAC1BF,EAAY;EAAE,GAAGE;EAAM,MAAM;EAAQ;CAAQ,CAAC;CAChD,UAAU,GAAqB,MAC7BF,EAAY;EAAE,GAAGE;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,QAAQ,GAAqB,MAC3BF,EAAY;EAAE,GAAGE;EAAM,MAAM;EAAS;CAAQ,CAAC;CACjD,UAAU,GAAqB,MAC7BF,EAAY;EAAE,GAAGE;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,UAAU,GAAqB,MAC7BF,EAAY;EAAE,GAAGE;EAAM;CAAQ,CAAC;CAClC,SAAS,GAAiC,MAAyB;EACjE,IAAMD,IAAKC,GAAM,MAAMC,EAAe;EACtC,OAAOH,EAAY;GAAE,GAAGE;GAAM;GAAI,KAAKW,EAAIZ,CAAE;EAAE,CAAC;CAClD;CACA,SAASQ;CACT,UAAsB,GAAyB,MAA6B;EAC1E,IAAI,CAACP,GAAM;EAEX,IAAID;EAsDJ,OArDIC,EAAK,YAAY,KAAA,MACnB,IAAKF,EAAY;GACf,GAAGE;GACH,MAAM;GACN,SAASA,EAAK;EAChB,CAAQ,IAGV,QAAQ,QAAQ,OAAOY,KAAY,aAAaA,EAAQ,IAAIA,CAAO,CAAC,CACjE,KAAK,OAAO,MAAW;GACtB,IAAMC,IACJ,OAAOb,EAAK,WAAY,aACpB,MAAMA,EAAK,QAAQc,CAAM,IACzBd,EAAK;GAEX,AAAIa,MAAY,KAAA,IAULd,MAAO,KAAA,KAChBQ,EAAaR,CAAE,IAVfD,EAAY;IACV;IACA,MAAM;IACG;IACT,aACE,OAAOE,EAAK,eAAgB,aACxB,MAAMA,EAAK,YAAYc,CAAM,IAC7Bd,EAAK;GACb,CAAQ;EAIZ,CAAC,CAAC,CACD,MAAM,OAAO,MAAU;GACtB,IAAMa,IACJ,OAAOb,EAAK,SAAU,aAClB,MAAMA,EAAK,MAAMe,CAAK,IACtBf,EAAK;GAEX,AAAIa,MAAY,KAAA,IAULd,MAAO,KAAA,KAChBQ,EAAaR,CAAE,IAVfD,EAAY;IACV;IACA,MAAM;IACG;IACT,aACE,OAAOE,EAAK,eAAgB,aACxB,MAAMA,EAAK,YAAYe,CAAK,IAC5Bf,EAAK;GACb,CAAQ;EAIZ,CAAC,CAAC,CACD,cAAc;GACb,EAAK,UAAU;EACjB,CAAC,GAEID;CACT;CACA;CACA;CACA,QAAQU;AACV,CAAC"}
1
+ {"version":3,"file":"toast.js","names":["toast","createToast","data","id","createUniqueId","jsx","dismissToast","createPromiseToast","promise","removeToast","getHistory","getToasts","useSonner"],"sources":["../../../../src/components/toast/state/toast.ts"],"sourcesContent":["import { createUniqueId, type JSXElement } from \"solid-js\";\nimport type {\n ExternalToast,\n PromiseData,\n PromiseT,\n} from \"../Toast/Toast.types\";\nimport { createPromiseToast } from \"./promise-toast\";\nimport {\n createToast,\n dismissToast,\n getHistory,\n getToasts,\n removeToast,\n useSonner,\n} from \"./store\";\n\nconst toastFunction = (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, message });\n\n/**\n * 公开 API:把 store 原语包装成\"一条 toast 怎么发出去\"的语义化入口。\n * 这里只做参数装配,状态变更全部委托给 `store`,promise 编排委托给\n * `promise-toast`。\n */\nexport const toast = Object.assign(toastFunction, {\n success: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"success\", message }),\n info: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"info\", message }),\n warning: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"warning\", message }),\n error: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"error\", message }),\n loading: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"loading\", message }),\n message: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, message }),\n custom: (jsx: (id: string) => JSXElement, data?: ExternalToast) => {\n const id = data?.id ?? createUniqueId();\n return createToast({ ...data, id, jsx: jsx(id) });\n },\n dismiss: dismissToast,\n promise: <Data = any>(promise: PromiseT<Data>, data?: PromiseData<Data>) =>\n createPromiseToast(promise, data, {\n show: createToast,\n dismiss: dismissToast,\n }) as string,\n getToasts,\n getHistory,\n remove: removeToast,\n});\n\nexport { dismissToast, getHistory, getToasts, removeToast, useSonner };\n"],"mappings":";;;AAwBA,IAAaA,IAAQ,OAAO,QARL,GAAqB,MAC1CC,EAAY;CAAE,GAAGC;CAAM;AAAQ,CAAC,GAOgB;CAChD,UAAU,GAAqB,MAC7BD,EAAY;EAAE,GAAGC;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,OAAO,GAAqB,MAC1BD,EAAY;EAAE,GAAGC;EAAM,MAAM;EAAQ;CAAQ,CAAC;CAChD,UAAU,GAAqB,MAC7BD,EAAY;EAAE,GAAGC;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,QAAQ,GAAqB,MAC3BD,EAAY;EAAE,GAAGC;EAAM,MAAM;EAAS;CAAQ,CAAC;CACjD,UAAU,GAAqB,MAC7BD,EAAY;EAAE,GAAGC;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,UAAU,GAAqB,MAC7BD,EAAY;EAAE,GAAGC;EAAM;CAAQ,CAAC;CAClC,SAAS,GAAiC,MAAyB;EACjE,IAAMC,IAAKD,GAAM,MAAME,EAAe;EACtC,OAAOH,EAAY;GAAE,GAAGC;GAAM;GAAI,KAAKG,EAAIF,CAAE;EAAE,CAAC;CAClD;CACA,SAASG;CACT,UAAsB,GAAyB,MAC7CC,EAAmBC,GAASN,GAAM;EAChC,MAAMD;EACN,SAASK;CACX,CAAC;CACH;CACA;CACA,QAAQG;AACV,CAAC"}
@@ -21,7 +21,8 @@ function d(n) {
21
21
  return (() => {
22
22
  var n = u();
23
23
  return n.$$click = (e) => {
24
- d.onClick?.(e), e.defaultPrevented || g(!h());
24
+ let t = d.onClick;
25
+ Array.isArray(t) ? t[0](t[1], e) : t?.(e), e.defaultPrevented || g(!h());
25
26
  }, i(n, r({
26
27
  get type() {
27
28
  return d.type;
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.js","names":["createMemo","createSignal","mergeProps","splitProps","JSX","clsx","toggleVariants","ToggleProps","Toggle","props","Element","merged","type","const","local","rest","internalPressed","setInternalPressed","defaultPressed","pressed","undefined","setPressed","next","onPressedChange","_el$","_tmpl$","$$click","e","onClick","defaultPrevented","_$spread","_$mergeProps","data-state","aria-pressed","class","variant","size","_$delegateEvents","mergeProps","_$mergeProps","_$delegateEvents","mergeProps$1","_tmpl$","Toggle","merged","props","local","rest","splitProps","internalPressed","setInternalPressed","createSignal","pressed","createMemo","setPressed","next","_el$","spread","mergeProps","\"class\"","clsx","toggleVariants","delegateEvents"],"sources":["../../../../src/components/toggle/Toggle/Toggle.tsx"],"sourcesContent":["import {\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n type JSX,\n} from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { toggleVariants } from \"./Toggle.styles\";\nimport type { ToggleProps } from \"./Toggle.types\";\n\nexport function Toggle(props: ToggleProps): JSX.Element {\n const merged = mergeProps({ type: \"button\" as const }, props);\n\n const [local, rest] = splitProps(merged, [\n \"pressed\",\n \"defaultPressed\",\n \"onPressedChange\",\n \"variant\",\n \"size\",\n \"class\",\n \"value\",\n \"type\",\n \"onClick\",\n ]);\n\n const [internalPressed, setInternalPressed] = createSignal(\n local.defaultPressed ?? false,\n );\n const pressed = createMemo(() =>\n local.pressed !== undefined ? local.pressed : internalPressed(),\n );\n\n const setPressed = (next: boolean) => {\n if (local.pressed === undefined) setInternalPressed(next);\n local.onPressedChange?.(next);\n };\n\n return (\n <button\n type={local.type as \"button\"}\n data-slot=\"toggle\"\n data-state={pressed() ? \"on\" : \"off\"}\n aria-pressed={pressed()}\n class={clsx(\n toggleVariants({\n variant: local.variant,\n size: local.size,\n class: local.class,\n }),\n )}\n onClick={(e) => {\n (local.onClick as any)?.(e);\n if (!e.defaultPrevented) setPressed(!pressed());\n }}\n {...rest}\n />\n );\n}\n"],"mappings":";;;;;;AAWA,SAAgBQ,EAAOC,GAAiC;CACtD,IAAME,IAAST,EAAW,EAAEU,MAAM,SAAkB,GAAGH,CAAK,GAEtD,CAACK,GAAOC,KAAQZ,EAAWQ,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAS,CACV,GAEK,CAACK,GAAiBC,KAAsBhB,EAC5Ca,EAAMI,kBAAkB,EAC1B,GACMC,IAAUnB,QACdc,EAAMK,YAAYC,KAAAA,IAA4BJ,EAAgB,IAAhCF,EAAMK,OACtC,GAEME,KAAcC,MAAkB;EAEpCR,AADIA,EAAMK,YAAYC,KAAAA,KAAWH,EAAmBK,CAAI,GACxDR,EAAMS,kBAAkBD,CAAI;CAC9B;CAEA,cAAA;EAAA,IAAAE,IAAAC,EAAA;EAiBY,OAjBZD,EAAAE,WAacC,MAAM;GAEd,AADAmB,EAAOlB,UAAkBD,CAAC,GACrBA,EAAEE,oBAAkBR,EAAW,CAACF,EAAQ,CAAC;EAChD,GAACW,EAAAN,GAAAO,EAAA;GAAA,IAdDnB,OAAI;IAAA,OAAEE,EAAMF;GAAgB;GAAA,IAAA,eAAA;IAAA,OAEhBO,EAAQ,IAAI,OAAO;GAAK;GAAA,IAAA,iBAAA;IAAA,OACtBA,EAAQ;GAAC;GAAA,IAAAwC,QAAA;IAAA,OAChBtD,EACLC,EAAe;KACb6B,SAASrB,EAAMqB;KACfC,MAAMtB,EAAMsB;KACZF,OAAOpB,EAAMoB;IACf,CAAC,CACH;GAAC;EAAA,GAKGnB,CAAI,GAAA,IAAA,EAAA,GAAAS;CAAA,EAAA,CAAA;AAGd;AAACa,EAAA,CAAA,OAAA,CAAA"}
1
+ {"version":3,"file":"Toggle.js","names":["createMemo","createSignal","mergeProps","splitProps","JSX","clsx","toggleVariants","ToggleProps","Toggle","props","Element","merged","type","const","local","rest","internalPressed","setInternalPressed","defaultPressed","pressed","undefined","setPressed","next","onPressedChange","_el$","_tmpl$","$$click","e","handler","onClick","MouseEvent","data","Array","isArray","defaultPrevented","_$spread","_$mergeProps","data-state","aria-pressed","class","variant","size","_$delegateEvents","mergeProps","_$mergeProps","_$delegateEvents","mergeProps$1","_tmpl$","Toggle","merged","props","local","rest","splitProps","internalPressed","setInternalPressed","createSignal","pressed","createMemo","setPressed","next","_el$","handler","spread","mergeProps","\"class\"","clsx","toggleVariants","delegateEvents"],"sources":["../../../../src/components/toggle/Toggle/Toggle.tsx"],"sourcesContent":["import {\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n type JSX,\n} from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { toggleVariants } from \"./Toggle.styles\";\nimport type { ToggleProps } from \"./Toggle.types\";\n\nexport function Toggle(props: ToggleProps): JSX.Element {\n const merged = mergeProps({ type: \"button\" as const }, props);\n\n const [local, rest] = splitProps(merged, [\n \"pressed\",\n \"defaultPressed\",\n \"onPressedChange\",\n \"variant\",\n \"size\",\n \"class\",\n \"value\",\n \"type\",\n \"onClick\",\n ]);\n\n const [internalPressed, setInternalPressed] = createSignal(\n local.defaultPressed ?? false,\n );\n const pressed = createMemo(() =>\n local.pressed !== undefined ? local.pressed : internalPressed(),\n );\n\n const setPressed = (next: boolean) => {\n if (local.pressed === undefined) setInternalPressed(next);\n local.onPressedChange?.(next);\n };\n\n return (\n <button\n type={local.type as \"button\"}\n data-slot=\"toggle\"\n data-state={pressed() ? \"on\" : \"off\"}\n aria-pressed={pressed()}\n class={clsx(\n toggleVariants({\n variant: local.variant,\n size: local.size,\n class: local.class,\n }),\n )}\n onClick={(e) => {\n // onClick 的类型是 JSX.EventHandlerUnion,含 Solid 的 [handler, data] 形式;\n // 直接 `.?(e)` 会让数组形式的 handler 静默失效(不抛错、状态也不翻转)\n const handler = local.onClick as\n | ((e: MouseEvent) => void)\n | [(data: unknown, e: MouseEvent) => void, unknown]\n | undefined;\n if (Array.isArray(handler)) handler[0](handler[1], e);\n else handler?.(e);\n if (!e.defaultPrevented) setPressed(!pressed());\n }}\n {...rest}\n />\n );\n}\n"],"mappings":";;;;;;AAWA,SAAgBQ,EAAOC,GAAiC;CACtD,IAAME,IAAST,EAAW,EAAEU,MAAM,SAAkB,GAAGH,CAAK,GAEtD,CAACK,GAAOC,KAAQZ,EAAWQ,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAS,CACV,GAEK,CAACK,GAAiBC,KAAsBhB,EAC5Ca,EAAMI,kBAAkB,EAC1B,GACMC,IAAUnB,QACdc,EAAMK,YAAYC,KAAAA,IAA4BJ,EAAgB,IAAhCF,EAAMK,OACtC,GAEME,KAAcC,MAAkB;EAEpCR,AADIA,EAAMK,YAAYC,KAAAA,KAAWH,EAAmBK,CAAI,GACxDR,EAAMS,kBAAkBD,CAAI;CAC9B;CAEA,cAAA;EAAA,IAAAE,IAAAC,EAAA;EAwBY,OAxBZD,EAAAE,WAacC,MAAM;GAGd,IAAMC,IAAUd,EAAMe;GAMtB,AAFIG,MAAMC,QAAQL,CAAO,IAAGA,EAAQ,EAAE,CAACA,EAAQ,IAAID,CAAC,IAC/CC,IAAUD,CAAC,GACXA,EAAEO,oBAAkBb,EAAW,CAACF,EAAQ,CAAC;EAChD,GAACgB,EAAAX,GAAAY,EAAA;GAAA,IArBDxB,OAAI;IAAA,OAAEE,EAAMF;GAAgB;GAAA,IAAA,eAAA;IAAA,OAEhBO,EAAQ,IAAI,OAAO;GAAK;GAAA,IAAA,iBAAA;IAAA,OACtBA,EAAQ;GAAC;GAAA,IAAA8C,QAAA;IAAA,OAChB5D,EACLC,EAAe;KACbkC,SAAS1B,EAAM0B;KACfC,MAAM3B,EAAM2B;KACZF,OAAOzB,EAAMyB;IACf,CAAC,CACH;GAAC;EAAA,GAYGxB,CAAI,GAAA,IAAA,EAAA,GAAAS;CAAA,EAAA,CAAA;AAGd;AAACkB,EAAA,CAAA,OAAA,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { clsx as e } from "../../../utils/clsx.js";
2
- import { callEventHandler as t } from "../call-event-handler.js";
2
+ import { callEventHandler as t } from "../../../utils/call-event-handler.js";
3
3
  import { ToggleGroupContext as n, createToggleGroupState as r } from "./ToggleGroup.context.js";
4
4
  import { toggleGroupVariants as i } from "./ToggleGroup.styles.js";
5
5
  import { useToggleGroupKeyboard as a } from "./useToggleGroupKeyboard.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleGroup.js","names":["splitProps","JSX","clsx","callEventHandler","createToggleGroupState","ToggleGroupContext","toggleGroupVariants","ToggleGroupProps","ToggleGroupValue","useToggleGroupKeyboard","ToggleGroup","props","TValue","Element","local","rest","ctx","handleKeyDown","isVertical","orientation","_el$","_tmpl$","$$keydown","e","onKeyDown","defaultPrevented","_$spread","_$mergeProps","data-variant","variant","data-size","size","data-spacing","spacing","data-orientation","data-vertical","data-horizontal","data-multiple","multiple","data-disabled","disabled","aria-disabled","undefined","dir","style","CSSProperties","class","classList","_$insert","_$createComponent","Provider","value","children","_$delegateEvents","_$mergeProps","_$createComponent","_$delegateEvents","_tmpl$","ToggleGroup","local","rest","splitProps","props","ctx","createToggleGroupState","useToggleGroupKeyboard","isVertical","_el$","callEventHandler","handleKeyDown","spread","mergeProps","\"class\"","clsx","toggleGroupVariants","insert","createComponent","ToggleGroupContext","delegateEvents"],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import { splitProps, type JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { callEventHandler } from \"../call-event-handler\";\nimport {\n createToggleGroupState,\n ToggleGroupContext,\n} from \"./ToggleGroup.context\";\nimport { toggleGroupVariants } from \"./ToggleGroup.styles\";\nimport type { ToggleGroupProps, ToggleGroupValue } from \"./ToggleGroup.types\";\nimport { useToggleGroupKeyboard } from \"./useToggleGroupKeyboard\";\n\n/**\n * ToggleGroup 根组件:渲染 `<div role=\"group\">`,输出样式与语义钩子\n * (`data-orientation` / `data-vertical` / `data-horizontal` / `data-multiple`\n * / `data-disabled` / `data-spacing` / `data-variant` / `data-size`),\n * 并挂载 roving focus 键盘导航。\n *\n * 单选模式(默认)的 value 是标量,多选模式(`multiple`)才是数组:\n *\n * @example\n * ```tsx\n * // 单选\n * <ToggleGroup defaultValue=\"bold\" onValueChange={(v) => ...}>\n * <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n * </ToggleGroup>\n *\n * // 多选\n * <ToggleGroup multiple value={[\"bold\"]} onValueChange={(v) => ...}>\n * <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n * </ToggleGroup>\n * ```\n */\nexport function ToggleGroup<TValue extends ToggleGroupValue = ToggleGroupValue>(\n props: ToggleGroupProps<TValue>,\n): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"defaultValue\",\n \"onValueChange\",\n \"multiple\",\n \"disabled\",\n \"orientation\",\n \"loopFocus\",\n \"spacing\",\n \"variant\",\n \"size\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n \"onKeyDown\",\n \"children\",\n ]);\n\n // 默认值与单选/多选的差异统一由状态层处理,渲染用 ctx 里的已解析值\n const ctx = createToggleGroupState<TValue>(local);\n const { handleKeyDown } = useToggleGroupKeyboard(ctx);\n const isVertical = () => ctx.orientation() === \"vertical\";\n\n return (\n <div\n role=\"group\"\n data-slot=\"toggle-group\"\n data-variant={ctx.variant()}\n data-size={ctx.size()}\n data-spacing={ctx.spacing()}\n data-orientation={ctx.orientation()}\n // 拼接态样式依赖 data-vertical / data-horizontal(与 tabs 根保持一致)\n data-vertical={isVertical() ? \"\" : null}\n data-horizontal={isVertical() ? null : \"\"}\n data-multiple={ctx.multiple() ? \"\" : null}\n data-disabled={ctx.disabled() ? \"\" : null}\n aria-disabled={ctx.disabled() ? \"true\" : undefined}\n dir={local.dir}\n // --gap 作为 spacing 的样式入口,用户 style 可覆盖\n style={{ \"--gap\": ctx.spacing(), ...local.style } as JSX.CSSProperties}\n class={clsx(toggleGroupVariants(), local.class)}\n classList={local.classList}\n onKeyDown={(e) => {\n callEventHandler(local.onKeyDown, e);\n if (!e.defaultPrevented) handleKeyDown(e);\n }}\n {...rest}\n >\n <ToggleGroupContext.Provider value={ctx}>\n {local.children}\n </ToggleGroupContext.Provider>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAgCA,SAAgBU,EACdC,GACa;CACb,IAAM,CAACG,GAAOC,KAAQf,EAAWW,GAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAGKK,IAAMZ,EAA+BU,CAAK,GAC1C,EAAEG,qBAAkBR,EAAuBO,CAAG,GAC9CE,UAAmBF,EAAIG,YAAY,MAAM;CAE/C,cAAA;EAAA,IAAAC,IAAAC,EAAA;EA0BqB,OA1BrBD,EAAAE,aAmBgBC,MAAM;GAEhB,AADApB,EAAiBW,EAAMU,WAAWD,CAAC,GAC9BA,EAAEE,oBAAkBR,EAAcM,CAAC;EAC1C,GAACG,EAAAN,GAAAO,EAAA;GAAA,IAAA,iBAAA;IAAA,OAlBaX,EAAIa,QAAQ;GAAC;GAAA,IAAA,cAAA;IAAA,OAChBb,EAAIe,KAAK;GAAC;GAAA,IAAA,iBAAA;IAAA,OACPf,EAAIiB,QAAQ;GAAC;GAAA,IAAA,qBAAA;IAAA,OACTjB,EAAIG,YAAY;GAAC;GAAA,IAAA,kBAAA;IAAA,OAEpBD,EAAW,IAAI,KAAK;GAAI;GAAA,IAAA,oBAAA;IAAA,OACtBA,EAAW,IAAI,OAAO;GAAE;GAAA,IAAA,kBAAA;IAAA,OAC1BF,EAAIsB,SAAS,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OAC1BtB,EAAIwB,SAAS,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OAC1BxB,EAAIwB,SAAS,IAAI,SAASE,KAAAA;GAAS;GAAA,IAClDC,MAAG;IAAA,OAAE7B,EAAM6B;GAAG;GAAA,IAEdC,QAAK;IAAA,OAAE;KAAE,SAAS5B,EAAIiB,QAAQ;KAAG,GAAGnB,EAAM8B;IAAM;GAAsB;GAAA,IAAA4B,QAAA;IAAA,OAC/DtE,EAAKI,EAAoB,GAAGQ,EAAMgC,KAAK;GAAC;GAAA,IAC/CC,YAAS;IAAA,OAAEjC,EAAMiC;GAAS;EAAA,GAKtBhC,CAAI,GAAA,IAAA,EAAA,GAAAiC,EAAA5B,GAAA6B,EAEP5C,EAAmB6C,UAAQ;GAACC,OAAOnC;GAAG,IAAAoC,WAAA;IAAA,OACpCtC,EAAMsC;GAAQ;EAAA,CAAA,CAAA,GAAAhC;CAAA,EAAA,CAAA;AAIvB;AAACiC,EAAA,CAAA,SAAA,CAAA"}
1
+ {"version":3,"file":"ToggleGroup.js","names":["splitProps","JSX","clsx","callEventHandler","createToggleGroupState","ToggleGroupContext","toggleGroupVariants","ToggleGroupProps","ToggleGroupValue","useToggleGroupKeyboard","ToggleGroup","props","TValue","Element","local","rest","ctx","handleKeyDown","isVertical","orientation","_el$","_tmpl$","$$keydown","e","onKeyDown","defaultPrevented","_$spread","_$mergeProps","data-variant","variant","data-size","size","data-spacing","spacing","data-orientation","data-vertical","data-horizontal","data-multiple","multiple","data-disabled","disabled","aria-disabled","undefined","dir","style","CSSProperties","class","classList","_$insert","_$createComponent","Provider","value","children","_$delegateEvents","_$mergeProps","_$createComponent","_$delegateEvents","_tmpl$","ToggleGroup","local","rest","splitProps","props","ctx","createToggleGroupState","useToggleGroupKeyboard","isVertical","_el$","callEventHandler","handleKeyDown","spread","mergeProps","\"class\"","clsx","toggleGroupVariants","insert","createComponent","ToggleGroupContext","delegateEvents"],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import { splitProps, type JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { callEventHandler } from \"~/utils\";\nimport {\n createToggleGroupState,\n ToggleGroupContext,\n} from \"./ToggleGroup.context\";\nimport { toggleGroupVariants } from \"./ToggleGroup.styles\";\nimport type { ToggleGroupProps, ToggleGroupValue } from \"./ToggleGroup.types\";\nimport { useToggleGroupKeyboard } from \"./useToggleGroupKeyboard\";\n\n/**\n * ToggleGroup 根组件:渲染 `<div role=\"group\">`,输出样式与语义钩子\n * (`data-orientation` / `data-vertical` / `data-horizontal` / `data-multiple`\n * / `data-disabled` / `data-spacing` / `data-variant` / `data-size`),\n * 并挂载 roving focus 键盘导航。\n *\n * 单选模式(默认)的 value 是标量,多选模式(`multiple`)才是数组:\n *\n * @example\n * ```tsx\n * // 单选\n * <ToggleGroup defaultValue=\"bold\" onValueChange={(v) => ...}>\n * <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n * </ToggleGroup>\n *\n * // 多选\n * <ToggleGroup multiple value={[\"bold\"]} onValueChange={(v) => ...}>\n * <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n * </ToggleGroup>\n * ```\n */\nexport function ToggleGroup<TValue extends ToggleGroupValue = ToggleGroupValue>(\n props: ToggleGroupProps<TValue>,\n): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"defaultValue\",\n \"onValueChange\",\n \"multiple\",\n \"disabled\",\n \"orientation\",\n \"loopFocus\",\n \"spacing\",\n \"variant\",\n \"size\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n \"onKeyDown\",\n \"children\",\n ]);\n\n // 默认值与单选/多选的差异统一由状态层处理,渲染用 ctx 里的已解析值\n const ctx = createToggleGroupState<TValue>(local);\n const { handleKeyDown } = useToggleGroupKeyboard(ctx);\n const isVertical = () => ctx.orientation() === \"vertical\";\n\n return (\n <div\n role=\"group\"\n data-slot=\"toggle-group\"\n data-variant={ctx.variant()}\n data-size={ctx.size()}\n data-spacing={ctx.spacing()}\n data-orientation={ctx.orientation()}\n // 拼接态样式依赖 data-vertical / data-horizontal(与 tabs 根保持一致)\n data-vertical={isVertical() ? \"\" : null}\n data-horizontal={isVertical() ? null : \"\"}\n data-multiple={ctx.multiple() ? \"\" : null}\n data-disabled={ctx.disabled() ? \"\" : null}\n aria-disabled={ctx.disabled() ? \"true\" : undefined}\n dir={local.dir}\n // --gap 作为 spacing 的样式入口,用户 style 可覆盖\n style={{ \"--gap\": ctx.spacing(), ...local.style } as JSX.CSSProperties}\n class={clsx(toggleGroupVariants(), local.class)}\n classList={local.classList}\n onKeyDown={(e) => {\n callEventHandler(local.onKeyDown, e);\n if (!e.defaultPrevented) handleKeyDown(e);\n }}\n {...rest}\n >\n <ToggleGroupContext.Provider value={ctx}>\n {local.children}\n </ToggleGroupContext.Provider>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAgCA,SAAgBU,EACdC,GACa;CACb,IAAM,CAACG,GAAOC,KAAQf,EAAWW,GAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAGKK,IAAMZ,EAA+BU,CAAK,GAC1C,EAAEG,qBAAkBR,EAAuBO,CAAG,GAC9CE,UAAmBF,EAAIG,YAAY,MAAM;CAE/C,cAAA;EAAA,IAAAC,IAAAC,EAAA;EA0BqB,OA1BrBD,EAAAE,aAmBgBC,MAAM;GAEhB,AADApB,EAAiBW,EAAMU,WAAWD,CAAC,GAC9BA,EAAEE,oBAAkBR,EAAcM,CAAC;EAC1C,GAACG,EAAAN,GAAAO,EAAA;GAAA,IAAA,iBAAA;IAAA,OAlBaX,EAAIa,QAAQ;GAAC;GAAA,IAAA,cAAA;IAAA,OAChBb,EAAIe,KAAK;GAAC;GAAA,IAAA,iBAAA;IAAA,OACPf,EAAIiB,QAAQ;GAAC;GAAA,IAAA,qBAAA;IAAA,OACTjB,EAAIG,YAAY;GAAC;GAAA,IAAA,kBAAA;IAAA,OAEpBD,EAAW,IAAI,KAAK;GAAI;GAAA,IAAA,oBAAA;IAAA,OACtBA,EAAW,IAAI,OAAO;GAAE;GAAA,IAAA,kBAAA;IAAA,OAC1BF,EAAIsB,SAAS,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OAC1BtB,EAAIwB,SAAS,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OAC1BxB,EAAIwB,SAAS,IAAI,SAASE,KAAAA;GAAS;GAAA,IAClDC,MAAG;IAAA,OAAE7B,EAAM6B;GAAG;GAAA,IAEdC,QAAK;IAAA,OAAE;KAAE,SAAS5B,EAAIiB,QAAQ;KAAG,GAAGnB,EAAM8B;IAAM;GAAsB;GAAA,IAAA4B,QAAA;IAAA,OAC/DtE,EAAKI,EAAoB,GAAGQ,EAAMgC,KAAK;GAAC;GAAA,IAC/CC,YAAS;IAAA,OAAEjC,EAAMiC;GAAS;EAAA,GAKtBhC,CAAI,GAAA,IAAA,EAAA,GAAAiC,EAAA5B,GAAA6B,EAEP5C,EAAmB6C,UAAQ;GAACC,OAAOnC;GAAG,IAAAoC,WAAA;IAAA,OACpCtC,EAAMsC;GAAQ;EAAA,CAAA,CAAA,GAAAhC;CAAA,EAAA,CAAA;AAIvB;AAACiC,EAAA,CAAA,SAAA,CAAA"}
@@ -2,7 +2,11 @@ import { ToggleGroupChangeEventDetails } from './ToggleGroup.types';
2
2
  /**
3
3
  * 构造 onValueChange 的事件详情(对齐 base-ui 的 `ChangeEventDetails`)。
4
4
  *
5
- * `isCanceled` / `isPropagationAllowed` 用 getter 暴露:回调内部可以即时读到
6
- * `cancel()` / `allowPropagation()` 之后的最新值,而不是创建时的快照。
5
+ * 实现已抽到 `~/utils` 的 `createChangeEventDetails`——`isCanceled` /
6
+ * `isPropagationAllowed` 的 getter 语义是所有组件共用的关键细节,
7
+ * 这里只做「补上 ToggleGroup 的 reason 类型」这一层。
8
+ *
9
+ * ToggleGroup 的 `event` 是必填(调用方 `toggleItem` 一定拿得到事件),
10
+ * 而共享工厂的签名是可选,因此这里显式断言回必填类型,不放宽对外契约。
7
11
  */
8
12
  export declare function createChangeEventDetails(event: Event, trigger?: Element): ToggleGroupChangeEventDetails;
@@ -1,25 +1,9 @@
1
+ import { createChangeEventDetails as e } from "../../../utils/create-change-event-details.js";
1
2
  //#region src/components/toggle-group/ToggleGroup/create-change-event-details.ts
2
- function e(e, t) {
3
- let n = !1, r = !1;
4
- return {
5
- reason: "none",
6
- event: e,
7
- trigger: t,
8
- cancel: () => {
9
- n = !0;
10
- },
11
- allowPropagation: () => {
12
- r = !0;
13
- },
14
- get isCanceled() {
15
- return n;
16
- },
17
- get isPropagationAllowed() {
18
- return r;
19
- }
20
- };
3
+ function t(t, n) {
4
+ return e("none", t, n);
21
5
  }
22
6
  //#endregion
23
- export { e as createChangeEventDetails };
7
+ export { t as createChangeEventDetails };
24
8
 
25
9
  //# sourceMappingURL=create-change-event-details.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-change-event-details.js","names":["createChangeEventDetails","canceled","propagationAllowed"],"sources":["../../../../src/components/toggle-group/ToggleGroup/create-change-event-details.ts"],"sourcesContent":["import type { ToggleGroupChangeEventDetails } from \"./ToggleGroup.types\";\n\n/**\n * 构造 onValueChange 的事件详情(对齐 base-ui 的 `ChangeEventDetails`)。\n *\n * `isCanceled` / `isPropagationAllowed` 用 getter 暴露:回调内部可以即时读到\n * `cancel()` / `allowPropagation()` 之后的最新值,而不是创建时的快照。\n */\nexport function createChangeEventDetails(\n event: Event,\n trigger?: Element,\n): ToggleGroupChangeEventDetails {\n let canceled = false;\n let propagationAllowed = false;\n\n return {\n reason: \"none\",\n event,\n trigger,\n cancel: () => {\n canceled = true;\n },\n allowPropagation: () => {\n propagationAllowed = true;\n },\n get isCanceled() {\n return canceled;\n },\n get isPropagationAllowed() {\n return propagationAllowed;\n },\n };\n}\n"],"mappings":";AAQA,SAAgBA,EACd,GACA,GAC+B;CAC/B,IAAIC,IAAW,IACXC,IAAqB;CAEzB,OAAO;EACL,QAAQ;EACR;EACA;EACA,cAAc;GACZ,IAAW;EACb;EACA,wBAAwB;GACtB,IAAqB;EACvB;EACA,IAAI,aAAa;GACf,OAAOD;EACT;EACA,IAAI,uBAAuB;GACzB,OAAOC;EACT;CACF;AACF"}
1
+ {"version":3,"file":"create-change-event-details.js","names":["createSharedDetails","createChangeEventDetails$1","createChangeEventDetails","event","trigger"],"sources":["../../../../src/components/toggle-group/ToggleGroup/create-change-event-details.ts"],"sourcesContent":["import { createChangeEventDetails as createSharedDetails } from \"~/utils\";\nimport type { ToggleGroupChangeEventDetails } from \"./ToggleGroup.types\";\n\n/**\n * 构造 onValueChange 的事件详情(对齐 base-ui 的 `ChangeEventDetails`)。\n *\n * 实现已抽到 `~/utils` 的 `createChangeEventDetails`——`isCanceled` /\n * `isPropagationAllowed` 的 getter 语义是所有组件共用的关键细节,\n * 这里只做「补上 ToggleGroup 的 reason 类型」这一层。\n *\n * ToggleGroup 的 `event` 是必填(调用方 `toggleItem` 一定拿得到事件),\n * 而共享工厂的签名是可选,因此这里显式断言回必填类型,不放宽对外契约。\n */\nexport function createChangeEventDetails(\n event: Event,\n trigger?: Element,\n): ToggleGroupChangeEventDetails {\n // ToggleGroup 的 reason 目前只有 \"none\"\n return createSharedDetails(\n \"none\",\n event,\n trigger,\n ) as ToggleGroupChangeEventDetails;\n}\n"],"mappings":";;AAaA,SAAgBE,EACd,GACA,GAC+B;CAE/B,OAAOF,EACL,QACAG,GACAC,CACF;AACF"}
@@ -1,17 +1,14 @@
1
1
  import { ToggleGroupContextValue, ToggleGroupValue } from './ToggleGroup.types';
2
2
  /**
3
- * ToggleGroup 的 roving focus 键盘导航(纯逻辑,可独立单测)。
3
+ * ToggleGroup 的 roving focus 键盘导航。
4
4
  *
5
- * 方向映射:
6
- * - horizontal + ltr: ArrowRight → next, ArrowLeft → prev
7
- * - horizontal + rtl: 左右反转
8
- * - vertical: ArrowDown → next, ArrowUp → prev
9
- * - Home → 第一个,End → 最后一个
10
- * - loopFocus=true 环绕,false 边界停止;跳过 disabled 的 item
5
+ * 通用算法已抽到 `~/utils/roving-navigation`(与 Tabs 共用同一份),
6
+ * 这里只接上 context,并补两处 ToggleGroup 特有语义:
11
7
  *
12
- * 只有焦点已经在某个 item 上时才接管按键,避免影响外部其它元素;
13
- * 移动焦点后由 item 的 onFocus 更新高亮。
8
+ * - 整组 `disabled` 时不接管任何按键;
9
+ * - 判断书写方向时用 `event.currentTarget` 的实际 computed direction,
10
+ * 这样祖先节点上的 `dir="rtl"` 也能被正确识别(对齐 base-ui)。
14
11
  */
15
12
  export declare function useToggleGroupKeyboard<TValue extends ToggleGroupValue = ToggleGroupValue>(ctx: ToggleGroupContextValue<TValue>): {
16
- handleKeyDown: (e: KeyboardEvent) => void;
13
+ handleKeyDown: (event: KeyboardEvent) => void;
17
14
  };