@neut/ui 0.0.16 → 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 (1031) 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/Bubble/Bubble.d.ts +3 -0
  67. package/dist/components/bubble/Bubble/Bubble.js +39 -0
  68. package/dist/components/bubble/Bubble/Bubble.js.map +1 -0
  69. package/dist/components/bubble/Bubble/Bubble.styles.d.ts +7 -0
  70. package/dist/components/bubble/Bubble/Bubble.styles.js +18 -0
  71. package/dist/components/bubble/Bubble/Bubble.styles.js.map +1 -0
  72. package/dist/components/bubble/Bubble/Bubble.types.d.ts +8 -0
  73. package/dist/components/bubble/Bubble/index.d.ts +2 -0
  74. package/dist/components/bubble/BubbleContent/BubbleContent.d.ts +7 -0
  75. package/dist/components/bubble/BubbleContent/BubbleContent.js +28 -0
  76. package/dist/components/bubble/BubbleContent/BubbleContent.js.map +1 -0
  77. package/dist/components/bubble/BubbleContent/BubbleContent.styles.d.ts +1 -0
  78. package/dist/components/bubble/BubbleContent/BubbleContent.styles.js +6 -0
  79. package/dist/components/bubble/BubbleContent/BubbleContent.styles.js.map +1 -0
  80. package/dist/components/bubble/BubbleContent/BubbleContent.types.d.ts +3 -0
  81. package/dist/components/bubble/BubbleContent/index.d.ts +2 -0
  82. package/dist/components/bubble/BubbleGroup/BubbleGroup.d.ts +3 -0
  83. package/dist/components/bubble/BubbleGroup/BubbleGroup.js +24 -0
  84. package/dist/components/bubble/BubbleGroup/BubbleGroup.js.map +1 -0
  85. package/dist/components/bubble/BubbleGroup/BubbleGroup.types.d.ts +2 -0
  86. package/dist/components/bubble/BubbleGroup/index.d.ts +2 -0
  87. package/dist/components/bubble/BubbleReactions/BubbleReactions.d.ts +6 -0
  88. package/dist/components/bubble/BubbleReactions/BubbleReactions.js +42 -0
  89. package/dist/components/bubble/BubbleReactions/BubbleReactions.js.map +1 -0
  90. package/dist/components/bubble/BubbleReactions/BubbleReactions.styles.d.ts +4 -0
  91. package/dist/components/bubble/BubbleReactions/BubbleReactions.styles.js +22 -0
  92. package/dist/components/bubble/BubbleReactions/BubbleReactions.styles.js.map +1 -0
  93. package/dist/components/bubble/BubbleReactions/BubbleReactions.types.d.ts +4 -0
  94. package/dist/components/bubble/BubbleReactions/index.d.ts +2 -0
  95. package/dist/components/bubble/index.d.ts +8 -0
  96. package/dist/components/bubble/index.js +5 -0
  97. package/dist/components/button/Button.js +3 -0
  98. package/dist/components/button/Button.js.map +1 -1
  99. package/dist/components/button-group/ButtonGroup/ButtonGroup.js +3 -0
  100. package/dist/components/button-group/ButtonGroup/ButtonGroup.js.map +1 -1
  101. package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js +16 -7
  102. package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js.map +1 -1
  103. package/dist/components/calendar/Calendar/Calendar.d.ts +2 -3
  104. package/dist/components/calendar/Calendar/Calendar.js +89 -264
  105. package/dist/components/calendar/Calendar/Calendar.js.map +1 -1
  106. package/dist/components/calendar/Calendar/Calendar.options.d.ts +43 -0
  107. package/dist/components/calendar/Calendar/Calendar.options.js +38 -0
  108. package/dist/components/calendar/Calendar/Calendar.options.js.map +1 -0
  109. package/dist/components/calendar/Calendar/Calendar.selection.d.ts +16 -0
  110. package/dist/components/calendar/Calendar/Calendar.selection.js +50 -0
  111. package/dist/components/calendar/Calendar/Calendar.selection.js.map +1 -0
  112. package/dist/components/calendar/Calendar/Calendar.styles.d.ts +8 -0
  113. package/dist/components/calendar/Calendar/Calendar.styles.js +32 -0
  114. package/dist/components/calendar/Calendar/Calendar.styles.js.map +1 -0
  115. package/dist/components/calendar/Calendar/Calendar.utils.d.ts +3 -1
  116. package/dist/components/calendar/Calendar/Calendar.utils.js +4 -1
  117. package/dist/components/calendar/Calendar/Calendar.utils.js.map +1 -1
  118. package/dist/components/calendar/Calendar/CalendarDay.d.ts +28 -0
  119. package/dist/components/calendar/Calendar/CalendarDay.js +41 -0
  120. package/dist/components/calendar/Calendar/CalendarDay.js.map +1 -0
  121. package/dist/components/calendar/Calendar/CalendarMonth.d.ts +35 -0
  122. package/dist/components/calendar/Calendar/CalendarMonth.js +127 -0
  123. package/dist/components/calendar/Calendar/CalendarMonth.js.map +1 -0
  124. package/dist/components/calendar/Calendar/CalendarMonthCaption.d.ts +22 -0
  125. package/dist/components/calendar/Calendar/CalendarMonthCaption.js +103 -0
  126. package/dist/components/calendar/Calendar/CalendarMonthCaption.js.map +1 -0
  127. package/dist/components/calendar/index.js +3 -2
  128. package/dist/components/card/Card/Card.js +3 -0
  129. package/dist/components/card/Card/Card.js.map +1 -1
  130. package/dist/components/card/CardAction/CardAction.js +8 -3
  131. package/dist/components/card/CardAction/CardAction.js.map +1 -1
  132. package/dist/components/card/CardContent/CardContent.js +8 -3
  133. package/dist/components/card/CardContent/CardContent.js.map +1 -1
  134. package/dist/components/card/CardDescription/CardDescription.js +8 -3
  135. package/dist/components/card/CardDescription/CardDescription.js.map +1 -1
  136. package/dist/components/card/CardFooter/CardFooter.js +8 -3
  137. package/dist/components/card/CardFooter/CardFooter.js.map +1 -1
  138. package/dist/components/card/CardHeader/CardHeader.js +8 -3
  139. package/dist/components/card/CardHeader/CardHeader.js.map +1 -1
  140. package/dist/components/card/CardTitle/CardTitle.js +8 -3
  141. package/dist/components/card/CardTitle/CardTitle.js.map +1 -1
  142. package/dist/components/carousel/Carousel/Carousel.context.js +1 -1
  143. package/dist/components/carousel/Carousel/Carousel.context.js.map +1 -1
  144. package/dist/components/carousel/Carousel/Carousel.js +19 -12
  145. package/dist/components/carousel/Carousel/Carousel.js.map +1 -1
  146. package/dist/components/carousel/Carousel/useKeyboardNavigation.d.ts +11 -1
  147. package/dist/components/carousel/Carousel/useKeyboardNavigation.js +5 -4
  148. package/dist/components/carousel/Carousel/useKeyboardNavigation.js.map +1 -1
  149. package/dist/components/carousel/CarouselContent/CarouselContent.js +8 -3
  150. package/dist/components/carousel/CarouselContent/CarouselContent.js.map +1 -1
  151. package/dist/components/carousel/CarouselNext/CarouselNext.js +29 -16
  152. package/dist/components/carousel/CarouselNext/CarouselNext.js.map +1 -1
  153. package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js +29 -16
  154. package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js.map +1 -1
  155. package/dist/components/checkbox/Checkbox/Checkbox.js +32 -25
  156. package/dist/components/checkbox/Checkbox/Checkbox.js.map +1 -1
  157. package/dist/components/collapsible/Collapsible/Collapsible.context.js +1 -1
  158. package/dist/components/collapsible/Collapsible/Collapsible.context.js.map +1 -1
  159. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js +13 -12
  160. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js.map +1 -1
  161. package/dist/components/combobox/Combobox/Combobox.js +52 -52
  162. package/dist/components/combobox/Combobox/Combobox.js.map +1 -1
  163. package/dist/components/combobox/Combobox/Combobox.types.d.ts +15 -6
  164. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js +7 -3
  165. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js.map +1 -1
  166. package/dist/components/combobox/ComboboxClear/ComboboxClear.js +1 -1
  167. package/dist/components/combobox/ComboboxClear/ComboboxClear.js.map +1 -1
  168. package/dist/components/combobox/ComboboxInput/ComboboxInput.js +26 -10
  169. package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -1
  170. package/dist/components/combobox/ComboboxItem/ComboboxItem.js +6 -5
  171. package/dist/components/combobox/ComboboxItem/ComboboxItem.js.map +1 -1
  172. package/dist/components/combobox/ComboboxList/ComboboxList.js +17 -11
  173. package/dist/components/combobox/ComboboxList/ComboboxList.js.map +1 -1
  174. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js +8 -1
  175. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js.map +1 -1
  176. package/dist/components/context-menu/ContextMenu/ContextMenu.js +10 -8
  177. package/dist/components/context-menu/ContextMenu/ContextMenu.js.map +1 -1
  178. package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.d.ts +33 -0
  179. package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.js +41 -0
  180. package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.js.map +1 -0
  181. package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.d.ts +25 -0
  182. package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.js +20 -0
  183. package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.js.map +1 -0
  184. package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.d.ts +31 -0
  185. package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.js +39 -0
  186. package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.js.map +1 -0
  187. package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js +70 -136
  188. package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js.map +1 -1
  189. package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js +2 -1
  190. package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js.map +1 -1
  191. package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js +20 -10
  192. package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js.map +1 -1
  193. package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.d.ts +24 -0
  194. package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.js +26 -0
  195. package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.js.map +1 -0
  196. package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.d.ts +35 -0
  197. package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.js +17 -0
  198. package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.js.map +1 -0
  199. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.d.ts +9 -11
  200. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js +36 -33
  201. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js.map +1 -1
  202. package/dist/components/context-menu/context-menu.keyboard.d.ts +29 -0
  203. package/dist/components/context-menu/context-menu.keyboard.js +52 -0
  204. package/dist/components/context-menu/context-menu.keyboard.js.map +1 -0
  205. package/dist/components/context-menu/context-menu.typeahead.d.ts +27 -0
  206. package/dist/components/context-menu/context-menu.typeahead.js +19 -0
  207. package/dist/components/context-menu/context-menu.typeahead.js.map +1 -0
  208. package/dist/components/context-menu/context-menu.utils.d.ts +5 -2
  209. package/dist/components/context-menu/context-menu.utils.js +17 -39
  210. package/dist/components/context-menu/context-menu.utils.js.map +1 -1
  211. package/dist/components/date-picker/DatePicker/DatePicker.js +6 -0
  212. package/dist/components/date-picker/DatePicker/DatePicker.js.map +1 -1
  213. package/dist/components/dialog/Dialog/Dialog.context.js +1 -1
  214. package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -1
  215. package/dist/components/dialog/Dialog/Dialog.js +24 -15
  216. package/dist/components/dialog/Dialog/Dialog.js.map +1 -1
  217. package/dist/components/dialog/Dialog/Dialog.types.d.ts +5 -0
  218. package/dist/components/dialog/DialogClose/DialogClose.js +20 -19
  219. package/dist/components/dialog/DialogClose/DialogClose.js.map +1 -1
  220. package/dist/components/dialog/DialogContent/DialogContent.context.js +1 -1
  221. package/dist/components/dialog/DialogContent/DialogContent.context.js.map +1 -1
  222. package/dist/components/dialog/DialogDescription/DialogDescription.js +8 -3
  223. package/dist/components/dialog/DialogDescription/DialogDescription.js.map +1 -1
  224. package/dist/components/dialog/DialogFooter/DialogFooter.js +8 -3
  225. package/dist/components/dialog/DialogFooter/DialogFooter.js.map +1 -1
  226. package/dist/components/dialog/DialogHeader/DialogHeader.js +8 -3
  227. package/dist/components/dialog/DialogHeader/DialogHeader.js.map +1 -1
  228. package/dist/components/dialog/DialogOverlay/DialogOverlay.js +3 -0
  229. package/dist/components/dialog/DialogOverlay/DialogOverlay.js.map +1 -1
  230. package/dist/components/dialog/DialogSurface/DialogSurface.js +34 -26
  231. package/dist/components/dialog/DialogSurface/DialogSurface.js.map +1 -1
  232. package/dist/components/dialog/DialogTitle/DialogTitle.js +8 -3
  233. package/dist/components/dialog/DialogTitle/DialogTitle.js.map +1 -1
  234. package/dist/components/drawer/Drawer/Drawer.context.d.ts +3 -0
  235. package/dist/components/drawer/Drawer/Drawer.context.js +12 -0
  236. package/dist/components/drawer/Drawer/Drawer.context.js.map +1 -0
  237. package/dist/components/drawer/Drawer/Drawer.d.ts +7 -0
  238. package/dist/components/drawer/Drawer/Drawer.js +63 -0
  239. package/dist/components/drawer/Drawer/Drawer.js.map +1 -0
  240. package/dist/components/drawer/Drawer/Drawer.types.d.ts +50 -0
  241. package/dist/components/drawer/Drawer/create-change-event-details.d.ts +3 -0
  242. package/dist/components/drawer/Drawer/create-change-event-details.js +9 -0
  243. package/dist/components/drawer/Drawer/create-change-event-details.js.map +1 -0
  244. package/dist/components/drawer/Drawer/index.d.ts +3 -0
  245. package/dist/components/drawer/DrawerClose/DrawerClose.d.ts +5 -0
  246. package/dist/components/drawer/DrawerClose/DrawerClose.js +26 -0
  247. package/dist/components/drawer/DrawerClose/DrawerClose.js.map +1 -0
  248. package/dist/components/drawer/DrawerClose/index.d.ts +1 -0
  249. package/dist/components/drawer/DrawerContent/DrawerContent.d.ts +6 -0
  250. package/dist/components/drawer/DrawerContent/DrawerContent.js +103 -0
  251. package/dist/components/drawer/DrawerContent/DrawerContent.js.map +1 -0
  252. package/dist/components/drawer/DrawerContent/DrawerContent.styles.d.ts +10 -0
  253. package/dist/components/drawer/DrawerContent/DrawerContent.styles.js +25 -0
  254. package/dist/components/drawer/DrawerContent/DrawerContent.styles.js.map +1 -0
  255. package/dist/components/drawer/DrawerContent/DrawerContent.types.d.ts +2 -0
  256. package/dist/components/drawer/DrawerContent/drawer-swipe.utils.d.ts +32 -0
  257. package/dist/components/drawer/DrawerContent/drawer-swipe.utils.js +36 -0
  258. package/dist/components/drawer/DrawerContent/drawer-swipe.utils.js.map +1 -0
  259. package/dist/components/drawer/DrawerContent/index.d.ts +2 -0
  260. package/dist/components/drawer/DrawerContent/useDrawerSwipe.d.ts +14 -0
  261. package/dist/components/drawer/DrawerContent/useDrawerSwipe.js +36 -0
  262. package/dist/components/drawer/DrawerContent/useDrawerSwipe.js.map +1 -0
  263. package/dist/components/drawer/DrawerDescription/DrawerDescription.d.ts +2 -0
  264. package/dist/components/drawer/DrawerDescription/DrawerDescription.js +28 -0
  265. package/dist/components/drawer/DrawerDescription/DrawerDescription.js.map +1 -0
  266. package/dist/components/drawer/DrawerDescription/DrawerDescription.types.d.ts +2 -0
  267. package/dist/components/drawer/DrawerDescription/index.d.ts +2 -0
  268. package/dist/components/drawer/DrawerFooter/DrawerFooter.d.ts +2 -0
  269. package/dist/components/drawer/DrawerFooter/DrawerFooter.js +24 -0
  270. package/dist/components/drawer/DrawerFooter/DrawerFooter.js.map +1 -0
  271. package/dist/components/drawer/DrawerFooter/DrawerFooter.types.d.ts +2 -0
  272. package/dist/components/drawer/DrawerFooter/index.d.ts +2 -0
  273. package/dist/components/drawer/DrawerHeader/DrawerHeader.d.ts +2 -0
  274. package/dist/components/drawer/DrawerHeader/DrawerHeader.js +24 -0
  275. package/dist/components/drawer/DrawerHeader/DrawerHeader.js.map +1 -0
  276. package/dist/components/drawer/DrawerHeader/DrawerHeader.types.d.ts +2 -0
  277. package/dist/components/drawer/DrawerHeader/index.d.ts +2 -0
  278. package/dist/components/drawer/DrawerOverlay/DrawerOverlay.d.ts +3 -0
  279. package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js +43 -0
  280. package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js.map +1 -0
  281. package/dist/components/drawer/DrawerOverlay/DrawerOverlay.types.d.ts +2 -0
  282. package/dist/components/drawer/DrawerOverlay/index.d.ts +2 -0
  283. package/dist/components/drawer/DrawerPortal/DrawerPortal.d.ts +2 -0
  284. package/dist/components/drawer/DrawerPortal/DrawerPortal.js +10 -0
  285. package/dist/components/drawer/DrawerPortal/DrawerPortal.js.map +1 -0
  286. package/dist/components/drawer/DrawerPortal/DrawerPortal.types.d.ts +2 -0
  287. package/dist/components/drawer/DrawerPortal/index.d.ts +2 -0
  288. package/dist/components/drawer/DrawerSwipeHandle/DrawerSwipeHandle.d.ts +6 -0
  289. package/dist/components/drawer/DrawerSwipeHandle/DrawerSwipeHandle.js +27 -0
  290. package/dist/components/drawer/DrawerSwipeHandle/DrawerSwipeHandle.js.map +1 -0
  291. package/dist/components/drawer/DrawerSwipeHandle/DrawerSwipeHandle.types.d.ts +2 -0
  292. package/dist/components/drawer/DrawerSwipeHandle/index.d.ts +2 -0
  293. package/dist/components/drawer/DrawerTitle/DrawerTitle.d.ts +2 -0
  294. package/dist/components/drawer/DrawerTitle/DrawerTitle.js +28 -0
  295. package/dist/components/drawer/DrawerTitle/DrawerTitle.js.map +1 -0
  296. package/dist/components/drawer/DrawerTitle/DrawerTitle.types.d.ts +2 -0
  297. package/dist/components/drawer/DrawerTitle/index.d.ts +2 -0
  298. package/dist/components/drawer/DrawerTrigger/DrawerTrigger.d.ts +5 -0
  299. package/dist/components/drawer/DrawerTrigger/DrawerTrigger.js +38 -0
  300. package/dist/components/drawer/DrawerTrigger/DrawerTrigger.js.map +1 -0
  301. package/dist/components/drawer/DrawerTrigger/index.d.ts +1 -0
  302. package/dist/components/drawer/index.d.ts +20 -0
  303. package/dist/components/drawer/index.js +13 -0
  304. package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js +7 -7
  305. package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js.map +1 -1
  306. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.d.ts +7 -1
  307. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js +10 -10
  308. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js.map +1 -1
  309. package/dist/components/field/Field/Field.js +3 -0
  310. package/dist/components/field/Field/Field.js.map +1 -1
  311. package/dist/components/field/FieldContent/FieldContent.js +8 -3
  312. package/dist/components/field/FieldContent/FieldContent.js.map +1 -1
  313. package/dist/components/field/FieldDescription/FieldDescription.js +8 -3
  314. package/dist/components/field/FieldDescription/FieldDescription.js.map +1 -1
  315. package/dist/components/field/FieldError/FieldError.js +8 -3
  316. package/dist/components/field/FieldError/FieldError.js.map +1 -1
  317. package/dist/components/field/FieldGroup/FieldGroup.js +8 -3
  318. package/dist/components/field/FieldGroup/FieldGroup.js.map +1 -1
  319. package/dist/components/field/FieldLabel/FieldLabel.js +3 -0
  320. package/dist/components/field/FieldLabel/FieldLabel.js.map +1 -1
  321. package/dist/components/field/FieldLegend/FieldLegend.js +3 -0
  322. package/dist/components/field/FieldLegend/FieldLegend.js.map +1 -1
  323. package/dist/components/field/FieldSeparator/FieldSeparator.js +3 -0
  324. package/dist/components/field/FieldSeparator/FieldSeparator.js.map +1 -1
  325. package/dist/components/field/FieldSet/FieldSet.js +8 -3
  326. package/dist/components/field/FieldSet/FieldSet.js.map +1 -1
  327. package/dist/components/field/FieldTitle/FieldTitle.js +8 -3
  328. package/dist/components/field/FieldTitle/FieldTitle.js.map +1 -1
  329. package/dist/components/hover-card/HoverCard/HoverCard.d.ts +7 -0
  330. package/dist/components/hover-card/HoverCard/HoverCard.js +47 -0
  331. package/dist/components/hover-card/HoverCard/HoverCard.js.map +1 -0
  332. package/dist/components/hover-card/HoverCard/index.d.ts +1 -0
  333. package/dist/components/hover-card/HoverCardContent/HoverCardContent.d.ts +6 -0
  334. package/dist/components/hover-card/HoverCardContent/HoverCardContent.js +74 -0
  335. package/dist/components/hover-card/HoverCardContent/HoverCardContent.js.map +1 -0
  336. package/dist/components/hover-card/HoverCardContent/index.d.ts +1 -0
  337. package/dist/components/hover-card/HoverCardContent/useHoverCardContent.d.ts +16 -0
  338. package/dist/components/hover-card/HoverCardContent/useHoverCardContent.js +58 -0
  339. package/dist/components/hover-card/HoverCardContent/useHoverCardContent.js.map +1 -0
  340. package/dist/components/hover-card/HoverCardTrigger/HoverCardTrigger.d.ts +4 -0
  341. package/dist/components/hover-card/HoverCardTrigger/HoverCardTrigger.js +40 -0
  342. package/dist/components/hover-card/HoverCardTrigger/HoverCardTrigger.js.map +1 -0
  343. package/dist/components/hover-card/HoverCardTrigger/index.d.ts +1 -0
  344. package/dist/components/hover-card/HoverCardTrigger/useHoverCardTrigger.d.ts +18 -0
  345. package/dist/components/hover-card/HoverCardTrigger/useHoverCardTrigger.js +34 -0
  346. package/dist/components/hover-card/HoverCardTrigger/useHoverCardTrigger.js.map +1 -0
  347. package/dist/components/hover-card/hover-card.context.d.ts +3 -0
  348. package/dist/components/hover-card/hover-card.context.js +12 -0
  349. package/dist/components/hover-card/hover-card.context.js.map +1 -0
  350. package/dist/components/hover-card/hover-card.types.d.ts +50 -0
  351. package/dist/components/hover-card/index.d.ts +4 -0
  352. package/dist/components/hover-card/index.js +4 -0
  353. package/dist/components/image/Image.utils.d.ts +14 -16
  354. package/dist/components/image/Image.utils.js +146 -190
  355. package/dist/components/image/Image.utils.js.map +1 -1
  356. package/dist/components/image/ImageElement.js +31 -27
  357. package/dist/components/image/ImageElement.js.map +1 -1
  358. package/dist/components/image/lib/blur.d.ts +31 -0
  359. package/dist/components/image/lib/blur.js +24 -0
  360. package/dist/components/image/lib/blur.js.map +1 -0
  361. package/dist/components/image/lib/dev-checks.d.ts +52 -0
  362. package/dist/components/image/lib/handle-loading.d.ts +13 -0
  363. package/dist/components/image/lib/handle-loading.js +20 -0
  364. package/dist/components/image/lib/handle-loading.js.map +1 -0
  365. package/dist/components/image/lib/loader.d.ts +39 -0
  366. package/dist/components/image/lib/loader.js +57 -0
  367. package/dist/components/image/lib/loader.js.map +1 -0
  368. package/dist/components/image/lib/static-import.d.ts +14 -0
  369. package/dist/components/image/lib/static-import.js +17 -0
  370. package/dist/components/image/lib/static-import.js.map +1 -0
  371. package/dist/components/input-group/InputGroup/InputGroup.js +8 -3
  372. package/dist/components/input-group/InputGroup/InputGroup.js.map +1 -1
  373. package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js +3 -0
  374. package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js.map +1 -1
  375. package/dist/components/input-group/InputGroupButton/InputGroupButton.js +3 -0
  376. package/dist/components/input-group/InputGroupButton/InputGroupButton.js.map +1 -1
  377. package/dist/components/input-group/InputGroupInput/InputGroupInput.js +3 -0
  378. package/dist/components/input-group/InputGroupInput/InputGroupInput.js.map +1 -1
  379. package/dist/components/input-group/InputGroupText/InputGroupText.js +8 -3
  380. package/dist/components/input-group/InputGroupText/InputGroupText.js.map +1 -1
  381. package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js +3 -0
  382. package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js.map +1 -1
  383. package/dist/components/item/Item/Item.js +9 -0
  384. package/dist/components/item/Item/Item.js.map +1 -1
  385. package/dist/components/item/ItemActions/ItemActions.js +8 -3
  386. package/dist/components/item/ItemActions/ItemActions.js.map +1 -1
  387. package/dist/components/item/ItemContent/ItemContent.js +8 -3
  388. package/dist/components/item/ItemContent/ItemContent.js.map +1 -1
  389. package/dist/components/item/ItemDescription/ItemDescription.js +8 -3
  390. package/dist/components/item/ItemDescription/ItemDescription.js.map +1 -1
  391. package/dist/components/item/ItemFooter/ItemFooter.js +8 -3
  392. package/dist/components/item/ItemFooter/ItemFooter.js.map +1 -1
  393. package/dist/components/item/ItemGroup/ItemGroup.js +8 -3
  394. package/dist/components/item/ItemGroup/ItemGroup.js.map +1 -1
  395. package/dist/components/item/ItemHeader/ItemHeader.js +8 -3
  396. package/dist/components/item/ItemHeader/ItemHeader.js.map +1 -1
  397. package/dist/components/item/ItemMedia/ItemMedia.js +3 -0
  398. package/dist/components/item/ItemMedia/ItemMedia.js.map +1 -1
  399. package/dist/components/item/ItemSeparator/ItemSeparator.js +3 -0
  400. package/dist/components/item/ItemSeparator/ItemSeparator.js.map +1 -1
  401. package/dist/components/item/ItemTitle/ItemTitle.js +8 -3
  402. package/dist/components/item/ItemTitle/ItemTitle.js.map +1 -1
  403. package/dist/components/kbd/Kbd.js +16 -6
  404. package/dist/components/kbd/Kbd.js.map +1 -1
  405. package/dist/components/label/Label.js +3 -0
  406. package/dist/components/label/Label.js.map +1 -1
  407. package/dist/components/marker/Marker/Marker.d.ts +7 -0
  408. package/dist/components/marker/Marker/Marker.js +35 -0
  409. package/dist/components/marker/Marker/Marker.js.map +1 -0
  410. package/dist/components/marker/Marker/Marker.styles.d.ts +3 -0
  411. package/dist/components/marker/Marker/Marker.styles.js +14 -0
  412. package/dist/components/marker/Marker/Marker.styles.js.map +1 -0
  413. package/dist/components/marker/Marker/Marker.types.d.ts +5 -0
  414. package/dist/components/marker/Marker/index.d.ts +3 -0
  415. package/dist/components/marker/MarkerContent/MarkerContent.d.ts +2 -0
  416. package/dist/components/marker/MarkerContent/MarkerContent.js +24 -0
  417. package/dist/components/marker/MarkerContent/MarkerContent.js.map +1 -0
  418. package/dist/components/marker/MarkerContent/MarkerContent.types.d.ts +2 -0
  419. package/dist/components/marker/MarkerContent/index.d.ts +2 -0
  420. package/dist/components/marker/MarkerIcon/MarkerIcon.d.ts +3 -0
  421. package/dist/components/marker/MarkerIcon/MarkerIcon.js +25 -0
  422. package/dist/components/marker/MarkerIcon/MarkerIcon.js.map +1 -0
  423. package/dist/components/marker/MarkerIcon/MarkerIcon.types.d.ts +2 -0
  424. package/dist/components/marker/MarkerIcon/index.d.ts +2 -0
  425. package/dist/components/marker/index.d.ts +6 -0
  426. package/dist/components/marker/index.js +5 -0
  427. package/dist/components/message/Message/Message.d.ts +3 -0
  428. package/dist/components/message/Message/Message.js +31 -0
  429. package/dist/components/message/Message/Message.js.map +1 -0
  430. package/dist/components/message/Message/Message.types.d.ts +5 -0
  431. package/dist/components/message/Message/index.d.ts +2 -0
  432. package/dist/components/message/MessageAvatar/MessageAvatar.d.ts +5 -0
  433. package/dist/components/message/MessageAvatar/MessageAvatar.js +24 -0
  434. package/dist/components/message/MessageAvatar/MessageAvatar.js.map +1 -0
  435. package/dist/components/message/MessageAvatar/MessageAvatar.types.d.ts +2 -0
  436. package/dist/components/message/MessageAvatar/index.d.ts +2 -0
  437. package/dist/components/message/MessageContent/MessageContent.d.ts +3 -0
  438. package/dist/components/message/MessageContent/MessageContent.js +24 -0
  439. package/dist/components/message/MessageContent/MessageContent.js.map +1 -0
  440. package/dist/components/message/MessageContent/MessageContent.types.d.ts +2 -0
  441. package/dist/components/message/MessageContent/index.d.ts +2 -0
  442. package/dist/components/message/MessageFooter/MessageFooter.d.ts +3 -0
  443. package/dist/components/message/MessageFooter/MessageFooter.js +24 -0
  444. package/dist/components/message/MessageFooter/MessageFooter.js.map +1 -0
  445. package/dist/components/message/MessageFooter/MessageFooter.types.d.ts +2 -0
  446. package/dist/components/message/MessageFooter/index.d.ts +2 -0
  447. package/dist/components/message/MessageGroup/MessageGroup.d.ts +3 -0
  448. package/dist/components/message/MessageGroup/MessageGroup.js +24 -0
  449. package/dist/components/message/MessageGroup/MessageGroup.js.map +1 -0
  450. package/dist/components/message/MessageGroup/MessageGroup.types.d.ts +2 -0
  451. package/dist/components/message/MessageGroup/index.d.ts +2 -0
  452. package/dist/components/message/MessageHeader/MessageHeader.d.ts +3 -0
  453. package/dist/components/message/MessageHeader/MessageHeader.js +24 -0
  454. package/dist/components/message/MessageHeader/MessageHeader.js.map +1 -0
  455. package/dist/components/message/MessageHeader/MessageHeader.types.d.ts +2 -0
  456. package/dist/components/message/MessageHeader/index.d.ts +2 -0
  457. package/dist/components/message/index.d.ts +12 -0
  458. package/dist/components/message/index.js +7 -0
  459. package/dist/components/message-scroller/MessageScroller/MessageScroller.d.ts +3 -0
  460. package/dist/components/message-scroller/MessageScroller/MessageScroller.js +35 -0
  461. package/dist/components/message-scroller/MessageScroller/MessageScroller.js.map +1 -0
  462. package/dist/components/message-scroller/MessageScroller/index.d.ts +1 -0
  463. package/dist/components/message-scroller/MessageScrollerButton/MessageScrollerButton.d.ts +6 -0
  464. package/dist/components/message-scroller/MessageScrollerButton/MessageScrollerButton.js +90 -0
  465. package/dist/components/message-scroller/MessageScrollerButton/MessageScrollerButton.js.map +1 -0
  466. package/dist/components/message-scroller/MessageScrollerButton/index.d.ts +1 -0
  467. package/dist/components/message-scroller/MessageScrollerContent/MessageScrollerContent.d.ts +6 -0
  468. package/dist/components/message-scroller/MessageScrollerContent/MessageScrollerContent.js +46 -0
  469. package/dist/components/message-scroller/MessageScrollerContent/MessageScrollerContent.js.map +1 -0
  470. package/dist/components/message-scroller/MessageScrollerContent/index.d.ts +1 -0
  471. package/dist/components/message-scroller/MessageScrollerItem/MessageScrollerItem.d.ts +6 -0
  472. package/dist/components/message-scroller/MessageScrollerItem/MessageScrollerItem.js +42 -0
  473. package/dist/components/message-scroller/MessageScrollerItem/MessageScrollerItem.js.map +1 -0
  474. package/dist/components/message-scroller/MessageScrollerItem/index.d.ts +1 -0
  475. package/dist/components/message-scroller/MessageScrollerProvider/MessageScrollerProvider.d.ts +4 -0
  476. package/dist/components/message-scroller/MessageScrollerProvider/MessageScrollerProvider.js +37 -0
  477. package/dist/components/message-scroller/MessageScrollerProvider/MessageScrollerProvider.js.map +1 -0
  478. package/dist/components/message-scroller/MessageScrollerProvider/index.d.ts +1 -0
  479. package/dist/components/message-scroller/MessageScrollerViewport/MessageScrollerViewport.d.ts +6 -0
  480. package/dist/components/message-scroller/MessageScrollerViewport/MessageScrollerViewport.js +55 -0
  481. package/dist/components/message-scroller/MessageScrollerViewport/MessageScrollerViewport.js.map +1 -0
  482. package/dist/components/message-scroller/MessageScrollerViewport/index.d.ts +1 -0
  483. package/dist/components/message-scroller/index.d.ts +10 -0
  484. package/dist/components/message-scroller/index.js +10 -0
  485. package/dist/components/message-scroller/message-scroller.anchoring.d.ts +60 -0
  486. package/dist/components/message-scroller/message-scroller.anchoring.js +139 -0
  487. package/dist/components/message-scroller/message-scroller.anchoring.js.map +1 -0
  488. package/dist/components/message-scroller/message-scroller.anchors.d.ts +12 -0
  489. package/dist/components/message-scroller/message-scroller.anchors.js +23 -0
  490. package/dist/components/message-scroller/message-scroller.anchors.js.map +1 -0
  491. package/dist/components/message-scroller/message-scroller.commands.d.ts +43 -0
  492. package/dist/components/message-scroller/message-scroller.commands.js +51 -0
  493. package/dist/components/message-scroller/message-scroller.commands.js.map +1 -0
  494. package/dist/components/message-scroller/message-scroller.context.d.ts +3 -0
  495. package/dist/components/message-scroller/message-scroller.context.js +12 -0
  496. package/dist/components/message-scroller/message-scroller.context.js.map +1 -0
  497. package/dist/components/message-scroller/message-scroller.dom-measure.d.ts +29 -0
  498. package/dist/components/message-scroller/message-scroller.dom-measure.js +37 -0
  499. package/dist/components/message-scroller/message-scroller.dom-measure.js.map +1 -0
  500. package/dist/components/message-scroller/message-scroller.measure.d.ts +27 -0
  501. package/dist/components/message-scroller/message-scroller.measure.js +21 -0
  502. package/dist/components/message-scroller/message-scroller.measure.js.map +1 -0
  503. package/dist/components/message-scroller/message-scroller.scroll-state.d.ts +54 -0
  504. package/dist/components/message-scroller/message-scroller.scroll-state.js +74 -0
  505. package/dist/components/message-scroller/message-scroller.scroll-state.js.map +1 -0
  506. package/dist/components/message-scroller/message-scroller.scroll-target.d.ts +27 -0
  507. package/dist/components/message-scroller/message-scroller.scroll-target.js +33 -0
  508. package/dist/components/message-scroller/message-scroller.scroll-target.js.map +1 -0
  509. package/dist/components/message-scroller/message-scroller.types.d.ts +92 -0
  510. package/dist/components/message-scroller/message-scroller.utils.d.ts +14 -0
  511. package/dist/components/message-scroller/message-scroller.utils.js +10 -0
  512. package/dist/components/message-scroller/message-scroller.utils.js.map +1 -0
  513. package/dist/components/message-scroller/message-scroller.visibility.d.ts +43 -0
  514. package/dist/components/message-scroller/message-scroller.visibility.js +82 -0
  515. package/dist/components/message-scroller/message-scroller.visibility.js.map +1 -0
  516. package/dist/components/message-scroller/useMessageScroller.d.ts +6 -0
  517. package/dist/components/message-scroller/useMessageScroller.js +14 -0
  518. package/dist/components/message-scroller/useMessageScroller.js.map +1 -0
  519. package/dist/components/message-scroller/useMessageScrollerEngine.d.ts +15 -0
  520. package/dist/components/message-scroller/useMessageScrollerEngine.js +125 -0
  521. package/dist/components/message-scroller/useMessageScrollerEngine.js.map +1 -0
  522. package/dist/components/message-scroller/useMessageScrollerScrollable.d.ts +5 -0
  523. package/dist/components/message-scroller/useMessageScrollerScrollable.js +13 -0
  524. package/dist/components/message-scroller/useMessageScrollerScrollable.js.map +1 -0
  525. package/dist/components/message-scroller/useMessageScrollerVisibility.d.ts +7 -0
  526. package/dist/components/message-scroller/useMessageScrollerVisibility.js +17 -0
  527. package/dist/components/message-scroller/useMessageScrollerVisibility.js.map +1 -0
  528. package/dist/components/number-input/NumberInput/NumberInput.js +21 -19
  529. package/dist/components/number-input/NumberInput/NumberInput.js.map +1 -1
  530. package/dist/components/number-input/NumberInput/NumberInput.utils.d.ts +6 -2
  531. package/dist/components/number-input/NumberInput/NumberInput.utils.js +1 -3
  532. package/dist/components/number-input/NumberInput/NumberInput.utils.js.map +1 -1
  533. package/dist/components/number-input/NumberInput/create-change-event-details.d.ts +1 -2
  534. package/dist/components/number-input/NumberInput/create-change-event-details.js +4 -20
  535. package/dist/components/number-input/NumberInput/create-change-event-details.js.map +1 -1
  536. package/dist/components/pagination/Pagination/Pagination.js +8 -3
  537. package/dist/components/pagination/Pagination/Pagination.js.map +1 -1
  538. package/dist/components/pagination/PaginationContent/PaginationContent.js +8 -3
  539. package/dist/components/pagination/PaginationContent/PaginationContent.js.map +1 -1
  540. package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js +8 -3
  541. package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js.map +1 -1
  542. package/dist/components/pagination/PaginationLink/PaginationLink.js +3 -0
  543. package/dist/components/pagination/PaginationLink/PaginationLink.js.map +1 -1
  544. package/dist/components/pagination/PaginationNext/PaginationNext.js +3 -0
  545. package/dist/components/pagination/PaginationNext/PaginationNext.js.map +1 -1
  546. package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js +3 -0
  547. package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js.map +1 -1
  548. package/dist/components/popover/PopoverContent/PopoverContent.js +3 -0
  549. package/dist/components/popover/PopoverContent/PopoverContent.js.map +1 -1
  550. package/dist/components/popover/PopoverContent/PopoverContent.utils.d.ts +6 -13
  551. package/dist/components/popover/PopoverContent/PopoverContent.utils.js +7 -30
  552. package/dist/components/popover/PopoverContent/PopoverContent.utils.js.map +1 -1
  553. package/dist/components/progress/Progress/Progress.context.js +1 -1
  554. package/dist/components/progress/Progress/Progress.context.js.map +1 -1
  555. package/dist/components/progress/Progress/Progress.js +3 -0
  556. package/dist/components/progress/Progress/Progress.js.map +1 -1
  557. package/dist/components/progress/ProgressIndicator/ProgressIndicator.js +3 -0
  558. package/dist/components/progress/ProgressIndicator/ProgressIndicator.js.map +1 -1
  559. package/dist/components/progress/ProgressLabel/ProgressLabel.js +8 -3
  560. package/dist/components/progress/ProgressLabel/ProgressLabel.js.map +1 -1
  561. package/dist/components/progress/ProgressTrack/ProgressTrack.js +3 -0
  562. package/dist/components/progress/ProgressTrack/ProgressTrack.js.map +1 -1
  563. package/dist/components/progress/ProgressValue/ProgressValue.js +8 -3
  564. package/dist/components/progress/ProgressValue/ProgressValue.js.map +1 -1
  565. package/dist/components/questionnaire/Questionnaire/Questionnaire.d.ts +3 -0
  566. package/dist/components/questionnaire/Questionnaire/Questionnaire.js +68 -0
  567. package/dist/components/questionnaire/Questionnaire/Questionnaire.js.map +1 -0
  568. package/dist/components/questionnaire/Questionnaire/index.d.ts +1 -0
  569. package/dist/components/questionnaire/QuestionnaireActions/QuestionnaireActions.d.ts +3 -0
  570. package/dist/components/questionnaire/QuestionnaireActions/QuestionnaireActions.js +24 -0
  571. package/dist/components/questionnaire/QuestionnaireActions/QuestionnaireActions.js.map +1 -0
  572. package/dist/components/questionnaire/QuestionnaireActions/index.d.ts +1 -0
  573. package/dist/components/questionnaire/QuestionnaireChoice/QuestionnaireChoice.d.ts +3 -0
  574. package/dist/components/questionnaire/QuestionnaireChoice/QuestionnaireChoice.js +99 -0
  575. package/dist/components/questionnaire/QuestionnaireChoice/QuestionnaireChoice.js.map +1 -0
  576. package/dist/components/questionnaire/QuestionnaireChoice/index.d.ts +1 -0
  577. package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.d.ts +48 -0
  578. package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.js +23 -0
  579. package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.js.map +1 -0
  580. package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.d.ts +38 -0
  581. package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js +80 -0
  582. package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js.map +1 -0
  583. package/dist/components/questionnaire/QuestionnaireChoices/QuestionnaireChoices.d.ts +3 -0
  584. package/dist/components/questionnaire/QuestionnaireChoices/QuestionnaireChoices.js +28 -0
  585. package/dist/components/questionnaire/QuestionnaireChoices/QuestionnaireChoices.js.map +1 -0
  586. package/dist/components/questionnaire/QuestionnaireChoices/index.d.ts +1 -0
  587. package/dist/components/questionnaire/QuestionnaireDescription/QuestionnaireDescription.d.ts +4 -0
  588. package/dist/components/questionnaire/QuestionnaireDescription/QuestionnaireDescription.js +30 -0
  589. package/dist/components/questionnaire/QuestionnaireDescription/QuestionnaireDescription.js.map +1 -0
  590. package/dist/components/questionnaire/QuestionnaireDescription/index.d.ts +1 -0
  591. package/dist/components/questionnaire/QuestionnaireError/QuestionnaireError.d.ts +4 -0
  592. package/dist/components/questionnaire/QuestionnaireError/QuestionnaireError.js +43 -0
  593. package/dist/components/questionnaire/QuestionnaireError/QuestionnaireError.js.map +1 -0
  594. package/dist/components/questionnaire/QuestionnaireError/index.d.ts +1 -0
  595. package/dist/components/questionnaire/QuestionnaireInput/QuestionnaireInput.d.ts +3 -0
  596. package/dist/components/questionnaire/QuestionnaireInput/QuestionnaireInput.js +78 -0
  597. package/dist/components/questionnaire/QuestionnaireInput/QuestionnaireInput.js.map +1 -0
  598. package/dist/components/questionnaire/QuestionnaireInput/index.d.ts +1 -0
  599. package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.d.ts +37 -0
  600. package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js +61 -0
  601. package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js.map +1 -0
  602. package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.d.ts +3 -0
  603. package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js +88 -0
  604. package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js.map +1 -0
  605. package/dist/components/questionnaire/QuestionnaireItem/index.d.ts +1 -0
  606. package/dist/components/questionnaire/QuestionnaireNavigation/QuestionnaireNavigation.d.ts +5 -0
  607. package/dist/components/questionnaire/QuestionnaireNavigation/QuestionnaireNavigation.js +104 -0
  608. package/dist/components/questionnaire/QuestionnaireNavigation/QuestionnaireNavigation.js.map +1 -0
  609. package/dist/components/questionnaire/QuestionnaireNavigation/index.d.ts +1 -0
  610. package/dist/components/questionnaire/QuestionnaireProgress/QuestionnaireProgress.d.ts +4 -0
  611. package/dist/components/questionnaire/QuestionnaireProgress/QuestionnaireProgress.js +62 -0
  612. package/dist/components/questionnaire/QuestionnaireProgress/QuestionnaireProgress.js.map +1 -0
  613. package/dist/components/questionnaire/QuestionnaireProgress/index.d.ts +1 -0
  614. package/dist/components/questionnaire/QuestionnaireTitle/QuestionnaireTitle.d.ts +4 -0
  615. package/dist/components/questionnaire/QuestionnaireTitle/QuestionnaireTitle.js +27 -0
  616. package/dist/components/questionnaire/QuestionnaireTitle/QuestionnaireTitle.js.map +1 -0
  617. package/dist/components/questionnaire/QuestionnaireTitle/index.d.ts +1 -0
  618. package/dist/components/questionnaire/index.d.ts +12 -0
  619. package/dist/components/questionnaire/index.js +12 -0
  620. package/dist/components/questionnaire/questionnaire.answers.d.ts +42 -0
  621. package/dist/components/questionnaire/questionnaire.answers.js +62 -0
  622. package/dist/components/questionnaire/questionnaire.answers.js.map +1 -0
  623. package/dist/components/questionnaire/questionnaire.aria.d.ts +34 -0
  624. package/dist/components/questionnaire/questionnaire.aria.js +28 -0
  625. package/dist/components/questionnaire/questionnaire.aria.js.map +1 -0
  626. package/dist/components/questionnaire/questionnaire.context.d.ts +65 -0
  627. package/dist/components/questionnaire/questionnaire.context.js +18 -0
  628. package/dist/components/questionnaire/questionnaire.context.js.map +1 -0
  629. package/dist/components/questionnaire/questionnaire.dom-watch.d.ts +9 -0
  630. package/dist/components/questionnaire/questionnaire.dom-watch.js +18 -0
  631. package/dist/components/questionnaire/questionnaire.dom-watch.js.map +1 -0
  632. package/dist/components/questionnaire/questionnaire.focus.d.ts +26 -0
  633. package/dist/components/questionnaire/questionnaire.focus.js +19 -0
  634. package/dist/components/questionnaire/questionnaire.focus.js.map +1 -0
  635. package/dist/components/questionnaire/questionnaire.item-view.d.ts +50 -0
  636. package/dist/components/questionnaire/questionnaire.item-view.js +36 -0
  637. package/dist/components/questionnaire/questionnaire.item-view.js.map +1 -0
  638. package/dist/components/questionnaire/questionnaire.keys.d.ts +29 -0
  639. package/dist/components/questionnaire/questionnaire.keys.js +34 -0
  640. package/dist/components/questionnaire/questionnaire.keys.js.map +1 -0
  641. package/dist/components/questionnaire/questionnaire.registry.d.ts +21 -0
  642. package/dist/components/questionnaire/questionnaire.registry.js +15 -0
  643. package/dist/components/questionnaire/questionnaire.registry.js.map +1 -0
  644. package/dist/components/questionnaire/questionnaire.shortcuts.d.ts +24 -0
  645. package/dist/components/questionnaire/questionnaire.shortcuts.js +31 -0
  646. package/dist/components/questionnaire/questionnaire.shortcuts.js.map +1 -0
  647. package/dist/components/questionnaire/questionnaire.types.d.ts +82 -0
  648. package/dist/components/questionnaire/questionnaire.utils.d.ts +40 -0
  649. package/dist/components/questionnaire/questionnaire.utils.js +41 -0
  650. package/dist/components/questionnaire/questionnaire.utils.js.map +1 -0
  651. package/dist/components/questionnaire/questionnaire.validation.d.ts +43 -0
  652. package/dist/components/questionnaire/questionnaire.validation.js +17 -0
  653. package/dist/components/questionnaire/questionnaire.validation.js.map +1 -0
  654. package/dist/components/questionnaire/useQuestionnaireItem.d.ts +32 -0
  655. package/dist/components/questionnaire/useQuestionnaireItem.js +103 -0
  656. package/dist/components/questionnaire/useQuestionnaireItem.js.map +1 -0
  657. package/dist/components/questionnaire/useQuestionnaireRoot.d.ts +30 -0
  658. package/dist/components/questionnaire/useQuestionnaireRoot.js +123 -0
  659. package/dist/components/questionnaire/useQuestionnaireRoot.js.map +1 -0
  660. package/dist/components/radio-group/RadioGroup/RadioGroup.js +3 -0
  661. package/dist/components/radio-group/RadioGroup/RadioGroup.js.map +1 -1
  662. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js +3 -0
  663. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js.map +1 -1
  664. package/dist/components/resizable/ResizableHandle/ResizableHandle.d.ts +6 -0
  665. package/dist/components/resizable/ResizableHandle/ResizableHandle.js +92 -0
  666. package/dist/components/resizable/ResizableHandle/ResizableHandle.js.map +1 -0
  667. package/dist/components/resizable/ResizableHandle/ResizableHandle.styles.d.ts +3 -0
  668. package/dist/components/resizable/ResizableHandle/ResizableHandle.styles.js +6 -0
  669. package/dist/components/resizable/ResizableHandle/ResizableHandle.styles.js.map +1 -0
  670. package/dist/components/resizable/ResizableHandle/index.d.ts +1 -0
  671. package/dist/components/resizable/ResizableHandle/resizable.handle-drag.d.ts +37 -0
  672. package/dist/components/resizable/ResizableHandle/resizable.handle-drag.js +37 -0
  673. package/dist/components/resizable/ResizableHandle/resizable.handle-drag.js.map +1 -0
  674. package/dist/components/resizable/ResizableHandle/resizable.handle-keys.d.ts +24 -0
  675. package/dist/components/resizable/ResizableHandle/resizable.handle-keys.js +36 -0
  676. package/dist/components/resizable/ResizableHandle/resizable.handle-keys.js.map +1 -0
  677. package/dist/components/resizable/ResizableHandle/useResizableHandle.d.ts +16 -0
  678. package/dist/components/resizable/ResizableHandle/useResizableHandle.js +39 -0
  679. package/dist/components/resizable/ResizableHandle/useResizableHandle.js.map +1 -0
  680. package/dist/components/resizable/ResizablePanel/ResizablePanel.d.ts +8 -0
  681. package/dist/components/resizable/ResizablePanel/ResizablePanel.js +64 -0
  682. package/dist/components/resizable/ResizablePanel/ResizablePanel.js.map +1 -0
  683. package/dist/components/resizable/ResizablePanel/index.d.ts +1 -0
  684. package/dist/components/resizable/ResizablePanel/useResizablePanel.d.ts +30 -0
  685. package/dist/components/resizable/ResizablePanel/useResizablePanel.js +37 -0
  686. package/dist/components/resizable/ResizablePanel/useResizablePanel.js.map +1 -0
  687. package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.d.ts +9 -0
  688. package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js +59 -0
  689. package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js.map +1 -0
  690. package/dist/components/resizable/ResizablePanelGroup/index.d.ts +1 -0
  691. package/dist/components/resizable/ResizablePanelGroup/useDragCursor.d.ts +11 -0
  692. package/dist/components/resizable/ResizablePanelGroup/useDragCursor.js +17 -0
  693. package/dist/components/resizable/ResizablePanelGroup/useDragCursor.js.map +1 -0
  694. package/dist/components/resizable/index.d.ts +4 -0
  695. package/dist/components/resizable/index.js +4 -0
  696. package/dist/components/resizable/resizable.collapse.d.ts +27 -0
  697. package/dist/components/resizable/resizable.collapse.js +24 -0
  698. package/dist/components/resizable/resizable.collapse.js.map +1 -0
  699. package/dist/components/resizable/resizable.commands.d.ts +32 -0
  700. package/dist/components/resizable/resizable.commands.js +40 -0
  701. package/dist/components/resizable/resizable.commands.js.map +1 -0
  702. package/dist/components/resizable/resizable.constraints.d.ts +23 -0
  703. package/dist/components/resizable/resizable.constraints.js +32 -0
  704. package/dist/components/resizable/resizable.constraints.js.map +1 -0
  705. package/dist/components/resizable/resizable.context.d.ts +38 -0
  706. package/dist/components/resizable/resizable.context.js +12 -0
  707. package/dist/components/resizable/resizable.context.js.map +1 -0
  708. package/dist/components/resizable/resizable.lifecycle.d.ts +35 -0
  709. package/dist/components/resizable/resizable.lifecycle.js +32 -0
  710. package/dist/components/resizable/resizable.lifecycle.js.map +1 -0
  711. package/dist/components/resizable/resizable.registry.d.ts +31 -0
  712. package/dist/components/resizable/resizable.registry.js +38 -0
  713. package/dist/components/resizable/resizable.registry.js.map +1 -0
  714. package/dist/components/resizable/resizable.reporting.d.ts +36 -0
  715. package/dist/components/resizable/resizable.reporting.js +33 -0
  716. package/dist/components/resizable/resizable.reporting.js.map +1 -0
  717. package/dist/components/resizable/resizable.resize.d.ts +47 -0
  718. package/dist/components/resizable/resizable.resize.js +28 -0
  719. package/dist/components/resizable/resizable.resize.js.map +1 -0
  720. package/dist/components/resizable/resizable.sizes.d.ts +31 -0
  721. package/dist/components/resizable/resizable.sizes.js +46 -0
  722. package/dist/components/resizable/resizable.sizes.js.map +1 -0
  723. package/dist/components/resizable/resizable.storage.d.ts +17 -0
  724. package/dist/components/resizable/resizable.storage.js +29 -0
  725. package/dist/components/resizable/resizable.storage.js.map +1 -0
  726. package/dist/components/resizable/resizable.types.d.ts +76 -0
  727. package/dist/components/resizable/resizable.utils.d.ts +23 -0
  728. package/dist/components/resizable/resizable.utils.js +51 -0
  729. package/dist/components/resizable/resizable.utils.js.map +1 -0
  730. package/dist/components/resizable/useResizablePanelGroup.d.ts +22 -0
  731. package/dist/components/resizable/useResizablePanelGroup.js +74 -0
  732. package/dist/components/resizable/useResizablePanelGroup.js.map +1 -0
  733. package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js +1 -1
  734. package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js.map +1 -1
  735. package/dist/components/scroll-area/ScrollArea/ScrollArea.d.ts +9 -0
  736. package/dist/components/scroll-area/ScrollArea/ScrollArea.js +28 -39
  737. package/dist/components/scroll-area/ScrollArea/ScrollArea.js.map +1 -1
  738. package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js +3 -3
  739. package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js.map +1 -1
  740. package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.d.ts +22 -0
  741. package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.js +34 -0
  742. package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.js.map +1 -0
  743. package/dist/components/scroll-area/ScrollBar/ScrollBar.d.ts +8 -0
  744. package/dist/components/scroll-area/ScrollBar/ScrollBar.js +38 -71
  745. package/dist/components/scroll-area/ScrollBar/ScrollBar.js.map +1 -1
  746. package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.d.ts +56 -0
  747. package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.js +61 -0
  748. package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.js.map +1 -0
  749. package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.d.ts +25 -0
  750. package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.js +26 -0
  751. package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.js.map +1 -0
  752. package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.d.ts +19 -0
  753. package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.js +37 -0
  754. package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.js.map +1 -0
  755. package/dist/components/scroll-arrows/ScrollArrowButton.d.ts +5 -4
  756. package/dist/components/scroll-arrows/ScrollArrowButton.js +13 -34
  757. package/dist/components/scroll-arrows/ScrollArrowButton.js.map +1 -1
  758. package/dist/components/scroll-arrows/ScrollArrows.d.ts +6 -2
  759. package/dist/components/scroll-arrows/ScrollArrows.js +16 -16
  760. package/dist/components/scroll-arrows/ScrollArrows.js.map +1 -1
  761. package/dist/components/scroll-arrows/ScrollArrows.types.d.ts +9 -2
  762. package/dist/components/scroll-arrows/useHoverScroll.d.ts +29 -0
  763. package/dist/components/scroll-arrows/useHoverScroll.js +39 -0
  764. package/dist/components/scroll-arrows/useHoverScroll.js.map +1 -0
  765. package/dist/components/select/SelectContent/useSelectContent.js +3 -3
  766. package/dist/components/select/SelectGroup/SelectGroup.d.ts +8 -2
  767. package/dist/components/select/SelectGroup/SelectGroup.js +20 -6
  768. package/dist/components/select/SelectGroup/SelectGroup.js.map +1 -1
  769. package/dist/components/select/SelectGroup/SelectGroup.types.d.ts +9 -0
  770. package/dist/components/select/SelectGroup/index.d.ts +1 -0
  771. package/dist/components/select/SelectTrigger/SelectTrigger.js.map +1 -1
  772. package/dist/components/select/SelectTrigger/useSelectTrigger.js +1 -1
  773. package/dist/components/select/SelectTrigger/useSelectTrigger.js.map +1 -1
  774. package/dist/components/separator/Separator.js +3 -0
  775. package/dist/components/separator/Separator.js.map +1 -1
  776. package/dist/components/sheet/Sheet/Sheet.d.ts +6 -0
  777. package/dist/components/sheet/Sheet/Sheet.js +10 -0
  778. package/dist/components/sheet/Sheet/Sheet.js.map +1 -0
  779. package/dist/components/sheet/Sheet/index.d.ts +1 -0
  780. package/dist/components/sheet/SheetClose/SheetClose.d.ts +6 -0
  781. package/dist/components/sheet/SheetClose/SheetClose.js +40 -0
  782. package/dist/components/sheet/SheetClose/SheetClose.js.map +1 -0
  783. package/dist/components/sheet/SheetClose/index.d.ts +1 -0
  784. package/dist/components/sheet/SheetContent/SheetContent.d.ts +6 -0
  785. package/dist/components/sheet/SheetContent/SheetContent.js +48 -0
  786. package/dist/components/sheet/SheetContent/SheetContent.js.map +1 -0
  787. package/dist/components/sheet/SheetContent/SheetContent.styles.d.ts +10 -0
  788. package/dist/components/sheet/SheetContent/SheetContent.styles.js +17 -0
  789. package/dist/components/sheet/SheetContent/SheetContent.styles.js.map +1 -0
  790. package/dist/components/sheet/SheetContent/index.d.ts +1 -0
  791. package/dist/components/sheet/SheetDescription/SheetDescription.d.ts +2 -0
  792. package/dist/components/sheet/SheetDescription/SheetDescription.js +25 -0
  793. package/dist/components/sheet/SheetDescription/SheetDescription.js.map +1 -0
  794. package/dist/components/sheet/SheetDescription/SheetDescription.styles.d.ts +1 -0
  795. package/dist/components/sheet/SheetDescription/SheetDescription.styles.js +6 -0
  796. package/dist/components/sheet/SheetDescription/SheetDescription.styles.js.map +1 -0
  797. package/dist/components/sheet/SheetDescription/index.d.ts +1 -0
  798. package/dist/components/sheet/SheetFooter/SheetFooter.d.ts +2 -0
  799. package/dist/components/sheet/SheetFooter/SheetFooter.js +24 -0
  800. package/dist/components/sheet/SheetFooter/SheetFooter.js.map +1 -0
  801. package/dist/components/sheet/SheetFooter/index.d.ts +1 -0
  802. package/dist/components/sheet/SheetHeader/SheetHeader.d.ts +2 -0
  803. package/dist/components/sheet/SheetHeader/SheetHeader.js +24 -0
  804. package/dist/components/sheet/SheetHeader/SheetHeader.js.map +1 -0
  805. package/dist/components/sheet/SheetHeader/index.d.ts +1 -0
  806. package/dist/components/sheet/SheetTitle/SheetTitle.d.ts +3 -0
  807. package/dist/components/sheet/SheetTitle/SheetTitle.js +25 -0
  808. package/dist/components/sheet/SheetTitle/SheetTitle.js.map +1 -0
  809. package/dist/components/sheet/SheetTitle/SheetTitle.styles.d.ts +1 -0
  810. package/dist/components/sheet/SheetTitle/SheetTitle.styles.js +6 -0
  811. package/dist/components/sheet/SheetTitle/SheetTitle.styles.js.map +1 -0
  812. package/dist/components/sheet/SheetTitle/index.d.ts +1 -0
  813. package/dist/components/sheet/SheetTrigger/SheetTrigger.d.ts +8 -0
  814. package/dist/components/sheet/SheetTrigger/SheetTrigger.js +32 -0
  815. package/dist/components/sheet/SheetTrigger/SheetTrigger.js.map +1 -0
  816. package/dist/components/sheet/SheetTrigger/index.d.ts +1 -0
  817. package/dist/components/sheet/index.d.ts +9 -0
  818. package/dist/components/sheet/index.js +9 -0
  819. package/dist/components/sheet/sheet.types.d.ts +19 -0
  820. package/dist/components/sidebar/Sidebar/Sidebar.js +14 -6
  821. package/dist/components/sidebar/Sidebar/Sidebar.js.map +1 -1
  822. package/dist/components/sidebar/SidebarContent/SidebarContent.js +8 -3
  823. package/dist/components/sidebar/SidebarContent/SidebarContent.js.map +1 -1
  824. package/dist/components/sidebar/SidebarFooter/SidebarFooter.js +8 -3
  825. package/dist/components/sidebar/SidebarFooter/SidebarFooter.js.map +1 -1
  826. package/dist/components/sidebar/SidebarGroup/SidebarGroup.js +8 -3
  827. package/dist/components/sidebar/SidebarGroup/SidebarGroup.js.map +1 -1
  828. package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js +3 -0
  829. package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js.map +1 -1
  830. package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js +8 -3
  831. package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js.map +1 -1
  832. package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js +3 -0
  833. package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js.map +1 -1
  834. package/dist/components/sidebar/SidebarHeader/SidebarHeader.js +8 -3
  835. package/dist/components/sidebar/SidebarHeader/SidebarHeader.js.map +1 -1
  836. package/dist/components/sidebar/SidebarInput/SidebarInput.js +3 -0
  837. package/dist/components/sidebar/SidebarInput/SidebarInput.js.map +1 -1
  838. package/dist/components/sidebar/SidebarInset/SidebarInset.js +8 -3
  839. package/dist/components/sidebar/SidebarInset/SidebarInset.js.map +1 -1
  840. package/dist/components/sidebar/SidebarMenu/SidebarMenu.js +8 -3
  841. package/dist/components/sidebar/SidebarMenu/SidebarMenu.js.map +1 -1
  842. package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js +8 -3
  843. package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js.map +1 -1
  844. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js +6 -0
  845. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js.map +1 -1
  846. package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js +8 -3
  847. package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js.map +1 -1
  848. package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js +8 -3
  849. package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js.map +1 -1
  850. package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js +8 -3
  851. package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js.map +1 -1
  852. package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js +3 -0
  853. package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js.map +1 -1
  854. package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js +8 -3
  855. package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js.map +1 -1
  856. package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js +1 -1
  857. package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js.map +1 -1
  858. package/dist/components/sidebar/SidebarProvider/SidebarProvider.js +30 -27
  859. package/dist/components/sidebar/SidebarProvider/SidebarProvider.js.map +1 -1
  860. package/dist/components/sidebar/SidebarProvider/useIsMobile.d.ts +10 -0
  861. package/dist/components/sidebar/SidebarProvider/useIsMobile.js +14 -0
  862. package/dist/components/sidebar/SidebarProvider/useIsMobile.js.map +1 -0
  863. package/dist/components/sidebar/SidebarRail/SidebarRail.js +8 -3
  864. package/dist/components/sidebar/SidebarRail/SidebarRail.js.map +1 -1
  865. package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js +3 -0
  866. package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js.map +1 -1
  867. package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js +3 -0
  868. package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js.map +1 -1
  869. package/dist/components/skeleton/Skeleton.js +8 -3
  870. package/dist/components/skeleton/Skeleton.js.map +1 -1
  871. package/dist/components/slider/Slider/Slider.context.js +1 -1
  872. package/dist/components/slider/Slider/Slider.context.js.map +1 -1
  873. package/dist/components/slider/Slider/Slider.js +3 -0
  874. package/dist/components/slider/Slider/Slider.js.map +1 -1
  875. package/dist/components/slider/SliderControl/SliderControl.js +4 -1
  876. package/dist/components/slider/SliderControl/SliderControl.js.map +1 -1
  877. package/dist/components/slider/SliderIndicator/SliderIndicator.js +3 -0
  878. package/dist/components/slider/SliderIndicator/SliderIndicator.js.map +1 -1
  879. package/dist/components/slider/SliderThumb/SliderThumb.js +18 -3
  880. package/dist/components/slider/SliderThumb/SliderThumb.js.map +1 -1
  881. package/dist/components/slider/SliderThumb/useSliderThumb.d.ts +1 -0
  882. package/dist/components/slider/SliderThumb/useSliderThumb.js +3 -2
  883. package/dist/components/slider/SliderThumb/useSliderThumb.js.map +1 -1
  884. package/dist/components/slider/SliderTrack/SliderTrack.js +3 -0
  885. package/dist/components/slider/SliderTrack/SliderTrack.js.map +1 -1
  886. package/dist/components/spinner/Spinner.js +3 -0
  887. package/dist/components/spinner/Spinner.js.map +1 -1
  888. package/dist/components/switch/Switch.js +7 -0
  889. package/dist/components/switch/Switch.js.map +1 -1
  890. package/dist/components/tabs/Tabs/Tabs.context.js +1 -1
  891. package/dist/components/tabs/Tabs/Tabs.context.js.map +1 -1
  892. package/dist/components/tabs/Tabs/useTabsKeyboard.d.ts +7 -11
  893. package/dist/components/tabs/Tabs/useTabsKeyboard.js +8 -42
  894. package/dist/components/tabs/Tabs/useTabsKeyboard.js.map +1 -1
  895. package/dist/components/tabs/TabsList/TabsList.context.js +1 -1
  896. package/dist/components/tabs/TabsList/TabsList.context.js.map +1 -1
  897. package/dist/components/tabs/TabsList/TabsList.js +10 -10
  898. package/dist/components/tabs/TabsList/TabsList.js.map +1 -1
  899. package/dist/components/tabs/TabsTrigger/TabsTrigger.js +8 -8
  900. package/dist/components/tabs/TabsTrigger/TabsTrigger.js.map +1 -1
  901. package/dist/components/textarea/Textarea.js +8 -3
  902. package/dist/components/textarea/Textarea.js.map +1 -1
  903. package/dist/components/time-picker/TimePicker/create-change-event-details.d.ts +1 -2
  904. package/dist/components/time-picker/TimePicker/create-change-event-details.js +4 -20
  905. package/dist/components/time-picker/TimePicker/create-change-event-details.js.map +1 -1
  906. package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js +1 -3
  907. package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js.map +1 -1
  908. package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.d.ts +34 -0
  909. package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.js +43 -0
  910. package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.js.map +1 -0
  911. package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js +34 -59
  912. package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js.map +1 -1
  913. package/dist/components/toast/Toast/Toast.d.ts +8 -2
  914. package/dist/components/toast/Toast/Toast.js +92 -146
  915. package/dist/components/toast/Toast/Toast.js.map +1 -1
  916. package/dist/components/toast/Toast/Toast.types.d.ts +1 -1
  917. package/dist/components/toast/Toast/Toast.types.js.map +1 -1
  918. package/dist/components/toast/Toast/Toast.utils.d.ts +47 -0
  919. package/dist/components/toast/Toast/Toast.utils.js +47 -0
  920. package/dist/components/toast/Toast/Toast.utils.js.map +1 -0
  921. package/dist/components/toast/Toast/ToastActionButton.d.ts +16 -0
  922. package/dist/components/toast/Toast/ToastActionButton.js +27 -0
  923. package/dist/components/toast/Toast/ToastActionButton.js.map +1 -0
  924. package/dist/components/toast/Toast/ToastActions.d.ts +12 -0
  925. package/dist/components/toast/Toast/ToastActions.js +65 -0
  926. package/dist/components/toast/Toast/ToastActions.js.map +1 -0
  927. package/dist/components/toast/Toast/ToastCloseButton.d.ts +12 -0
  928. package/dist/components/toast/Toast/ToastCloseButton.js +26 -0
  929. package/dist/components/toast/Toast/ToastCloseButton.js.map +1 -0
  930. package/dist/components/toast/Toast/ToastContent.d.ts +8 -0
  931. package/dist/components/toast/Toast/ToastContent.js +30 -0
  932. package/dist/components/toast/Toast/ToastContent.js.map +1 -0
  933. package/dist/components/toast/Toast/ToastIcon.d.ts +14 -0
  934. package/dist/components/toast/Toast/ToastIcon.js +36 -0
  935. package/dist/components/toast/Toast/ToastIcon.js.map +1 -0
  936. package/dist/components/toast/Toast/useToastLifecycle.d.ts +29 -0
  937. package/dist/components/toast/Toast/useToastLifecycle.js +30 -0
  938. package/dist/components/toast/Toast/useToastLifecycle.js.map +1 -0
  939. package/dist/components/toast/Toaster/ToastViewport.d.ts +33 -0
  940. package/dist/components/toast/Toaster/ToastViewport.js +73 -0
  941. package/dist/components/toast/Toaster/ToastViewport.js.map +1 -0
  942. package/dist/components/toast/Toaster/Toaster.d.ts +4 -0
  943. package/dist/components/toast/Toaster/Toaster.js +64 -82
  944. package/dist/components/toast/Toaster/Toaster.js.map +1 -1
  945. package/dist/components/toast/Toaster/Toaster.utils.d.ts +15 -0
  946. package/dist/components/toast/Toaster/Toaster.utils.js +4 -1
  947. package/dist/components/toast/Toaster/Toaster.utils.js.map +1 -1
  948. package/dist/components/toast/Toaster/useToaster.d.ts +28 -0
  949. package/dist/components/toast/Toaster/useToaster.js +26 -0
  950. package/dist/components/toast/Toaster/useToaster.js.map +1 -0
  951. package/dist/components/toast/index.js +4 -3
  952. package/dist/components/toast/state/promise-toast.d.ts +17 -0
  953. package/dist/components/toast/state/promise-toast.js +33 -0
  954. package/dist/components/toast/state/promise-toast.js.map +1 -0
  955. package/dist/components/toast/state/store.d.ts +21 -0
  956. package/dist/components/toast/state/store.js +45 -0
  957. package/dist/components/toast/state/store.js.map +1 -0
  958. package/dist/components/toast/state/toast.d.ts +9 -10
  959. package/dist/components/toast/state/toast.js +30 -89
  960. package/dist/components/toast/state/toast.js.map +1 -1
  961. package/dist/components/toggle/Toggle/Toggle.js +2 -1
  962. package/dist/components/toggle/Toggle/Toggle.js.map +1 -1
  963. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js +1 -1
  964. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -1
  965. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.d.ts +6 -2
  966. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js +4 -20
  967. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js.map +1 -1
  968. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.d.ts +7 -10
  969. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js +10 -40
  970. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js.map +1 -1
  971. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js +5 -5
  972. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -1
  973. package/dist/components/tooltip/TooltipContent/TooltipContent.js +1 -1
  974. package/dist/components/tooltip/TooltipContent/TooltipContent.utils.d.ts +5 -49
  975. package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js +10 -39
  976. package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js.map +1 -1
  977. package/dist/components/tooltip/TooltipContent/usePresence.d.ts +27 -0
  978. package/dist/components/tooltip/TooltipContent/usePresence.js +24 -0
  979. package/dist/components/tooltip/TooltipContent/usePresence.js.map +1 -0
  980. package/dist/components/tooltip/TooltipContent/useTooltipContent.js +27 -39
  981. package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
  982. package/dist/hooks/useFontLoader.js +1 -1
  983. package/dist/hooks/useFontLoader.js.map +1 -1
  984. package/dist/hooks/useScrollEdges.d.ts +3 -0
  985. package/dist/hooks/useScrollEdges.js +18 -16
  986. package/dist/hooks/useScrollEdges.js.map +1 -1
  987. package/dist/hooks/useScrollLock.js +13 -16
  988. package/dist/hooks/useScrollLock.js.map +1 -1
  989. package/dist/index.d.ts +9 -0
  990. package/dist/index.js +328 -260
  991. package/dist/lib/positioner/index.d.ts +2 -0
  992. package/dist/lib/positioner/utils/dom.d.ts +8 -0
  993. package/dist/lib/positioner/utils/dom.js +1 -1
  994. package/dist/lib/positioner/utils/dom.js.map +1 -1
  995. package/dist/lib/positioner/utils/floating.d.ts +25 -0
  996. package/dist/lib/positioner/utils/floating.js +42 -0
  997. package/dist/lib/positioner/utils/floating.js.map +1 -0
  998. package/dist/types/props.types.d.ts +1 -1
  999. package/dist/ui.css +1 -1
  1000. package/dist/utils/call-event-handler.d.ts +16 -0
  1001. package/dist/utils/call-event-handler.js +15 -0
  1002. package/dist/utils/call-event-handler.js.map +1 -0
  1003. package/dist/utils/clsx.d.ts +1 -1
  1004. package/dist/utils/clsx.js +2 -7
  1005. package/dist/utils/create-change-event-details.d.ts +25 -0
  1006. package/dist/utils/create-change-event-details.js +25 -0
  1007. package/dist/utils/create-change-event-details.js.map +1 -0
  1008. package/dist/utils/get-style.d.ts +7 -9
  1009. package/dist/utils/get-style.js +16 -0
  1010. package/dist/utils/get-style.js.map +1 -0
  1011. package/dist/utils/index.d.ts +8 -0
  1012. package/dist/utils/index.js +7 -1
  1013. package/dist/utils/number.d.ts +7 -0
  1014. package/dist/utils/number.js +8 -0
  1015. package/dist/utils/number.js.map +1 -0
  1016. package/dist/utils/roving-navigation.d.ts +64 -0
  1017. package/dist/utils/roving-navigation.js +66 -0
  1018. package/dist/utils/roving-navigation.js.map +1 -0
  1019. package/dist/utils/string.d.ts +17 -0
  1020. package/dist/utils/string.js +11 -0
  1021. package/dist/utils/string.js.map +1 -0
  1022. package/package.json +18 -7
  1023. package/dist/components/carousel/Carousel/Carousel.utils.d.ts +0 -0
  1024. package/dist/components/field/FieldError/useFieldError.d.ts +0 -0
  1025. package/dist/components/tabs/Tabs/call-event-handler.d.ts +0 -5
  1026. package/dist/components/tabs/Tabs/call-event-handler.js +0 -9
  1027. package/dist/components/tabs/Tabs/call-event-handler.js.map +0 -1
  1028. package/dist/components/toggle-group/call-event-handler.d.ts +0 -5
  1029. package/dist/components/toggle-group/call-event-handler.js +0 -9
  1030. package/dist/components/toggle-group/call-event-handler.js.map +0 -1
  1031. package/dist/utils/clsx.js.map +0 -1
@@ -1,45 +1,15 @@
1
+ import { createRovingNavigation as e } from "../../../utils/roving-navigation.js";
1
2
  //#region src/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.ts
2
- var e = /* @__PURE__ */ new Set([
3
- "ArrowLeft",
4
- "ArrowRight",
5
- "ArrowUp",
6
- "ArrowDown",
7
- "Home",
8
- "End"
9
- ]);
10
3
  function t(t) {
11
- return { handleKeyDown: (n) => {
12
- if (t.disabled() || !e.has(n.key)) return;
13
- let r = document.activeElement, i = t.getItems().filter((e) => !e.disabled());
14
- if (i.length === 0) return;
15
- let a = i.findIndex((e) => e.element === r);
16
- if (a === -1) return;
17
- let o = t.orientation() === "vertical", s = t.dir(), c = s === "rtl" || s !== "ltr" && typeof document < "u" && getComputedStyle(n.currentTarget).direction === "rtl", l;
18
- switch (n.key) {
19
- case "Home":
20
- l = 0;
21
- break;
22
- case "End":
23
- l = i.length - 1;
24
- break;
25
- case "ArrowLeft":
26
- if (o) return;
27
- l = a + (c ? 1 : -1);
28
- break;
29
- case "ArrowRight":
30
- if (o) return;
31
- l = a + (c ? -1 : 1);
32
- break;
33
- case "ArrowUp":
34
- if (!o) return;
35
- l = a - 1;
36
- break;
37
- case "ArrowDown":
38
- if (!o) return;
39
- l = a + 1;
40
- }
41
- l !== void 0 && (n.preventDefault(), l = t.loopFocus() ? (l + i.length) % i.length : Math.min(i.length - 1, Math.max(0, l)), i[l].element.focus(), t.setHighlightedValue(i[l].value));
42
- } };
4
+ return e({
5
+ getItems: () => t.getItems(),
6
+ orientation: t.orientation,
7
+ dir: t.dir,
8
+ loop: t.loopFocus,
9
+ disabled: t.disabled,
10
+ getDirectionElement: (e) => e.currentTarget,
11
+ onHighlight: t.setHighlightedValue
12
+ });
43
13
  }
44
14
  //#endregion
45
15
  export { t as useToggleGroupKeyboard };
@@ -1 +1 @@
1
- {"version":3,"file":"useToggleGroupKeyboard.js","names":["NAV_KEYS","useToggleGroupKeyboard","ctx","e","activeEl","items","item","currentIndex","isVertical","dir","isRTL","nextIndex"],"sources":["../../../../src/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.ts"],"sourcesContent":["import type {\n ToggleGroupContextValue,\n ToggleGroupValue,\n} from \"./ToggleGroup.types\";\n\n/** 键盘导航按键:方向键 + Home/End(对齐 base-ui CompositeRoot 的 enableHomeAndEndKeys) */\nconst NAV_KEYS = new Set([\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"End\",\n]);\n\n/**\n * ToggleGroup 的 roving focus 键盘导航(纯逻辑,可独立单测)。\n *\n * 方向映射:\n * - horizontal + ltr: ArrowRight → next, ArrowLeft → prev\n * - horizontal + rtl: 左右反转\n * - vertical: ArrowDown → next, ArrowUp → prev\n * - Home → 第一个,End → 最后一个\n * - loopFocus=true 环绕,false 边界停止;跳过 disabled 的 item\n *\n * 只有焦点已经在某个 item 上时才接管按键,避免影响外部其它元素;\n * 移动焦点后由 item 的 onFocus 更新高亮。\n */\nexport function useToggleGroupKeyboard<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(ctx: ToggleGroupContextValue<TValue>) {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (ctx.disabled()) return;\n if (!NAV_KEYS.has(e.key)) return;\n\n const activeEl = document.activeElement as HTMLElement | null;\n const items = ctx.getItems().filter((item) => !item.disabled());\n if (items.length === 0) return;\n\n const currentIndex = items.findIndex((item) => item.element === activeEl);\n if (currentIndex === -1) return;\n\n const isVertical = ctx.orientation() === \"vertical\";\n // dir 未指定/auto 时,按根元素的实际书写方向判断(兼容祖先节点上的 dir)\n const dir = ctx.dir();\n const isRTL =\n dir === \"rtl\" ||\n (dir !== \"ltr\" &&\n typeof document !== \"undefined\" &&\n getComputedStyle(e.currentTarget as Element).direction === \"rtl\");\n\n let nextIndex: number | undefined;\n switch (e.key) {\n case \"Home\":\n nextIndex = 0;\n break;\n case \"End\":\n nextIndex = items.length - 1;\n break;\n case \"ArrowLeft\":\n if (isVertical) return;\n nextIndex = currentIndex + (isRTL ? 1 : -1);\n break;\n case \"ArrowRight\":\n if (isVertical) return;\n nextIndex = currentIndex + (isRTL ? -1 : 1);\n break;\n case \"ArrowUp\":\n if (!isVertical) return;\n nextIndex = currentIndex - 1;\n break;\n case \"ArrowDown\":\n if (!isVertical) return;\n nextIndex = currentIndex + 1;\n break;\n }\n\n if (nextIndex === undefined) return;\n\n // 方向键与当前布局匹配,接管默认滚动行为\n e.preventDefault();\n\n if (ctx.loopFocus()) {\n nextIndex = (nextIndex + items.length) % items.length;\n } else {\n nextIndex = Math.min(items.length - 1, Math.max(0, nextIndex));\n }\n\n items[nextIndex].element.focus();\n ctx.setHighlightedValue(items[nextIndex].value);\n };\n\n return { handleKeyDown };\n}\n"],"mappings":";AAMA,IAAMA,oBAAW,IAAI,IAAI;CACvB;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAeD,SAAgBC,EAEd,GAAsC;CA8DtC,OAAO,EAAE,gBA7Dc,MAAqB;EAE1C,IADIC,EAAI,SAAS,KACb,CAACF,EAAS,IAAIG,EAAE,GAAG,GAAG;EAE1B,IAAMC,IAAW,SAAS,eACpBC,IAAQH,EAAI,SAAS,CAAC,CAAC,QAAQ,MAAS,CAACI,EAAK,SAAS,CAAC;EAC9D,IAAID,EAAM,WAAW,GAAG;EAExB,IAAME,IAAeF,EAAM,WAAW,MAASC,EAAK,YAAYF,CAAQ;EACxE,IAAIG,MAAiB,IAAI;EAEzB,IAAMC,IAAaN,EAAI,YAAY,MAAM,YAEnCO,IAAMP,EAAI,IAAI,GACdQ,IACJD,MAAQ,SACPA,MAAQ,SACP,OAAO,WAAa,OACpB,iBAAiBN,EAAE,aAAwB,CAAC,CAAC,cAAc,OAE3DQ;EACJ,QAAQR,EAAE,KAAV;GACE,KAAK;IACH,IAAY;IACZ;GACF,KAAK;IACH,IAAYE,EAAM,SAAS;IAC3B;GACF,KAAK;IACH,IAAIG,GAAY;IAChB,IAAYD,KAAgBG,IAAQ,IAAI;IACxC;GACF,KAAK;IACH,IAAIF,GAAY;IAChB,IAAYD,KAAgBG,IAAQ,KAAK;IACzC;GACF,KAAK;IACH,IAAI,CAACF,GAAY;IACjB,IAAYD,IAAe;IAC3B;GACF,KAAK;IACH,IAAI,CAACC,GAAY;IACjB,IAAYD,IAAe;EAE/B;EAEA,AAAII,MAAc,KAAA,MAGlBR,EAAE,eAAe,GAEjB,AAGEQ,IAHET,EAAI,UAAU,KACHS,IAAYN,EAAM,UAAUA,EAAM,SAEnC,KAAK,IAAIA,EAAM,SAAS,GAAG,KAAK,IAAI,GAAGM,CAAS,CAAC,GAG/DN,EAAMM,EAAU,CAAC,QAAQ,MAAM,GAC/BT,EAAI,oBAAoBG,EAAMM,EAAU,CAAC,KAAK;CAChD,EAEuB;AACzB"}
1
+ {"version":3,"file":"useToggleGroupKeyboard.js","names":["useToggleGroupKeyboard","createRovingNavigation","ctx","event"],"sources":["../../../../src/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.ts"],"sourcesContent":["import { createRovingNavigation } from \"~/utils\";\nimport type {\n ToggleGroupContextValue,\n ToggleGroupValue,\n} from \"./ToggleGroup.types\";\n\n/**\n * ToggleGroup 的 roving focus 键盘导航。\n *\n * 通用算法已抽到 `~/utils/roving-navigation`(与 Tabs 共用同一份),\n * 这里只接上 context,并补两处 ToggleGroup 特有语义:\n *\n * - 整组 `disabled` 时不接管任何按键;\n * - 判断书写方向时用 `event.currentTarget` 的实际 computed direction,\n * 这样祖先节点上的 `dir=\"rtl\"` 也能被正确识别(对齐 base-ui)。\n */\nexport function useToggleGroupKeyboard<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(ctx: ToggleGroupContextValue<TValue>) {\n return createRovingNavigation<TValue>({\n getItems: () => ctx.getItems(),\n orientation: ctx.orientation,\n dir: ctx.dir,\n loop: ctx.loopFocus,\n disabled: ctx.disabled,\n getDirectionElement: (event) => event.currentTarget as Element | null,\n onHighlight: ctx.setHighlightedValue,\n });\n}\n"],"mappings":";;AAgBA,SAAgBA,EAEd,GAAsC;CACtC,OAAOC,EAA+B;EACpC,gBAAgBC,EAAI,SAAS;EAC7B,aAAaA,EAAI;EACjB,KAAKA,EAAI;EACT,MAAMA,EAAI;EACV,UAAUA,EAAI;EACd,sBAAsB,MAAUC,EAAM;EACtC,aAAaD,EAAI;CACnB,CAAC;AACH"}
@@ -1,6 +1,6 @@
1
1
  import { clsx as e } from "../../../utils/clsx.js";
2
- import { toggleVariants as t } from "../../toggle/Toggle/Toggle.styles.js";
3
- import { callEventHandler as n } from "../call-event-handler.js";
2
+ import { callEventHandler as t } from "../../../utils/call-event-handler.js";
3
+ import { toggleVariants as n } from "../../toggle/Toggle/Toggle.styles.js";
4
4
  import { useToggleGroupContext as r } from "../ToggleGroup/ToggleGroup.context.js";
5
5
  import { toggleGroupItemVariants as i } from "./ToggleGroupItem.styles.js";
6
6
  import { delegateEvents as a, insert as o, mergeProps as s, spread as c, template as l, use as u } from "solid-js/web";
@@ -33,9 +33,9 @@ function g(a) {
33
33
  }), (() => {
34
34
  var r = h();
35
35
  return r.addEventListener("focus", (e) => {
36
- C() || l.setHighlightedValue(_.value), n(_.onFocus, e);
36
+ C() || l.setHighlightedValue(_.value), t(_.onFocus, e);
37
37
  }), r.$$click = (e) => {
38
- n(_.onClick, e), !e.defaultPrevented && !C() && l.toggleItem(_.value, e, e.currentTarget);
38
+ t(_.onClick, e), !e.defaultPrevented && !C() && l.toggleItem(_.value, e, e.currentTarget);
39
39
  }, u((e) => {
40
40
  y = e;
41
41
  }, r), c(r, s({
@@ -70,7 +70,7 @@ function g(a) {
70
70
  return S();
71
71
  },
72
72
  get class() {
73
- return e(t({
73
+ return e(n({
74
74
  variant: b(),
75
75
  size: x()
76
76
  }), i(), _.class);
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleGroupItem.js","names":["mergeProps","onCleanup","onMount","splitProps","JSX","clsx","toggleVariants","callEventHandler","useToggleGroupContext","ToggleGroupValue","toggleGroupItemVariants","ToggleGroupItemProps","ToggleGroupItem","props","TValue","Element","ctx","merged","type","const","local","rest","elementRef","HTMLButtonElement","variant","size","pressed","isPressed","value","disabled","tabIndex","highlighted","highlightedValue","isUsable","undefined","isFirstEnabled","registerItem","element","_el$","_tmpl$","addEventListener","e","setHighlightedValue","onFocus","$$click","onClick","defaultPrevented","toggleItem","currentTarget","_$use","el","_$spread","_$mergeProps","tabindex","data-variant","data-size","data-spacing","spacing","data-pressed","data-disabled","data-state","aria-pressed","class","classList","_$insert","children","_$delegateEvents","mergeProps","_$mergeProps","_$delegateEvents","mergeProps$1","_tmpl$","ToggleGroupItem","ctx","useToggleGroupContext","merged","props","local","rest","splitProps","elementRef","variant","size","pressed","disabled","tabIndex","highlighted","onMount","_el$","callEventHandler","use","el","spread","mergeProps","\"class\"","clsx","toggleVariants","toggleGroupItemVariants","insert","delegateEvents"],"sources":["../../../../src/components/toggle-group/ToggleGroupItem/ToggleGroupItem.tsx"],"sourcesContent":["import { mergeProps, onCleanup, onMount, splitProps, type JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { toggleVariants } from \"~/components/toggle/Toggle/Toggle.styles\";\nimport { callEventHandler } from \"../call-event-handler\";\nimport { useToggleGroupContext } from \"../ToggleGroup/ToggleGroup.context\";\nimport type { ToggleGroupValue } from \"../ToggleGroup/ToggleGroup.types\";\nimport { toggleGroupItemVariants } from \"./ToggleGroupItem.styles\";\nimport type { ToggleGroupItemProps } from \"./ToggleGroupItem.types\";\n\n/**\n * ToggleGroupItem:ToggleGroup 内的两态按钮。\n *\n * - 选中值由 ToggleGroup 统一持有,点击通过 `ctx.toggleItem` 触发变更\n * - disabled 继承整组状态,可在 item 上单独禁用\n * - roving tabindex:整组只有一个 tab 停靠点,方向键在同组内移动焦点\n */\nexport function ToggleGroupItem<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(props: ToggleGroupItemProps<TValue>): JSX.Element {\n // context 用宽值类型读取:item 无法从父级推导 group 的值类型,\n // 自己的 TValue 始终可以传给宽类型参数\n const ctx = useToggleGroupContext(\"ToggleGroupItem\");\n const merged = mergeProps({ type: \"button\" as const }, props);\n\n const [local, rest] = splitProps(merged, [\n \"value\",\n \"variant\",\n \"size\",\n \"class\",\n \"classList\",\n \"disabled\",\n \"type\",\n \"onClick\",\n \"onFocus\",\n \"children\",\n ]);\n\n let elementRef: HTMLButtonElement | undefined;\n\n // 组级未显式指定 variant/size 时,item 可单独覆盖\n const variant = () => ctx.variant() ?? local.variant ?? \"default\";\n const size = () => ctx.size() ?? local.size ?? \"default\";\n const pressed = () => ctx.isPressed(local.value);\n const disabled = () => ctx.disabled() || !!local.disabled;\n\n // roving tabindex:高亮 item 持 0;高亮缺失或指向不可用 item(disabled/卸载)时,\n // 首个可用 item 持 0 作为键盘起点,避免整组键盘不可达\n const tabIndex = () => {\n if (disabled()) return -1;\n const highlighted = ctx.highlightedValue();\n if (highlighted === local.value && ctx.isUsable(local.value)) return 0;\n if (\n (highlighted === undefined || !ctx.isUsable(highlighted)) &&\n ctx.isFirstEnabled(local.value)\n ) {\n return 0;\n }\n return -1;\n };\n\n onMount(() => {\n onCleanup(\n ctx.registerItem({\n value: local.value,\n disabled,\n element: elementRef!,\n }),\n );\n });\n\n return (\n <button\n ref={(el) => {\n elementRef = el;\n }}\n type={local.type}\n disabled={disabled()}\n tabindex={tabIndex()}\n data-slot=\"toggle-group-item\"\n data-variant={variant()}\n data-size={size()}\n data-spacing={ctx.spacing()}\n data-pressed={pressed() ? \"\" : null}\n data-disabled={disabled() ? \"\" : null}\n data-state={pressed() ? \"on\" : \"off\"}\n aria-pressed={pressed()}\n class={clsx(\n toggleVariants({ variant: variant(), size: size() }),\n toggleGroupItemVariants(),\n local.class,\n )}\n classList={local.classList}\n onClick={(e) => {\n // 用户回调优先,可用 preventDefault() 阻止本次选中\n callEventHandler(local.onClick, e);\n if (!e.defaultPrevented && !disabled()) {\n ctx.toggleItem(local.value, e, e.currentTarget);\n }\n }}\n onFocus={(e) => {\n // 聚焦更新高亮(roving focus 起点)\n if (!disabled()) ctx.setHighlightedValue(local.value);\n callEventHandler(local.onFocus, e);\n }}\n {...rest}\n >\n {local.children}\n </button>\n );\n}\n"],"mappings":";;;;;;;;;AAgBA,SAAgBY,EAEdC,GAAkD;CAGlD,IAAMG,IAAMR,EAAsB,iBAAiB,GAC7CS,IAASjB,EAAW,EAAEkB,MAAM,SAAkB,GAAGL,CAAK,GAEtD,CAACO,GAAOC,KAAQlB,EAAWc,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEGK,GAGEE,UAAgBR,EAAIQ,QAAQ,KAAKJ,EAAMI,WAAW,WAClDC,UAAaT,EAAIS,KAAK,KAAKL,EAAMK,QAAQ,WACzCC,UAAgBV,EAAIW,UAAUP,EAAMQ,KAAK,GACzCC,UAAiBb,EAAIa,SAAS,KAAK,CAAC,CAACT,EAAMS,UAI3CC,UAAiB;EACrB,IAAID,EAAS,GAAG,OAAO;EACvB,IAAME,IAAcf,EAAIgB,iBAAiB;EAQzC,OAPID,MAAgBX,EAAMQ,SAASZ,EAAIiB,SAASb,EAAMQ,KAAK,MAExDG,MAAgBG,KAAAA,KAAa,CAAClB,EAAIiB,SAASF,CAAW,MACvDf,EAAImB,eAAef,EAAMQ,KAAK,IAEvB,IAEF;CACT;CAYA,OAVA1B,QAAc;EACZD,EACEe,EAAIoB,aAAa;GACfR,OAAOR,EAAMQ;GACbC;GACAQ,SAASf;EACX,CAAC,CACH;CACF,CAAC,UAED;EAAA,IAAAgB,IAAAC,EAAA;EAoCmB,OApCnBD,EAAAE,iBAAA,UA6BcC,MAAM;GAGdlC,AADKsB,EAAS,KAAGb,EAAI0B,oBAAoBtB,EAAMQ,KAAK,GACpDrB,EAAiBa,EAAMuB,SAASF,CAAC;EACnC,CAAC,GAAAH,EAAAM,WAXSH,MAAM;GAGd,AADAlC,EAAiBa,EAAMyB,SAASJ,CAAC,GAC7B,CAACA,EAAEK,oBAAoB,CAACjB,EAAS,KACnCb,EAAI+B,WAAW3B,EAAMQ,OAAOa,GAAGA,EAAEO,aAAa;EAElD,GAACC,GA1BKC,MAAO;GACX5B,IAAa4B;EACf,GAACZ,CAAA,GAAAa,EAAAb,GAAAc,EAAA;GAAA,IACDlC,OAAI;IAAA,OAAEE,EAAMF;GAAI;GAAA,IAChBW,WAAQ;IAAA,OAAEA,EAAS;GAAC;GAAA,IACpBwB,WAAQ;IAAA,OAAEvB,EAAS;GAAC;GAAA,IAAA,iBAAA;IAAA,OAENN,EAAQ;GAAC;GAAA,IAAA,cAAA;IAAA,OACZC,EAAK;GAAC;GAAA,IAAA,iBAAA;IAAA,OACHT,EAAIyC,QAAQ;GAAC;GAAA,IAAA,iBAAA;IAAA,OACb/B,EAAQ,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OACpBG,EAAS,IAAI,KAAK;GAAI;GAAA,IAAA,eAAA;IAAA,OACzBH,EAAQ,IAAI,OAAO;GAAK;GAAA,IAAA,iBAAA;IAAA,OACtBA,EAAQ;GAAC;GAAA,IAAAoE,QAAA;IAAA,OAChBzF,EACLC,EAAe;KAAEkB,SAASA,EAAQ;KAAGC,MAAMA,EAAK;IAAE,CAAC,GACnDf,EAAwB,GACxBU,EAAM0C,KACR;GAAC;GAAA,IACDC,YAAS;IAAA,OAAE3C,EAAM2C;GAAS;EAAA,GAatB1C,CAAI,GAAA,IAAA,EAAA,GAAA2C,EAAA1B,SAEPlB,EAAM6C,QAAQ,GAAA3B;CAAA,EAAA,CAAA;AAGrB;AAAC4B,EAAA,CAAA,OAAA,CAAA"}
1
+ {"version":3,"file":"ToggleGroupItem.js","names":["mergeProps","onCleanup","onMount","splitProps","JSX","clsx","toggleVariants","callEventHandler","useToggleGroupContext","ToggleGroupValue","toggleGroupItemVariants","ToggleGroupItemProps","ToggleGroupItem","props","TValue","Element","ctx","merged","type","const","local","rest","elementRef","HTMLButtonElement","variant","size","pressed","isPressed","value","disabled","tabIndex","highlighted","highlightedValue","isUsable","undefined","isFirstEnabled","registerItem","element","_el$","_tmpl$","addEventListener","e","setHighlightedValue","onFocus","$$click","onClick","defaultPrevented","toggleItem","currentTarget","_$use","el","_$spread","_$mergeProps","tabindex","data-variant","data-size","data-spacing","spacing","data-pressed","data-disabled","data-state","aria-pressed","class","classList","_$insert","children","_$delegateEvents","mergeProps","_$mergeProps","_$delegateEvents","mergeProps$1","_tmpl$","ToggleGroupItem","ctx","useToggleGroupContext","merged","props","local","rest","splitProps","elementRef","variant","size","pressed","disabled","tabIndex","highlighted","onMount","_el$","callEventHandler","use","el","spread","mergeProps","\"class\"","clsx","toggleVariants","toggleGroupItemVariants","insert","delegateEvents"],"sources":["../../../../src/components/toggle-group/ToggleGroupItem/ToggleGroupItem.tsx"],"sourcesContent":["import { mergeProps, onCleanup, onMount, splitProps, type JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { toggleVariants } from \"~/components/toggle/Toggle/Toggle.styles\";\nimport { callEventHandler } from \"~/utils\";\nimport { useToggleGroupContext } from \"../ToggleGroup/ToggleGroup.context\";\nimport type { ToggleGroupValue } from \"../ToggleGroup/ToggleGroup.types\";\nimport { toggleGroupItemVariants } from \"./ToggleGroupItem.styles\";\nimport type { ToggleGroupItemProps } from \"./ToggleGroupItem.types\";\n\n/**\n * ToggleGroupItem:ToggleGroup 内的两态按钮。\n *\n * - 选中值由 ToggleGroup 统一持有,点击通过 `ctx.toggleItem` 触发变更\n * - disabled 继承整组状态,可在 item 上单独禁用\n * - roving tabindex:整组只有一个 tab 停靠点,方向键在同组内移动焦点\n */\nexport function ToggleGroupItem<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(props: ToggleGroupItemProps<TValue>): JSX.Element {\n // context 用宽值类型读取:item 无法从父级推导 group 的值类型,\n // 自己的 TValue 始终可以传给宽类型参数\n const ctx = useToggleGroupContext(\"ToggleGroupItem\");\n const merged = mergeProps({ type: \"button\" as const }, props);\n\n const [local, rest] = splitProps(merged, [\n \"value\",\n \"variant\",\n \"size\",\n \"class\",\n \"classList\",\n \"disabled\",\n \"type\",\n \"onClick\",\n \"onFocus\",\n \"children\",\n ]);\n\n let elementRef: HTMLButtonElement | undefined;\n\n // 组级未显式指定 variant/size 时,item 可单独覆盖\n const variant = () => ctx.variant() ?? local.variant ?? \"default\";\n const size = () => ctx.size() ?? local.size ?? \"default\";\n const pressed = () => ctx.isPressed(local.value);\n const disabled = () => ctx.disabled() || !!local.disabled;\n\n // roving tabindex:高亮 item 持 0;高亮缺失或指向不可用 item(disabled/卸载)时,\n // 首个可用 item 持 0 作为键盘起点,避免整组键盘不可达\n const tabIndex = () => {\n if (disabled()) return -1;\n const highlighted = ctx.highlightedValue();\n if (highlighted === local.value && ctx.isUsable(local.value)) return 0;\n if (\n (highlighted === undefined || !ctx.isUsable(highlighted)) &&\n ctx.isFirstEnabled(local.value)\n ) {\n return 0;\n }\n return -1;\n };\n\n onMount(() => {\n onCleanup(\n ctx.registerItem({\n value: local.value,\n disabled,\n element: elementRef!,\n }),\n );\n });\n\n return (\n <button\n ref={(el) => {\n elementRef = el;\n }}\n type={local.type}\n disabled={disabled()}\n tabindex={tabIndex()}\n data-slot=\"toggle-group-item\"\n data-variant={variant()}\n data-size={size()}\n data-spacing={ctx.spacing()}\n data-pressed={pressed() ? \"\" : null}\n data-disabled={disabled() ? \"\" : null}\n data-state={pressed() ? \"on\" : \"off\"}\n aria-pressed={pressed()}\n class={clsx(\n toggleVariants({ variant: variant(), size: size() }),\n toggleGroupItemVariants(),\n local.class,\n )}\n classList={local.classList}\n onClick={(e) => {\n // 用户回调优先,可用 preventDefault() 阻止本次选中\n callEventHandler(local.onClick, e);\n if (!e.defaultPrevented && !disabled()) {\n ctx.toggleItem(local.value, e, e.currentTarget);\n }\n }}\n onFocus={(e) => {\n // 聚焦更新高亮(roving focus 起点)\n if (!disabled()) ctx.setHighlightedValue(local.value);\n callEventHandler(local.onFocus, e);\n }}\n {...rest}\n >\n {local.children}\n </button>\n );\n}\n"],"mappings":";;;;;;;;;AAgBA,SAAgBY,EAEdC,GAAkD;CAGlD,IAAMG,IAAMR,EAAsB,iBAAiB,GAC7CS,IAASjB,EAAW,EAAEkB,MAAM,SAAkB,GAAGL,CAAK,GAEtD,CAACO,GAAOC,KAAQlB,EAAWc,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEGK,GAGEE,UAAgBR,EAAIQ,QAAQ,KAAKJ,EAAMI,WAAW,WAClDC,UAAaT,EAAIS,KAAK,KAAKL,EAAMK,QAAQ,WACzCC,UAAgBV,EAAIW,UAAUP,EAAMQ,KAAK,GACzCC,UAAiBb,EAAIa,SAAS,KAAK,CAAC,CAACT,EAAMS,UAI3CC,UAAiB;EACrB,IAAID,EAAS,GAAG,OAAO;EACvB,IAAME,IAAcf,EAAIgB,iBAAiB;EAQzC,OAPID,MAAgBX,EAAMQ,SAASZ,EAAIiB,SAASb,EAAMQ,KAAK,MAExDG,MAAgBG,KAAAA,KAAa,CAAClB,EAAIiB,SAASF,CAAW,MACvDf,EAAImB,eAAef,EAAMQ,KAAK,IAEvB,IAEF;CACT;CAYA,OAVA1B,QAAc;EACZD,EACEe,EAAIoB,aAAa;GACfR,OAAOR,EAAMQ;GACbC;GACAQ,SAASf;EACX,CAAC,CACH;CACF,CAAC,UAED;EAAA,IAAAgB,IAAAC,EAAA;EAoCmB,OApCnBD,EAAAE,iBAAA,UA6BcC,MAAM;GAGdlC,AADKsB,EAAS,KAAGb,EAAI0B,oBAAoBtB,EAAMQ,KAAK,GACpDrB,EAAiBa,EAAMuB,SAASF,CAAC;EACnC,CAAC,GAAAH,EAAAM,WAXSH,MAAM;GAGd,AADAlC,EAAiBa,EAAMyB,SAASJ,CAAC,GAC7B,CAACA,EAAEK,oBAAoB,CAACjB,EAAS,KACnCb,EAAI+B,WAAW3B,EAAMQ,OAAOa,GAAGA,EAAEO,aAAa;EAElD,GAACC,GA1BKC,MAAO;GACX5B,IAAa4B;EACf,GAACZ,CAAA,GAAAa,EAAAb,GAAAc,EAAA;GAAA,IACDlC,OAAI;IAAA,OAAEE,EAAMF;GAAI;GAAA,IAChBW,WAAQ;IAAA,OAAEA,EAAS;GAAC;GAAA,IACpBwB,WAAQ;IAAA,OAAEvB,EAAS;GAAC;GAAA,IAAA,iBAAA;IAAA,OAENN,EAAQ;GAAC;GAAA,IAAA,cAAA;IAAA,OACZC,EAAK;GAAC;GAAA,IAAA,iBAAA;IAAA,OACHT,EAAIyC,QAAQ;GAAC;GAAA,IAAA,iBAAA;IAAA,OACb/B,EAAQ,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OACpBG,EAAS,IAAI,KAAK;GAAI;GAAA,IAAA,eAAA;IAAA,OACzBH,EAAQ,IAAI,OAAO;GAAK;GAAA,IAAA,iBAAA;IAAA,OACtBA,EAAQ;GAAC;GAAA,IAAAoE,QAAA;IAAA,OAChBzF,EACLC,EAAe;KAAEkB,SAASA,EAAQ;KAAGC,MAAMA,EAAK;IAAE,CAAC,GACnDf,EAAwB,GACxBU,EAAM0C,KACR;GAAC;GAAA,IACDC,YAAS;IAAA,OAAE3C,EAAM2C;GAAS;EAAA,GAatB1C,CAAI,GAAA,IAAA,EAAA,GAAA2C,EAAA1B,SAEPlB,EAAM6C,QAAQ,GAAA3B;CAAA,EAAA,CAAA;AAGrB;AAAC4B,EAAA,CAAA,OAAA,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { clsx as e } from "../../../utils/clsx.js";
2
2
  import { getAlignment as t, getSide as n } from "../../../lib/positioner/core/placement.js";
3
- import { getTransformOrigin as r } from "./TooltipContent.utils.js";
3
+ import { getTransformOrigin as r } from "../../../lib/positioner/utils/floating.js";
4
4
  import { useTooltipContent as i } from "./useTooltipContent.js";
5
5
  import { TooltipContentContext as a } from "./TooltipContent.context.js";
6
6
  import { Portal as o, createComponent as s, effect as c, insert as l, mergeProps as u, setAttribute as d, spread as f, style as p, template as m, use as h } from "solid-js/web";
@@ -1,58 +1,14 @@
1
- import { Middleware, Placement, Side, Alignment } from '../../../lib';
2
- /**
3
- * 把 shadcn/Radix 风格的 side + align 拆分参数,转换成核心库统一用的
4
- * `Placement` 字符串(比如 side='top' + align='start' → 'top-start')。
5
- * align 是 'center'(默认对齐、不偏移)时不带后缀,直接是 side 本身。
6
- */
7
- export declare function toPhysicalSide(side: Side | "inline-start" | "inline-end", dir?: string): Side;
8
- export declare function toPlacement(side: Side | "inline-start" | "inline-end", align: Alignment | "center", dir?: string): Placement;
9
- /**
10
- * 根据最终生效的 placement,算出缩放动画应该以哪个点为锚点(CSS transform-origin)。
11
- * 锚点应该落在"贴近 trigger 的那条边"上——比如 placement 是 'top'(content 在
12
- * trigger 上方),锚点就该是 content 自己的底边,缩放动画看起来才会像是
13
- * "从 trigger 那里长出来",而不是原地放大缩小(默认的 transform-origin 是
14
- * 几何中心 50% 50%,视觉上和"从哪个方向冒出来"没有任何关联)。
15
- * 交叉轴(对齐方向)同理:align 是 start 就贴左/上边,end 就贴右/下边。
16
- */
17
- export declare function getTransformOrigin(placement: Placement): string;
1
+ import { Middleware } from '../../../lib';
2
+ export { toPhysicalSide, toPlacement, getTransformOrigin, } from '../../../lib';
18
3
  export interface BuildTooltipMiddlewareOptions {
19
4
  sideOffset: number;
20
- /** 沿交叉轴(对齐方向)的偏移,对应 offset middleware 的 crossAxis */
5
+ /** 沿交叉轴(对齐方向)的偏移,对应 offset middleware 的 crossAxis */
21
6
  alignOffset: number;
22
7
  collisionPadding: number;
23
8
  arrowElement: () => Element | undefined;
24
9
  }
25
10
  /**
26
- * Tooltip 定位管线的固定配方:
27
- *
28
- * 1. offset — 沿主轴保持 sideOffset 间距,沿交叉轴偏移 alignOffset
29
- * 2. flip — 主轴方向放不下就翻到对面(比如上方没空间就翻到下方)
30
- * 3. shift — 翻转后仍溢出,就在不换边的前提下贴边平移
31
- * 4. arrow — 算出箭头相对 content 的偏移,让它始终指向 trigger 中心
32
- * 5. hide — trigger 被自己的滚动容器完全裁掉时标记隐藏
33
- * 6. containingBlockOffset — 修正祖先元素 transform 等属性导致的 position:fixed
34
- * 包含块偏移(demo 里通常不出现,放进有大量 transform 的真实项目后才会暴露,
35
- * 详见该 middleware 自身的注释)。放在最后一位,因为它修正的是"最终要写进
36
- * DOM 的坐标",前面几步都在统一的视口坐标系里计算,不受这个偏移影响。
37
- *
38
- * 特意没有用 size 中间件去动态限制 max-height、允许内容超长时滚动——
39
- * tooltip 不应该出现滚动条(这不是本库的一般性限制,是 tooltip 这个组件
40
- * 类型本身该有的样子,shadcn/Radix 的 Tooltip 也是这么做的)。宽度上限
41
- * 靠 TooltipContent.tsx 里静态的 `max-w-xs` class 兜底,让文字自然换行;
42
- * 高度完全不做限制,交给内容自身的实际高度决定。
43
- *
44
- * 这个决定还有一个技术上的原因:早先的实现里试过用 size 中间件动态算
45
- * max-height 配合 overflow:auto 实现"超长内容可滚动",结果发现内层元素
46
- * 一旦同时具备 overflow:auto 和入场动画(zoom-in-95 会给它加一个 transform),
47
- * 动画播放期间 transform 会让这个元素变成箭头新的包含块(CSS 规范:非 none
48
- * 的 transform 会创建包含块),箭头戳出内层边缘的那部分又会被算进内层的
49
- * 可滚动溢出区域——于是出现了"打开瞬间闪一下滚动条,箭头跟着被遮住,
50
- * 动画播完滚动条消失、箭头才重新出现"这种诡异现象。去掉滚动能力后,
51
- * 这个耦合从根上就不存在了。
52
- *
53
- * 顺序不能随便换:arrow 必须在 shift/flip 之后(要用最终坐标才能算对偏移),
54
- * containingBlockOffset 必须在所有其他 middleware 之后。
55
- *
56
- * 单独抽成函数是为了让 useTooltipContent 保持简洁,也方便针对这套管线单独测试。
11
+ * Tooltip 定位管线:offset → flip → shift → arrow → hide → containingBlockOffset。
12
+ * 与 Popover/HoverCard 共用 createFloatingMiddleware,只多了 arrow。
57
13
  */
58
14
  export declare function createTooltipMiddleware(options: BuildTooltipMiddlewareOptions): Middleware[];
@@ -1,44 +1,15 @@
1
- import { getAlignment as e, getSide as t } from "../../../lib/positioner/core/placement.js";
2
- import { offset as n } from "../../../lib/positioner/middleware/offset.js";
3
- import { shift as r } from "../../../lib/positioner/middleware/shift.js";
4
- import { flip as i } from "../../../lib/positioner/middleware/flip.js";
5
- import { arrow as a } from "../../../lib/positioner/middleware/arrow.js";
6
- import { hide as o } from "../../../lib/positioner/middleware/hide.js";
7
- import { containingBlockOffset as s } from "../../../lib/positioner/middleware/containing-block-offset.js";
1
+ import { createFloatingMiddleware as e, getTransformOrigin as t, toPlacement as n } from "../../../lib/positioner/utils/floating.js";
8
2
  //#region src/components/tooltip/TooltipContent/TooltipContent.utils.ts
9
- function c(e, t) {
10
- return e === "inline-start" ? t === "rtl" ? "right" : "left" : e === "inline-end" ? t === "rtl" ? "left" : "right" : e;
11
- }
12
- function l(e, t, n) {
13
- let r = c(e, n);
14
- return t === "center" ? r : `${r}-${t}`;
15
- }
16
- function u(n) {
17
- let r = t(n), i = e(n), a = i === "start" ? "0%" : i === "end" ? "100%" : "50%";
18
- switch (r) {
19
- case "top": return `${a} 100%`;
20
- case "bottom": return `${a} 0%`;
21
- case "left": return `100% ${a}`;
22
- case "right": return `0% ${a}`;
23
- }
24
- }
25
- function d(e) {
26
- return [
27
- n({
28
- mainAxis: e.sideOffset,
29
- crossAxis: e.alignOffset
30
- }),
31
- i(),
32
- r({ padding: e.collisionPadding }),
33
- a({
34
- element: e.arrowElement,
35
- padding: 6
36
- }),
37
- o(),
38
- s()
39
- ];
3
+ function r(t) {
4
+ return e({
5
+ sideOffset: t.sideOffset,
6
+ alignOffset: t.alignOffset,
7
+ collisionPadding: t.collisionPadding,
8
+ arrowElement: t.arrowElement,
9
+ arrowPadding: 6
10
+ });
40
11
  }
41
12
  //#endregion
42
- export { d as createTooltipMiddleware, u as getTransformOrigin, c as toPhysicalSide, l as toPlacement };
13
+ export { r as createTooltipMiddleware, t as getTransformOrigin, n as toPlacement };
43
14
 
44
15
  //# sourceMappingURL=TooltipContent.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipContent.utils.js","names":["toPhysicalSide","side","dir","toPlacement","physical","align","getTransformOrigin","getSide","placement","getAlignment","crossAxisOrigin","createTooltipMiddleware","offset","options","flip","shift","arrow","hide","containingBlockOffset"],"sources":["../../../../src/components/tooltip/TooltipContent/TooltipContent.utils.ts"],"sourcesContent":["import {\n offset,\n flip,\n shift,\n arrow,\n hide,\n containingBlockOffset,\n getSide,\n getAlignment,\n type Middleware,\n type Placement,\n type Side,\n type Alignment,\n} from \"~/lib\";\n\n/**\n * 把 shadcn/Radix 风格的 side + align 拆分参数,转换成核心库统一用的\n * `Placement` 字符串(比如 side='top' + align='start' → 'top-start')。\n * align 是 'center'(默认对齐、不偏移)时不带后缀,直接是 side 本身。\n */\nexport function toPhysicalSide(\n side: Side | \"inline-start\" | \"inline-end\",\n dir?: string,\n): Side {\n if (side === \"inline-start\") {\n return dir === \"rtl\" ? \"right\" : \"left\";\n }\n if (side === \"inline-end\") {\n return dir === \"rtl\" ? \"left\" : \"right\";\n }\n return side;\n}\n\nexport function toPlacement(\n side: Side | \"inline-start\" | \"inline-end\",\n align: Alignment | \"center\",\n dir?: string,\n): Placement {\n const physical = toPhysicalSide(side, dir);\n return align === \"center\" ? physical : (`${physical}-${align}` as Placement);\n}\n\n/**\n * 根据最终生效的 placement,算出缩放动画应该以哪个点为锚点(CSS transform-origin)。\n * 锚点应该落在\"贴近 trigger 的那条边\"上——比如 placement 是 'top'(content 在\n * trigger 上方),锚点就该是 content 自己的底边,缩放动画看起来才会像是\n * \"从 trigger 那里长出来\",而不是原地放大缩小(默认的 transform-origin 是\n * 几何中心 50% 50%,视觉上和\"从哪个方向冒出来\"没有任何关联)。\n * 交叉轴(对齐方向)同理:align 是 start 就贴左/上边,end 就贴右/下边。\n */\nexport function getTransformOrigin(placement: Placement): string {\n const side = getSide(placement);\n const align = getAlignment(placement);\n const crossAxisOrigin =\n align === \"start\" ? \"0%\" : align === \"end\" ? \"100%\" : \"50%\";\n\n switch (side) {\n case \"top\":\n return `${crossAxisOrigin} 100%`;\n case \"bottom\":\n return `${crossAxisOrigin} 0%`;\n case \"left\":\n return `100% ${crossAxisOrigin}`;\n case \"right\":\n return `0% ${crossAxisOrigin}`;\n }\n}\n\nexport interface BuildTooltipMiddlewareOptions {\n sideOffset: number;\n /** 沿交叉轴(对齐方向)的偏移,对应 offset middleware 的 crossAxis */\n alignOffset: number;\n collisionPadding: number;\n arrowElement: () => Element | undefined;\n}\n\n/**\n * Tooltip 定位管线的固定配方:\n *\n * 1. offset — 沿主轴保持 sideOffset 间距,沿交叉轴偏移 alignOffset\n * 2. flip — 主轴方向放不下就翻到对面(比如上方没空间就翻到下方)\n * 3. shift — 翻转后仍溢出,就在不换边的前提下贴边平移\n * 4. arrow — 算出箭头相对 content 的偏移,让它始终指向 trigger 中心\n * 5. hide — trigger 被自己的滚动容器完全裁掉时标记隐藏\n * 6. containingBlockOffset — 修正祖先元素 transform 等属性导致的 position:fixed\n * 包含块偏移(demo 里通常不出现,放进有大量 transform 的真实项目后才会暴露,\n * 详见该 middleware 自身的注释)。放在最后一位,因为它修正的是\"最终要写进\n * DOM 的坐标\",前面几步都在统一的视口坐标系里计算,不受这个偏移影响。\n *\n * 特意没有用 size 中间件去动态限制 max-height、允许内容超长时滚动——\n * tooltip 不应该出现滚动条(这不是本库的一般性限制,是 tooltip 这个组件\n * 类型本身该有的样子,shadcn/Radix 的 Tooltip 也是这么做的)。宽度上限\n * 靠 TooltipContent.tsx 里静态的 `max-w-xs` class 兜底,让文字自然换行;\n * 高度完全不做限制,交给内容自身的实际高度决定。\n *\n * 这个决定还有一个技术上的原因:早先的实现里试过用 size 中间件动态算\n * max-height 配合 overflow:auto 实现\"超长内容可滚动\",结果发现内层元素\n * 一旦同时具备 overflow:auto 和入场动画(zoom-in-95 会给它加一个 transform),\n * 动画播放期间 transform 会让这个元素变成箭头新的包含块(CSS 规范:非 none\n * 的 transform 会创建包含块),箭头戳出内层边缘的那部分又会被算进内层的\n * 可滚动溢出区域——于是出现了\"打开瞬间闪一下滚动条,箭头跟着被遮住,\n * 动画播完滚动条消失、箭头才重新出现\"这种诡异现象。去掉滚动能力后,\n * 这个耦合从根上就不存在了。\n *\n * 顺序不能随便换:arrow 必须在 shift/flip 之后(要用最终坐标才能算对偏移),\n * containingBlockOffset 必须在所有其他 middleware 之后。\n *\n * 单独抽成函数是为了让 useTooltipContent 保持简洁,也方便针对这套管线单独测试。\n */\nexport function createTooltipMiddleware(\n options: BuildTooltipMiddlewareOptions,\n): Middleware[] {\n return [\n offset({ mainAxis: options.sideOffset, crossAxis: options.alignOffset }),\n flip(),\n shift({ padding: options.collisionPadding }),\n arrow({ element: options.arrowElement, padding: 6 }),\n hide(),\n containingBlockOffset(),\n ];\n}\n"],"mappings":";;;;;;;;AAoBA,SAAgBA,EACd,GACA,GACM;CAON,OANIC,MAAS,iBACJC,MAAQ,QAAQ,UAAU,SAE/BD,MAAS,eACJC,MAAQ,QAAQ,SAAS,UAE3BD;AACT;AAEA,SAAgBE,EACd,GACA,GACA,GACW;CACX,IAAMC,IAAWJ,EAAeC,GAAMC,CAAG;CACzC,OAAOG,MAAU,WAAWD,IAAY,GAAGA,EAAS,GAAGC;AACzD;AAUA,SAAgBC,EAAmB,GAA8B;CAC/D,IAAML,IAAOM,EAAQC,CAAS,GACxBH,IAAQI,EAAaD,CAAS,GAC9BE,IACJL,MAAU,UAAU,OAAOA,MAAU,QAAQ,SAAS;CAExD,QAAQJ,GAAR;EACE,KAAK,OACH,OAAO,GAAGS,EAAgB;EAC5B,KAAK,UACH,OAAO,GAAGA,EAAgB;EAC5B,KAAK,QACH,OAAO,QAAQA;EACjB,KAAK,SACH,OAAO,MAAMA;CACjB;AACF;AA2CA,SAAgBC,EACd,GACc;CACd,OAAO;EACLC,EAAO;GAAE,UAAUC,EAAQ;GAAY,WAAWA,EAAQ;EAAY,CAAC;EACvEC,EAAK;EACLC,EAAM,EAAE,SAASF,EAAQ,iBAAiB,CAAC;EAC3CG,EAAM;GAAE,SAASH,EAAQ;GAAc,SAAS;EAAE,CAAC;EACnDI,EAAK;EACLC,EAAsB;CACxB;AACF"}
1
+ {"version":3,"file":"TooltipContent.utils.js","names":["createTooltipMiddleware","createFloatingMiddleware","options","getTransformOrigin","toPlacement"],"sources":["../../../../src/components/tooltip/TooltipContent/TooltipContent.utils.ts"],"sourcesContent":["import { createFloatingMiddleware, type Middleware } from \"~/lib\";\n\n// 定位相关的纯函数已抽到 ~/lib/positioner/utils/floating,这里保留原有导出名,\n// 避免 Tooltip 内部 import 变动。\nexport {\n toPhysicalSide,\n toPlacement,\n getTransformOrigin,\n} from \"~/lib\";\n\nexport interface BuildTooltipMiddlewareOptions {\n sideOffset: number;\n /** 沿交叉轴(对齐方向)的偏移,对应 offset middleware 的 crossAxis */\n alignOffset: number;\n collisionPadding: number;\n arrowElement: () => Element | undefined;\n}\n\n/**\n * Tooltip 定位管线:offset → flip → shift → arrow → hide → containingBlockOffset。\n * 与 Popover/HoverCard 共用 createFloatingMiddleware,只多了 arrow。\n */\nexport function createTooltipMiddleware(\n options: BuildTooltipMiddlewareOptions,\n): Middleware[] {\n return createFloatingMiddleware({\n sideOffset: options.sideOffset,\n alignOffset: options.alignOffset,\n collisionPadding: options.collisionPadding,\n arrowElement: options.arrowElement,\n arrowPadding: 6,\n });\n}\n"],"mappings":";;AAsBA,SAAgBA,EACd,GACc;CACd,OAAOC,EAAyB;EAC9B,YAAYC,EAAQ;EACpB,aAAaA,EAAQ;EACrB,kBAAkBA,EAAQ;EAC1B,cAAcA,EAAQ;EACtB,cAAc;CAChB,CAAC;AACH"}
@@ -0,0 +1,27 @@
1
+ import { Accessor } from 'solid-js';
2
+ /** 没有触发任何 CSS animation 时的兜底卸载延迟(ms) */
3
+ export declare const EXIT_FALLBACK_MS = 300;
4
+ export interface UsePresenceOptions {
5
+ /** 逻辑上是否应该打开 */
6
+ visible: Accessor<boolean>;
7
+ /** 真正承载进出场动画的元素(没有它就无法等 animationend) */
8
+ element: Accessor<HTMLElement | undefined>;
9
+ /**
10
+ * 一次性询问"这次关闭是否要跳过退场动画"(例如被同组的另一个浮层抢占,
11
+ * 必须立即卸载以免两个浮层同时出现在屏幕上)。
12
+ */
13
+ consumeSuppressExitAnimation: () => boolean;
14
+ /** 兜底卸载延迟,默认 300ms */
15
+ fallbackMs?: number;
16
+ }
17
+ /**
18
+ * 退场动画支持(Presence):
19
+ *
20
+ * `visible` 从 true 变 false 时不立刻卸载节点——先让调用方把 `data-state` 切到
21
+ * closed 触发退场动画,等内容元素自己的 `animationend` 触发后才把 `mounted`
22
+ * 置 false,交给 `<Show>` 卸载。若动画永远不会触发(没装动画库、只用了
23
+ * transition 而自定义样式里没有 @keyframes),则由兜底定时器收尾。
24
+ *
25
+ * 单次关闭只会卸载一次:animationend 与兜底定时器都会在 `onCleanup` 里回收。
26
+ */
27
+ export declare function usePresence(options: UsePresenceOptions): Accessor<boolean>;
@@ -0,0 +1,24 @@
1
+ import { createEffect as e, createSignal as t, onCleanup as n } from "solid-js";
2
+ function r(r) {
3
+ let i = r.fallbackMs ?? 300, [a, o] = t(r.visible());
4
+ return e((e) => {
5
+ let t = r.visible(), a = r.element();
6
+ if (t) o(!0);
7
+ else if (e && a) {
8
+ if (r.consumeSuppressExitAnimation()) o(!1);
9
+ else {
10
+ let e = (e) => {
11
+ e.target === a && o(!1);
12
+ };
13
+ a.addEventListener("animationend", e), n(() => a.removeEventListener("animationend", e));
14
+ let t = window.setTimeout(() => o(!1), i);
15
+ n(() => window.clearTimeout(t));
16
+ }
17
+ } else o(!1);
18
+ return t;
19
+ }, r.visible()), a;
20
+ }
21
+ //#endregion
22
+ export { r as usePresence };
23
+
24
+ //# sourceMappingURL=usePresence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePresence.js","names":["usePresence","fallbackMs","options","mounted","setMounted","createSignal","createEffect","visible","element","wasVisible","handleAnimationEnd","event","onCleanup","fallback"],"sources":["../../../../src/components/tooltip/TooltipContent/usePresence.ts"],"sourcesContent":["import { type Accessor, createEffect, createSignal, onCleanup } from \"solid-js\";\n\n/** 没有触发任何 CSS animation 时的兜底卸载延迟(ms) */\nexport const EXIT_FALLBACK_MS = 300;\n\nexport interface UsePresenceOptions {\n /** 逻辑上是否应该打开 */\n visible: Accessor<boolean>;\n /** 真正承载进出场动画的元素(没有它就无法等 animationend) */\n element: Accessor<HTMLElement | undefined>;\n /**\n * 一次性询问\"这次关闭是否要跳过退场动画\"(例如被同组的另一个浮层抢占,\n * 必须立即卸载以免两个浮层同时出现在屏幕上)。\n */\n consumeSuppressExitAnimation: () => boolean;\n /** 兜底卸载延迟,默认 300ms */\n fallbackMs?: number;\n}\n\n/**\n * 退场动画支持(Presence):\n *\n * `visible` 从 true 变 false 时不立刻卸载节点——先让调用方把 `data-state` 切到\n * closed 触发退场动画,等内容元素自己的 `animationend` 触发后才把 `mounted`\n * 置 false,交给 `<Show>` 卸载。若动画永远不会触发(没装动画库、只用了\n * transition 而自定义样式里没有 @keyframes),则由兜底定时器收尾。\n *\n * 单次关闭只会卸载一次:animationend 与兜底定时器都会在 `onCleanup` 里回收。\n */\nexport function usePresence(options: UsePresenceOptions): Accessor<boolean> {\n const fallbackMs = options.fallbackMs ?? EXIT_FALLBACK_MS;\n const [mounted, setMounted] = createSignal(options.visible());\n\n createEffect<boolean>((wasVisible) => {\n const visible = options.visible();\n const element = options.element();\n\n if (visible) {\n setMounted(true);\n } else if (wasVisible && element) {\n if (options.consumeSuppressExitAnimation()) {\n setMounted(false);\n } else {\n const handleAnimationEnd = (event: AnimationEvent) => {\n // 忽略从子元素冒泡上来的 animationend,只认元素自己播放的那个动画\n if (event.target !== element) return;\n setMounted(false);\n };\n element.addEventListener(\"animationend\", handleAnimationEnd);\n onCleanup(() =>\n element.removeEventListener(\"animationend\", handleAnimationEnd),\n );\n\n const fallback = window.setTimeout(() => setMounted(false), fallbackMs);\n onCleanup(() => window.clearTimeout(fallback));\n }\n } else {\n // 走到这里必然 !visible(上面的 if 已排除 visible 分支),无需再判一次\n setMounted(false);\n }\n\n return visible;\n }, options.visible());\n\n return mounted;\n}\n"],"mappings":";AA6BA,SAAgBA,EAAY,GAAgD;CAC1E,IAAMC,IAAaC,EAAQ,cAAA,KACrB,CAACC,GAASC,KAAcC,EAAaH,EAAQ,QAAQ,CAAC;CAiC5D,OA/BAI,GAAuB,MAAe;EACpC,IAAMC,IAAUL,EAAQ,QAAQ,GAC1BM,IAAUN,EAAQ,QAAQ;EAEhC,IAAIK,GACF,EAAW,EAAI;OACV,IAAIE,KAAcD,GAAS;GAChC,IAAIN,EAAQ,6BAA6B,GACvC,EAAW,EAAK;QACX;IACL,IAAMQ,KAAsB,MAA0B;KAEpD,AAAIC,EAAM,WAAWH,KACrBJ,EAAW,EAAK;IAClB;IAEA,AADAI,EAAQ,iBAAiB,gBAAgBE,CAAkB,GAC3DE,QACEJ,EAAQ,oBAAoB,gBAAgBE,CAAkB,CAChE;IAEA,IAAMG,IAAW,OAAO,iBAAiBT,EAAW,EAAK,GAAGH,CAAU;IACtE,QAAgB,OAAO,aAAaY,CAAQ,CAAC;GAC/C;EACF,OAEE,EAAW,EAAK;EAGlB,OAAON;CACT,GAAGL,EAAQ,QAAQ,CAAC,GAEbC;AACT"}
@@ -1,28 +1,33 @@
1
1
  import { createPositioner as e } from "../../../lib/positioner/create-positioner.js";
2
- import { useTooltipContext as t } from "../Tooltip/Tooltip.context.js";
3
- import { createTooltipMiddleware as n, toPlacement as r } from "./TooltipContent.utils.js";
4
- import { createEffect as i, createMemo as a, createSignal as o, onCleanup as s } from "solid-js";
2
+ import { toPlacement as t } from "../../../lib/positioner/utils/floating.js";
3
+ import { useTooltipContext as n } from "../Tooltip/Tooltip.context.js";
4
+ import { createTooltipMiddleware as r } from "./TooltipContent.utils.js";
5
+ import { usePresence as i } from "./usePresence.js";
6
+ import { createEffect as a, createMemo as o, createSignal as s, onCleanup as c } from "solid-js";
5
7
  //#region src/components/tooltip/TooltipContent/useTooltipContent.ts
6
- var c = 300;
7
8
  function l(l) {
8
- let u = t("TooltipContent"), [d, f] = o(), [p, m] = o(), h = e(u.reference, u.floating, {
9
- placement: () => r(l().side ?? "top", l().align ?? "center", l().dir),
9
+ let u = n("TooltipContent"), [d, f] = s(), [p, m] = s(), h = e(u.reference, u.floating, {
10
+ placement: () => t(l().side ?? "top", l().align ?? "center", l().dir),
10
11
  strategy: "fixed",
11
- middleware: () => n({
12
+ middleware: () => r({
12
13
  sideOffset: l().sideOffset ?? 4,
13
14
  alignOffset: l().alignOffset ?? 0,
14
15
  collisionPadding: l().collisionPadding ?? 8,
15
16
  arrowElement: d
16
17
  })
17
- }), g = a(() => u.open() && !h.middlewareData().hide?.referenceHidden), [_, v] = o("closed");
18
- i(() => {
18
+ }), g = o(() => u.open() && !h.middlewareData().hide?.referenceHidden), [_, v] = s("closed");
19
+ a(() => {
19
20
  if (g()) {
20
21
  let e = requestAnimationFrame(() => v("open"));
21
- s(() => cancelAnimationFrame(e));
22
+ c(() => cancelAnimationFrame(e));
22
23
  } else v("closed");
23
24
  });
24
- let [y, b] = o(), [x, S] = o(g());
25
- i(() => {
25
+ let [y, b] = s(), x = i({
26
+ visible: g,
27
+ element: p,
28
+ consumeSuppressExitAnimation: () => u.consumeSuppressExitAnimation()
29
+ });
30
+ return a(() => {
26
31
  if (!x()) return;
27
32
  let e = u.pendingSlideFrom();
28
33
  if (!e || !h.isPositioned()) return;
@@ -34,32 +39,7 @@ function l(l) {
34
39
  x: 0,
35
40
  y: 0
36
41
  }));
37
- });
38
- let C = a(() => {
39
- let e = y();
40
- if (!e) return {};
41
- let t = e.x === 0 && e.y === 0;
42
- return {
43
- transform: `translate(${e.x}px, ${e.y}px)`,
44
- transition: t ? "transform 150ms ease" : void 0
45
- };
46
- });
47
- return i((e) => {
48
- let t = g(), n = p();
49
- if (t) S(!0);
50
- else if (e && n) {
51
- if (u.consumeSuppressExitAnimation()) S(!1);
52
- else {
53
- let e = (e) => {
54
- e.target === n && S(!1);
55
- };
56
- n.addEventListener("animationend", e), s(() => n.removeEventListener("animationend", e));
57
- let t = window.setTimeout(() => S(!1), c);
58
- s(() => window.clearTimeout(t));
59
- }
60
- } else t || S(!1);
61
- return t;
62
- }, g()), {
42
+ }), {
63
43
  ctx: u,
64
44
  pos: h,
65
45
  isVisible: g,
@@ -69,7 +49,15 @@ function l(l) {
69
49
  setArrowElement: f,
70
50
  contentElement: p,
71
51
  setContentElement: m,
72
- slideStyle: C
52
+ slideStyle: o(() => {
53
+ let e = y();
54
+ if (!e) return {};
55
+ let t = e.x === 0 && e.y === 0;
56
+ return {
57
+ transform: `translate(${e.x}px, ${e.y}px)`,
58
+ transition: t ? "transform 150ms ease" : void 0
59
+ };
60
+ })
73
61
  };
74
62
  }
75
63
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"useTooltipContent.js","names":["EXIT_FALLBACK_MS","useTooltipContent","ctx","useTooltipContext","arrowElement","setArrowElement","createSignal","contentElement","setContentElement","pos","createPositioner","toPlacement","props","createTooltipMiddleware","isVisible","createMemo","animationState","setAnimationState","raf","slideOffset","setSlideOffset","mounted","setMounted","from","dx","dy","slideStyle","offset","atRest","createEffect","visible","el","wasVisible","handleAnimationEnd","onCleanup","fallback"],"sources":["../../../../src/components/tooltip/TooltipContent/useTooltipContent.ts"],"sourcesContent":["import { createSignal, createMemo, createEffect, onCleanup } from \"solid-js\";\nimport { createPositioner, type Positioner } from \"~/lib\";\nimport { useTooltipContext } from \"../Tooltip/Tooltip.context\";\nimport { createTooltipMiddleware, toPlacement } from \"./TooltipContent.utils\";\nimport type { TooltipContentProps } from \"./TooltipContent.types\";\n\n/** 没有触发任何 CSS animation 时的兜底卸载延迟(ms)——比如没装 tailwindcss-animate、\n * 或者自定义样式只用了 transition 而不是 @keyframes,animationend 永远不会触发,\n * 避免元素卡在 DOM 里退不出去。 */\nconst EXIT_FALLBACK_MS = 300;\n\nexport interface UseTooltipContentResult {\n ctx: ReturnType<typeof useTooltipContext>;\n pos: Positioner;\n /** 综合了 open 状态 + hide 中间件的 referenceHidden 判断,代表\"逻辑上应不应该打开\" */\n isVisible: () => boolean;\n /**\n * 代表\"DOM 里要不要还留着这个节点\"。isVisible 变 false 之后,mounted 不会立刻\n * 跟着变 false,而是等退场动画播完(或者兜底超时)才变——展示层应该用它来控制\n * <Show>,而不是直接用 isVisible,否则退场动画根本来不及播放就被卸载了。\n */\n mounted: () => boolean;\n /**\n * 真正用来驱动 data-state(进而驱动 CSS 进出场动画 class)的状态,\n * 展示层应该用它,而不是直接用 isVisible。\n *\n * 和 isVisible 的区别只在\"打开\"这一侧:isVisible 变 true 的瞬间,\n * animationState 不会立刻跟着变 \"open\",而是等一帧(requestAnimationFrame)\n * 之后才变——这一帧的间隙用来让箭头(TooltipArrow)完成挂载、把自己注册给\n * arrow middleware、拿到正确的位置偏移。如果不等这一帧,动画会在箭头位置\n * 还没算对的时候就开始播放,播到一半箭头才\"跳\"到正确位置,看起来就像是\n * 箭头比内容慢一拍——这正是因为内容的淡入/缩放靠的是 CSS 动画(父元素的\n * opacity/transform 会连带影响所有子元素,包括箭头,两者本该同步),而箭头\n * 的具体位置靠的是 JS 算出来的 left/top,这是两套完全独立的机制,只有当\n * \"开始播放动画\"这个时间点晚于\"箭头位置算完\",才能保证两者观感一致。\n * 关闭这一侧不需要这个延迟,isVisible 变 false 时 animationState 立刻跟着变。\n */\n animationState: () => \"open\" | \"closed\";\n arrowElement: () => Element | undefined;\n setArrowElement: (el: Element) => void;\n /** 内层内容元素(真正播放进出场动画的那一层),TooltipContent 需要把它 ref 进来 */\n contentElement: () => HTMLElement | undefined;\n setContentElement: (el: HTMLElement) => void;\n /**\n * 加在\"滑动层\"(定位层和内容层之间的中间那层)上的 style。\n * 命中 TooltipGroup 抢占时会有一个非零初始偏移,下一帧起会用 CSS transition\n * 平滑归零,从而制造出\"从旧 tooltip 位置滑到新位置\"的效果;平时是空对象,\n * 不产生任何影响。\n */\n slideStyle: () => { transform?: string; transition?: string };\n}\n\nexport function useTooltipContent(\n props: () => TooltipContentProps,\n): UseTooltipContentResult {\n const ctx = useTooltipContext(\"TooltipContent\");\n const [arrowElement, setArrowElement] = createSignal<Element>();\n const [contentElement, setContentElement] = createSignal<HTMLElement>();\n\n const pos = createPositioner(ctx.reference, ctx.floating, {\n placement: () =>\n toPlacement(\n props().side ?? \"top\",\n props().align ?? \"center\",\n props().dir,\n ),\n strategy: \"fixed\",\n middleware: () =>\n createTooltipMiddleware({\n sideOffset: props().sideOffset ?? 4,\n alignOffset: props().alignOffset ?? 0,\n collisionPadding: props().collisionPadding ?? 8,\n arrowElement,\n }),\n });\n\n // reference 完全滚出视口(比如所在容器被单独滚动)时,hide middleware 会标记\n // referenceHidden,这里据此隐藏浮层,避免它悬空显示在一个已经看不到的触发器旁边。\n const isVisible = createMemo(\n () => ctx.open() && !pos.middlewareData().hide?.referenceHidden,\n );\n\n // --- 箭头和内容同步入场:延迟一帧再触发动画 class ---\n // 见 UseTooltipContentResult.animationState 的注释:只有\"开始播放动画\"这个\n // 时间点晚于\"箭头位置算完\",才能保证箭头不会在动画播到一半时才跳到正确位置。\n const [animationState, setAnimationState] = createSignal<\"open\" | \"closed\">(\n \"closed\",\n );\n\n createEffect(() => {\n if (isVisible()) {\n const raf = requestAnimationFrame(() => setAnimationState(\"open\"));\n onCleanup(() => cancelAnimationFrame(raf));\n } else {\n // 关闭不需要等——退场动画本来就是从\"当前已经落定的位置\"往外淡出/缩小,\n // 不存在箭头位置还没算好这个问题,没理由延迟。\n setAnimationState(\"closed\");\n }\n });\n\n // --- TooltipGroup 抢占时的\"滑入\"过渡(FLIP 技术) ---\n const [slideOffset, setSlideOffset] = createSignal<{\n x: number;\n y: number;\n }>();\n\n const [mounted, setMounted] = createSignal(isVisible());\n\n createEffect(() => {\n if (!mounted()) return;\n const from = ctx.pendingSlideFrom();\n if (!from) return;\n // 必须等真正定位完成(知道自己算出来的最终坐标)才能算出\"要从哪滑过来\"的差值。\n if (!pos.isPositioned()) return;\n\n const dx = from.x - pos.x();\n const dy = from.y - pos.y();\n // 第一步:把偏移设成非零值——这一步和 floatingStyles() 的最终坐标叠加后,\n // 视觉上让新 tooltip 一出现就恰好在旧 tooltip 原来的位置,没有任何跳动。\n setSlideOffset({ x: dx, y: dy });\n // 消费一次立刻清空,避免后续 autoUpdate(滚动/resize 触发的重新定位)\n // 又把这次的偏移重新套用一遍。\n ctx.clearPendingSlideFrom();\n\n // 第二步:下一帧再把偏移量归零。因为这次更新带上了 transition(见下面\n // slideStyle 的实现),浏览器会把\"从非零偏移回到 0\"这个变化平滑动画出来,\n // 效果就是从旧位置滑到新位置。用 requestAnimationFrame 而不是同步归零,\n // 是为了确保浏览器先真正画出第一帧(非零偏移、无 transition),\n // 下一帧的变化才有\"起点\"可以过渡,不会被浏览器合并成一次跳变。\n requestAnimationFrame(() => setSlideOffset({ x: 0, y: 0 }));\n });\n\n const slideStyle = createMemo(() => {\n const offset = slideOffset();\n if (!offset) return {};\n const atRest = offset.x === 0 && offset.y === 0;\n return {\n transform: `translate(${offset.x}px, ${offset.y}px)`,\n // 只有\"归零\"这一步才带 transition:非零的那一帧要求瞬间落位、不能有动画,\n // 否则会先看到它从视口原点飞过来,而不是从旧 tooltip 的位置飞过来。\n transition: atRest ? \"transform 150ms ease\" : undefined,\n };\n });\n\n // --- 退场动画支持(Presence)---\n // isVisible 从 true 变 false 的瞬间,不立刻让 <Show> 卸载节点:先把 data-state\n // 切到 closed(触发退场动画的 CSS class),等这个节点自己的 animationend 触发\n // (或者兜底超时)之后,才真正把 mounted 设为 false,交给 <Show> 卸载。\n createEffect((wasVisible: boolean) => {\n const visible = isVisible();\n const el = contentElement();\n\n if (visible) {\n setMounted(true);\n } else if (wasVisible && el) {\n if (ctx.consumeSuppressExitAnimation()) {\n // 被 TooltipGroup 抢占强制关闭:跳过退场动画,立即卸载,避免和正在\n // 滑入的新 tooltip 同时出现在屏幕上(这是\"同时存在两个 tooltip\"这个\n // bug 的根因——之前不管什么原因关闭,都统一走了退场动画那条路)。\n setMounted(false);\n } else {\n const handleAnimationEnd = (e: AnimationEvent) => {\n // 忽略从子元素冒泡上来的 animationend,只认内容元素自己播放的那个动画\n if (e.target !== el) return;\n setMounted(false);\n };\n el.addEventListener(\"animationend\", handleAnimationEnd);\n onCleanup(() =>\n el.removeEventListener(\"animationend\", handleAnimationEnd),\n );\n\n const fallback = window.setTimeout(\n () => setMounted(false),\n EXIT_FALLBACK_MS,\n );\n onCleanup(() => window.clearTimeout(fallback));\n }\n } else if (!visible) {\n setMounted(false);\n }\n\n return visible;\n }, isVisible());\n\n return {\n ctx,\n pos,\n isVisible,\n mounted,\n animationState,\n arrowElement,\n setArrowElement,\n contentElement,\n setContentElement,\n slideStyle,\n };\n}\n"],"mappings":";;;;;AASA,IAAMA,IAAmB;AA2CzB,SAAgBC,EACd,GACyB;CACzB,IAAMC,IAAMC,EAAkB,gBAAgB,GACxC,CAACC,GAAcC,KAAmBC,EAAsB,GACxD,CAACC,GAAgBC,KAAqBF,EAA0B,GAEhEG,IAAMC,EAAiBR,EAAI,WAAWA,EAAI,UAAU;EACxD,iBACES,EACEC,EAAM,CAAC,CAAC,QAAQ,OAChBA,EAAM,CAAC,CAAC,SAAS,UACjBA,EAAM,CAAC,CAAC,GACV;EACF,UAAU;EACV,kBACEC,EAAwB;GACtB,YAAYD,EAAM,CAAC,CAAC,cAAc;GAClC,aAAaA,EAAM,CAAC,CAAC,eAAe;GACpC,kBAAkBA,EAAM,CAAC,CAAC,oBAAoB;GAC9C;EACF,CAAC;CACL,CAAC,GAIKE,IAAYC,QACVb,EAAI,KAAK,KAAK,CAACO,EAAI,eAAe,CAAC,CAAC,MAAM,eAClD,GAKM,CAACO,GAAgBC,KAAqBX,EAC1C,QACF;CAEA,QAAmB;EACjB,IAAIQ,EAAU,GAAG;GACf,IAAMI,IAAM,4BAA4BD,EAAkB,MAAM,CAAC;GACjE,QAAgB,qBAAqBC,CAAG,CAAC;EAC3C,OAGE,EAAkB,QAAQ;CAE9B,CAAC;CAGD,IAAM,CAACC,GAAaC,KAAkBd,EAGnC,GAEG,CAACe,GAASC,KAAchB,EAAaQ,EAAU,CAAC;CAEtD,QAAmB;EACjB,IAAI,CAACO,EAAQ,GAAG;EAChB,IAAME,IAAOrB,EAAI,iBAAiB;EAGlC,IAFI,CAACqB,KAED,CAACd,EAAI,aAAa,GAAG;EAEzB,IAAMe,IAAKD,EAAK,IAAId,EAAI,EAAE,GACpBgB,IAAKF,EAAK,IAAId,EAAI,EAAE;EAa1B,AAVAW,EAAe;GAAE,GAAGI;GAAI,GAAGC;EAAG,CAAC,GAG/BvB,EAAI,sBAAsB,GAO1B,4BAA4BkB,EAAe;GAAE,GAAG;GAAG,GAAG;EAAE,CAAC,CAAC;CAC5D,CAAC;CAED,IAAMM,IAAaX,QAAiB;EAClC,IAAMY,IAASR,EAAY;EAC3B,IAAI,CAACQ,GAAQ,OAAO,CAAC;EACrB,IAAMC,IAASD,EAAO,MAAM,KAAKA,EAAO,MAAM;EAC9C,OAAO;GACL,WAAW,aAAaA,EAAO,EAAE,MAAMA,EAAO,EAAE;GAGhD,YAAYC,IAAS,yBAAyB,KAAA;EAChD;CACF,CAAC;CA0CD,OApCAC,GAAc,MAAwB;EACpC,IAAMC,IAAUhB,EAAU,GACpBiB,IAAKxB,EAAe;EAE1B,IAAIuB,GACF,EAAW,EAAI;OACV,IAAIE,KAAcD,GAAI;GAC3B,IAAI7B,EAAI,6BAA6B,GAInC,EAAW,EAAK;QACX;IACL,IAAM+B,KAAsB,MAAsB;KAEhD,AAAI,EAAE,WAAWF,KACjBT,EAAW,EAAK;IAClB;IAEA,AADAS,EAAG,iBAAiB,gBAAgBE,CAAkB,GACtDC,QACEH,EAAG,oBAAoB,gBAAgBE,CAAkB,CAC3D;IAEA,IAAME,IAAW,OAAO,iBAChBb,EAAW,EAAK,GACtBtB,CACF;IACA,QAAgB,OAAO,aAAamC,CAAQ,CAAC;GAC/C;EACF,OAAO,AAAKL,KACVR,EAAW,EAAK;EAGlB,OAAOQ;CACT,GAAGhB,EAAU,CAAC,GAEP;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"useTooltipContent.js","names":["useTooltipContent","ctx","useTooltipContext","arrowElement","setArrowElement","createSignal","contentElement","setContentElement","pos","createPositioner","toPlacement","props","createTooltipMiddleware","isVisible","createMemo","animationState","setAnimationState","raf","slideOffset","setSlideOffset","mounted","usePresence","createEffect","from","dx","dy","offset","atRest"],"sources":["../../../../src/components/tooltip/TooltipContent/useTooltipContent.ts"],"sourcesContent":["import { createSignal, createMemo, createEffect, onCleanup } from \"solid-js\";\nimport { createPositioner, type Positioner } from \"~/lib\";\nimport { useTooltipContext } from \"../Tooltip/Tooltip.context\";\nimport { createTooltipMiddleware, toPlacement } from \"./TooltipContent.utils\";\nimport { usePresence } from \"./usePresence\";\nimport type { TooltipContentProps } from \"./TooltipContent.types\";\n\nexport interface UseTooltipContentResult {\n ctx: ReturnType<typeof useTooltipContext>;\n pos: Positioner;\n /** 综合了 open 状态 + hide 中间件的 referenceHidden 判断,代表\"逻辑上应不应该打开\" */\n isVisible: () => boolean;\n /**\n * 代表\"DOM 里要不要还留着这个节点\"。isVisible 变 false 之后,mounted 不会立刻\n * 跟着变 false,而是等退场动画播完(或者兜底超时)才变——展示层应该用它来控制\n * <Show>,而不是直接用 isVisible,否则退场动画根本来不及播放就被卸载了。\n */\n mounted: () => boolean;\n /**\n * 真正用来驱动 data-state(进而驱动 CSS 进出场动画 class)的状态,\n * 展示层应该用它,而不是直接用 isVisible。\n *\n * 和 isVisible 的区别只在\"打开\"这一侧:isVisible 变 true 的瞬间,\n * animationState 不会立刻跟着变 \"open\",而是等一帧(requestAnimationFrame)\n * 之后才变——这一帧的间隙用来让箭头(TooltipArrow)完成挂载、把自己注册给\n * arrow middleware、拿到正确的位置偏移。如果不等这一帧,动画会在箭头位置\n * 还没算对的时候就开始播放,播到一半箭头才\"跳\"到正确位置,看起来就像是\n * 箭头比内容慢一拍——这正是因为内容的淡入/缩放靠的是 CSS 动画(父元素的\n * opacity/transform 会连带影响所有子元素,包括箭头,两者本该同步),而箭头\n * 的具体位置靠的是 JS 算出来的 left/top,这是两套完全独立的机制,只有当\n * \"开始播放动画\"这个时间点晚于\"箭头位置算完\",才能保证两者观感一致。\n * 关闭这一侧不需要这个延迟,isVisible 变 false 时 animationState 立刻跟着变。\n */\n animationState: () => \"open\" | \"closed\";\n arrowElement: () => Element | undefined;\n setArrowElement: (el: Element) => void;\n /** 内层内容元素(真正播放进出场动画的那一层),TooltipContent 需要把它 ref 进来 */\n contentElement: () => HTMLElement | undefined;\n setContentElement: (el: HTMLElement) => void;\n /**\n * 加在\"滑动层\"(定位层和内容层之间的中间那层)上的 style。\n * 命中 TooltipGroup 抢占时会有一个非零初始偏移,下一帧起会用 CSS transition\n * 平滑归零,从而制造出\"从旧 tooltip 位置滑到新位置\"的效果;平时是空对象,\n * 不产生任何影响。\n */\n slideStyle: () => { transform?: string; transition?: string };\n}\n\nexport function useTooltipContent(\n props: () => TooltipContentProps,\n): UseTooltipContentResult {\n const ctx = useTooltipContext(\"TooltipContent\");\n const [arrowElement, setArrowElement] = createSignal<Element>();\n const [contentElement, setContentElement] = createSignal<HTMLElement>();\n\n const pos = createPositioner(ctx.reference, ctx.floating, {\n placement: () =>\n toPlacement(\n props().side ?? \"top\",\n props().align ?? \"center\",\n props().dir,\n ),\n strategy: \"fixed\",\n middleware: () =>\n createTooltipMiddleware({\n sideOffset: props().sideOffset ?? 4,\n alignOffset: props().alignOffset ?? 0,\n collisionPadding: props().collisionPadding ?? 8,\n arrowElement,\n }),\n });\n\n // reference 完全滚出视口(比如所在容器被单独滚动)时,hide middleware 会标记\n // referenceHidden,这里据此隐藏浮层,避免它悬空显示在一个已经看不到的触发器旁边。\n const isVisible = createMemo(\n () => ctx.open() && !pos.middlewareData().hide?.referenceHidden,\n );\n\n // --- 箭头和内容同步入场:延迟一帧再触发动画 class ---\n // 见 UseTooltipContentResult.animationState 的注释:只有\"开始播放动画\"这个\n // 时间点晚于\"箭头位置算完\",才能保证箭头不会在动画播到一半时才跳到正确位置。\n const [animationState, setAnimationState] = createSignal<\"open\" | \"closed\">(\n \"closed\",\n );\n\n createEffect(() => {\n if (isVisible()) {\n const raf = requestAnimationFrame(() => setAnimationState(\"open\"));\n onCleanup(() => cancelAnimationFrame(raf));\n } else {\n // 关闭不需要等——退场动画本来就是从\"当前已经落定的位置\"往外淡出/缩小,\n // 不存在箭头位置还没算好这个问题,没理由延迟。\n setAnimationState(\"closed\");\n }\n });\n\n // --- TooltipGroup 抢占时的\"滑入\"过渡(FLIP 技术) ---\n const [slideOffset, setSlideOffset] = createSignal<{\n x: number;\n y: number;\n }>();\n\n const mounted = usePresence({\n visible: isVisible,\n element: contentElement,\n consumeSuppressExitAnimation: () => ctx.consumeSuppressExitAnimation(),\n });\n\n createEffect(() => {\n if (!mounted()) return;\n const from = ctx.pendingSlideFrom();\n if (!from) return;\n // 必须等真正定位完成(知道自己算出来的最终坐标)才能算出\"要从哪滑过来\"的差值。\n if (!pos.isPositioned()) return;\n\n const dx = from.x - pos.x();\n const dy = from.y - pos.y();\n // 第一步:把偏移设成非零值——这一步和 floatingStyles() 的最终坐标叠加后,\n // 视觉上让新 tooltip 一出现就恰好在旧 tooltip 原来的位置,没有任何跳动。\n setSlideOffset({ x: dx, y: dy });\n // 消费一次立刻清空,避免后续 autoUpdate(滚动/resize 触发的重新定位)\n // 又把这次的偏移重新套用一遍。\n ctx.clearPendingSlideFrom();\n\n // 第二步:下一帧再把偏移量归零。因为这次更新带上了 transition(见下面\n // slideStyle 的实现),浏览器会把\"从非零偏移回到 0\"这个变化平滑动画出来,\n // 效果就是从旧位置滑到新位置。用 requestAnimationFrame 而不是同步归零,\n // 是为了确保浏览器先真正画出第一帧(非零偏移、无 transition),\n // 下一帧的变化才有\"起点\"可以过渡,不会被浏览器合并成一次跳变。\n requestAnimationFrame(() => setSlideOffset({ x: 0, y: 0 }));\n });\n\n const slideStyle = createMemo(() => {\n const offset = slideOffset();\n if (!offset) return {};\n const atRest = offset.x === 0 && offset.y === 0;\n return {\n transform: `translate(${offset.x}px, ${offset.y}px)`,\n // 只有\"归零\"这一步才带 transition:非零的那一帧要求瞬间落位、不能有动画,\n // 否则会先看到它从视口原点飞过来,而不是从旧 tooltip 的位置飞过来。\n transition: atRest ? \"transform 150ms ease\" : undefined,\n };\n });\n\n return {\n ctx,\n pos,\n isVisible,\n mounted,\n animationState,\n arrowElement,\n setArrowElement,\n contentElement,\n setContentElement,\n slideStyle,\n };\n}\n"],"mappings":";;;;;;;AAgDA,SAAgBA,EACd,GACyB;CACzB,IAAMC,IAAMC,EAAkB,gBAAgB,GACxC,CAACC,GAAcC,KAAmBC,EAAsB,GACxD,CAACC,GAAgBC,KAAqBF,EAA0B,GAEhEG,IAAMC,EAAiBR,EAAI,WAAWA,EAAI,UAAU;EACxD,iBACES,EACEC,EAAM,CAAC,CAAC,QAAQ,OAChBA,EAAM,CAAC,CAAC,SAAS,UACjBA,EAAM,CAAC,CAAC,GACV;EACF,UAAU;EACV,kBACEC,EAAwB;GACtB,YAAYD,EAAM,CAAC,CAAC,cAAc;GAClC,aAAaA,EAAM,CAAC,CAAC,eAAe;GACpC,kBAAkBA,EAAM,CAAC,CAAC,oBAAoB;GAC9C;EACF,CAAC;CACL,CAAC,GAIKE,IAAYC,QACVb,EAAI,KAAK,KAAK,CAACO,EAAI,eAAe,CAAC,CAAC,MAAM,eAClD,GAKM,CAACO,GAAgBC,KAAqBX,EAC1C,QACF;CAEA,QAAmB;EACjB,IAAIQ,EAAU,GAAG;GACf,IAAMI,IAAM,4BAA4BD,EAAkB,MAAM,CAAC;GACjE,QAAgB,qBAAqBC,CAAG,CAAC;EAC3C,OAGE,EAAkB,QAAQ;CAE9B,CAAC;CAGD,IAAM,CAACC,GAAaC,KAAkBd,EAGnC,GAEGe,IAAUC,EAAY;EAC1B,SAASR;EACT,SAASP;EACT,oCAAoCL,EAAI,6BAA6B;CACvE,CAAC;CAsCD,OApCAqB,QAAmB;EACjB,IAAI,CAACF,EAAQ,GAAG;EAChB,IAAMG,IAAOtB,EAAI,iBAAiB;EAGlC,IAFI,CAACsB,KAED,CAACf,EAAI,aAAa,GAAG;EAEzB,IAAMgB,IAAKD,EAAK,IAAIf,EAAI,EAAE,GACpBiB,IAAKF,EAAK,IAAIf,EAAI,EAAE;EAa1B,AAVAW,EAAe;GAAE,GAAGK;GAAI,GAAGC;EAAG,CAAC,GAG/BxB,EAAI,sBAAsB,GAO1B,4BAA4BkB,EAAe;GAAE,GAAG;GAAG,GAAG;EAAE,CAAC,CAAC;CAC5D,CAAC,GAcM;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YAtBiBL,QAAiB;GAClC,IAAMY,IAASR,EAAY;GAC3B,IAAI,CAACQ,GAAQ,OAAO,CAAC;GACrB,IAAMC,IAASD,EAAO,MAAM,KAAKA,EAAO,MAAM;GAC9C,OAAO;IACL,WAAW,aAAaA,EAAO,EAAE,MAAMA,EAAO,EAAE;IAGhD,YAAYC,IAAS,yBAAyB,KAAA;GAChD;EACF,CAYE;CACF;AACF"}
@@ -77,7 +77,7 @@ function o(n) {
77
77
  a(c);
78
78
  }), e(() => {
79
79
  if (!s || c.length === 0) return;
80
- let e = o ?? document.documentElement, n = c[0], r = e.getAttribute("data-lang");
80
+ let e = o, n = c[0], r = e.getAttribute("data-lang");
81
81
  e.setAttribute("data-lang", n), t(() => {
82
82
  r === null ? e.removeAttribute("data-lang") : e.setAttribute("data-lang", r);
83
83
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useFontLoader.js","names":["FONT_MAP","loaded","filterValidLangs","langs","lang","loadGoogleFonts","toLoad","families","family","weights","link","useFontLoader","options","validLangs","createEffect","apply","el","targetRef","prev","onCleanup"],"sources":["../../src/hooks/useFontLoader.ts"],"sourcesContent":["import { createEffect, onCleanup } from \"solid-js\";\n\n// ─── 字体配置表 ────────────────────────────────────────────────\nconst FONT_MAP = {\n en: { family: \"Inter\", weights: \"400;500;700\" },\n fr: { family: \"Inter\", weights: \"400;500;700\" },\n de: { family: \"Inter\", weights: \"400;500;700\" },\n ru: { family: \"Noto+Sans\", weights: \"400;500;700\" },\n \"zh-hans\": { family: \"Noto+Sans+SC\", weights: \"400;500;700\" },\n \"zh-hant\": { family: \"Noto+Sans+TC\", weights: \"400;500;700\" },\n ja: { family: \"Noto+Sans+JP\", weights: \"400;500;700\" },\n ko: { family: \"Noto+Sans+KR\", weights: \"400;500;700\" },\n hi: { family: \"Noto+Sans+Devanagari\", weights: \"400;500;700\" },\n th: { family: \"Noto+Sans+Thai\", weights: \"400;500;700\" },\n bn: { family: \"Noto+Sans+Bengali\", weights: \"400;500;700\" },\n ar: { family: \"Noto+Sans+Arabic\", weights: \"400;500;700\" },\n he: { family: \"Noto+Sans+Hebrew\", weights: \"400;500;700\" },\n fa: { family: \"Noto+Sans+Arabic\", weights: \"400;500;700\" },\n} as const satisfies Record<string, { family: string; weights: string }>;\n\nexport type Lang = keyof typeof FONT_MAP;\n\n// ─── 已加载字体缓存(模块级单例,避免重复插入) ──────────────\nconst loaded = new Set<string>();\n\nfunction filterValidLangs(langs: string[]): Lang[] {\n return langs.filter((lang): lang is Lang => {\n if (lang in FONT_MAP) return true;\n if (!import.meta.env.PROD) {\n console.warn(\n `[useFontLoader] unsupported lang: \"${lang}\". ` +\n `Supported values: ${Object.keys(FONT_MAP).join(\", \")}`,\n );\n }\n return false;\n });\n}\n\nexport interface UseFontLoaderOptions {\n /**\n * 要加载的字体对应的语言\n *\n * 默认为`en`\n */\n langs?: Lang | Lang[];\n\n /**\n * 指定 data-lang 写入的目标元素。\n * - 传入 ref:仅在该元素上生效,适合局部语言切换。\n * - 不传(undefined):写入 ,全局生效。\n * 卸载时自动恢复目标元素的原始 data-lang 值。\n *\n * apply 为 false 时此选项无效。\n */\n targetRef?: HTMLElement;\n\n /**\n * 是否将 data-lang 写入目标元素以应用字体样式。\n * - true(默认):写入 data-lang,字体立即生效。\n * - false:仅预加载字体资源,不修改任何 DOM,\n * 适合提前预热用户可能切换到的语言字体。\n * @default\n */\n apply?: boolean;\n}\n\n/* ----------------------------------------------------------------\n 工具:插入 Google Fonts\n ---------------------------------------------------------------- */\nfunction loadGoogleFonts(langs: Lang[]): void {\n const toLoad = langs.filter((lang) => !loaded.has(FONT_MAP[lang].family));\n if (toLoad.length === 0) return;\n\n const families = [\n ...new Set(\n toLoad.map((lang) => {\n const { family, weights } = FONT_MAP[lang];\n return `family=${family}:wght@${weights}`;\n }),\n ),\n ];\n\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = `https://fonts.googleapis.com/css2?${families.join(\"&\")}&display=swap`;\n\n document.head.appendChild(link);\n for (const lang of toLoad) {\n loaded.add(FONT_MAP[lang].family);\n }\n}\n\n// ─── Hook ─────────────────────────────────────────────────────\nexport function useFontLoader(options?: UseFontLoaderOptions) {\n const {\n langs = \"en\",\n targetRef = document.documentElement,\n apply = true,\n } = options ?? {};\n\n const langList = Array.isArray(langs) ? langs : [langs];\n const validLangs = filterValidLangs(langList);\n\n // --- 加载字体资源 ---\n createEffect(() => {\n loadGoogleFonts(validLangs);\n });\n\n // --- 将 data-lang 写入目标元素 ---\n createEffect(() => {\n if (!apply || validLangs.length === 0) return;\n\n // targetRef 未传或 ref.current 尚未挂载时,回退到\n const el = targetRef ?? document.documentElement;\n const lang = validLangs[0];\n const prev = el.getAttribute(\"data-lang\");\n\n el.setAttribute(\"data-lang\", lang);\n\n onCleanup(() => {\n // 卸载时恢复:原本有值则还原,原本无则移除\n if (prev === null) {\n el.removeAttribute(\"data-lang\");\n } else {\n el.setAttribute(\"data-lang\", prev);\n }\n });\n });\n}\n"],"mappings":";;AAGA,IAAMA,IAAW;CACf,IAAI;EAAE,QAAQ;EAAS,SAAS;CAAc;CAC9C,IAAI;EAAE,QAAQ;EAAS,SAAS;CAAc;CAC9C,IAAI;EAAE,QAAQ;EAAS,SAAS;CAAc;CAC9C,IAAI;EAAE,QAAQ;EAAa,SAAS;CAAc;CAClD,WAAW;EAAE,QAAQ;EAAgB,SAAS;CAAc;CAC5D,WAAW;EAAE,QAAQ;EAAgB,SAAS;CAAc;CAC5D,IAAI;EAAE,QAAQ;EAAgB,SAAS;CAAc;CACrD,IAAI;EAAE,QAAQ;EAAgB,SAAS;CAAc;CACrD,IAAI;EAAE,QAAQ;EAAwB,SAAS;CAAc;CAC7D,IAAI;EAAE,QAAQ;EAAkB,SAAS;CAAc;CACvD,IAAI;EAAE,QAAQ;EAAqB,SAAS;CAAc;CAC1D,IAAI;EAAE,QAAQ;EAAoB,SAAS;CAAc;CACzD,IAAI;EAAE,QAAQ;EAAoB,SAAS;CAAc;CACzD,IAAI;EAAE,QAAQ;EAAoB,SAAS;CAAc;AAC3D,GAKMC,oBAAS,IAAI,IAAY;AAE/B,SAASC,EAAiB,GAAyB;CACjD,OAAOC,EAAM,QAAQ,MACfC,KAAQJ,CAQb;AACH;AAiCA,SAASK,EAAgB,GAAqB;CAC5C,IAAMC,IAASH,EAAM,QAAQ,MAAS,CAACF,EAAO,IAAID,EAASI,EAAK,CAAC,MAAM,CAAC;CACxE,IAAIE,EAAO,WAAW,GAAG;CAEzB,IAAMC,IAAW,CACf,GAAG,IAAI,IACLD,EAAO,KAAK,MAAS;EACnB,IAAM,EAAE,WAAQ,eAAYN,EAASI;EACrC,OAAO,UAAUI,EAAO,QAAQC;CAClC,CAAC,CACH,CACF,GAEMC,IAAO,SAAS,cAAc,MAAM;CAI1C,AAHA,EAAK,MAAM,cACX,EAAK,OAAO,qCAAqCH,EAAS,KAAK,GAAG,EAAE,gBAEpE,SAAS,KAAK,YAAYG,CAAI;CAC9B,KAAK,IAAMN,KAAQE,GACjB,EAAO,IAAIN,EAASI,EAAK,CAAC,MAAM;AAEpC;AAGA,SAAgBO,EAAc,GAAgC;CAC5D,IAAM,EACJ,WAAQ,MACR,eAAY,SAAS,iBACrB,WAAQ,OACNC,KAAW,CAAC,GAGVC,IAAaX,EADF,MAAM,QAAQC,CAAK,IAAIA,IAAQ,CAACA,CAAK,CACV;CAQ5C,AALAW,QAAmB;EACjB,EAAgBD,CAAU;CAC5B,CAAC,GAGDC,QAAmB;EACjB,IAAI,CAACC,KAASF,EAAW,WAAW,GAAG;EAGvC,IAAMG,IAAKC,KAAa,SAAS,iBAC3Bb,IAAOS,EAAW,IAClBK,IAAOF,EAAG,aAAa,WAAW;EAIxC,AAFAA,EAAG,aAAa,aAAaZ,CAAI,GAEjCe,QAAgB;GAEd,AAAID,MAAS,OACXF,EAAG,gBAAgB,WAAW,IAE9BA,EAAG,aAAa,aAAaE,CAAI;EAErC,CAAC;CACH,CAAC;AACH"}
1
+ {"version":3,"file":"useFontLoader.js","names":["FONT_MAP","loaded","filterValidLangs","langs","lang","loadGoogleFonts","toLoad","families","family","weights","link","useFontLoader","options","validLangs","createEffect","apply","el","targetRef","prev","onCleanup"],"sources":["../../src/hooks/useFontLoader.ts"],"sourcesContent":["import { createEffect, onCleanup } from \"solid-js\";\n\n// ─── 字体配置表 ────────────────────────────────────────────────\nconst FONT_MAP = {\n en: { family: \"Inter\", weights: \"400;500;700\" },\n fr: { family: \"Inter\", weights: \"400;500;700\" },\n de: { family: \"Inter\", weights: \"400;500;700\" },\n ru: { family: \"Noto+Sans\", weights: \"400;500;700\" },\n \"zh-hans\": { family: \"Noto+Sans+SC\", weights: \"400;500;700\" },\n \"zh-hant\": { family: \"Noto+Sans+TC\", weights: \"400;500;700\" },\n ja: { family: \"Noto+Sans+JP\", weights: \"400;500;700\" },\n ko: { family: \"Noto+Sans+KR\", weights: \"400;500;700\" },\n hi: { family: \"Noto+Sans+Devanagari\", weights: \"400;500;700\" },\n th: { family: \"Noto+Sans+Thai\", weights: \"400;500;700\" },\n bn: { family: \"Noto+Sans+Bengali\", weights: \"400;500;700\" },\n ar: { family: \"Noto+Sans+Arabic\", weights: \"400;500;700\" },\n he: { family: \"Noto+Sans+Hebrew\", weights: \"400;500;700\" },\n fa: { family: \"Noto+Sans+Arabic\", weights: \"400;500;700\" },\n} as const satisfies Record<string, { family: string; weights: string }>;\n\nexport type Lang = keyof typeof FONT_MAP;\n\n// ─── 已加载字体缓存(模块级单例,避免重复插入) ──────────────\nconst loaded = new Set<string>();\n\nfunction filterValidLangs(langs: string[]): Lang[] {\n return langs.filter((lang): lang is Lang => {\n if (lang in FONT_MAP) return true;\n if (!import.meta.env.PROD) {\n console.warn(\n `[useFontLoader] unsupported lang: \"${lang}\". ` +\n `Supported values: ${Object.keys(FONT_MAP).join(\", \")}`,\n );\n }\n return false;\n });\n}\n\nexport interface UseFontLoaderOptions {\n /**\n * 要加载的字体对应的语言\n *\n * 默认为`en`\n */\n langs?: Lang | Lang[];\n\n /**\n * 指定 data-lang 写入的目标元素。\n * - 传入 ref:仅在该元素上生效,适合局部语言切换。\n * - 不传(undefined):写入 ,全局生效。\n * 卸载时自动恢复目标元素的原始 data-lang 值。\n *\n * apply 为 false 时此选项无效。\n */\n targetRef?: HTMLElement;\n\n /**\n * 是否将 data-lang 写入目标元素以应用字体样式。\n * - true(默认):写入 data-lang,字体立即生效。\n * - false:仅预加载字体资源,不修改任何 DOM,\n * 适合提前预热用户可能切换到的语言字体。\n * @default\n */\n apply?: boolean;\n}\n\n/* ----------------------------------------------------------------\n 工具:插入 Google Fonts\n ---------------------------------------------------------------- */\nfunction loadGoogleFonts(langs: Lang[]): void {\n const toLoad = langs.filter((lang) => !loaded.has(FONT_MAP[lang].family));\n if (toLoad.length === 0) return;\n\n const families = [\n ...new Set(\n toLoad.map((lang) => {\n const { family, weights } = FONT_MAP[lang];\n return `family=${family}:wght@${weights}`;\n }),\n ),\n ];\n\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = `https://fonts.googleapis.com/css2?${families.join(\"&\")}&display=swap`;\n\n document.head.appendChild(link);\n for (const lang of toLoad) {\n loaded.add(FONT_MAP[lang].family);\n }\n}\n\n// ─── Hook ─────────────────────────────────────────────────────\nexport function useFontLoader(options?: UseFontLoaderOptions) {\n const {\n langs = \"en\",\n targetRef = document.documentElement,\n apply = true,\n } = options ?? {};\n\n const langList = Array.isArray(langs) ? langs : [langs];\n const validLangs = filterValidLangs(langList);\n\n // --- 加载字体资源 ---\n createEffect(() => {\n loadGoogleFonts(validLangs);\n });\n\n // --- 将 data-lang 写入目标元素 ---\n createEffect(() => {\n if (!apply || validLangs.length === 0) return;\n\n // targetRef 在解构 options 时已默认成 document.documentElement\n // (显式传 undefined 也会走默认值),因此这里不再需要二次兜底。\n const el = targetRef;\n const lang = validLangs[0];\n const prev = el.getAttribute(\"data-lang\");\n\n el.setAttribute(\"data-lang\", lang);\n\n onCleanup(() => {\n // 卸载时恢复:原本有值则还原,原本无则移除\n if (prev === null) {\n el.removeAttribute(\"data-lang\");\n } else {\n el.setAttribute(\"data-lang\", prev);\n }\n });\n });\n}\n"],"mappings":";;AAGA,IAAMA,IAAW;CACf,IAAI;EAAE,QAAQ;EAAS,SAAS;CAAc;CAC9C,IAAI;EAAE,QAAQ;EAAS,SAAS;CAAc;CAC9C,IAAI;EAAE,QAAQ;EAAS,SAAS;CAAc;CAC9C,IAAI;EAAE,QAAQ;EAAa,SAAS;CAAc;CAClD,WAAW;EAAE,QAAQ;EAAgB,SAAS;CAAc;CAC5D,WAAW;EAAE,QAAQ;EAAgB,SAAS;CAAc;CAC5D,IAAI;EAAE,QAAQ;EAAgB,SAAS;CAAc;CACrD,IAAI;EAAE,QAAQ;EAAgB,SAAS;CAAc;CACrD,IAAI;EAAE,QAAQ;EAAwB,SAAS;CAAc;CAC7D,IAAI;EAAE,QAAQ;EAAkB,SAAS;CAAc;CACvD,IAAI;EAAE,QAAQ;EAAqB,SAAS;CAAc;CAC1D,IAAI;EAAE,QAAQ;EAAoB,SAAS;CAAc;CACzD,IAAI;EAAE,QAAQ;EAAoB,SAAS;CAAc;CACzD,IAAI;EAAE,QAAQ;EAAoB,SAAS;CAAc;AAC3D,GAKMC,oBAAS,IAAI,IAAY;AAE/B,SAASC,EAAiB,GAAyB;CACjD,OAAOC,EAAM,QAAQ,MACfC,KAAQJ,CAQb;AACH;AAiCA,SAASK,EAAgB,GAAqB;CAC5C,IAAMC,IAASH,EAAM,QAAQ,MAAS,CAACF,EAAO,IAAID,EAASI,EAAK,CAAC,MAAM,CAAC;CACxE,IAAIE,EAAO,WAAW,GAAG;CAEzB,IAAMC,IAAW,CACf,GAAG,IAAI,IACLD,EAAO,KAAK,MAAS;EACnB,IAAM,EAAE,WAAQ,eAAYN,EAASI;EACrC,OAAO,UAAUI,EAAO,QAAQC;CAClC,CAAC,CACH,CACF,GAEMC,IAAO,SAAS,cAAc,MAAM;CAI1C,AAHA,EAAK,MAAM,cACX,EAAK,OAAO,qCAAqCH,EAAS,KAAK,GAAG,EAAE,gBAEpE,SAAS,KAAK,YAAYG,CAAI;CAC9B,KAAK,IAAMN,KAAQE,GACjB,EAAO,IAAIN,EAASI,EAAK,CAAC,MAAM;AAEpC;AAGA,SAAgBO,EAAc,GAAgC;CAC5D,IAAM,EACJ,WAAQ,MACR,eAAY,SAAS,iBACrB,WAAQ,OACNC,KAAW,CAAC,GAGVC,IAAaX,EADF,MAAM,QAAQC,CAAK,IAAIA,IAAQ,CAACA,CAAK,CACV;CAQ5C,AALAW,QAAmB;EACjB,EAAgBD,CAAU;CAC5B,CAAC,GAGDC,QAAmB;EACjB,IAAI,CAACC,KAASF,EAAW,WAAW,GAAG;EAIvC,IAAMG,IAAKC,GACLb,IAAOS,EAAW,IAClBK,IAAOF,EAAG,aAAa,WAAW;EAIxC,AAFAA,EAAG,aAAa,aAAaZ,CAAI,GAEjCe,QAAgB;GAEd,AAAID,MAAS,OACXF,EAAG,gBAAgB,WAAW,IAE9BA,EAAG,aAAa,aAAaE,CAAI;EAErC,CAAC;CACH,CAAC;AACH"}
@@ -12,5 +12,8 @@ export interface ScrollEdges {
12
12
  *
13
13
  * 监听 scroll(passive) + ResizeObserver(容器与首个子元素尺寸) +
14
14
  * MutationObserver(childList/subtree),因此面板高度变化、选项增删后显隐都能及时更新。
15
+ *
16
+ * 显隐用**迟滞阈值**:从"无内容"变为"有内容"要超过 4px,反向要回落到 1px 以内,
17
+ * 避免在滚动到边界时 canScroll* 每帧抖动(箭头反复出现/消失)。
15
18
  */
16
19
  export declare function useScrollEdges(target: Accessor<HTMLElement | undefined>): ScrollEdges;