@neut/ui 0.0.15 → 0.0.16

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 (968) hide show
  1. package/dist/components/accordion/Accordion/Accordion.context.d.ts +1 -1
  2. package/dist/components/accordion/Accordion/Accordion.context.js.map +1 -1
  3. package/dist/components/accordion/Accordion/Accordion.d.ts +1 -1
  4. package/dist/components/accordion/Accordion/Accordion.js.map +1 -1
  5. package/dist/components/accordion/Accordion/Accordion.styles.js.map +1 -1
  6. package/dist/components/accordion/Accordion/useAccordion.js.map +1 -1
  7. package/dist/components/accordion/AccordionContent/AccordionContent.d.ts +1 -1
  8. package/dist/components/accordion/AccordionContent/AccordionContent.js.map +1 -1
  9. package/dist/components/accordion/AccordionContent/AccordionContent.styles.js.map +1 -1
  10. package/dist/components/accordion/AccordionItem/AccordionItem.context.js.map +1 -1
  11. package/dist/components/accordion/AccordionItem/AccordionItem.d.ts +1 -1
  12. package/dist/components/accordion/AccordionItem/AccordionItem.js.map +1 -1
  13. package/dist/components/accordion/AccordionItem/AccordionItem.styles.js.map +1 -1
  14. package/dist/components/accordion/AccordionTrigger/AccordionTrigger.d.ts +1 -1
  15. package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js.map +1 -1
  16. package/dist/components/accordion/AccordionTrigger/AccordionTrigger.styles.js.map +1 -1
  17. package/dist/components/alert/Alert/Alert.d.ts +1 -1
  18. package/dist/components/alert/Alert/Alert.js.map +1 -1
  19. package/dist/components/alert/Alert/Alert.styles.js.map +1 -1
  20. package/dist/components/alert/AlertAction/AlertAction.d.ts +1 -1
  21. package/dist/components/alert/AlertAction/AlertAction.js.map +1 -1
  22. package/dist/components/alert/AlertAction/AlertAction.styles.js.map +1 -1
  23. package/dist/components/alert/AlertDescription/AlertDescription.d.ts +1 -1
  24. package/dist/components/alert/AlertDescription/AlertDescription.js.map +1 -1
  25. package/dist/components/alert/AlertDescription/AlertDescription.styles.js.map +1 -1
  26. package/dist/components/alert/AlertTitle/AlertTitle.d.ts +1 -1
  27. package/dist/components/alert/AlertTitle/AlertTitle.js.map +1 -1
  28. package/dist/components/alert/AlertTitle/AlertTitle.styles.js.map +1 -1
  29. package/dist/components/alert-dialog/AlertDialog/AlertDialog.d.ts +6 -1
  30. package/dist/components/alert-dialog/AlertDialog/AlertDialog.js +4 -19
  31. package/dist/components/alert-dialog/AlertDialog/AlertDialog.js.map +1 -1
  32. package/dist/components/alert-dialog/AlertDialog/AlertDialog.types.d.ts +6 -2
  33. package/dist/components/alert-dialog/AlertDialog/index.d.ts +1 -1
  34. package/dist/components/alert-dialog/AlertDialogAction/AlertDialogAction.d.ts +1 -1
  35. package/dist/components/alert-dialog/AlertDialogAction/AlertDialogAction.js +13 -4
  36. package/dist/components/alert-dialog/AlertDialogAction/AlertDialogAction.js.map +1 -1
  37. package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.d.ts +1 -1
  38. package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js +1 -1
  39. package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js.map +1 -1
  40. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.d.ts +1 -1
  41. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.js +19 -53
  42. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.js.map +1 -1
  43. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.styles.d.ts +1 -1
  44. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.styles.js +1 -1
  45. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.styles.js.map +1 -1
  46. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.types.d.ts +1 -1
  47. package/dist/components/alert-dialog/AlertDialogContent/index.d.ts +1 -1
  48. package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.d.ts +1 -1
  49. package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.js +1 -1
  50. package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.js.map +1 -1
  51. package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.styles.js.map +1 -1
  52. package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.d.ts +1 -1
  53. package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.js.map +1 -1
  54. package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.styles.js.map +1 -1
  55. package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.d.ts +1 -1
  56. package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.js.map +1 -1
  57. package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.styles.js.map +1 -1
  58. package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.d.ts +1 -1
  59. package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.js.map +1 -1
  60. package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.styles.js.map +1 -1
  61. package/dist/components/alert-dialog/AlertDialogOverlay/AlertDialogOverlay.d.ts +1 -1
  62. package/dist/components/alert-dialog/AlertDialogOverlay/AlertDialogOverlay.js +4 -22
  63. package/dist/components/alert-dialog/AlertDialogOverlay/AlertDialogOverlay.js.map +1 -1
  64. package/dist/components/alert-dialog/AlertDialogPortal/AlertDialogPortal.d.ts +1 -1
  65. package/dist/components/alert-dialog/AlertDialogPortal/AlertDialogPortal.js +4 -6
  66. package/dist/components/alert-dialog/AlertDialogPortal/AlertDialogPortal.js.map +1 -1
  67. package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.d.ts +1 -1
  68. package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.js +1 -1
  69. package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.js.map +1 -1
  70. package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.styles.js.map +1 -1
  71. package/dist/components/alert-dialog/AlertDialogTrigger/AlertDialogTrigger.d.ts +8 -2
  72. package/dist/components/alert-dialog/AlertDialogTrigger/AlertDialogTrigger.js +27 -6
  73. package/dist/components/alert-dialog/AlertDialogTrigger/AlertDialogTrigger.js.map +1 -1
  74. package/dist/components/alert-dialog/AlertDialogTrigger/AlertDialogTrigger.types.d.ts +4 -0
  75. package/dist/components/alert-dialog/AlertDialogTrigger/index.d.ts +1 -0
  76. package/dist/components/alert-dialog/index.js +13 -15
  77. package/dist/components/aspect-ratio/AspectRatio.d.ts +1 -1
  78. package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
  79. package/dist/components/aspect-ratio/AspectRatio.styles.js.map +1 -1
  80. package/dist/components/attachment/Attachment/Attachment.d.ts +6 -0
  81. package/dist/components/attachment/Attachment/Attachment.js +46 -0
  82. package/dist/components/attachment/Attachment/Attachment.js.map +1 -0
  83. package/dist/components/attachment/Attachment/Attachment.styles.d.ts +4 -0
  84. package/dist/components/attachment/Attachment/Attachment.styles.js +17 -0
  85. package/dist/components/attachment/Attachment/Attachment.styles.js.map +1 -0
  86. package/dist/components/attachment/Attachment/Attachment.types.d.ts +8 -0
  87. package/dist/components/attachment/Attachment/index.d.ts +2 -0
  88. package/dist/components/attachment/AttachmentAction/AttachmentAction.d.ts +3 -0
  89. package/dist/components/attachment/AttachmentAction/AttachmentAction.js +15 -0
  90. package/dist/components/attachment/AttachmentAction/AttachmentAction.js.map +1 -0
  91. package/dist/components/attachment/AttachmentAction/AttachmentAction.types.d.ts +2 -0
  92. package/dist/components/attachment/AttachmentAction/index.d.ts +2 -0
  93. package/dist/components/attachment/AttachmentActions/AttachmentActions.d.ts +3 -0
  94. package/dist/components/attachment/AttachmentActions/AttachmentActions.js +24 -0
  95. package/dist/components/attachment/AttachmentActions/AttachmentActions.js.map +1 -0
  96. package/dist/components/attachment/AttachmentActions/AttachmentActions.styles.d.ts +1 -0
  97. package/dist/components/attachment/AttachmentActions/AttachmentActions.styles.js +6 -0
  98. package/dist/components/attachment/AttachmentActions/AttachmentActions.styles.js.map +1 -0
  99. package/dist/components/attachment/AttachmentActions/AttachmentActions.types.d.ts +2 -0
  100. package/dist/components/attachment/AttachmentActions/index.d.ts +2 -0
  101. package/dist/components/attachment/AttachmentContent/AttachmentContent.d.ts +3 -0
  102. package/dist/components/attachment/AttachmentContent/AttachmentContent.js +23 -0
  103. package/dist/components/attachment/AttachmentContent/AttachmentContent.js.map +1 -0
  104. package/dist/components/attachment/AttachmentContent/AttachmentContent.types.d.ts +2 -0
  105. package/dist/components/attachment/AttachmentContent/index.d.ts +2 -0
  106. package/dist/components/attachment/AttachmentDescription/AttachmentDescription.d.ts +3 -0
  107. package/dist/components/attachment/AttachmentDescription/AttachmentDescription.js +24 -0
  108. package/dist/components/attachment/AttachmentDescription/AttachmentDescription.js.map +1 -0
  109. package/dist/components/attachment/AttachmentDescription/AttachmentDescription.styles.d.ts +1 -0
  110. package/dist/components/attachment/AttachmentDescription/AttachmentDescription.styles.js +6 -0
  111. package/dist/components/attachment/AttachmentDescription/AttachmentDescription.styles.js.map +1 -0
  112. package/dist/components/attachment/AttachmentDescription/AttachmentDescription.types.d.ts +2 -0
  113. package/dist/components/attachment/AttachmentDescription/index.d.ts +2 -0
  114. package/dist/components/attachment/AttachmentGroup/AttachmentGroup.d.ts +3 -0
  115. package/dist/components/attachment/AttachmentGroup/AttachmentGroup.js +24 -0
  116. package/dist/components/attachment/AttachmentGroup/AttachmentGroup.js.map +1 -0
  117. package/dist/components/attachment/AttachmentGroup/AttachmentGroup.styles.d.ts +1 -0
  118. package/dist/components/attachment/AttachmentGroup/AttachmentGroup.styles.js +6 -0
  119. package/dist/components/attachment/AttachmentGroup/AttachmentGroup.styles.js.map +1 -0
  120. package/dist/components/attachment/AttachmentGroup/AttachmentGroup.types.d.ts +2 -0
  121. package/dist/components/attachment/AttachmentGroup/index.d.ts +2 -0
  122. package/dist/components/attachment/AttachmentMedia/AttachmentMedia.d.ts +3 -0
  123. package/dist/components/attachment/AttachmentMedia/AttachmentMedia.js +31 -0
  124. package/dist/components/attachment/AttachmentMedia/AttachmentMedia.js.map +1 -0
  125. package/dist/components/attachment/AttachmentMedia/AttachmentMedia.styles.d.ts +3 -0
  126. package/dist/components/attachment/AttachmentMedia/AttachmentMedia.styles.js +13 -0
  127. package/dist/components/attachment/AttachmentMedia/AttachmentMedia.styles.js.map +1 -0
  128. package/dist/components/attachment/AttachmentMedia/AttachmentMedia.types.d.ts +4 -0
  129. package/dist/components/attachment/AttachmentMedia/index.d.ts +2 -0
  130. package/dist/components/attachment/AttachmentTitle/AttachmentTitle.d.ts +3 -0
  131. package/dist/components/attachment/AttachmentTitle/AttachmentTitle.js +24 -0
  132. package/dist/components/attachment/AttachmentTitle/AttachmentTitle.js.map +1 -0
  133. package/dist/components/attachment/AttachmentTitle/AttachmentTitle.styles.d.ts +1 -0
  134. package/dist/components/attachment/AttachmentTitle/AttachmentTitle.styles.js +6 -0
  135. package/dist/components/attachment/AttachmentTitle/AttachmentTitle.styles.js.map +1 -0
  136. package/dist/components/attachment/AttachmentTitle/AttachmentTitle.types.d.ts +2 -0
  137. package/dist/components/attachment/AttachmentTitle/index.d.ts +2 -0
  138. package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.d.ts +7 -0
  139. package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.js +18 -0
  140. package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.js.map +1 -0
  141. package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.types.d.ts +5 -0
  142. package/dist/components/attachment/AttachmentTrigger/index.d.ts +2 -0
  143. package/dist/components/attachment/index.d.ts +18 -0
  144. package/dist/components/attachment/index.js +10 -0
  145. package/dist/components/avatar/Avatar/Avatar.context.js.map +1 -1
  146. package/dist/components/avatar/Avatar/Avatar.d.ts +1 -1
  147. package/dist/components/avatar/Avatar/Avatar.js.map +1 -1
  148. package/dist/components/avatar/AvatarBadge/AvatarBadge.d.ts +1 -1
  149. package/dist/components/avatar/AvatarBadge/AvatarBadge.js.map +1 -1
  150. package/dist/components/avatar/AvatarFallback/AvatarFallback.d.ts +1 -1
  151. package/dist/components/avatar/AvatarFallback/AvatarFallback.js.map +1 -1
  152. package/dist/components/avatar/AvatarGroup/AvatarGroup.d.ts +1 -1
  153. package/dist/components/avatar/AvatarGroup/AvatarGroup.js.map +1 -1
  154. package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.d.ts +1 -1
  155. package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js.map +1 -1
  156. package/dist/components/avatar/AvatarImage/AvatarImage.d.ts +1 -1
  157. package/dist/components/avatar/AvatarImage/AvatarImage.js.map +1 -1
  158. package/dist/components/badge/Badge.d.ts +1 -1
  159. package/dist/components/badge/Badge.js.map +1 -1
  160. package/dist/components/badge/Badge.styles.js.map +1 -1
  161. package/dist/components/breadcrumb/Breadcrumb/Breadcrumb.d.ts +1 -1
  162. package/dist/components/breadcrumb/Breadcrumb/Breadcrumb.js.map +1 -1
  163. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.d.ts +1 -1
  164. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js.map +1 -1
  165. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.styles.js.map +1 -1
  166. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.d.ts +1 -1
  167. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js.map +1 -1
  168. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.styles.js.map +1 -1
  169. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.d.ts +1 -1
  170. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js.map +1 -1
  171. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.styles.js.map +1 -1
  172. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.d.ts +1 -1
  173. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js.map +1 -1
  174. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.styles.js.map +1 -1
  175. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.d.ts +1 -1
  176. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js.map +1 -1
  177. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.styles.js.map +1 -1
  178. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.d.ts +1 -1
  179. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js.map +1 -1
  180. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.styles.js.map +1 -1
  181. package/dist/components/button/Button.d.ts +1 -1
  182. package/dist/components/button/Button.js +1 -1
  183. package/dist/components/button/Button.js.map +1 -1
  184. package/dist/components/button/Button.styles.js.map +1 -1
  185. package/dist/components/button-group/ButtonGroup/ButtonGroup.d.ts +1 -1
  186. package/dist/components/button-group/ButtonGroup/ButtonGroup.js.map +1 -1
  187. package/dist/components/button-group/ButtonGroup/ButtonGroup.styles.js.map +1 -1
  188. package/dist/components/button-group/ButtonGroupSeparator/ButtonGroupSeparator.d.ts +1 -1
  189. package/dist/components/button-group/ButtonGroupSeparator/ButtonGroupSeparator.js.map +1 -1
  190. package/dist/components/button-group/ButtonGroupSeparator/ButtonGroupSeparator.styles.js.map +1 -1
  191. package/dist/components/button-group/ButtonGroupText/ButtonGroupText.d.ts +1 -1
  192. package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js.map +1 -1
  193. package/dist/components/button-group/ButtonGroupText/ButtonGroupText.styles.js.map +1 -1
  194. package/dist/components/calendar/Calendar/Calendar.js.map +1 -1
  195. package/dist/components/calendar/Calendar/Calendar.utils.js.map +1 -1
  196. package/dist/components/card/Card/Card.d.ts +1 -1
  197. package/dist/components/card/Card/Card.js.map +1 -1
  198. package/dist/components/card/Card/Card.styles.js.map +1 -1
  199. package/dist/components/card/CardAction/CardAction.d.ts +1 -1
  200. package/dist/components/card/CardAction/CardAction.js.map +1 -1
  201. package/dist/components/card/CardAction/CardAction.styles.js.map +1 -1
  202. package/dist/components/card/CardContent/CardContent.d.ts +1 -1
  203. package/dist/components/card/CardContent/CardContent.js.map +1 -1
  204. package/dist/components/card/CardContent/CardContent.styles.js.map +1 -1
  205. package/dist/components/card/CardDescription/CardDescription.d.ts +1 -1
  206. package/dist/components/card/CardDescription/CardDescription.js.map +1 -1
  207. package/dist/components/card/CardDescription/CardDescription.styles.js.map +1 -1
  208. package/dist/components/card/CardFooter/CardFooter.d.ts +1 -1
  209. package/dist/components/card/CardFooter/CardFooter.js.map +1 -1
  210. package/dist/components/card/CardFooter/CardFooter.styles.js.map +1 -1
  211. package/dist/components/card/CardHeader/CardHeader.d.ts +1 -1
  212. package/dist/components/card/CardHeader/CardHeader.js.map +1 -1
  213. package/dist/components/card/CardHeader/CardHeader.styles.js.map +1 -1
  214. package/dist/components/card/CardTitle/CardTitle.d.ts +1 -1
  215. package/dist/components/card/CardTitle/CardTitle.js.map +1 -1
  216. package/dist/components/card/CardTitle/CardTitle.styles.js.map +1 -1
  217. package/dist/components/carousel/Carousel/Carousel.context.js.map +1 -1
  218. package/dist/components/carousel/Carousel/Carousel.d.ts +1 -1
  219. package/dist/components/carousel/Carousel/Carousel.js.map +1 -1
  220. package/dist/components/carousel/Carousel/Carousel.styles.js.map +1 -1
  221. package/dist/components/carousel/Carousel/useAutoPlay.js.map +1 -1
  222. package/dist/components/carousel/Carousel/useCarousel.js.map +1 -1
  223. package/dist/components/carousel/Carousel/useKeyboardNavigation.js.map +1 -1
  224. package/dist/components/carousel/CarouselContent/CarouselContent.d.ts +1 -1
  225. package/dist/components/carousel/CarouselContent/CarouselContent.js.map +1 -1
  226. package/dist/components/carousel/CarouselContent/useItemSizeMeasure.js.map +1 -1
  227. package/dist/components/carousel/CarouselDots/CarouselDots.d.ts +1 -1
  228. package/dist/components/carousel/CarouselDots/CarouselDots.js.map +1 -1
  229. package/dist/components/carousel/CarouselItem/CarouselItem.d.ts +1 -1
  230. package/dist/components/carousel/CarouselItem/CarouselItem.js.map +1 -1
  231. package/dist/components/carousel/CarouselNext/CarouselNext.d.ts +1 -1
  232. package/dist/components/carousel/CarouselNext/CarouselNext.js.map +1 -1
  233. package/dist/components/carousel/CarouselPrevious/CarouselPrevious.d.ts +1 -1
  234. package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js.map +1 -1
  235. package/dist/components/checkbox/Checkbox/Checkbox.d.ts +1 -1
  236. package/dist/components/checkbox/Checkbox/Checkbox.js.map +1 -1
  237. package/dist/components/checkbox/Checkbox/Checkbox.styles.js.map +1 -1
  238. package/dist/components/checkbox/CheckboxIndicator/CheckboxIndicator.d.ts +1 -1
  239. package/dist/components/checkbox/CheckboxIndicator/CheckboxIndicator.js.map +1 -1
  240. package/dist/components/checkbox/CheckboxIndicator/CheckboxIndicator.styles.js.map +1 -1
  241. package/dist/components/collapsible/Collapsible/Collapsible.context.js.map +1 -1
  242. package/dist/components/collapsible/Collapsible/Collapsible.d.ts +1 -1
  243. package/dist/components/collapsible/Collapsible/Collapsible.js.map +1 -1
  244. package/dist/components/collapsible/CollapsibleContent/CollapsibleContent.d.ts +1 -1
  245. package/dist/components/collapsible/CollapsibleContent/CollapsibleContent.js.map +1 -1
  246. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.d.ts +1 -1
  247. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js.map +1 -1
  248. package/dist/components/combobox/Combobox/Combobox.context.js.map +1 -1
  249. package/dist/components/combobox/Combobox/Combobox.js +50 -47
  250. package/dist/components/combobox/Combobox/Combobox.js.map +1 -1
  251. package/dist/components/combobox/Combobox/Combobox.types.d.ts +5 -0
  252. package/dist/components/combobox/ComboboxChip/ComboboxChip.js.map +1 -1
  253. package/dist/components/combobox/ComboboxChips/ComboboxChips.js.map +1 -1
  254. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.d.ts +1 -1
  255. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js.map +1 -1
  256. package/dist/components/combobox/ComboboxClear/ComboboxClear.d.ts +1 -1
  257. package/dist/components/combobox/ComboboxClear/ComboboxClear.js.map +1 -1
  258. package/dist/components/combobox/ComboboxCollection/ComboboxCollection.js.map +1 -1
  259. package/dist/components/combobox/ComboboxContent/ComboboxContent.d.ts +1 -1
  260. package/dist/components/combobox/ComboboxContent/ComboboxContent.js.map +1 -1
  261. package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.js.map +1 -1
  262. package/dist/components/combobox/ComboboxContent/useComboboxContent.js.map +1 -1
  263. package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.js.map +1 -1
  264. package/dist/components/combobox/ComboboxGroup/ComboboxGroup.js.map +1 -1
  265. package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -1
  266. package/dist/components/combobox/ComboboxItem/ComboboxItem.js.map +1 -1
  267. package/dist/components/combobox/ComboboxLabel/ComboboxLabel.js.map +1 -1
  268. package/dist/components/combobox/ComboboxList/ComboboxList.js +13 -12
  269. package/dist/components/combobox/ComboboxList/ComboboxList.js.map +1 -1
  270. package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.d.ts +1 -1
  271. package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.js.map +1 -1
  272. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js.map +1 -1
  273. package/dist/components/combobox/ComboboxValue/ComboboxValue.js.map +1 -1
  274. package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.js.map +1 -1
  275. package/dist/components/context-menu/ContextMenu/ContextMenu.context.d.ts +3 -0
  276. package/dist/components/context-menu/ContextMenu/ContextMenu.context.js +12 -0
  277. package/dist/components/context-menu/ContextMenu/ContextMenu.context.js.map +1 -0
  278. package/dist/components/context-menu/ContextMenu/ContextMenu.d.ts +23 -0
  279. package/dist/components/context-menu/ContextMenu/ContextMenu.js +73 -0
  280. package/dist/components/context-menu/ContextMenu/ContextMenu.js.map +1 -0
  281. package/dist/components/context-menu/ContextMenu/ContextMenu.types.d.ts +28 -0
  282. package/dist/components/context-menu/ContextMenu/index.d.ts +3 -0
  283. package/dist/components/context-menu/ContextMenuCheckboxItem/ContextMenuCheckboxItem.d.ts +6 -0
  284. package/dist/components/context-menu/ContextMenuCheckboxItem/ContextMenuCheckboxItem.js +78 -0
  285. package/dist/components/context-menu/ContextMenuCheckboxItem/ContextMenuCheckboxItem.js.map +1 -0
  286. package/dist/components/context-menu/ContextMenuCheckboxItem/ContextMenuCheckboxItem.types.d.ts +20 -0
  287. package/dist/components/context-menu/ContextMenuCheckboxItem/index.d.ts +2 -0
  288. package/dist/components/context-menu/ContextMenuContent/ContextMenuContent.d.ts +9 -0
  289. package/dist/components/context-menu/ContextMenuContent/ContextMenuContent.js +64 -0
  290. package/dist/components/context-menu/ContextMenuContent/ContextMenuContent.js.map +1 -0
  291. package/dist/components/context-menu/ContextMenuContent/ContextMenuContent.types.d.ts +26 -0
  292. package/dist/components/context-menu/ContextMenuContent/ContextMenuPopupSurface.d.ts +31 -0
  293. package/dist/components/context-menu/ContextMenuContent/ContextMenuPopupSurface.js +102 -0
  294. package/dist/components/context-menu/ContextMenuContent/ContextMenuPopupSurface.js.map +1 -0
  295. package/dist/components/context-menu/ContextMenuContent/index.d.ts +2 -0
  296. package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.d.ts +52 -0
  297. package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js +153 -0
  298. package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js.map +1 -0
  299. package/dist/components/context-menu/ContextMenuGroup/ContextMenuGroup.d.ts +6 -0
  300. package/dist/components/context-menu/ContextMenuGroup/ContextMenuGroup.js +29 -0
  301. package/dist/components/context-menu/ContextMenuGroup/ContextMenuGroup.js.map +1 -0
  302. package/dist/components/context-menu/ContextMenuGroup/ContextMenuGroup.types.d.ts +9 -0
  303. package/dist/components/context-menu/ContextMenuGroup/index.d.ts +2 -0
  304. package/dist/components/context-menu/ContextMenuItem/ContextMenuItem.d.ts +6 -0
  305. package/dist/components/context-menu/ContextMenuItem/ContextMenuItem.js +59 -0
  306. package/dist/components/context-menu/ContextMenuItem/ContextMenuItem.js.map +1 -0
  307. package/dist/components/context-menu/ContextMenuItem/ContextMenuItem.types.d.ts +22 -0
  308. package/dist/components/context-menu/ContextMenuItem/index.d.ts +2 -0
  309. package/dist/components/context-menu/ContextMenuLabel/ContextMenuLabel.d.ts +6 -0
  310. package/dist/components/context-menu/ContextMenuLabel/ContextMenuLabel.js +31 -0
  311. package/dist/components/context-menu/ContextMenuLabel/ContextMenuLabel.js.map +1 -0
  312. package/dist/components/context-menu/ContextMenuLabel/ContextMenuLabel.types.d.ts +8 -0
  313. package/dist/components/context-menu/ContextMenuLabel/index.d.ts +2 -0
  314. package/dist/components/context-menu/ContextMenuPortal/ContextMenuPortal.d.ts +16 -0
  315. package/dist/components/context-menu/ContextMenuPortal/ContextMenuPortal.js +18 -0
  316. package/dist/components/context-menu/ContextMenuPortal/ContextMenuPortal.js.map +1 -0
  317. package/dist/components/context-menu/ContextMenuPortal/index.d.ts +2 -0
  318. package/dist/components/context-menu/ContextMenuRadioGroup/ContextMenuRadioGroup.d.ts +12 -0
  319. package/dist/components/context-menu/ContextMenuRadioGroup/ContextMenuRadioGroup.js +48 -0
  320. package/dist/components/context-menu/ContextMenuRadioGroup/ContextMenuRadioGroup.js.map +1 -0
  321. package/dist/components/context-menu/ContextMenuRadioGroup/ContextMenuRadioGroup.types.d.ts +14 -0
  322. package/dist/components/context-menu/ContextMenuRadioGroup/index.d.ts +2 -0
  323. package/dist/components/context-menu/ContextMenuRadioItem/ContextMenuRadioItem.d.ts +6 -0
  324. package/dist/components/context-menu/ContextMenuRadioItem/ContextMenuRadioItem.js +74 -0
  325. package/dist/components/context-menu/ContextMenuRadioItem/ContextMenuRadioItem.js.map +1 -0
  326. package/dist/components/context-menu/ContextMenuRadioItem/ContextMenuRadioItem.types.d.ts +16 -0
  327. package/dist/components/context-menu/ContextMenuRadioItem/index.d.ts +2 -0
  328. package/dist/components/context-menu/ContextMenuSeparator/ContextMenuSeparator.d.ts +9 -0
  329. package/dist/components/context-menu/ContextMenuSeparator/ContextMenuSeparator.js +25 -0
  330. package/dist/components/context-menu/ContextMenuSeparator/ContextMenuSeparator.js.map +1 -0
  331. package/dist/components/context-menu/ContextMenuSeparator/ContextMenuSeparator.types.d.ts +8 -0
  332. package/dist/components/context-menu/ContextMenuSeparator/index.d.ts +2 -0
  333. package/dist/components/context-menu/ContextMenuShortcut/ContextMenuShortcut.d.ts +6 -0
  334. package/dist/components/context-menu/ContextMenuShortcut/ContextMenuShortcut.js +19 -0
  335. package/dist/components/context-menu/ContextMenuShortcut/ContextMenuShortcut.js.map +1 -0
  336. package/dist/components/context-menu/ContextMenuShortcut/ContextMenuShortcut.types.d.ts +6 -0
  337. package/dist/components/context-menu/ContextMenuShortcut/index.d.ts +2 -0
  338. package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.d.ts +7 -0
  339. package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js +55 -0
  340. package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js.map +1 -0
  341. package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.types.d.ts +18 -0
  342. package/dist/components/context-menu/ContextMenuSub/index.d.ts +2 -0
  343. package/dist/components/context-menu/ContextMenuSubContent/ContextMenuSubContent.d.ts +6 -0
  344. package/dist/components/context-menu/ContextMenuSubContent/ContextMenuSubContent.js +83 -0
  345. package/dist/components/context-menu/ContextMenuSubContent/ContextMenuSubContent.js.map +1 -0
  346. package/dist/components/context-menu/ContextMenuSubContent/ContextMenuSubContent.types.d.ts +17 -0
  347. package/dist/components/context-menu/ContextMenuSubContent/index.d.ts +2 -0
  348. package/dist/components/context-menu/ContextMenuSubTrigger/ContextMenuSubTrigger.d.ts +6 -0
  349. package/dist/components/context-menu/ContextMenuSubTrigger/ContextMenuSubTrigger.js +96 -0
  350. package/dist/components/context-menu/ContextMenuSubTrigger/ContextMenuSubTrigger.js.map +1 -0
  351. package/dist/components/context-menu/ContextMenuSubTrigger/ContextMenuSubTrigger.types.d.ts +21 -0
  352. package/dist/components/context-menu/ContextMenuSubTrigger/index.d.ts +2 -0
  353. package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.d.ts +13 -0
  354. package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js +34 -0
  355. package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js.map +1 -0
  356. package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.types.d.ts +15 -0
  357. package/dist/components/context-menu/ContextMenuTrigger/index.d.ts +4 -0
  358. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.d.ts +23 -0
  359. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js +47 -0
  360. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js.map +1 -0
  361. package/dist/components/context-menu/context-menu.context.d.ts +14 -0
  362. package/dist/components/context-menu/context-menu.context.js +25 -0
  363. package/dist/components/context-menu/context-menu.context.js.map +1 -0
  364. package/dist/components/context-menu/context-menu.entry.d.ts +28 -0
  365. package/dist/components/context-menu/context-menu.entry.js +31 -0
  366. package/dist/components/context-menu/context-menu.entry.js.map +1 -0
  367. package/dist/components/context-menu/context-menu.styles.d.ts +18 -0
  368. package/dist/components/context-menu/context-menu.styles.js +6 -0
  369. package/dist/components/context-menu/context-menu.styles.js.map +1 -0
  370. package/dist/components/context-menu/context-menu.types.d.ts +151 -0
  371. package/dist/components/context-menu/context-menu.utils.d.ts +28 -0
  372. package/dist/components/context-menu/context-menu.utils.js +51 -0
  373. package/dist/components/context-menu/context-menu.utils.js.map +1 -0
  374. package/dist/components/context-menu/index.d.ts +31 -0
  375. package/dist/components/context-menu/index.js +16 -0
  376. package/dist/components/data-table/createRowModel.d.ts +20 -0
  377. package/dist/components/data-table/createRowModel.js +46 -0
  378. package/dist/components/data-table/createRowModel.js.map +1 -0
  379. package/dist/components/data-table/createTable.d.ts +16 -0
  380. package/dist/components/data-table/createTable.js +94 -0
  381. package/dist/components/data-table/createTable.js.map +1 -0
  382. package/dist/components/data-table/createTableColumns.d.ts +19 -0
  383. package/dist/components/data-table/createTableColumns.js +68 -0
  384. package/dist/components/data-table/createTableColumns.js.map +1 -0
  385. package/dist/components/data-table/createTableHeaders.d.ts +10 -0
  386. package/dist/components/data-table/createTableHeaders.js +26 -0
  387. package/dist/components/data-table/createTableHeaders.js.map +1 -0
  388. package/dist/components/data-table/createTableRows.d.ts +16 -0
  389. package/dist/components/data-table/createTableRows.js +57 -0
  390. package/dist/components/data-table/createTableRows.js.map +1 -0
  391. package/dist/components/data-table/createTableSelection.d.ts +12 -0
  392. package/dist/components/data-table/createTableSelection.js +23 -0
  393. package/dist/components/data-table/createTableSelection.js.map +1 -0
  394. package/dist/components/data-table/createTableState.d.ts +16 -0
  395. package/dist/components/data-table/createTableState.js +34 -0
  396. package/dist/components/data-table/createTableState.js.map +1 -0
  397. package/dist/components/data-table/data-table.types.d.ts +123 -0
  398. package/dist/components/data-table/data-table.utils.d.ts +4 -0
  399. package/dist/components/data-table/data-table.utils.js +11 -0
  400. package/dist/components/data-table/data-table.utils.js.map +1 -0
  401. package/dist/components/data-table/index.d.ts +2 -0
  402. package/dist/components/data-table/index.js +2 -0
  403. package/dist/components/date-picker/DatePicker/DatePicker.js.map +1 -1
  404. package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -1
  405. package/dist/components/dialog/Dialog/Dialog.d.ts +1 -1
  406. package/dist/components/dialog/Dialog/Dialog.js +18 -16
  407. package/dist/components/dialog/Dialog/Dialog.js.map +1 -1
  408. package/dist/components/dialog/Dialog/Dialog.types.d.ts +5 -0
  409. package/dist/components/dialog/DialogClose/DialogClose.d.ts +1 -1
  410. package/dist/components/dialog/DialogClose/DialogClose.js +5 -5
  411. package/dist/components/dialog/DialogClose/DialogClose.js.map +1 -1
  412. package/dist/components/dialog/DialogClose/DialogClose.styles.js.map +1 -1
  413. package/dist/components/dialog/DialogContent/DialogContent.context.js.map +1 -1
  414. package/dist/components/dialog/DialogContent/DialogContent.d.ts +1 -1
  415. package/dist/components/dialog/DialogContent/DialogContent.js +23 -55
  416. package/dist/components/dialog/DialogContent/DialogContent.js.map +1 -1
  417. package/dist/components/dialog/DialogContent/DialogContent.styles.js.map +1 -1
  418. package/dist/components/dialog/DialogDescription/DialogDescription.d.ts +1 -1
  419. package/dist/components/dialog/DialogDescription/DialogDescription.js.map +1 -1
  420. package/dist/components/dialog/DialogDescription/DialogDescription.styles.js.map +1 -1
  421. package/dist/components/dialog/DialogFooter/DialogFooter.d.ts +1 -1
  422. package/dist/components/dialog/DialogFooter/DialogFooter.js.map +1 -1
  423. package/dist/components/dialog/DialogFooter/DialogFooter.styles.js.map +1 -1
  424. package/dist/components/dialog/DialogHeader/DialogHeader.d.ts +1 -1
  425. package/dist/components/dialog/DialogHeader/DialogHeader.js.map +1 -1
  426. package/dist/components/dialog/DialogHeader/DialogHeader.styles.js.map +1 -1
  427. package/dist/components/dialog/DialogOverlay/DialogOverlay.d.ts +1 -1
  428. package/dist/components/dialog/DialogOverlay/DialogOverlay.js +18 -10
  429. package/dist/components/dialog/DialogOverlay/DialogOverlay.js.map +1 -1
  430. package/dist/components/dialog/DialogOverlay/DialogOverlay.styles.js.map +1 -1
  431. package/dist/components/dialog/DialogOverlay/DialogOverlay.types.d.ts +4 -1
  432. package/dist/components/dialog/DialogPortal/DialogPortal.d.ts +1 -1
  433. package/dist/components/dialog/DialogPortal/DialogPortal.js.map +1 -1
  434. package/dist/components/dialog/DialogSurface/DialogSurface.d.ts +2 -0
  435. package/dist/components/dialog/DialogSurface/DialogSurface.js +77 -0
  436. package/dist/components/dialog/DialogSurface/DialogSurface.js.map +1 -0
  437. package/dist/components/dialog/DialogSurface/DialogSurface.types.d.ts +15 -0
  438. package/dist/components/dialog/DialogSurface/index.d.ts +2 -0
  439. package/dist/components/dialog/DialogTitle/DialogTitle.d.ts +1 -1
  440. package/dist/components/dialog/DialogTitle/DialogTitle.js.map +1 -1
  441. package/dist/components/dialog/DialogTitle/DialogTitle.styles.js.map +1 -1
  442. package/dist/components/dialog/DialogTrigger/DialogTrigger.d.ts +1 -1
  443. package/dist/components/dialog/DialogTrigger/DialogTrigger.js.map +1 -1
  444. package/dist/components/dialog/DialogTrigger/useDialogTrigger.js.map +1 -1
  445. package/dist/components/dialog/index.d.ts +1 -0
  446. package/dist/components/dialog/index.js +9 -8
  447. package/dist/components/dropdown-menu/DropdownMenu/DropdownMenu.context.d.ts +3 -0
  448. package/dist/components/dropdown-menu/DropdownMenu/DropdownMenu.context.js +12 -0
  449. package/dist/components/dropdown-menu/DropdownMenu/DropdownMenu.context.js.map +1 -0
  450. package/dist/components/dropdown-menu/DropdownMenu/DropdownMenu.d.ts +9 -0
  451. package/dist/components/dropdown-menu/DropdownMenu/DropdownMenu.js +82 -0
  452. package/dist/components/dropdown-menu/DropdownMenu/DropdownMenu.js.map +1 -0
  453. package/dist/components/dropdown-menu/DropdownMenu/DropdownMenu.types.d.ts +26 -0
  454. package/dist/components/dropdown-menu/DropdownMenu/index.d.ts +3 -0
  455. package/dist/components/dropdown-menu/DropdownMenuCheckboxItem/DropdownMenuCheckboxItem.d.ts +2 -0
  456. package/dist/components/dropdown-menu/DropdownMenuCheckboxItem/DropdownMenuCheckboxItem.js +78 -0
  457. package/dist/components/dropdown-menu/DropdownMenuCheckboxItem/DropdownMenuCheckboxItem.js.map +1 -0
  458. package/dist/components/dropdown-menu/DropdownMenuCheckboxItem/DropdownMenuCheckboxItem.types.d.ts +14 -0
  459. package/dist/components/dropdown-menu/DropdownMenuCheckboxItem/index.d.ts +2 -0
  460. package/dist/components/dropdown-menu/DropdownMenuContent/DropdownMenuContent.d.ts +6 -0
  461. package/dist/components/dropdown-menu/DropdownMenuContent/DropdownMenuContent.js +64 -0
  462. package/dist/components/dropdown-menu/DropdownMenuContent/DropdownMenuContent.js.map +1 -0
  463. package/dist/components/dropdown-menu/DropdownMenuContent/DropdownMenuContent.types.d.ts +13 -0
  464. package/dist/components/dropdown-menu/DropdownMenuContent/index.d.ts +2 -0
  465. package/dist/components/dropdown-menu/DropdownMenuGroup/DropdownMenuGroup.d.ts +2 -0
  466. package/dist/components/dropdown-menu/DropdownMenuGroup/DropdownMenuGroup.js +29 -0
  467. package/dist/components/dropdown-menu/DropdownMenuGroup/DropdownMenuGroup.js.map +1 -0
  468. package/dist/components/dropdown-menu/DropdownMenuGroup/DropdownMenuGroup.types.d.ts +2 -0
  469. package/dist/components/dropdown-menu/DropdownMenuGroup/index.d.ts +2 -0
  470. package/dist/components/dropdown-menu/DropdownMenuItem/DropdownMenuItem.d.ts +2 -0
  471. package/dist/components/dropdown-menu/DropdownMenuItem/DropdownMenuItem.js +59 -0
  472. package/dist/components/dropdown-menu/DropdownMenuItem/DropdownMenuItem.js.map +1 -0
  473. package/dist/components/dropdown-menu/DropdownMenuItem/DropdownMenuItem.types.d.ts +14 -0
  474. package/dist/components/dropdown-menu/DropdownMenuItem/index.d.ts +2 -0
  475. package/dist/components/dropdown-menu/DropdownMenuLabel/DropdownMenuLabel.d.ts +2 -0
  476. package/dist/components/dropdown-menu/DropdownMenuLabel/DropdownMenuLabel.js +31 -0
  477. package/dist/components/dropdown-menu/DropdownMenuLabel/DropdownMenuLabel.js.map +1 -0
  478. package/dist/components/dropdown-menu/DropdownMenuLabel/DropdownMenuLabel.types.d.ts +4 -0
  479. package/dist/components/dropdown-menu/DropdownMenuLabel/index.d.ts +2 -0
  480. package/dist/components/dropdown-menu/DropdownMenuPortal/DropdownMenuPortal.d.ts +2 -0
  481. package/dist/components/dropdown-menu/DropdownMenuPortal/DropdownMenuPortal.js +10 -0
  482. package/dist/components/dropdown-menu/DropdownMenuPortal/DropdownMenuPortal.js.map +1 -0
  483. package/dist/components/dropdown-menu/DropdownMenuPortal/DropdownMenuPortal.types.d.ts +2 -0
  484. package/dist/components/dropdown-menu/DropdownMenuPortal/index.d.ts +2 -0
  485. package/dist/components/dropdown-menu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.d.ts +2 -0
  486. package/dist/components/dropdown-menu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.js +48 -0
  487. package/dist/components/dropdown-menu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.js.map +1 -0
  488. package/dist/components/dropdown-menu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.types.d.ts +10 -0
  489. package/dist/components/dropdown-menu/DropdownMenuRadioGroup/index.d.ts +2 -0
  490. package/dist/components/dropdown-menu/DropdownMenuRadioItem/DropdownMenuRadioItem.d.ts +2 -0
  491. package/dist/components/dropdown-menu/DropdownMenuRadioItem/DropdownMenuRadioItem.js +74 -0
  492. package/dist/components/dropdown-menu/DropdownMenuRadioItem/DropdownMenuRadioItem.js.map +1 -0
  493. package/dist/components/dropdown-menu/DropdownMenuRadioItem/DropdownMenuRadioItem.types.d.ts +11 -0
  494. package/dist/components/dropdown-menu/DropdownMenuRadioItem/index.d.ts +2 -0
  495. package/dist/components/dropdown-menu/DropdownMenuSeparator/DropdownMenuSeparator.d.ts +2 -0
  496. package/dist/components/dropdown-menu/DropdownMenuSeparator/DropdownMenuSeparator.js +25 -0
  497. package/dist/components/dropdown-menu/DropdownMenuSeparator/DropdownMenuSeparator.js.map +1 -0
  498. package/dist/components/dropdown-menu/DropdownMenuSeparator/DropdownMenuSeparator.types.d.ts +2 -0
  499. package/dist/components/dropdown-menu/DropdownMenuSeparator/index.d.ts +2 -0
  500. package/dist/components/dropdown-menu/DropdownMenuShortcut/DropdownMenuShortcut.d.ts +2 -0
  501. package/dist/components/dropdown-menu/DropdownMenuShortcut/DropdownMenuShortcut.js +19 -0
  502. package/dist/components/dropdown-menu/DropdownMenuShortcut/DropdownMenuShortcut.js.map +1 -0
  503. package/dist/components/dropdown-menu/DropdownMenuShortcut/DropdownMenuShortcut.types.d.ts +2 -0
  504. package/dist/components/dropdown-menu/DropdownMenuShortcut/index.d.ts +2 -0
  505. package/dist/components/dropdown-menu/DropdownMenuSub/DropdownMenuSub.d.ts +4 -0
  506. package/dist/components/dropdown-menu/DropdownMenuSub/DropdownMenuSub.js +10 -0
  507. package/dist/components/dropdown-menu/DropdownMenuSub/DropdownMenuSub.js.map +1 -0
  508. package/dist/components/dropdown-menu/DropdownMenuSub/DropdownMenuSub.types.d.ts +2 -0
  509. package/dist/components/dropdown-menu/DropdownMenuSub/index.d.ts +2 -0
  510. package/dist/components/dropdown-menu/DropdownMenuSubContent/DropdownMenuSubContent.d.ts +2 -0
  511. package/dist/components/dropdown-menu/DropdownMenuSubContent/DropdownMenuSubContent.js +82 -0
  512. package/dist/components/dropdown-menu/DropdownMenuSubContent/DropdownMenuSubContent.js.map +1 -0
  513. package/dist/components/dropdown-menu/DropdownMenuSubContent/DropdownMenuSubContent.types.d.ts +15 -0
  514. package/dist/components/dropdown-menu/DropdownMenuSubContent/index.d.ts +2 -0
  515. package/dist/components/dropdown-menu/DropdownMenuSubTrigger/DropdownMenuSubTrigger.d.ts +2 -0
  516. package/dist/components/dropdown-menu/DropdownMenuSubTrigger/DropdownMenuSubTrigger.js +96 -0
  517. package/dist/components/dropdown-menu/DropdownMenuSubTrigger/DropdownMenuSubTrigger.js.map +1 -0
  518. package/dist/components/dropdown-menu/DropdownMenuSubTrigger/DropdownMenuSubTrigger.types.d.ts +12 -0
  519. package/dist/components/dropdown-menu/DropdownMenuSubTrigger/index.d.ts +2 -0
  520. package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.d.ts +5 -0
  521. package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js +42 -0
  522. package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js.map +1 -0
  523. package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.types.d.ts +4 -0
  524. package/dist/components/dropdown-menu/DropdownMenuTrigger/index.d.ts +2 -0
  525. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.d.ts +4 -0
  526. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js +30 -0
  527. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js.map +1 -0
  528. package/dist/components/dropdown-menu/dropdown-menu.styles.d.ts +11 -0
  529. package/dist/components/dropdown-menu/dropdown-menu.styles.js +6 -0
  530. package/dist/components/dropdown-menu/dropdown-menu.styles.js.map +1 -0
  531. package/dist/components/dropdown-menu/index.d.ts +30 -0
  532. package/dist/components/dropdown-menu/index.js +16 -0
  533. package/dist/components/empty/Empty/Empty.d.ts +1 -1
  534. package/dist/components/empty/Empty/Empty.js.map +1 -1
  535. package/dist/components/empty/EmptyContent/EmptyContent.d.ts +1 -1
  536. package/dist/components/empty/EmptyContent/EmptyContent.js.map +1 -1
  537. package/dist/components/empty/EmptyDescription/EmptyDescription.d.ts +1 -1
  538. package/dist/components/empty/EmptyDescription/EmptyDescription.js.map +1 -1
  539. package/dist/components/empty/EmptyHeader/EmptyHeader.d.ts +1 -1
  540. package/dist/components/empty/EmptyHeader/EmptyHeader.js.map +1 -1
  541. package/dist/components/empty/EmptyMedia/EmptyMedia.d.ts +1 -1
  542. package/dist/components/empty/EmptyMedia/EmptyMedia.js.map +1 -1
  543. package/dist/components/empty/EmptyMedia/EmptyMedia.styles.js.map +1 -1
  544. package/dist/components/empty/EmptyTitle/EmptyTitle.d.ts +1 -1
  545. package/dist/components/empty/EmptyTitle/EmptyTitle.js.map +1 -1
  546. package/dist/components/field/Field/Field.d.ts +1 -1
  547. package/dist/components/field/Field/Field.js.map +1 -1
  548. package/dist/components/field/Field/Field.styles.js.map +1 -1
  549. package/dist/components/field/FieldContent/FieldContent.d.ts +1 -1
  550. package/dist/components/field/FieldContent/FieldContent.js.map +1 -1
  551. package/dist/components/field/FieldDescription/FieldDescription.d.ts +1 -1
  552. package/dist/components/field/FieldDescription/FieldDescription.js.map +1 -1
  553. package/dist/components/field/FieldError/FieldError.d.ts +1 -1
  554. package/dist/components/field/FieldError/FieldError.js.map +1 -1
  555. package/dist/components/field/FieldGroup/FieldGroup.d.ts +1 -1
  556. package/dist/components/field/FieldGroup/FieldGroup.js.map +1 -1
  557. package/dist/components/field/FieldLabel/FieldLabel.d.ts +1 -1
  558. package/dist/components/field/FieldLabel/FieldLabel.js.map +1 -1
  559. package/dist/components/field/FieldLegend/FieldLegend.d.ts +1 -1
  560. package/dist/components/field/FieldLegend/FieldLegend.js.map +1 -1
  561. package/dist/components/field/FieldSeparator/FieldSeparator.d.ts +1 -1
  562. package/dist/components/field/FieldSeparator/FieldSeparator.js.map +1 -1
  563. package/dist/components/field/FieldSet/FieldSet.d.ts +1 -1
  564. package/dist/components/field/FieldSet/FieldSet.js.map +1 -1
  565. package/dist/components/field/FieldTitle/FieldTitle.d.ts +1 -1
  566. package/dist/components/field/FieldTitle/FieldTitle.js.map +1 -1
  567. package/dist/components/image/Image.config.js.map +1 -1
  568. package/dist/components/image/Image.js.map +1 -1
  569. package/dist/components/image/Image.utils.js +2 -2
  570. package/dist/components/image/Image.utils.js.map +1 -1
  571. package/dist/components/image/ImageElement.js.map +1 -1
  572. package/dist/components/image/ImagePreload.js.map +1 -1
  573. package/dist/components/input/Input.js.map +1 -1
  574. package/dist/components/input-group/InputGroup/InputGroup.d.ts +1 -1
  575. package/dist/components/input-group/InputGroup/InputGroup.js.map +1 -1
  576. package/dist/components/input-group/InputGroupAddon/InputGroupAddon.d.ts +1 -1
  577. package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js.map +1 -1
  578. package/dist/components/input-group/InputGroupAddon/InputGroupAddon.styles.js.map +1 -1
  579. package/dist/components/input-group/InputGroupButton/InputGroupButton.d.ts +1 -1
  580. package/dist/components/input-group/InputGroupButton/InputGroupButton.js.map +1 -1
  581. package/dist/components/input-group/InputGroupButton/InputGroupButton.styles.js.map +1 -1
  582. package/dist/components/input-group/InputGroupInput/InputGroupInput.d.ts +1 -1
  583. package/dist/components/input-group/InputGroupInput/InputGroupInput.js.map +1 -1
  584. package/dist/components/input-group/InputGroupText/InputGroupText.d.ts +1 -1
  585. package/dist/components/input-group/InputGroupText/InputGroupText.js.map +1 -1
  586. package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.d.ts +1 -1
  587. package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js.map +1 -1
  588. package/dist/components/item/Item/Item.d.ts +1 -1
  589. package/dist/components/item/Item/Item.js.map +1 -1
  590. package/dist/components/item/Item/Item.styles.js.map +1 -1
  591. package/dist/components/item/ItemActions/ItemActions.d.ts +1 -1
  592. package/dist/components/item/ItemActions/ItemActions.js.map +1 -1
  593. package/dist/components/item/ItemContent/ItemContent.d.ts +1 -1
  594. package/dist/components/item/ItemContent/ItemContent.js.map +1 -1
  595. package/dist/components/item/ItemDescription/ItemDescription.d.ts +1 -1
  596. package/dist/components/item/ItemDescription/ItemDescription.js.map +1 -1
  597. package/dist/components/item/ItemFooter/ItemFooter.d.ts +1 -1
  598. package/dist/components/item/ItemFooter/ItemFooter.js.map +1 -1
  599. package/dist/components/item/ItemGroup/ItemGroup.d.ts +1 -1
  600. package/dist/components/item/ItemGroup/ItemGroup.js.map +1 -1
  601. package/dist/components/item/ItemHeader/ItemHeader.d.ts +1 -1
  602. package/dist/components/item/ItemHeader/ItemHeader.js.map +1 -1
  603. package/dist/components/item/ItemMedia/ItemMedia.d.ts +1 -1
  604. package/dist/components/item/ItemMedia/ItemMedia.js.map +1 -1
  605. package/dist/components/item/ItemMedia/ItemMedia.styles.js.map +1 -1
  606. package/dist/components/item/ItemSeparator/ItemSeparator.d.ts +1 -1
  607. package/dist/components/item/ItemSeparator/ItemSeparator.js.map +1 -1
  608. package/dist/components/item/ItemTitle/ItemTitle.d.ts +1 -1
  609. package/dist/components/item/ItemTitle/ItemTitle.js.map +1 -1
  610. package/dist/components/kbd/Kbd.d.ts +2 -2
  611. package/dist/components/kbd/Kbd.js.map +1 -1
  612. package/dist/components/label/Label.d.ts +1 -1
  613. package/dist/components/label/Label.js.map +1 -1
  614. package/dist/components/number-input/NumberInput/NumberInput.d.ts +19 -0
  615. package/dist/components/number-input/NumberInput/NumberInput.js +153 -0
  616. package/dist/components/number-input/NumberInput/NumberInput.js.map +1 -0
  617. package/dist/components/number-input/NumberInput/NumberInput.types.d.ts +41 -0
  618. package/dist/components/number-input/NumberInput/NumberInput.utils.d.ts +10 -0
  619. package/dist/components/number-input/NumberInput/NumberInput.utils.js +24 -0
  620. package/dist/components/number-input/NumberInput/NumberInput.utils.js.map +1 -0
  621. package/dist/components/number-input/NumberInput/create-change-event-details.d.ts +8 -0
  622. package/dist/components/number-input/NumberInput/create-change-event-details.js +25 -0
  623. package/dist/components/number-input/NumberInput/create-change-event-details.js.map +1 -0
  624. package/dist/components/number-input/NumberInput/index.d.ts +2 -0
  625. package/dist/components/number-input/index.d.ts +2 -0
  626. package/dist/components/number-input/index.js +2 -0
  627. package/dist/components/pagination/Pagination/Pagination.d.ts +1 -1
  628. package/dist/components/pagination/Pagination/Pagination.js.map +1 -1
  629. package/dist/components/pagination/PaginationContent/PaginationContent.d.ts +1 -1
  630. package/dist/components/pagination/PaginationContent/PaginationContent.js.map +1 -1
  631. package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.d.ts +1 -1
  632. package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js.map +1 -1
  633. package/dist/components/pagination/PaginationItem/PaginationItem.d.ts +1 -1
  634. package/dist/components/pagination/PaginationItem/PaginationItem.js.map +1 -1
  635. package/dist/components/pagination/PaginationLink/PaginationLink.d.ts +1 -1
  636. package/dist/components/pagination/PaginationLink/PaginationLink.js +1 -1
  637. package/dist/components/pagination/PaginationLink/PaginationLink.js.map +1 -1
  638. package/dist/components/pagination/PaginationNext/PaginationNext.d.ts +1 -1
  639. package/dist/components/pagination/PaginationNext/PaginationNext.js.map +1 -1
  640. package/dist/components/pagination/PaginationPrevious/PaginationPrevious.d.ts +1 -1
  641. package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js.map +1 -1
  642. package/dist/components/popover/Popover/Popover.context.js.map +1 -1
  643. package/dist/components/popover/Popover/Popover.js +25 -22
  644. package/dist/components/popover/Popover/Popover.js.map +1 -1
  645. package/dist/components/popover/Popover/Popover.types.d.ts +5 -0
  646. package/dist/components/popover/PopoverContent/PopoverContent.d.ts +1 -1
  647. package/dist/components/popover/PopoverContent/PopoverContent.js.map +1 -1
  648. package/dist/components/popover/PopoverContent/PopoverContent.utils.js.map +1 -1
  649. package/dist/components/popover/PopoverContent/usePopoverContent.js.map +1 -1
  650. package/dist/components/popover/PopoverDescription/PopoverDescription.d.ts +1 -1
  651. package/dist/components/popover/PopoverDescription/PopoverDescription.js.map +1 -1
  652. package/dist/components/popover/PopoverHeader/PopoverHeader.d.ts +1 -1
  653. package/dist/components/popover/PopoverHeader/PopoverHeader.js.map +1 -1
  654. package/dist/components/popover/PopoverTitle/PopoverTitle.d.ts +1 -1
  655. package/dist/components/popover/PopoverTitle/PopoverTitle.js.map +1 -1
  656. package/dist/components/popover/PopoverTrigger/PopoverTrigger.d.ts +1 -1
  657. package/dist/components/popover/PopoverTrigger/PopoverTrigger.js.map +1 -1
  658. package/dist/components/popover/PopoverTrigger/usePopoverTrigger.js.map +1 -1
  659. package/dist/components/progress/Progress/Progress.context.js.map +1 -1
  660. package/dist/components/progress/Progress/Progress.d.ts +1 -1
  661. package/dist/components/progress/Progress/Progress.js.map +1 -1
  662. package/dist/components/progress/Progress/Progress.styles.js.map +1 -1
  663. package/dist/components/progress/ProgressIndicator/ProgressIndicator.d.ts +1 -1
  664. package/dist/components/progress/ProgressIndicator/ProgressIndicator.js.map +1 -1
  665. package/dist/components/progress/ProgressIndicator/ProgressIndicator.styles.js.map +1 -1
  666. package/dist/components/progress/ProgressLabel/ProgressLabel.d.ts +1 -1
  667. package/dist/components/progress/ProgressLabel/ProgressLabel.js.map +1 -1
  668. package/dist/components/progress/ProgressLabel/ProgressLabel.styles.js.map +1 -1
  669. package/dist/components/progress/ProgressTrack/ProgressTrack.d.ts +1 -1
  670. package/dist/components/progress/ProgressTrack/ProgressTrack.js.map +1 -1
  671. package/dist/components/progress/ProgressTrack/ProgressTrack.styles.js.map +1 -1
  672. package/dist/components/progress/ProgressValue/ProgressValue.d.ts +1 -1
  673. package/dist/components/progress/ProgressValue/ProgressValue.js.map +1 -1
  674. package/dist/components/progress/ProgressValue/ProgressValue.styles.js.map +1 -1
  675. package/dist/components/radio-group/RadioGroup/RadioGroup.context.js.map +1 -1
  676. package/dist/components/radio-group/RadioGroup/RadioGroup.js.map +1 -1
  677. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.d.ts +1 -1
  678. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js.map +1 -1
  679. package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js.map +1 -1
  680. package/dist/components/scroll-area/ScrollArea/ScrollArea.d.ts +1 -1
  681. package/dist/components/scroll-area/ScrollArea/ScrollArea.js.map +1 -1
  682. package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js.map +1 -1
  683. package/dist/components/scroll-area/ScrollBar/ScrollBar.d.ts +1 -1
  684. package/dist/components/scroll-area/ScrollBar/ScrollBar.js.map +1 -1
  685. package/dist/components/scroll-arrows/ScrollArrowButton.d.ts +9 -0
  686. package/dist/components/scroll-arrows/ScrollArrowButton.js +51 -0
  687. package/dist/components/scroll-arrows/ScrollArrowButton.js.map +1 -0
  688. package/dist/components/scroll-arrows/ScrollArrows.d.ts +8 -0
  689. package/dist/components/scroll-arrows/ScrollArrows.js +35 -0
  690. package/dist/components/scroll-arrows/ScrollArrows.js.map +1 -0
  691. package/dist/components/scroll-arrows/ScrollArrows.types.d.ts +17 -0
  692. package/dist/components/scroll-arrows/index.d.ts +2 -0
  693. package/dist/components/scroll-arrows/index.js +2 -0
  694. package/dist/components/select/Select/Select.context.js.map +1 -1
  695. package/dist/components/select/Select/Select.js +36 -33
  696. package/dist/components/select/Select/Select.js.map +1 -1
  697. package/dist/components/select/Select/Select.types.d.ts +5 -0
  698. package/dist/components/select/SelectContent/SelectContent.d.ts +1 -1
  699. package/dist/components/select/SelectContent/SelectContent.js +45 -40
  700. package/dist/components/select/SelectContent/SelectContent.js.map +1 -1
  701. package/dist/components/select/SelectContent/SelectContent.utils.js.map +1 -1
  702. package/dist/components/select/SelectContent/useSelectContent.js.map +1 -1
  703. package/dist/components/select/SelectGroup/SelectGroup.d.ts +1 -1
  704. package/dist/components/select/SelectGroup/SelectGroup.js.map +1 -1
  705. package/dist/components/select/SelectItem/SelectItem.d.ts +1 -1
  706. package/dist/components/select/SelectItem/SelectItem.js.map +1 -1
  707. package/dist/components/select/SelectItem/useSelectItem.js.map +1 -1
  708. package/dist/components/select/SelectLabel/SelectLabel.d.ts +1 -1
  709. package/dist/components/select/SelectLabel/SelectLabel.js.map +1 -1
  710. package/dist/components/select/SelectSeparator/SelectSeparator.d.ts +1 -1
  711. package/dist/components/select/SelectSeparator/SelectSeparator.js.map +1 -1
  712. package/dist/components/select/SelectTrigger/SelectTrigger.d.ts +1 -1
  713. package/dist/components/select/SelectTrigger/SelectTrigger.js.map +1 -1
  714. package/dist/components/select/SelectTrigger/useSelectTrigger.js.map +1 -1
  715. package/dist/components/select/SelectValue/SelectValue.d.ts +1 -1
  716. package/dist/components/select/SelectValue/SelectValue.js.map +1 -1
  717. package/dist/components/separator/Separator.d.ts +1 -1
  718. package/dist/components/separator/Separator.js.map +1 -1
  719. package/dist/components/separator/Separator.styles.js.map +1 -1
  720. package/dist/components/sidebar/Sidebar/Sidebar.d.ts +1 -1
  721. package/dist/components/sidebar/Sidebar/Sidebar.js.map +1 -1
  722. package/dist/components/sidebar/SidebarContent/SidebarContent.d.ts +1 -1
  723. package/dist/components/sidebar/SidebarContent/SidebarContent.js.map +1 -1
  724. package/dist/components/sidebar/SidebarFooter/SidebarFooter.d.ts +1 -1
  725. package/dist/components/sidebar/SidebarFooter/SidebarFooter.js.map +1 -1
  726. package/dist/components/sidebar/SidebarGroup/SidebarGroup.d.ts +1 -1
  727. package/dist/components/sidebar/SidebarGroup/SidebarGroup.js.map +1 -1
  728. package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.d.ts +1 -1
  729. package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js.map +1 -1
  730. package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.d.ts +1 -1
  731. package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js.map +1 -1
  732. package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.d.ts +1 -1
  733. package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js.map +1 -1
  734. package/dist/components/sidebar/SidebarHeader/SidebarHeader.d.ts +1 -1
  735. package/dist/components/sidebar/SidebarHeader/SidebarHeader.js.map +1 -1
  736. package/dist/components/sidebar/SidebarInput/SidebarInput.d.ts +1 -1
  737. package/dist/components/sidebar/SidebarInput/SidebarInput.js.map +1 -1
  738. package/dist/components/sidebar/SidebarInset/SidebarInset.d.ts +1 -1
  739. package/dist/components/sidebar/SidebarInset/SidebarInset.js.map +1 -1
  740. package/dist/components/sidebar/SidebarMenu/SidebarMenu.d.ts +1 -1
  741. package/dist/components/sidebar/SidebarMenu/SidebarMenu.js.map +1 -1
  742. package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.d.ts +1 -1
  743. package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js.map +1 -1
  744. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.d.ts +1 -1
  745. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js.map +1 -1
  746. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.styles.js.map +1 -1
  747. package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.d.ts +1 -1
  748. package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js.map +1 -1
  749. package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.d.ts +1 -1
  750. package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js.map +1 -1
  751. package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.d.ts +1 -1
  752. package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js.map +1 -1
  753. package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.d.ts +1 -1
  754. package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js.map +1 -1
  755. package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.d.ts +1 -1
  756. package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js.map +1 -1
  757. package/dist/components/sidebar/SidebarProvider/SidebarProvider.consts.js.map +1 -1
  758. package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js.map +1 -1
  759. package/dist/components/sidebar/SidebarProvider/SidebarProvider.d.ts +1 -1
  760. package/dist/components/sidebar/SidebarProvider/SidebarProvider.js.map +1 -1
  761. package/dist/components/sidebar/SidebarRail/SidebarRail.d.ts +1 -1
  762. package/dist/components/sidebar/SidebarRail/SidebarRail.js.map +1 -1
  763. package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.d.ts +1 -1
  764. package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js.map +1 -1
  765. package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.d.ts +1 -1
  766. package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js.map +1 -1
  767. package/dist/components/skeleton/Skeleton.d.ts +1 -1
  768. package/dist/components/skeleton/Skeleton.js.map +1 -1
  769. package/dist/components/slider/Slider/Slider.context.js.map +1 -1
  770. package/dist/components/slider/Slider/Slider.d.ts +1 -1
  771. package/dist/components/slider/Slider/Slider.js.map +1 -1
  772. package/dist/components/slider/Slider/Slider.styles.js.map +1 -1
  773. package/dist/components/slider/Slider/useSlider.js.map +1 -1
  774. package/dist/components/slider/SliderControl/SliderControl.d.ts +1 -1
  775. package/dist/components/slider/SliderControl/SliderControl.js.map +1 -1
  776. package/dist/components/slider/SliderControl/SliderControl.styles.js.map +1 -1
  777. package/dist/components/slider/SliderControl/useSliderControl.js.map +1 -1
  778. package/dist/components/slider/SliderIndicator/SliderIndicator.d.ts +1 -1
  779. package/dist/components/slider/SliderIndicator/SliderIndicator.js.map +1 -1
  780. package/dist/components/slider/SliderIndicator/SliderIndicator.styles.js.map +1 -1
  781. package/dist/components/slider/SliderIndicator/useSliderIndicator.js.map +1 -1
  782. package/dist/components/slider/SliderThumb/SliderThumb.d.ts +1 -1
  783. package/dist/components/slider/SliderThumb/SliderThumb.js.map +1 -1
  784. package/dist/components/slider/SliderThumb/SliderThumb.styles.js.map +1 -1
  785. package/dist/components/slider/SliderThumb/useSliderThumb.js.map +1 -1
  786. package/dist/components/slider/SliderTrack/SliderTrack.d.ts +1 -1
  787. package/dist/components/slider/SliderTrack/SliderTrack.js.map +1 -1
  788. package/dist/components/slider/SliderTrack/SliderTrack.styles.js.map +1 -1
  789. package/dist/components/spinner/Spinner.d.ts +1 -1
  790. package/dist/components/spinner/Spinner.js.map +1 -1
  791. package/dist/components/spinner/Spinner.styles.js.map +1 -1
  792. package/dist/components/switch/Switch.d.ts +1 -1
  793. package/dist/components/switch/Switch.js.map +1 -1
  794. package/dist/components/switch/Switch.styles.js.map +1 -1
  795. package/dist/components/table/Table/Table.d.ts +3 -0
  796. package/dist/components/table/Table/Table.js +24 -0
  797. package/dist/components/table/Table/Table.js.map +1 -0
  798. package/dist/components/table/Table/Table.types.d.ts +2 -0
  799. package/dist/components/table/Table/index.d.ts +2 -0
  800. package/dist/components/table/TableBody/TableBody.d.ts +2 -0
  801. package/dist/components/table/TableBody/TableBody.js +24 -0
  802. package/dist/components/table/TableBody/TableBody.js.map +1 -0
  803. package/dist/components/table/TableBody/TableBody.types.d.ts +2 -0
  804. package/dist/components/table/TableBody/index.d.ts +2 -0
  805. package/dist/components/table/TableCaption/TableCaption.d.ts +2 -0
  806. package/dist/components/table/TableCaption/TableCaption.js +24 -0
  807. package/dist/components/table/TableCaption/TableCaption.js.map +1 -0
  808. package/dist/components/table/TableCaption/TableCaption.types.d.ts +2 -0
  809. package/dist/components/table/TableCaption/index.d.ts +2 -0
  810. package/dist/components/table/TableCell/TableCell.d.ts +2 -0
  811. package/dist/components/table/TableCell/TableCell.js +24 -0
  812. package/dist/components/table/TableCell/TableCell.js.map +1 -0
  813. package/dist/components/table/TableCell/TableCell.types.d.ts +2 -0
  814. package/dist/components/table/TableCell/index.d.ts +2 -0
  815. package/dist/components/table/TableFooter/TableFooter.d.ts +2 -0
  816. package/dist/components/table/TableFooter/TableFooter.js +24 -0
  817. package/dist/components/table/TableFooter/TableFooter.js.map +1 -0
  818. package/dist/components/table/TableFooter/TableFooter.types.d.ts +2 -0
  819. package/dist/components/table/TableFooter/index.d.ts +2 -0
  820. package/dist/components/table/TableHead/TableHead.d.ts +2 -0
  821. package/dist/components/table/TableHead/TableHead.js +24 -0
  822. package/dist/components/table/TableHead/TableHead.js.map +1 -0
  823. package/dist/components/table/TableHead/TableHead.types.d.ts +2 -0
  824. package/dist/components/table/TableHead/index.d.ts +2 -0
  825. package/dist/components/table/TableHeader/TableHeader.d.ts +2 -0
  826. package/dist/components/table/TableHeader/TableHeader.js +24 -0
  827. package/dist/components/table/TableHeader/TableHeader.js.map +1 -0
  828. package/dist/components/table/TableHeader/TableHeader.types.d.ts +2 -0
  829. package/dist/components/table/TableHeader/index.d.ts +2 -0
  830. package/dist/components/table/TableRow/TableRow.d.ts +2 -0
  831. package/dist/components/table/TableRow/TableRow.js +24 -0
  832. package/dist/components/table/TableRow/TableRow.js.map +1 -0
  833. package/dist/components/table/TableRow/TableRow.types.d.ts +2 -0
  834. package/dist/components/table/TableRow/index.d.ts +2 -0
  835. package/dist/components/table/index.d.ts +16 -0
  836. package/dist/components/table/index.js +9 -0
  837. package/dist/components/tabs/Tabs/Tabs.context.d.ts +1 -1
  838. package/dist/components/tabs/Tabs/Tabs.context.js.map +1 -1
  839. package/dist/components/tabs/Tabs/Tabs.d.ts +1 -1
  840. package/dist/components/tabs/Tabs/Tabs.js.map +1 -1
  841. package/dist/components/tabs/Tabs/call-event-handler.js.map +1 -1
  842. package/dist/components/tabs/Tabs/useTabsKeyboard.js.map +1 -1
  843. package/dist/components/tabs/TabsContent/TabsContent.js.map +1 -1
  844. package/dist/components/tabs/TabsList/TabsList.context.js.map +1 -1
  845. package/dist/components/tabs/TabsList/TabsList.d.ts +1 -1
  846. package/dist/components/tabs/TabsList/TabsList.js.map +1 -1
  847. package/dist/components/tabs/TabsList/TabsList.styles.js.map +1 -1
  848. package/dist/components/tabs/TabsTrigger/TabsTrigger.d.ts +1 -1
  849. package/dist/components/tabs/TabsTrigger/TabsTrigger.js.map +1 -1
  850. package/dist/components/tabs/TabsTrigger/TabsTrigger.styles.js.map +1 -1
  851. package/dist/components/textarea/Textarea.d.ts +1 -1
  852. package/dist/components/textarea/Textarea.js.map +1 -1
  853. package/dist/components/time-picker/TimePicker/TimePicker.context.d.ts +29 -0
  854. package/dist/components/time-picker/TimePicker/TimePicker.context.js +49 -0
  855. package/dist/components/time-picker/TimePicker/TimePicker.context.js.map +1 -0
  856. package/dist/components/time-picker/TimePicker/TimePicker.d.ts +23 -0
  857. package/dist/components/time-picker/TimePicker/TimePicker.js +52 -0
  858. package/dist/components/time-picker/TimePicker/TimePicker.js.map +1 -0
  859. package/dist/components/time-picker/TimePicker/TimePicker.types.d.ts +91 -0
  860. package/dist/components/time-picker/TimePicker/create-change-event-details.d.ts +8 -0
  861. package/dist/components/time-picker/TimePicker/create-change-event-details.js +25 -0
  862. package/dist/components/time-picker/TimePicker/create-change-event-details.js.map +1 -0
  863. package/dist/components/time-picker/TimePicker/index.d.ts +4 -0
  864. package/dist/components/time-picker/TimePicker/time-picker.utils.d.ts +28 -0
  865. package/dist/components/time-picker/TimePicker/time-picker.utils.js +103 -0
  866. package/dist/components/time-picker/TimePicker/time-picker.utils.js.map +1 -0
  867. package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.d.ts +10 -0
  868. package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js +60 -0
  869. package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js.map +1 -0
  870. package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.types.d.ts +8 -0
  871. package/dist/components/time-picker/TimePickerColumn/index.d.ts +2 -0
  872. package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.d.ts +16 -0
  873. package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js +75 -0
  874. package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js.map +1 -0
  875. package/dist/components/time-picker/TimePickerContent/TimePickerContent.d.ts +7 -0
  876. package/dist/components/time-picker/TimePickerContent/TimePickerContent.js +48 -0
  877. package/dist/components/time-picker/TimePickerContent/TimePickerContent.js.map +1 -0
  878. package/dist/components/time-picker/TimePickerContent/TimePickerContent.types.d.ts +11 -0
  879. package/dist/components/time-picker/TimePickerContent/index.d.ts +2 -0
  880. package/dist/components/time-picker/TimePickerOption/TimePickerOption.d.ts +9 -0
  881. package/dist/components/time-picker/TimePickerOption/TimePickerOption.js +52 -0
  882. package/dist/components/time-picker/TimePickerOption/TimePickerOption.js.map +1 -0
  883. package/dist/components/time-picker/TimePickerOption/TimePickerOption.types.d.ts +11 -0
  884. package/dist/components/time-picker/TimePickerOption/index.d.ts +2 -0
  885. package/dist/components/time-picker/TimePickerTrigger/TimePickerTrigger.d.ts +9 -0
  886. package/dist/components/time-picker/TimePickerTrigger/TimePickerTrigger.js +37 -0
  887. package/dist/components/time-picker/TimePickerTrigger/TimePickerTrigger.js.map +1 -0
  888. package/dist/components/time-picker/TimePickerTrigger/TimePickerTrigger.types.d.ts +5 -0
  889. package/dist/components/time-picker/TimePickerTrigger/index.d.ts +2 -0
  890. package/dist/components/time-picker/index.d.ts +10 -0
  891. package/dist/components/time-picker/index.js +7 -0
  892. package/dist/components/toast/Toast/Toast.js.map +1 -1
  893. package/dist/components/toast/Toast/Toast.styles.js.map +1 -1
  894. package/dist/components/toast/Toast/Toast.types.js.map +1 -1
  895. package/dist/components/toast/Toaster/Toaster.js.map +1 -1
  896. package/dist/components/toast/Toaster/Toaster.styles.js.map +1 -1
  897. package/dist/components/toast/Toaster/Toaster.utils.js.map +1 -1
  898. package/dist/components/toast/state/toast.js.map +1 -1
  899. package/dist/components/toggle/Toggle/Toggle.js.map +1 -1
  900. package/dist/components/toggle/Toggle/Toggle.styles.js.map +1 -1
  901. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js.map +1 -1
  902. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -1
  903. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.js.map +1 -1
  904. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js.map +1 -1
  905. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js.map +1 -1
  906. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -1
  907. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.js.map +1 -1
  908. package/dist/components/toggle-group/call-event-handler.js.map +1 -1
  909. package/dist/components/tooltip/Tooltip/Tooltip.context.js.map +1 -1
  910. package/dist/components/tooltip/Tooltip/Tooltip.js.map +1 -1
  911. package/dist/components/tooltip/TooltipArrow/TooltipArrow.d.ts +1 -1
  912. package/dist/components/tooltip/TooltipArrow/TooltipArrow.js.map +1 -1
  913. package/dist/components/tooltip/TooltipContent/TooltipContent.context.js.map +1 -1
  914. package/dist/components/tooltip/TooltipContent/TooltipContent.d.ts +1 -1
  915. package/dist/components/tooltip/TooltipContent/TooltipContent.js.map +1 -1
  916. package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js.map +1 -1
  917. package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
  918. package/dist/components/tooltip/TooltipGroup/TooltipGroup.context.js.map +1 -1
  919. package/dist/components/tooltip/TooltipGroup/TooltipGroup.d.ts +1 -1
  920. package/dist/components/tooltip/TooltipGroup/TooltipGroup.js.map +1 -1
  921. package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.js.map +1 -1
  922. package/dist/components/tooltip/TooltipProvider/TooltipProvider.js.map +1 -1
  923. package/dist/components/tooltip/TooltipTrigger/TooltipTrigger.d.ts +1 -1
  924. package/dist/components/tooltip/TooltipTrigger/TooltipTrigger.js.map +1 -1
  925. package/dist/components/tooltip/TooltipTrigger/useTooltipTrigger.js.map +1 -1
  926. package/dist/hooks/index.d.ts +2 -0
  927. package/dist/hooks/index.js +3 -1
  928. package/dist/hooks/useFontLoader.js.map +1 -1
  929. package/dist/hooks/useScrollEdges.d.ts +16 -0
  930. package/dist/hooks/useScrollEdges.js +34 -0
  931. package/dist/hooks/useScrollEdges.js.map +1 -0
  932. package/dist/hooks/useScrollLock.d.ts +16 -0
  933. package/dist/hooks/useScrollLock.js +61 -0
  934. package/dist/hooks/useScrollLock.js.map +1 -0
  935. package/dist/index.d.ts +8 -0
  936. package/dist/index.js +251 -194
  937. package/dist/lib/positioner/auto-update.js.map +1 -1
  938. package/dist/lib/positioner/core/compute-position.js.map +1 -1
  939. package/dist/lib/positioner/core/placement.js.map +1 -1
  940. package/dist/lib/positioner/create-positioner.js.map +1 -1
  941. package/dist/lib/positioner/middleware/arrow.js.map +1 -1
  942. package/dist/lib/positioner/middleware/containing-block-offset.js.map +1 -1
  943. package/dist/lib/positioner/middleware/flip.js.map +1 -1
  944. package/dist/lib/positioner/middleware/hide.js.map +1 -1
  945. package/dist/lib/positioner/middleware/offset.js.map +1 -1
  946. package/dist/lib/positioner/middleware/shift.js.map +1 -1
  947. package/dist/lib/positioner/middleware/size.js.map +1 -1
  948. package/dist/lib/positioner/utils/dom.js.map +1 -1
  949. package/dist/lib/positioner/virtual-element.js +18 -0
  950. package/dist/lib/positioner/virtual-element.js.map +1 -0
  951. package/dist/ui.css +1 -1
  952. package/dist/utils/clsx.js.map +1 -1
  953. package/dist/utils/logger.js.map +1 -1
  954. package/dist/utils/ref.js.map +1 -1
  955. package/dist/utils/warn-once.js.map +1 -1
  956. package/package.json +6 -6
  957. package/dist/components/alert-dialog/AlertDialog/AlertDialog.context.d.ts +0 -10
  958. package/dist/components/alert-dialog/AlertDialog/AlertDialog.context.js +0 -11
  959. package/dist/components/alert-dialog/AlertDialog/AlertDialog.context.js.map +0 -1
  960. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.context.d.ts +0 -8
  961. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.context.js +0 -11
  962. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.context.js.map +0 -1
  963. package/dist/components/alert-dialog/AlertDialogOverlay/AlertDialogOverlay.styles.d.ts +0 -2
  964. package/dist/components/alert-dialog/AlertDialogOverlay/AlertDialogOverlay.styles.js +0 -6
  965. package/dist/components/alert-dialog/AlertDialogOverlay/AlertDialogOverlay.styles.js.map +0 -1
  966. package/dist/components/alert-dialog/AlertDialogTrigger/useAlertDialogTrigger.d.ts +0 -2
  967. package/dist/components/alert-dialog/AlertDialogTrigger/useAlertDialogTrigger.js +0 -26
  968. package/dist/components/alert-dialog/AlertDialogTrigger/useAlertDialogTrigger.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Toaster.utils.js","names":[],"sources":["../../../../src/components/toast/Toaster/Toaster.utils.ts"],"sourcesContent":["import type { JSX } from \"solid-js\";\nimport type { Position, SwipeDirection } from \"../Toast/Toast.types\";\nimport type { Offset } from \"./Toaster.types\";\n\nconst VIEWPORT_OFFSET = \"24px\";\nconst MOBILE_VIEWPORT_OFFSET = \"16px\";\n\nexport function getPositionClass(position: Position): string {\n switch (position) {\n case \"top-left\":\n return \"top-0 left-0\";\n case \"top-right\":\n return \"top-0 right-0\";\n case \"top-center\":\n return \"top-0 left-1/2 -translate-x-1/2\";\n case \"bottom-left\":\n return \"bottom-0 left-0\";\n case \"bottom-right\":\n return \"bottom-0 right-0\";\n case \"bottom-center\":\n return \"bottom-0 left-1/2 -translate-x-1/2\";\n }\n}\n\nfunction toPx(value: string | number): string {\n return typeof value === \"number\" ? `${value}px` : value;\n}\n\nexport function resolveOffsetStyle(\n position: Position,\n offset?: Offset,\n mobileOffset?: Offset,\n): JSX.CSSProperties {\n const style: JSX.CSSProperties = {};\n const [y, x] = position.split(\"-\");\n\n const normalize = (value: Offset | undefined, fallback: string) =>\n typeof value === \"object\" && value !== null\n ? value\n : {\n top: value ?? fallback,\n right: value ?? fallback,\n bottom: value ?? fallback,\n left: value ?? fallback,\n };\n\n const desktop = normalize(offset, VIEWPORT_OFFSET);\n const mobile = normalize(mobileOffset, MOBILE_VIEWPORT_OFFSET);\n\n if (y === \"top\") {\n style.top = toPx(desktop.top ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-top\"] = toPx(mobile.top ?? MOBILE_VIEWPORT_OFFSET);\n } else {\n style.bottom = toPx(desktop.bottom ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-bottom\"] = toPx(\n mobile.bottom ?? MOBILE_VIEWPORT_OFFSET,\n );\n }\n\n if (x === \"left\") {\n style.left = toPx(desktop.left ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-left\"] = toPx(mobile.left ?? MOBILE_VIEWPORT_OFFSET);\n } else if (x === \"right\") {\n style.right = toPx(desktop.right ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-right\"] = toPx(\n mobile.right ?? MOBILE_VIEWPORT_OFFSET,\n );\n }\n\n return style;\n}\n\nexport function getDefaultSwipeDirections(\n position: Position,\n): SwipeDirection[] {\n const [y, x] = position.split(\"-\");\n const directions: SwipeDirection[] = [];\n if (y) directions.push(y as SwipeDirection);\n if (x) directions.push(x as SwipeDirection);\n return directions;\n}\n\nexport function getDocumentDirection(): \"rtl\" | \"ltr\" | \"auto\" {\n if (typeof document === \"undefined\") return \"ltr\";\n const dir = document.documentElement.getAttribute(\"dir\");\n if (dir === \"auto\" || !dir) {\n return getComputedStyle(document.documentElement).direction as\n | \"rtl\"\n | \"ltr\"\n | \"auto\";\n }\n return dir as \"rtl\" | \"ltr\" | \"auto\";\n}\n"],"mappings":";AAIA,IAAM,IAAkB,QAClB,IAAyB;AAE/B,SAAgB,EAAiB,GAA4B;CAC3D,QAAQ,GAAR;EACE,KAAK,YACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,KAAK,cACH,OAAO;EACT,KAAK,eACH,OAAO;EACT,KAAK,gBACH,OAAO;EACT,KAAK,iBACH,OAAO;CACX;AACF;AAEA,SAAS,EAAK,GAAgC;CAC5C,OAAO,OAAO,KAAU,WAAW,GAAG,EAAM,MAAM;AACpD;AAEA,SAAgB,EACd,GACA,GACA,GACmB;CACnB,IAAM,IAA2B,CAAC,GAC5B,CAAC,GAAG,KAAK,EAAS,MAAM,GAAG,GAE3B,KAAa,GAA2B,MAC5C,OAAO,KAAU,YAAY,IACzB,IACA;EACE,KAAK,KAAS;EACd,OAAO,KAAS;EAChB,QAAQ,KAAS;EACjB,MAAM,KAAS;CACjB,GAEA,IAAU,EAAU,GAAQ,CAAe,GAC3C,IAAS,EAAU,GAAc,CAAsB;CAsB7D,OApBI,MAAM,SACR,EAAM,MAAM,EAAK,EAAQ,OAAO,CAAe,GAC/C,EAAM,yBAAyB,EAAK,EAAO,OAAO,CAAsB,MAExE,EAAM,SAAS,EAAK,EAAQ,UAAU,CAAe,GACrD,EAAM,4BAA4B,EAChC,EAAO,UAAU,CACnB,IAGE,MAAM,UACR,EAAM,OAAO,EAAK,EAAQ,QAAQ,CAAe,GACjD,EAAM,0BAA0B,EAAK,EAAO,QAAQ,CAAsB,KACjE,MAAM,YACf,EAAM,QAAQ,EAAK,EAAQ,SAAS,CAAe,GACnD,EAAM,2BAA2B,EAC/B,EAAO,SAAS,CAClB,IAGK;AACT;AAYA,SAAgB,IAA+C;CAC7D,IAAI,OAAO,WAAa,KAAa,OAAO;CAC5C,IAAM,IAAM,SAAS,gBAAgB,aAAa,KAAK;CAOvD,OANI,MAAQ,UAAU,CAAC,IACd,iBAAiB,SAAS,eAAe,CAAC,CAAC,YAK7C;AACT"}
1
+ {"version":3,"file":"Toaster.utils.js","names":["VIEWPORT_OFFSET","MOBILE_VIEWPORT_OFFSET","getPositionClass","position","toPx","value","resolveOffsetStyle","style","y","x","normalize","fallback","desktop","offset","mobile","mobileOffset","getDocumentDirection","dir"],"sources":["../../../../src/components/toast/Toaster/Toaster.utils.ts"],"sourcesContent":["import type { JSX } from \"solid-js\";\nimport type { Position, SwipeDirection } from \"../Toast/Toast.types\";\nimport type { Offset } from \"./Toaster.types\";\n\nconst VIEWPORT_OFFSET = \"24px\";\nconst MOBILE_VIEWPORT_OFFSET = \"16px\";\n\nexport function getPositionClass(position: Position): string {\n switch (position) {\n case \"top-left\":\n return \"top-0 left-0\";\n case \"top-right\":\n return \"top-0 right-0\";\n case \"top-center\":\n return \"top-0 left-1/2 -translate-x-1/2\";\n case \"bottom-left\":\n return \"bottom-0 left-0\";\n case \"bottom-right\":\n return \"bottom-0 right-0\";\n case \"bottom-center\":\n return \"bottom-0 left-1/2 -translate-x-1/2\";\n }\n}\n\nfunction toPx(value: string | number): string {\n return typeof value === \"number\" ? `${value}px` : value;\n}\n\nexport function resolveOffsetStyle(\n position: Position,\n offset?: Offset,\n mobileOffset?: Offset,\n): JSX.CSSProperties {\n const style: JSX.CSSProperties = {};\n const [y, x] = position.split(\"-\");\n\n const normalize = (value: Offset | undefined, fallback: string) =>\n typeof value === \"object\" && value !== null\n ? value\n : {\n top: value ?? fallback,\n right: value ?? fallback,\n bottom: value ?? fallback,\n left: value ?? fallback,\n };\n\n const desktop = normalize(offset, VIEWPORT_OFFSET);\n const mobile = normalize(mobileOffset, MOBILE_VIEWPORT_OFFSET);\n\n if (y === \"top\") {\n style.top = toPx(desktop.top ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-top\"] = toPx(mobile.top ?? MOBILE_VIEWPORT_OFFSET);\n } else {\n style.bottom = toPx(desktop.bottom ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-bottom\"] = toPx(\n mobile.bottom ?? MOBILE_VIEWPORT_OFFSET,\n );\n }\n\n if (x === \"left\") {\n style.left = toPx(desktop.left ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-left\"] = toPx(mobile.left ?? MOBILE_VIEWPORT_OFFSET);\n } else if (x === \"right\") {\n style.right = toPx(desktop.right ?? VIEWPORT_OFFSET);\n style[\"--mobile-offset-right\"] = toPx(\n mobile.right ?? MOBILE_VIEWPORT_OFFSET,\n );\n }\n\n return style;\n}\n\nexport function getDefaultSwipeDirections(\n position: Position,\n): SwipeDirection[] {\n const [y, x] = position.split(\"-\");\n const directions: SwipeDirection[] = [];\n if (y) directions.push(y as SwipeDirection);\n if (x) directions.push(x as SwipeDirection);\n return directions;\n}\n\nexport function getDocumentDirection(): \"rtl\" | \"ltr\" | \"auto\" {\n if (typeof document === \"undefined\") return \"ltr\";\n const dir = document.documentElement.getAttribute(\"dir\");\n if (dir === \"auto\" || !dir) {\n return getComputedStyle(document.documentElement).direction as\n | \"rtl\"\n | \"ltr\"\n | \"auto\";\n }\n return dir as \"rtl\" | \"ltr\" | \"auto\";\n}\n"],"mappings":";AAIA,IAAMA,IAAkB,QAClBC,IAAyB;AAE/B,SAAgBC,EAAiB,GAA4B;CAC3D,QAAQC,GAAR;EACE,KAAK,YACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,KAAK,cACH,OAAO;EACT,KAAK,eACH,OAAO;EACT,KAAK,gBACH,OAAO;EACT,KAAK,iBACH,OAAO;CACX;AACF;AAEA,SAASC,EAAK,GAAgC;CAC5C,OAAO,OAAOC,KAAU,WAAW,GAAGA,EAAM,MAAMA;AACpD;AAEA,SAAgBC,EACd,GACA,GACA,GACmB;CACnB,IAAMC,IAA2B,CAAC,GAC5B,CAACC,GAAGC,KAAKN,EAAS,MAAM,GAAG,GAE3BO,KAAa,GAA2B,MAC5C,OAAOL,KAAU,YAAYA,IACzBA,IACA;EACE,KAAKA,KAASM;EACd,OAAON,KAASM;EAChB,QAAQN,KAASM;EACjB,MAAMN,KAASM;CACjB,GAEAC,IAAUF,EAAUG,GAAQb,CAAe,GAC3Cc,IAASJ,EAAUK,GAAcd,CAAsB;CAsB7D,OApBIO,MAAM,SACR,EAAM,MAAMJ,EAAKQ,EAAQ,OAAOZ,CAAe,GAC/C,EAAM,yBAAyBI,EAAKU,EAAO,OAAOb,CAAsB,MAExE,EAAM,SAASG,EAAKQ,EAAQ,UAAUZ,CAAe,GACrD,EAAM,4BAA4BI,EAChCU,EAAO,UAAUb,CACnB,IAGEQ,MAAM,UACR,EAAM,OAAOL,EAAKQ,EAAQ,QAAQZ,CAAe,GACjD,EAAM,0BAA0BI,EAAKU,EAAO,QAAQb,CAAsB,KACjEQ,MAAM,YACf,EAAM,QAAQL,EAAKQ,EAAQ,SAASZ,CAAe,GACnD,EAAM,2BAA2BI,EAC/BU,EAAO,SAASb,CAClB,IAGKM;AACT;AAYA,SAAgBS,IAA+C;CAC7D,IAAI,OAAO,WAAa,KAAa,OAAO;CAC5C,IAAMC,IAAM,SAAS,gBAAgB,aAAa,KAAK;CAOvD,OANIA,MAAQ,UAAU,CAACA,IACd,iBAAiB,SAAS,eAAe,CAAC,CAAC,YAK7CA;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","names":[],"sources":["../../../../src/components/toast/state/toast.ts"],"sourcesContent":["import { createUniqueId, type JSXElement } from \"solid-js\";\nimport { createStore, produce } from \"solid-js/store\";\nimport type {\n ExternalToast,\n PromiseData,\n PromiseT,\n ToastT,\n ToastTypes,\n} from \"../Toast/Toast.types\";\n\nconst [toasts, setToasts] = createStore<ToastT[]>([]);\n\nexport function useSonner() {\n return { toasts };\n}\n\nexport function getToasts() {\n return toasts;\n}\n\nexport function getHistory() {\n return toasts;\n}\n\nfunction createToast(\n data: ExternalToast & {\n message?: JSXElement;\n type?: ToastTypes;\n jsx?: JSXElement;\n promise?: PromiseT;\n },\n): string {\n const id = data.id ?? createUniqueId();\n\n setToasts(\n produce((list) => {\n const existing = list.find((toast) => toast.id === id);\n const next: ToastT = {\n ...data,\n id,\n title: data.message,\n dismissible: data.dismissible ?? true,\n } as ToastT;\n\n if (existing) {\n Object.assign(existing, next, {\n title: data.message ?? existing.title,\n });\n } else {\n list.unshift(next);\n }\n }),\n );\n\n return id;\n}\n\nfunction dismissToast(id?: string) {\n if (id !== undefined) {\n setToasts(\n produce((list) => {\n const toast = list.find((item) => item.id === id);\n if (toast) toast.delete = true;\n }),\n );\n } else {\n setToasts(\n produce((list) => {\n for (const toast of list) toast.delete = true;\n }),\n );\n }\n return id;\n}\n\nfunction removeToast(id: string) {\n setToasts(\n produce((list) => {\n const index = list.findIndex((toast) => toast.id === id);\n if (index !== -1) list.splice(index, 1);\n }),\n );\n}\n\nconst toastFunction = (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, message });\n\nexport const toast = Object.assign(toastFunction, {\n success: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"success\", message }),\n info: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"info\", message }),\n warning: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"warning\", message }),\n error: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"error\", message }),\n loading: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"loading\", message }),\n message: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, message }),\n custom: (jsx: (id: string) => JSXElement, data?: ExternalToast) => {\n const id = data?.id ?? createUniqueId();\n return createToast({ ...data, id, jsx: jsx(id) });\n },\n dismiss: dismissToast,\n promise: <Data = any>(promise: PromiseT<Data>, data?: PromiseData<Data>) => {\n if (!data) return;\n\n let id: string | undefined;\n if (data.loading !== undefined) {\n id = createToast({\n ...data,\n type: \"loading\",\n message: data.loading,\n } as any);\n }\n\n Promise.resolve(typeof promise === \"function\" ? promise() : promise)\n .then(async (result) => {\n const message =\n typeof data.success === \"function\"\n ? await data.success(result)\n : data.success;\n\n if (message !== undefined) {\n createToast({\n id,\n type: \"success\",\n message: message as JSXElement,\n description:\n typeof data.description === \"function\"\n ? await data.description(result)\n : data.description,\n } as any);\n } else if (id !== undefined) {\n dismissToast(id);\n }\n })\n .catch(async (error) => {\n const message =\n typeof data.error === \"function\"\n ? await data.error(error)\n : data.error;\n\n if (message !== undefined) {\n createToast({\n id,\n type: \"error\",\n message: message as JSXElement,\n description:\n typeof data.description === \"function\"\n ? await data.description(error)\n : data.description,\n } as any);\n } else if (id !== undefined) {\n dismissToast(id);\n }\n })\n .finally(() => {\n data.finally?.();\n });\n\n return id as string;\n },\n getToasts,\n getHistory,\n remove: removeToast,\n});\n\nexport { dismissToast, removeToast };\n"],"mappings":";;;AAUA,IAAM,CAAC,GAAQ,KAAa,EAAsB,CAAC,CAAC;AAEpD,SAAgB,IAAY;CAC1B,OAAO,EAAE,UAAO;AAClB;AAEA,SAAgB,IAAY;CAC1B,OAAO;AACT;AAEA,SAAgB,IAAa;CAC3B,OAAO;AACT;AAEA,SAAS,EACP,GAMQ;CACR,IAAM,IAAK,EAAK,MAAM,EAAe;CAsBrC,OApBA,EACE,GAAS,MAAS;EAChB,IAAM,IAAW,EAAK,MAAM,MAAU,EAAM,OAAO,CAAE,GAC/C,IAAe;GACnB,GAAG;GACH;GACA,OAAO,EAAK;GACZ,aAAa,EAAK,eAAe;EACnC;EAEA,AAAI,IACF,OAAO,OAAO,GAAU,GAAM,EAC5B,OAAO,EAAK,WAAW,EAAS,MAClC,CAAC,IAED,EAAK,QAAQ,CAAI;CAErB,CAAC,CACH,GAEO;AACT;AAEA,SAAS,EAAa,GAAa;CAejC,OANE,EACE,EATA,MAAO,KAAA,KASE,MAAS;EAChB,KAAK,IAAM,KAAS,GAAM,EAAM,SAAS;CAC3C,KATS,MAAS;EAChB,IAAM,IAAQ,EAAK,MAAM,MAAS,EAAK,OAAO,CAAE;EAChD,AAAI,MAAO,EAAM,SAAS;CAC5B,CALO,CAYT,GAEK;AACT;AAEA,SAAS,EAAY,GAAY;CAC/B,EACE,GAAS,MAAS;EAChB,IAAM,IAAQ,EAAK,WAAW,MAAU,EAAM,OAAO,CAAE;EACvD,AAAI,MAAU,MAAI,EAAK,OAAO,GAAO,CAAC;CACxC,CAAC,CACH;AACF;AAKA,IAAa,IAAQ,OAAO,QAHL,GAAqB,MAC1C,EAAY;CAAE,GAAG;CAAM;AAAQ,CAAC,GAEgB;CAChD,UAAU,GAAqB,MAC7B,EAAY;EAAE,GAAG;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,OAAO,GAAqB,MAC1B,EAAY;EAAE,GAAG;EAAM,MAAM;EAAQ;CAAQ,CAAC;CAChD,UAAU,GAAqB,MAC7B,EAAY;EAAE,GAAG;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,QAAQ,GAAqB,MAC3B,EAAY;EAAE,GAAG;EAAM,MAAM;EAAS;CAAQ,CAAC;CACjD,UAAU,GAAqB,MAC7B,EAAY;EAAE,GAAG;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,UAAU,GAAqB,MAC7B,EAAY;EAAE,GAAG;EAAM;CAAQ,CAAC;CAClC,SAAS,GAAiC,MAAyB;EACjE,IAAM,IAAK,GAAM,MAAM,EAAe;EACtC,OAAO,EAAY;GAAE,GAAG;GAAM;GAAI,KAAK,EAAI,CAAE;EAAE,CAAC;CAClD;CACA,SAAS;CACT,UAAsB,GAAyB,MAA6B;EAC1E,IAAI,CAAC,GAAM;EAEX,IAAI;EAsDJ,OArDI,EAAK,YAAY,KAAA,MACnB,IAAK,EAAY;GACf,GAAG;GACH,MAAM;GACN,SAAS,EAAK;EAChB,CAAQ,IAGV,QAAQ,QAAQ,OAAO,KAAY,aAAa,EAAQ,IAAI,CAAO,CAAC,CACjE,KAAK,OAAO,MAAW;GACtB,IAAM,IACJ,OAAO,EAAK,WAAY,aACpB,MAAM,EAAK,QAAQ,CAAM,IACzB,EAAK;GAEX,AAAI,MAAY,KAAA,IAUL,MAAO,KAAA,KAChB,EAAa,CAAE,IAVf,EAAY;IACV;IACA,MAAM;IACG;IACT,aACE,OAAO,EAAK,eAAgB,aACxB,MAAM,EAAK,YAAY,CAAM,IAC7B,EAAK;GACb,CAAQ;EAIZ,CAAC,CAAC,CACD,MAAM,OAAO,MAAU;GACtB,IAAM,IACJ,OAAO,EAAK,SAAU,aAClB,MAAM,EAAK,MAAM,CAAK,IACtB,EAAK;GAEX,AAAI,MAAY,KAAA,IAUL,MAAO,KAAA,KAChB,EAAa,CAAE,IAVf,EAAY;IACV;IACA,MAAM;IACG;IACT,aACE,OAAO,EAAK,eAAgB,aACxB,MAAM,EAAK,YAAY,CAAK,IAC5B,EAAK;GACb,CAAQ;EAIZ,CAAC,CAAC,CACD,cAAc;GACb,EAAK,UAAU;EACjB,CAAC,GAEI;CACT;CACA;CACA;CACA,QAAQ;AACV,CAAC"}
1
+ {"version":3,"file":"toast.js","names":["toasts","setToasts","createStore","useSonner","getToasts","getHistory","createToast","id","data","createUniqueId","produce","existing","list","toast","next","dismissToast","item","removeToast","index","jsx","promise","message","result","error"],"sources":["../../../../src/components/toast/state/toast.ts"],"sourcesContent":["import { createUniqueId, type JSXElement } from \"solid-js\";\nimport { createStore, produce } from \"solid-js/store\";\nimport type {\n ExternalToast,\n PromiseData,\n PromiseT,\n ToastT,\n ToastTypes,\n} from \"../Toast/Toast.types\";\n\nconst [toasts, setToasts] = createStore<ToastT[]>([]);\n\nexport function useSonner() {\n return { toasts };\n}\n\nexport function getToasts() {\n return toasts;\n}\n\nexport function getHistory() {\n return toasts;\n}\n\nfunction createToast(\n data: ExternalToast & {\n message?: JSXElement;\n type?: ToastTypes;\n jsx?: JSXElement;\n promise?: PromiseT;\n },\n): string {\n const id = data.id ?? createUniqueId();\n\n setToasts(\n produce((list) => {\n const existing = list.find((toast) => toast.id === id);\n const next: ToastT = {\n ...data,\n id,\n title: data.message,\n dismissible: data.dismissible ?? true,\n } as ToastT;\n\n if (existing) {\n Object.assign(existing, next, {\n title: data.message ?? existing.title,\n });\n } else {\n list.unshift(next);\n }\n }),\n );\n\n return id;\n}\n\nfunction dismissToast(id?: string) {\n if (id !== undefined) {\n setToasts(\n produce((list) => {\n const toast = list.find((item) => item.id === id);\n if (toast) toast.delete = true;\n }),\n );\n } else {\n setToasts(\n produce((list) => {\n for (const toast of list) toast.delete = true;\n }),\n );\n }\n return id;\n}\n\nfunction removeToast(id: string) {\n setToasts(\n produce((list) => {\n const index = list.findIndex((toast) => toast.id === id);\n if (index !== -1) list.splice(index, 1);\n }),\n );\n}\n\nconst toastFunction = (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, message });\n\nexport const toast = Object.assign(toastFunction, {\n success: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"success\", message }),\n info: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"info\", message }),\n warning: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"warning\", message }),\n error: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"error\", message }),\n loading: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, type: \"loading\", message }),\n message: (message: JSXElement, data?: ExternalToast) =>\n createToast({ ...data, message }),\n custom: (jsx: (id: string) => JSXElement, data?: ExternalToast) => {\n const id = data?.id ?? createUniqueId();\n return createToast({ ...data, id, jsx: jsx(id) });\n },\n dismiss: dismissToast,\n promise: <Data = any>(promise: PromiseT<Data>, data?: PromiseData<Data>) => {\n if (!data) return;\n\n let id: string | undefined;\n if (data.loading !== undefined) {\n id = createToast({\n ...data,\n type: \"loading\",\n message: data.loading,\n } as any);\n }\n\n Promise.resolve(typeof promise === \"function\" ? promise() : promise)\n .then(async (result) => {\n const message =\n typeof data.success === \"function\"\n ? await data.success(result)\n : data.success;\n\n if (message !== undefined) {\n createToast({\n id,\n type: \"success\",\n message: message as JSXElement,\n description:\n typeof data.description === \"function\"\n ? await data.description(result)\n : data.description,\n } as any);\n } else if (id !== undefined) {\n dismissToast(id);\n }\n })\n .catch(async (error) => {\n const message =\n typeof data.error === \"function\"\n ? await data.error(error)\n : data.error;\n\n if (message !== undefined) {\n createToast({\n id,\n type: \"error\",\n message: message as JSXElement,\n description:\n typeof data.description === \"function\"\n ? await data.description(error)\n : data.description,\n } as any);\n } else if (id !== undefined) {\n dismissToast(id);\n }\n })\n .finally(() => {\n data.finally?.();\n });\n\n return id as string;\n },\n getToasts,\n getHistory,\n remove: removeToast,\n});\n\nexport { dismissToast, removeToast };\n"],"mappings":";;;AAUA,IAAM,CAACA,GAAQC,KAAaC,EAAsB,CAAC,CAAC;AAEpD,SAAgBC,IAAY;CAC1B,OAAO,EAAE,UAAO;AAClB;AAEA,SAAgBC,IAAY;CAC1B,OAAOJ;AACT;AAEA,SAAgBK,IAAa;CAC3B,OAAOL;AACT;AAEA,SAASM,EACP,GAMQ;CACR,IAAMC,IAAKC,EAAK,MAAMC,EAAe;CAsBrC,OApBAR,EACES,GAAS,MAAS;EAChB,IAAMC,IAAWC,EAAK,MAAM,MAAUC,EAAM,OAAON,CAAE,GAC/CO,IAAe;GACnB,GAAGN;GACH;GACA,OAAOA,EAAK;GACZ,aAAaA,EAAK,eAAe;EACnC;EAEA,AAAIG,IACF,OAAO,OAAOA,GAAUG,GAAM,EAC5B,OAAON,EAAK,WAAWG,EAAS,MAClC,CAAC,IAEDC,EAAK,QAAQE,CAAI;CAErB,CAAC,CACH,GAEOP;AACT;AAEA,SAASQ,EAAa,GAAa;CAejC,OANEd,EACES,EATAH,MAAO,KAAA,KASE,MAAS;EAChB,KAAK,IAAMM,KAASD,GAAM,EAAM,SAAS;CAC3C,KATS,MAAS;EAChB,IAAMC,IAAQD,EAAK,MAAM,MAASI,EAAK,OAAOT,CAAE;EAChD,AAAIM,MAAO,EAAM,SAAS;CAC5B,CALO,CAYT,GAEKN;AACT;AAEA,SAASU,EAAY,GAAY;CAC/B,EACEP,GAAS,MAAS;EAChB,IAAMQ,IAAQN,EAAK,WAAW,MAAUC,EAAM,OAAON,CAAE;EACvD,AAAIW,MAAU,MAAIN,EAAK,OAAOM,GAAO,CAAC;CACxC,CAAC,CACH;AACF;AAKA,IAAaL,IAAQ,OAAO,QAHL,GAAqB,MAC1CP,EAAY;CAAE,GAAGE;CAAM;AAAQ,CAAC,GAEgB;CAChD,UAAU,GAAqB,MAC7BF,EAAY;EAAE,GAAGE;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,OAAO,GAAqB,MAC1BF,EAAY;EAAE,GAAGE;EAAM,MAAM;EAAQ;CAAQ,CAAC;CAChD,UAAU,GAAqB,MAC7BF,EAAY;EAAE,GAAGE;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,QAAQ,GAAqB,MAC3BF,EAAY;EAAE,GAAGE;EAAM,MAAM;EAAS;CAAQ,CAAC;CACjD,UAAU,GAAqB,MAC7BF,EAAY;EAAE,GAAGE;EAAM,MAAM;EAAW;CAAQ,CAAC;CACnD,UAAU,GAAqB,MAC7BF,EAAY;EAAE,GAAGE;EAAM;CAAQ,CAAC;CAClC,SAAS,GAAiC,MAAyB;EACjE,IAAMD,IAAKC,GAAM,MAAMC,EAAe;EACtC,OAAOH,EAAY;GAAE,GAAGE;GAAM;GAAI,KAAKW,EAAIZ,CAAE;EAAE,CAAC;CAClD;CACA,SAASQ;CACT,UAAsB,GAAyB,MAA6B;EAC1E,IAAI,CAACP,GAAM;EAEX,IAAID;EAsDJ,OArDIC,EAAK,YAAY,KAAA,MACnB,IAAKF,EAAY;GACf,GAAGE;GACH,MAAM;GACN,SAASA,EAAK;EAChB,CAAQ,IAGV,QAAQ,QAAQ,OAAOY,KAAY,aAAaA,EAAQ,IAAIA,CAAO,CAAC,CACjE,KAAK,OAAO,MAAW;GACtB,IAAMC,IACJ,OAAOb,EAAK,WAAY,aACpB,MAAMA,EAAK,QAAQc,CAAM,IACzBd,EAAK;GAEX,AAAIa,MAAY,KAAA,IAULd,MAAO,KAAA,KAChBQ,EAAaR,CAAE,IAVfD,EAAY;IACV;IACA,MAAM;IACG;IACT,aACE,OAAOE,EAAK,eAAgB,aACxB,MAAMA,EAAK,YAAYc,CAAM,IAC7Bd,EAAK;GACb,CAAQ;EAIZ,CAAC,CAAC,CACD,MAAM,OAAO,MAAU;GACtB,IAAMa,IACJ,OAAOb,EAAK,SAAU,aAClB,MAAMA,EAAK,MAAMe,CAAK,IACtBf,EAAK;GAEX,AAAIa,MAAY,KAAA,IAULd,MAAO,KAAA,KAChBQ,EAAaR,CAAE,IAVfD,EAAY;IACV;IACA,MAAM;IACG;IACT,aACE,OAAOE,EAAK,eAAgB,aACxB,MAAMA,EAAK,YAAYe,CAAK,IAC5Bf,EAAK;GACb,CAAQ;EAIZ,CAAC,CAAC,CACD,cAAc;GACb,EAAK,UAAU;EACjB,CAAC,GAEID;CACT;CACA;CACA;CACA,QAAQU;AACV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.js","names":["createMemo","createSignal","mergeProps","splitProps","JSX","clsx","toggleVariants","ToggleProps","Toggle","props","Element","merged","type","const","local","rest","internalPressed","setInternalPressed","defaultPressed","pressed","undefined","setPressed","next","onPressedChange","_el$","_tmpl$","$$click","e","onClick","defaultPrevented","_$spread","_$mergeProps","data-state","aria-pressed","class","variant","size","_$delegateEvents"],"sources":["../../../../src/components/toggle/Toggle/Toggle.tsx"],"sourcesContent":["import {\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n type JSX,\n} from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { toggleVariants } from \"./Toggle.styles\";\nimport type { ToggleProps } from \"./Toggle.types\";\n\nexport function Toggle(props: ToggleProps): JSX.Element {\n const merged = mergeProps({ type: \"button\" as const }, props);\n\n const [local, rest] = splitProps(merged, [\n \"pressed\",\n \"defaultPressed\",\n \"onPressedChange\",\n \"variant\",\n \"size\",\n \"class\",\n \"value\",\n \"type\",\n \"onClick\",\n ]);\n\n const [internalPressed, setInternalPressed] = createSignal(\n local.defaultPressed ?? false,\n );\n const pressed = createMemo(() =>\n local.pressed !== undefined ? local.pressed : internalPressed(),\n );\n\n const setPressed = (next: boolean) => {\n if (local.pressed === undefined) setInternalPressed(next);\n local.onPressedChange?.(next);\n };\n\n return (\n <button\n type={local.type as \"button\"}\n data-slot=\"toggle\"\n data-state={pressed() ? \"on\" : \"off\"}\n aria-pressed={pressed()}\n class={clsx(\n toggleVariants({\n variant: local.variant,\n size: local.size,\n class: local.class,\n }),\n )}\n onClick={(e) => {\n (local.onClick as any)?.(e);\n if (!e.defaultPrevented) setPressed(!pressed());\n }}\n {...rest}\n />\n );\n}\n"],"mappings":";;;;;;AAWA,SAAgBQ,EAAOC,GAAiC;CACtD,IAAME,IAAST,EAAW,EAAEU,MAAM,SAAkB,GAAGH,CAAK,GAEtD,CAACK,GAAOC,KAAQZ,EAAWQ,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAS,CACV,GAEK,CAACK,GAAiBC,KAAsBhB,EAC5Ca,EAAMI,kBAAkB,EAC1B,GACMC,IAAUnB,QACdc,EAAMK,YAAYC,KAAAA,IAA4BJ,EAAgB,IAAhCF,EAAMK,OACtC,GAEME,KAAcC,MAAkB;EAEpCR,AADIA,EAAMK,YAAYC,KAAAA,KAAWH,EAAmBK,CAAI,GACxDR,EAAMS,kBAAkBD,CAAI;CAC9B;CAEA,cAAA;EAAA,IAAAE,IAAAC,EAAA;EAiBY,OAjBZD,EAAAE,WAacC,MAAM;GAEd,AADA,EAAOC,UAAkBD,CAAC,GACrBA,EAAEE,oBAAkBR,EAAW,CAACF,EAAQ,CAAC;EAChD,GAACW,EAAAN,GAAAO,EAAA;GAAA,IAdDnB,OAAI;IAAA,OAAEE,EAAMF;GAAgB;GAAA,IAAA,eAAA;IAAA,OAEhBO,EAAQ,IAAI,OAAO;GAAK;GAAA,IAAA,iBAAA;IAAA,OACtBA,EAAQ;GAAC;GAAA,IAAA,QAAA;IAAA,OAChBd,EACLC,EAAe;KACb6B,SAASrB,EAAMqB;KACfC,MAAMtB,EAAMsB;KACZF,OAAOpB,EAAMoB;IACf,CAAC,CACH;GAAC;EAAA,GAKGnB,CAAI,GAAA,IAAA,EAAA,GAAAS;CAAA,EAAA,CAAA;AAGd;AAACa,EAAA,CAAA,OAAA,CAAA"}
1
+ {"version":3,"file":"Toggle.js","names":["createMemo","createSignal","mergeProps","splitProps","JSX","clsx","toggleVariants","ToggleProps","Toggle","props","Element","merged","type","const","local","rest","internalPressed","setInternalPressed","defaultPressed","pressed","undefined","setPressed","next","onPressedChange","_el$","_tmpl$","$$click","e","onClick","defaultPrevented","_$spread","_$mergeProps","data-state","aria-pressed","class","variant","size","_$delegateEvents","mergeProps","_$mergeProps","_$delegateEvents","mergeProps$1","_tmpl$","Toggle","merged","props","local","rest","splitProps","internalPressed","setInternalPressed","createSignal","pressed","createMemo","setPressed","next","_el$","spread","mergeProps","\"class\"","clsx","toggleVariants","delegateEvents"],"sources":["../../../../src/components/toggle/Toggle/Toggle.tsx"],"sourcesContent":["import {\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n type JSX,\n} from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { toggleVariants } from \"./Toggle.styles\";\nimport type { ToggleProps } from \"./Toggle.types\";\n\nexport function Toggle(props: ToggleProps): JSX.Element {\n const merged = mergeProps({ type: \"button\" as const }, props);\n\n const [local, rest] = splitProps(merged, [\n \"pressed\",\n \"defaultPressed\",\n \"onPressedChange\",\n \"variant\",\n \"size\",\n \"class\",\n \"value\",\n \"type\",\n \"onClick\",\n ]);\n\n const [internalPressed, setInternalPressed] = createSignal(\n local.defaultPressed ?? false,\n );\n const pressed = createMemo(() =>\n local.pressed !== undefined ? local.pressed : internalPressed(),\n );\n\n const setPressed = (next: boolean) => {\n if (local.pressed === undefined) setInternalPressed(next);\n local.onPressedChange?.(next);\n };\n\n return (\n <button\n type={local.type as \"button\"}\n data-slot=\"toggle\"\n data-state={pressed() ? \"on\" : \"off\"}\n aria-pressed={pressed()}\n class={clsx(\n toggleVariants({\n variant: local.variant,\n size: local.size,\n class: local.class,\n }),\n )}\n onClick={(e) => {\n (local.onClick as any)?.(e);\n if (!e.defaultPrevented) setPressed(!pressed());\n }}\n {...rest}\n />\n );\n}\n"],"mappings":";;;;;;AAWA,SAAgBQ,EAAOC,GAAiC;CACtD,IAAME,IAAST,EAAW,EAAEU,MAAM,SAAkB,GAAGH,CAAK,GAEtD,CAACK,GAAOC,KAAQZ,EAAWQ,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAS,CACV,GAEK,CAACK,GAAiBC,KAAsBhB,EAC5Ca,EAAMI,kBAAkB,EAC1B,GACMC,IAAUnB,QACdc,EAAMK,YAAYC,KAAAA,IAA4BJ,EAAgB,IAAhCF,EAAMK,OACtC,GAEME,KAAcC,MAAkB;EAEpCR,AADIA,EAAMK,YAAYC,KAAAA,KAAWH,EAAmBK,CAAI,GACxDR,EAAMS,kBAAkBD,CAAI;CAC9B;CAEA,cAAA;EAAA,IAAAE,IAAAC,EAAA;EAiBY,OAjBZD,EAAAE,WAacC,MAAM;GAEd,AADAmB,EAAOlB,UAAkBD,CAAC,GACrBA,EAAEE,oBAAkBR,EAAW,CAACF,EAAQ,CAAC;EAChD,GAACW,EAAAN,GAAAO,EAAA;GAAA,IAdDnB,OAAI;IAAA,OAAEE,EAAMF;GAAgB;GAAA,IAAA,eAAA;IAAA,OAEhBO,EAAQ,IAAI,OAAO;GAAK;GAAA,IAAA,iBAAA;IAAA,OACtBA,EAAQ;GAAC;GAAA,IAAAwC,QAAA;IAAA,OAChBtD,EACLC,EAAe;KACb6B,SAASrB,EAAMqB;KACfC,MAAMtB,EAAMsB;KACZF,OAAOpB,EAAMoB;IACf,CAAC,CACH;GAAC;EAAA,GAKGnB,CAAI,GAAA,IAAA,EAAA,GAAAS;CAAA,EAAA,CAAA;AAGd;AAACa,EAAA,CAAA,OAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.styles.js","names":[],"sources":["../../../../src/components/toggle/Toggle/Toggle.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const toggleVariants = cva(\n \"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border border-input bg-transparent hover:bg-muted\",\n },\n size: {\n default:\n \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n sm: \"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n"],"mappings":";;AAEA,IAAa,IAAiB,EAC5B,uhBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;EACX;EACA,MAAM;GACJ,SACE;GACF,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF"}
1
+ {"version":3,"file":"Toggle.styles.js","names":["toggleVariants","cva"],"sources":["../../../../src/components/toggle/Toggle/Toggle.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const toggleVariants = cva(\n \"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border border-input bg-transparent hover:bg-muted\",\n },\n size: {\n default:\n \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n sm: \"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n"],"mappings":";;AAEA,IAAaA,IAAiBC,EAC5B,uhBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;EACX;EACA,MAAM;GACJ,SACE;GACF,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleGroup.context.js","names":[],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.context.ts"],"sourcesContent":["import { createContext, createSignal, useContext } from \"solid-js\";\nimport { createChangeEventDetails } from \"./create-change-event-details\";\nimport type {\n ToggleGroupChangeHandler,\n ToggleGroupContextValue,\n ToggleGroupItemEntry,\n ToggleGroupMultipleProps,\n ToggleGroupOrientation,\n ToggleGroupSingleProps,\n ToggleGroupSize,\n ToggleGroupValue,\n ToggleGroupVariant,\n} from \"./ToggleGroup.types\";\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue>();\n\n/** 单选/多选的 onValueChange 签名(从 props 类型派生,保持单一事实来源) */\ntype SingleChangeHandler<TValue extends ToggleGroupValue> = NonNullable<\n ToggleGroupSingleProps<TValue>[\"onValueChange\"]\n>;\ntype MultipleChangeHandler<TValue extends ToggleGroupValue> = NonNullable<\n ToggleGroupMultipleProps<TValue>[\"onValueChange\"]\n>;\n\n/**\n * createToggleGroupState 的输入:ToggleGroupProps 的运行时形态。\n *\n * 受控值时单选给标量、多选给数组,内部统一规范化成数组;\n * `multiple` 同时决定 onValueChange 用哪种签名回调。\n */\nexport interface ToggleGroupStateProps<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n> {\n value?: TValue | readonly TValue[];\n defaultValue?: TValue | readonly TValue[];\n onValueChange?: ToggleGroupChangeHandler<TValue>;\n multiple?: boolean;\n disabled?: boolean;\n orientation?: ToggleGroupOrientation;\n loopFocus?: boolean;\n dir?: \"ltr\" | \"rtl\" | \"auto\";\n spacing?: number;\n variant?: ToggleGroupVariant;\n size?: ToggleGroupSize;\n}\n\n/**\n * ToggleGroup 的唯一状态源:选中值(受控/非受控)、焦点高亮、item 注册表。\n *\n * 返回的 context 值里所有字段都是 accessor,因此传入的 `props` 可以是\n * splitProps 得到的响应式代理,读取始终是最新值。\n * 组件根只负责输出 DOM 与 data-* 样式钩子,状态与交互算法收敛在这里。\n *\n * 值类型由泛型参数决定;内部只用 `===` / `includes` 做同一性比较,\n * 因此 string 与 number 都能正常工作。\n */\nexport function createToggleGroupState<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(props: ToggleGroupStateProps<TValue>): ToggleGroupContextValue<TValue> {\n const multiple = () => props.multiple === true;\n\n /** 单选传标量、多选传数组,内部统一成数组 */\n const toArray = (v: TValue | readonly TValue[] | undefined): TValue[] => {\n if (v === undefined) return [];\n return Array.isArray(v) ? [...(v as readonly TValue[])] : [v as TValue];\n };\n\n const [internalValue, setInternalValue] = createSignal<TValue[]>(\n toArray(props.defaultValue),\n );\n const [highlightedValue, setHighlightedValue] = createSignal<\n TValue | undefined\n >();\n const [itemOrder, setItemOrder] = createSignal<\n ToggleGroupItemEntry<TValue>[]\n >([]);\n\n const isControlled = () => props.value !== undefined;\n // 受控优先:props.value 存在时读外部值,否则读内部状态\n const value = (): readonly TValue[] =>\n isControlled() ? toArray(props.value) : internalValue();\n\n const isPressed = (v: TValue) => value().includes(v);\n\n const toggleItem = (\n itemValue: TValue,\n event: Event,\n trigger?: Element,\n ): void => {\n const current = value();\n const pressed = current.includes(itemValue);\n\n // 单选时再次点击已按下项会取消选中(next = [])\n let next: TValue[];\n if (multiple()) {\n next = pressed\n ? current.filter((v) => v !== itemValue)\n : [...current, itemValue];\n } else {\n next = pressed ? [] : [itemValue];\n }\n\n // 先通知外部:onValueChange 中 cancel() 可阻止组件提交本次变更\n // 单选回调标量(取消时是 undefined),多选回调数组\n const details = createChangeEventDetails(event, trigger);\n if (multiple()) {\n (props.onValueChange as MultipleChangeHandler<TValue> | undefined)?.(\n next,\n details,\n );\n } else {\n (props.onValueChange as SingleChangeHandler<TValue> | undefined)?.(\n next[0],\n details,\n );\n }\n if (details.isCanceled) return;\n\n // 受控模式只通知外部,不改内部状态\n if (!isControlled()) setInternalValue(next);\n };\n\n const registerItem = (entry: ToggleGroupItemEntry<TValue>) => {\n setItemOrder((prev) => [...prev, entry]);\n return () => setItemOrder((prev) => prev.filter((item) => item !== entry));\n };\n\n const isFirstEnabled = (v: TValue) =>\n itemOrder().find((item) => !item.disabled())?.value === v;\n\n const isUsable = (v: TValue) =>\n itemOrder().some((item) => item.value === v && !item.disabled());\n\n return {\n value,\n multiple,\n disabled: () => props.disabled === true,\n orientation: () => props.orientation ?? \"horizontal\",\n loopFocus: () => props.loopFocus ?? true,\n dir: () => props.dir,\n spacing: () => props.spacing ?? 2,\n variant: () => props.variant,\n size: () => props.size,\n highlightedValue,\n isPressed,\n toggleItem,\n setHighlightedValue,\n registerItem,\n getItems: () => itemOrder(),\n isFirstEnabled,\n isUsable,\n };\n}\n\n/**\n * 读取 ToggleGroup 的 context。\n *\n * 泛型参数是**调用方标注**:组件本身无法从子节点推导所属 group 的值类型,\n * 自定义 item 时请显式传入与 ToggleGroup 一致的类型,例如\n * `useToggleGroupContext<\"bold\" | \"italic\">(\"MyToggle\")`。\n */\nexport function useToggleGroupContext<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(component: string): ToggleGroupContextValue<TValue> {\n const ctx = useContext(ToggleGroupContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <ToggleGroup> 内部`);\n }\n return ctx as ToggleGroupContextValue<TValue>;\n}\n\nexport { ToggleGroupContext };\n"],"mappings":";;;AAcA,IAAM,IAAqB,EAAuC;AA0ClE,SAAgB,EAEd,GAAuE;CACvE,IAAM,UAAiB,EAAM,aAAa,IAGpC,KAAW,MACX,MAAM,KAAA,IAAkB,CAAC,IACtB,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAI,CAAuB,IAAI,CAAC,CAAW,GAGlE,CAAC,GAAe,KAAoB,EACxC,EAAQ,EAAM,YAAY,CAC5B,GACM,CAAC,GAAkB,KAAuB,EAE9C,GACI,CAAC,GAAW,KAAgB,EAEhC,CAAC,CAAC,GAEE,UAAqB,EAAM,UAAU,KAAA,GAErC,UACJ,EAAa,IAAI,EAAQ,EAAM,KAAK,IAAI,EAAc;CAqDxD,OAAO;EACL;EACA;EACA,gBAAgB,EAAM,aAAa;EACnC,mBAAmB,EAAM,eAAe;EACxC,iBAAiB,EAAM,aAAa;EACpC,WAAW,EAAM;EACjB,eAAe,EAAM,WAAW;EAChC,eAAe,EAAM;EACrB,YAAY,EAAM;EAClB;EACA,YA9DiB,MAAc,EAAM,CAAC,CAAC,SAAS,CAAC;EA+DjD,aA5DA,GACA,GACA,MACS;GACT,IAAM,IAAU,EAAM,GAChB,IAAU,EAAQ,SAAS,CAAS,GAGtC;GACJ,AAKE,IALE,EAAS,IACJ,IACH,EAAQ,QAAQ,MAAM,MAAM,CAAS,IACrC,CAAC,GAAG,GAAS,CAAS,IAEnB,IAAU,CAAC,IAAI,CAAC,CAAS;GAKlC,IAAM,IAAU,EAAyB,GAAO,CAAO;GACvD,AAAI,EAAS,IACX,EAAO,gBACL,GACA,CACF,IAEA,EAAO,gBACL,EAAK,IACL,CACF,GAEE,GAAQ,eAGP,EAAa,KAAG,EAAiB,CAAI;EAC5C;EA0BE;EACA,eAzBoB,OACpB,GAAc,MAAS,CAAC,GAAG,GAAM,CAAK,CAAC,SAC1B,GAAc,MAAS,EAAK,QAAQ,MAAS,MAAS,CAAK,CAAC;EAwBzE,gBAAgB,EAAU;EAC1B,iBAtBsB,MACtB,EAAU,CAAC,CAAC,MAAM,MAAS,CAAC,EAAK,SAAS,CAAC,CAAC,EAAE,UAAU;EAsBxD,WApBgB,MAChB,EAAU,CAAC,CAAC,MAAM,MAAS,EAAK,UAAU,KAAK,CAAC,EAAK,SAAS,CAAC;CAoBjE;AACF;AASA,SAAgB,EAEd,GAAoD;CACpD,IAAM,IAAM,EAAW,CAAkB;CACzC,IAAI,CAAC,GACH,MAAU,MAAM,IAAI,EAAU,yBAAyB;CAEzD,OAAO;AACT"}
1
+ {"version":3,"file":"ToggleGroup.context.js","names":["ToggleGroupContext","createContext","createToggleGroupState","multiple","props","toArray","v","internalValue","setInternalValue","createSignal","highlightedValue","setHighlightedValue","itemOrder","setItemOrder","isControlled","value","current","pressed","itemValue","next","details","createChangeEventDetails","event","trigger","prev","entry","item","useToggleGroupContext","ctx","useContext","component"],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.context.ts"],"sourcesContent":["import { createContext, createSignal, useContext } from \"solid-js\";\nimport { createChangeEventDetails } from \"./create-change-event-details\";\nimport type {\n ToggleGroupChangeHandler,\n ToggleGroupContextValue,\n ToggleGroupItemEntry,\n ToggleGroupMultipleProps,\n ToggleGroupOrientation,\n ToggleGroupSingleProps,\n ToggleGroupSize,\n ToggleGroupValue,\n ToggleGroupVariant,\n} from \"./ToggleGroup.types\";\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue>();\n\n/** 单选/多选的 onValueChange 签名(从 props 类型派生,保持单一事实来源) */\ntype SingleChangeHandler<TValue extends ToggleGroupValue> = NonNullable<\n ToggleGroupSingleProps<TValue>[\"onValueChange\"]\n>;\ntype MultipleChangeHandler<TValue extends ToggleGroupValue> = NonNullable<\n ToggleGroupMultipleProps<TValue>[\"onValueChange\"]\n>;\n\n/**\n * createToggleGroupState 的输入:ToggleGroupProps 的运行时形态。\n *\n * 受控值时单选给标量、多选给数组,内部统一规范化成数组;\n * `multiple` 同时决定 onValueChange 用哪种签名回调。\n */\nexport interface ToggleGroupStateProps<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n> {\n value?: TValue | readonly TValue[];\n defaultValue?: TValue | readonly TValue[];\n onValueChange?: ToggleGroupChangeHandler<TValue>;\n multiple?: boolean;\n disabled?: boolean;\n orientation?: ToggleGroupOrientation;\n loopFocus?: boolean;\n dir?: \"ltr\" | \"rtl\" | \"auto\";\n spacing?: number;\n variant?: ToggleGroupVariant;\n size?: ToggleGroupSize;\n}\n\n/**\n * ToggleGroup 的唯一状态源:选中值(受控/非受控)、焦点高亮、item 注册表。\n *\n * 返回的 context 值里所有字段都是 accessor,因此传入的 `props` 可以是\n * splitProps 得到的响应式代理,读取始终是最新值。\n * 组件根只负责输出 DOM 与 data-* 样式钩子,状态与交互算法收敛在这里。\n *\n * 值类型由泛型参数决定;内部只用 `===` / `includes` 做同一性比较,\n * 因此 string 与 number 都能正常工作。\n */\nexport function createToggleGroupState<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(props: ToggleGroupStateProps<TValue>): ToggleGroupContextValue<TValue> {\n const multiple = () => props.multiple === true;\n\n /** 单选传标量、多选传数组,内部统一成数组 */\n const toArray = (v: TValue | readonly TValue[] | undefined): TValue[] => {\n if (v === undefined) return [];\n return Array.isArray(v) ? [...(v as readonly TValue[])] : [v as TValue];\n };\n\n const [internalValue, setInternalValue] = createSignal<TValue[]>(\n toArray(props.defaultValue),\n );\n const [highlightedValue, setHighlightedValue] = createSignal<\n TValue | undefined\n >();\n const [itemOrder, setItemOrder] = createSignal<\n ToggleGroupItemEntry<TValue>[]\n >([]);\n\n const isControlled = () => props.value !== undefined;\n // 受控优先:props.value 存在时读外部值,否则读内部状态\n const value = (): readonly TValue[] =>\n isControlled() ? toArray(props.value) : internalValue();\n\n const isPressed = (v: TValue) => value().includes(v);\n\n const toggleItem = (\n itemValue: TValue,\n event: Event,\n trigger?: Element,\n ): void => {\n const current = value();\n const pressed = current.includes(itemValue);\n\n // 单选时再次点击已按下项会取消选中(next = [])\n let next: TValue[];\n if (multiple()) {\n next = pressed\n ? current.filter((v) => v !== itemValue)\n : [...current, itemValue];\n } else {\n next = pressed ? [] : [itemValue];\n }\n\n // 先通知外部:onValueChange 中 cancel() 可阻止组件提交本次变更\n // 单选回调标量(取消时是 undefined),多选回调数组\n const details = createChangeEventDetails(event, trigger);\n if (multiple()) {\n (props.onValueChange as MultipleChangeHandler<TValue> | undefined)?.(\n next,\n details,\n );\n } else {\n (props.onValueChange as SingleChangeHandler<TValue> | undefined)?.(\n next[0],\n details,\n );\n }\n if (details.isCanceled) return;\n\n // 受控模式只通知外部,不改内部状态\n if (!isControlled()) setInternalValue(next);\n };\n\n const registerItem = (entry: ToggleGroupItemEntry<TValue>) => {\n setItemOrder((prev) => [...prev, entry]);\n return () => setItemOrder((prev) => prev.filter((item) => item !== entry));\n };\n\n const isFirstEnabled = (v: TValue) =>\n itemOrder().find((item) => !item.disabled())?.value === v;\n\n const isUsable = (v: TValue) =>\n itemOrder().some((item) => item.value === v && !item.disabled());\n\n return {\n value,\n multiple,\n disabled: () => props.disabled === true,\n orientation: () => props.orientation ?? \"horizontal\",\n loopFocus: () => props.loopFocus ?? true,\n dir: () => props.dir,\n spacing: () => props.spacing ?? 2,\n variant: () => props.variant,\n size: () => props.size,\n highlightedValue,\n isPressed,\n toggleItem,\n setHighlightedValue,\n registerItem,\n getItems: () => itemOrder(),\n isFirstEnabled,\n isUsable,\n };\n}\n\n/**\n * 读取 ToggleGroup 的 context。\n *\n * 泛型参数是**调用方标注**:组件本身无法从子节点推导所属 group 的值类型,\n * 自定义 item 时请显式传入与 ToggleGroup 一致的类型,例如\n * `useToggleGroupContext<\"bold\" | \"italic\">(\"MyToggle\")`。\n */\nexport function useToggleGroupContext<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(component: string): ToggleGroupContextValue<TValue> {\n const ctx = useContext(ToggleGroupContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <ToggleGroup> 内部`);\n }\n return ctx as ToggleGroupContextValue<TValue>;\n}\n\nexport { ToggleGroupContext };\n"],"mappings":";;;AAcA,IAAMA,IAAqBC,EAAuC;AA0ClE,SAAgBC,EAEd,GAAuE;CACvE,IAAMC,UAAiBC,EAAM,aAAa,IAGpCC,KAAW,MACXC,MAAM,KAAA,IAAkB,CAAC,IACtB,MAAM,QAAQA,CAAC,IAAI,CAAC,GAAIA,CAAuB,IAAI,CAACA,CAAW,GAGlE,CAACC,GAAeC,KAAoBC,EACxCJ,EAAQD,EAAM,YAAY,CAC5B,GACM,CAACM,GAAkBC,KAAuBF,EAE9C,GACI,CAACG,GAAWC,KAAgBJ,EAEhC,CAAC,CAAC,GAEEK,UAAqBV,EAAM,UAAU,KAAA,GAErCW,UACJD,EAAa,IAAIT,EAAQD,EAAM,KAAK,IAAIG,EAAc;CAqDxD,OAAO;EACL;EACA;EACA,gBAAgBH,EAAM,aAAa;EACnC,mBAAmBA,EAAM,eAAe;EACxC,iBAAiBA,EAAM,aAAa;EACpC,WAAWA,EAAM;EACjB,eAAeA,EAAM,WAAW;EAChC,eAAeA,EAAM;EACrB,YAAYA,EAAM;EAClB;EACA,YA9DiB,MAAcW,EAAM,CAAC,CAAC,SAAST,CAAC;EA+DjD,aA5DA,GACA,GACA,MACS;GACT,IAAMU,IAAUD,EAAM,GAChBE,IAAUD,EAAQ,SAASE,CAAS,GAGtCC;GACJ,AAKEA,IALEhB,EAAS,IACJc,IACHD,EAAQ,QAAQ,MAAMV,MAAMY,CAAS,IACrC,CAAC,GAAGF,GAASE,CAAS,IAEnBD,IAAU,CAAC,IAAI,CAACC,CAAS;GAKlC,IAAME,IAAUC,EAAyBC,GAAOC,CAAO;GAYvD,AAXIpB,EAAS,IACXC,EAAO,gBACLe,GACAC,CACF,IAEAhB,EAAO,gBACLe,EAAK,IACLC,CACF,GAEE,GAAQ,eAGPN,EAAa,KAAGN,EAAiBW,CAAI;EAC5C;EA0BE;EACA,eAzBoB,OACpBN,GAAc,MAAS,CAAC,GAAGW,GAAMC,CAAK,CAAC,SAC1BZ,GAAc,MAASW,EAAK,QAAQ,MAASE,MAASD,CAAK,CAAC;EAwBzE,gBAAgBb,EAAU;EAC1B,iBAtBsB,MACtBA,EAAU,CAAC,CAAC,MAAM,MAAS,CAACc,EAAK,SAAS,CAAC,CAAC,EAAE,UAAUpB;EAsBxD,WApBgB,MAChBM,EAAU,CAAC,CAAC,MAAM,MAASc,EAAK,UAAUpB,KAAK,CAACoB,EAAK,SAAS,CAAC;CAoBjE;AACF;AASA,SAAgBC,EAEd,GAAoD;CACpD,IAAMC,IAAMC,EAAW7B,CAAkB;CACzC,IAAI,CAAC4B,GACH,MAAU,MAAM,IAAIE,EAAU,yBAAyB;CAEzD,OAAOF;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleGroup.js","names":["splitProps","JSX","clsx","callEventHandler","createToggleGroupState","ToggleGroupContext","toggleGroupVariants","ToggleGroupProps","ToggleGroupValue","useToggleGroupKeyboard","ToggleGroup","props","TValue","Element","local","rest","ctx","handleKeyDown","isVertical","orientation","_el$","_tmpl$","$$keydown","e","onKeyDown","defaultPrevented","_$spread","_$mergeProps","data-variant","variant","data-size","size","data-spacing","spacing","data-orientation","data-vertical","data-horizontal","data-multiple","multiple","data-disabled","disabled","aria-disabled","undefined","dir","style","CSSProperties","class","classList","_$insert","_$createComponent","Provider","value","children","_$delegateEvents"],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import { splitProps, type JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { callEventHandler } from \"../call-event-handler\";\nimport {\n createToggleGroupState,\n ToggleGroupContext,\n} from \"./ToggleGroup.context\";\nimport { toggleGroupVariants } from \"./ToggleGroup.styles\";\nimport type { ToggleGroupProps, ToggleGroupValue } from \"./ToggleGroup.types\";\nimport { useToggleGroupKeyboard } from \"./useToggleGroupKeyboard\";\n\n/**\n * ToggleGroup 根组件:渲染 `<div role=\"group\">`,输出样式与语义钩子\n * (`data-orientation` / `data-vertical` / `data-horizontal` / `data-multiple`\n * / `data-disabled` / `data-spacing` / `data-variant` / `data-size`),\n * 并挂载 roving focus 键盘导航。\n *\n * 单选模式(默认)的 value 是标量,多选模式(`multiple`)才是数组:\n *\n * @example\n * ```tsx\n * // 单选\n * <ToggleGroup defaultValue=\"bold\" onValueChange={(v) => ...}>\n * <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n * </ToggleGroup>\n *\n * // 多选\n * <ToggleGroup multiple value={[\"bold\"]} onValueChange={(v) => ...}>\n * <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n * </ToggleGroup>\n * ```\n */\nexport function ToggleGroup<TValue extends ToggleGroupValue = ToggleGroupValue>(\n props: ToggleGroupProps<TValue>,\n): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"defaultValue\",\n \"onValueChange\",\n \"multiple\",\n \"disabled\",\n \"orientation\",\n \"loopFocus\",\n \"spacing\",\n \"variant\",\n \"size\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n \"onKeyDown\",\n \"children\",\n ]);\n\n // 默认值与单选/多选的差异统一由状态层处理,渲染用 ctx 里的已解析值\n const ctx = createToggleGroupState<TValue>(local);\n const { handleKeyDown } = useToggleGroupKeyboard(ctx);\n const isVertical = () => ctx.orientation() === \"vertical\";\n\n return (\n <div\n role=\"group\"\n data-slot=\"toggle-group\"\n data-variant={ctx.variant()}\n data-size={ctx.size()}\n data-spacing={ctx.spacing()}\n data-orientation={ctx.orientation()}\n // 拼接态样式依赖 data-vertical / data-horizontal(与 tabs 根保持一致)\n data-vertical={isVertical() ? \"\" : null}\n data-horizontal={isVertical() ? null : \"\"}\n data-multiple={ctx.multiple() ? \"\" : null}\n data-disabled={ctx.disabled() ? \"\" : null}\n aria-disabled={ctx.disabled() ? \"true\" : undefined}\n dir={local.dir}\n // --gap 作为 spacing 的样式入口,用户 style 可覆盖\n style={{ \"--gap\": ctx.spacing(), ...local.style } as JSX.CSSProperties}\n class={clsx(toggleGroupVariants(), local.class)}\n classList={local.classList}\n onKeyDown={(e) => {\n callEventHandler(local.onKeyDown, e);\n if (!e.defaultPrevented) handleKeyDown(e);\n }}\n {...rest}\n >\n <ToggleGroupContext.Provider value={ctx}>\n {local.children}\n </ToggleGroupContext.Provider>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAgCA,SAAgBU,EACdC,GACa;CACb,IAAM,CAACG,GAAOC,KAAQf,EAAWW,GAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAGKK,IAAMZ,EAA+BU,CAAK,GAC1C,EAAEG,qBAAkBR,EAAuBO,CAAG,GAC9CE,UAAmBF,EAAIG,YAAY,MAAM;CAE/C,cAAA;EAAA,IAAAC,IAAAC,EAAA;EA0BqB,OA1BrBD,EAAAE,aAmBgBC,MAAM;GAEhB,AADApB,EAAiBW,EAAMU,WAAWD,CAAC,GAC9BA,EAAEE,oBAAkBR,EAAcM,CAAC;EAC1C,GAACG,EAAAN,GAAAO,EAAA;GAAA,IAAA,iBAAA;IAAA,OAlBaX,EAAIa,QAAQ;GAAC;GAAA,IAAA,cAAA;IAAA,OAChBb,EAAIe,KAAK;GAAC;GAAA,IAAA,iBAAA;IAAA,OACPf,EAAIiB,QAAQ;GAAC;GAAA,IAAA,qBAAA;IAAA,OACTjB,EAAIG,YAAY;GAAC;GAAA,IAAA,kBAAA;IAAA,OAEpBD,EAAW,IAAI,KAAK;GAAI;GAAA,IAAA,oBAAA;IAAA,OACtBA,EAAW,IAAI,OAAO;GAAE;GAAA,IAAA,kBAAA;IAAA,OAC1BF,EAAIsB,SAAS,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OAC1BtB,EAAIwB,SAAS,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OAC1BxB,EAAIwB,SAAS,IAAI,SAASE,KAAAA;GAAS;GAAA,IAClDC,MAAG;IAAA,OAAE7B,EAAM6B;GAAG;GAAA,IAEdC,QAAK;IAAA,OAAE;KAAE,SAAS5B,EAAIiB,QAAQ;KAAG,GAAGnB,EAAM8B;IAAM;GAAsB;GAAA,IAAA,QAAA;IAAA,OAC/D1C,EAAKI,EAAoB,GAAGQ,EAAMgC,KAAK;GAAC;GAAA,IAC/CC,YAAS;IAAA,OAAEjC,EAAMiC;GAAS;EAAA,GAKtBhC,CAAI,GAAA,IAAA,EAAA,GAAAiC,EAAA5B,GAAA6B,EAEP5C,EAAmB6C,UAAQ;GAACC,OAAOnC;GAAG,IAAAoC,WAAA;IAAA,OACpCtC,EAAMsC;GAAQ;EAAA,CAAA,CAAA,GAAAhC;CAAA,EAAA,CAAA;AAIvB;AAACiC,EAAA,CAAA,SAAA,CAAA"}
1
+ {"version":3,"file":"ToggleGroup.js","names":["splitProps","JSX","clsx","callEventHandler","createToggleGroupState","ToggleGroupContext","toggleGroupVariants","ToggleGroupProps","ToggleGroupValue","useToggleGroupKeyboard","ToggleGroup","props","TValue","Element","local","rest","ctx","handleKeyDown","isVertical","orientation","_el$","_tmpl$","$$keydown","e","onKeyDown","defaultPrevented","_$spread","_$mergeProps","data-variant","variant","data-size","size","data-spacing","spacing","data-orientation","data-vertical","data-horizontal","data-multiple","multiple","data-disabled","disabled","aria-disabled","undefined","dir","style","CSSProperties","class","classList","_$insert","_$createComponent","Provider","value","children","_$delegateEvents","_$mergeProps","_$createComponent","_$delegateEvents","_tmpl$","ToggleGroup","local","rest","splitProps","props","ctx","createToggleGroupState","useToggleGroupKeyboard","isVertical","_el$","callEventHandler","handleKeyDown","spread","mergeProps","\"class\"","clsx","toggleGroupVariants","insert","createComponent","ToggleGroupContext","delegateEvents"],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import { splitProps, type JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { callEventHandler } from \"../call-event-handler\";\nimport {\n createToggleGroupState,\n ToggleGroupContext,\n} from \"./ToggleGroup.context\";\nimport { toggleGroupVariants } from \"./ToggleGroup.styles\";\nimport type { ToggleGroupProps, ToggleGroupValue } from \"./ToggleGroup.types\";\nimport { useToggleGroupKeyboard } from \"./useToggleGroupKeyboard\";\n\n/**\n * ToggleGroup 根组件:渲染 `<div role=\"group\">`,输出样式与语义钩子\n * (`data-orientation` / `data-vertical` / `data-horizontal` / `data-multiple`\n * / `data-disabled` / `data-spacing` / `data-variant` / `data-size`),\n * 并挂载 roving focus 键盘导航。\n *\n * 单选模式(默认)的 value 是标量,多选模式(`multiple`)才是数组:\n *\n * @example\n * ```tsx\n * // 单选\n * <ToggleGroup defaultValue=\"bold\" onValueChange={(v) => ...}>\n * <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n * </ToggleGroup>\n *\n * // 多选\n * <ToggleGroup multiple value={[\"bold\"]} onValueChange={(v) => ...}>\n * <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n * </ToggleGroup>\n * ```\n */\nexport function ToggleGroup<TValue extends ToggleGroupValue = ToggleGroupValue>(\n props: ToggleGroupProps<TValue>,\n): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"defaultValue\",\n \"onValueChange\",\n \"multiple\",\n \"disabled\",\n \"orientation\",\n \"loopFocus\",\n \"spacing\",\n \"variant\",\n \"size\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n \"onKeyDown\",\n \"children\",\n ]);\n\n // 默认值与单选/多选的差异统一由状态层处理,渲染用 ctx 里的已解析值\n const ctx = createToggleGroupState<TValue>(local);\n const { handleKeyDown } = useToggleGroupKeyboard(ctx);\n const isVertical = () => ctx.orientation() === \"vertical\";\n\n return (\n <div\n role=\"group\"\n data-slot=\"toggle-group\"\n data-variant={ctx.variant()}\n data-size={ctx.size()}\n data-spacing={ctx.spacing()}\n data-orientation={ctx.orientation()}\n // 拼接态样式依赖 data-vertical / data-horizontal(与 tabs 根保持一致)\n data-vertical={isVertical() ? \"\" : null}\n data-horizontal={isVertical() ? null : \"\"}\n data-multiple={ctx.multiple() ? \"\" : null}\n data-disabled={ctx.disabled() ? \"\" : null}\n aria-disabled={ctx.disabled() ? \"true\" : undefined}\n dir={local.dir}\n // --gap 作为 spacing 的样式入口,用户 style 可覆盖\n style={{ \"--gap\": ctx.spacing(), ...local.style } as JSX.CSSProperties}\n class={clsx(toggleGroupVariants(), local.class)}\n classList={local.classList}\n onKeyDown={(e) => {\n callEventHandler(local.onKeyDown, e);\n if (!e.defaultPrevented) handleKeyDown(e);\n }}\n {...rest}\n >\n <ToggleGroupContext.Provider value={ctx}>\n {local.children}\n </ToggleGroupContext.Provider>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAgCA,SAAgBU,EACdC,GACa;CACb,IAAM,CAACG,GAAOC,KAAQf,EAAWW,GAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAGKK,IAAMZ,EAA+BU,CAAK,GAC1C,EAAEG,qBAAkBR,EAAuBO,CAAG,GAC9CE,UAAmBF,EAAIG,YAAY,MAAM;CAE/C,cAAA;EAAA,IAAAC,IAAAC,EAAA;EA0BqB,OA1BrBD,EAAAE,aAmBgBC,MAAM;GAEhB,AADApB,EAAiBW,EAAMU,WAAWD,CAAC,GAC9BA,EAAEE,oBAAkBR,EAAcM,CAAC;EAC1C,GAACG,EAAAN,GAAAO,EAAA;GAAA,IAAA,iBAAA;IAAA,OAlBaX,EAAIa,QAAQ;GAAC;GAAA,IAAA,cAAA;IAAA,OAChBb,EAAIe,KAAK;GAAC;GAAA,IAAA,iBAAA;IAAA,OACPf,EAAIiB,QAAQ;GAAC;GAAA,IAAA,qBAAA;IAAA,OACTjB,EAAIG,YAAY;GAAC;GAAA,IAAA,kBAAA;IAAA,OAEpBD,EAAW,IAAI,KAAK;GAAI;GAAA,IAAA,oBAAA;IAAA,OACtBA,EAAW,IAAI,OAAO;GAAE;GAAA,IAAA,kBAAA;IAAA,OAC1BF,EAAIsB,SAAS,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OAC1BtB,EAAIwB,SAAS,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OAC1BxB,EAAIwB,SAAS,IAAI,SAASE,KAAAA;GAAS;GAAA,IAClDC,MAAG;IAAA,OAAE7B,EAAM6B;GAAG;GAAA,IAEdC,QAAK;IAAA,OAAE;KAAE,SAAS5B,EAAIiB,QAAQ;KAAG,GAAGnB,EAAM8B;IAAM;GAAsB;GAAA,IAAA4B,QAAA;IAAA,OAC/DtE,EAAKI,EAAoB,GAAGQ,EAAMgC,KAAK;GAAC;GAAA,IAC/CC,YAAS;IAAA,OAAEjC,EAAMiC;GAAS;EAAA,GAKtBhC,CAAI,GAAA,IAAA,EAAA,GAAAiC,EAAA5B,GAAA6B,EAEP5C,EAAmB6C,UAAQ;GAACC,OAAOnC;GAAG,IAAAoC,WAAA;IAAA,OACpCtC,EAAMsC;GAAQ;EAAA,CAAA,CAAA,GAAAhC;CAAA,EAAA,CAAA;AAIvB;AAACiC,EAAA,CAAA,SAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleGroup.styles.js","names":[],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\n/**\n * ToggleGroup 根容器样式。\n *\n * 根元素同时输出 `data-vertical` / `data-horizontal`(见 ToggleGroup.tsx),\n * 使 `data-vertical:*`、`group-data-vertical/toggle-group:*` 这类选择器生效 ——\n * item 的“拼接态”样式依赖后两者。\n */\nexport const toggleGroupVariants = cva(\n \"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch\",\n);\n"],"mappings":";;AASA,IAAa,IAAsB,EACjC,mMACF"}
1
+ {"version":3,"file":"ToggleGroup.styles.js","names":["toggleGroupVariants","cva"],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\n/**\n * ToggleGroup 根容器样式。\n *\n * 根元素同时输出 `data-vertical` / `data-horizontal`(见 ToggleGroup.tsx),\n * 使 `data-vertical:*`、`group-data-vertical/toggle-group:*` 这类选择器生效 ——\n * item 的“拼接态”样式依赖后两者。\n */\nexport const toggleGroupVariants = cva(\n \"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch\",\n);\n"],"mappings":";;AASA,IAAaA,IAAsBC,EACjC,mMACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-change-event-details.js","names":[],"sources":["../../../../src/components/toggle-group/ToggleGroup/create-change-event-details.ts"],"sourcesContent":["import type { ToggleGroupChangeEventDetails } from \"./ToggleGroup.types\";\n\n/**\n * 构造 onValueChange 的事件详情(对齐 base-ui 的 `ChangeEventDetails`)。\n *\n * `isCanceled` / `isPropagationAllowed` 用 getter 暴露:回调内部可以即时读到\n * `cancel()` / `allowPropagation()` 之后的最新值,而不是创建时的快照。\n */\nexport function createChangeEventDetails(\n event: Event,\n trigger?: Element,\n): ToggleGroupChangeEventDetails {\n let canceled = false;\n let propagationAllowed = false;\n\n return {\n reason: \"none\",\n event,\n trigger,\n cancel: () => {\n canceled = true;\n },\n allowPropagation: () => {\n propagationAllowed = true;\n },\n get isCanceled() {\n return canceled;\n },\n get isPropagationAllowed() {\n return propagationAllowed;\n },\n };\n}\n"],"mappings":";AAQA,SAAgB,EACd,GACA,GAC+B;CAC/B,IAAI,IAAW,IACX,IAAqB;CAEzB,OAAO;EACL,QAAQ;EACR;EACA;EACA,cAAc;GACZ,IAAW;EACb;EACA,wBAAwB;GACtB,IAAqB;EACvB;EACA,IAAI,aAAa;GACf,OAAO;EACT;EACA,IAAI,uBAAuB;GACzB,OAAO;EACT;CACF;AACF"}
1
+ {"version":3,"file":"create-change-event-details.js","names":["createChangeEventDetails","canceled","propagationAllowed"],"sources":["../../../../src/components/toggle-group/ToggleGroup/create-change-event-details.ts"],"sourcesContent":["import type { ToggleGroupChangeEventDetails } from \"./ToggleGroup.types\";\n\n/**\n * 构造 onValueChange 的事件详情(对齐 base-ui 的 `ChangeEventDetails`)。\n *\n * `isCanceled` / `isPropagationAllowed` 用 getter 暴露:回调内部可以即时读到\n * `cancel()` / `allowPropagation()` 之后的最新值,而不是创建时的快照。\n */\nexport function createChangeEventDetails(\n event: Event,\n trigger?: Element,\n): ToggleGroupChangeEventDetails {\n let canceled = false;\n let propagationAllowed = false;\n\n return {\n reason: \"none\",\n event,\n trigger,\n cancel: () => {\n canceled = true;\n },\n allowPropagation: () => {\n propagationAllowed = true;\n },\n get isCanceled() {\n return canceled;\n },\n get isPropagationAllowed() {\n return propagationAllowed;\n },\n };\n}\n"],"mappings":";AAQA,SAAgBA,EACd,GACA,GAC+B;CAC/B,IAAIC,IAAW,IACXC,IAAqB;CAEzB,OAAO;EACL,QAAQ;EACR;EACA;EACA,cAAc;GACZ,IAAW;EACb;EACA,wBAAwB;GACtB,IAAqB;EACvB;EACA,IAAI,aAAa;GACf,OAAOD;EACT;EACA,IAAI,uBAAuB;GACzB,OAAOC;EACT;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useToggleGroupKeyboard.js","names":[],"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,IAAM,oBAAW,IAAI,IAAI;CACvB;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAeD,SAAgB,EAEd,GAAsC;CA8DtC,OAAO,EAAE,gBA7Dc,MAAqB;EAE1C,IADI,EAAI,SAAS,KACb,CAAC,EAAS,IAAI,EAAE,GAAG,GAAG;EAE1B,IAAM,IAAW,SAAS,eACpB,IAAQ,EAAI,SAAS,CAAC,CAAC,QAAQ,MAAS,CAAC,EAAK,SAAS,CAAC;EAC9D,IAAI,EAAM,WAAW,GAAG;EAExB,IAAM,IAAe,EAAM,WAAW,MAAS,EAAK,YAAY,CAAQ;EACxE,IAAI,MAAiB,IAAI;EAEzB,IAAM,IAAa,EAAI,YAAY,MAAM,YAEnC,IAAM,EAAI,IAAI,GACd,IACJ,MAAQ,SACP,MAAQ,SACP,OAAO,WAAa,OACpB,iBAAiB,EAAE,aAAwB,CAAC,CAAC,cAAc,OAE3D;EACJ,QAAQ,EAAE,KAAV;GACE,KAAK;IACH,IAAY;IACZ;GACF,KAAK;IACH,IAAY,EAAM,SAAS;IAC3B;GACF,KAAK;IACH,IAAI,GAAY;IAChB,IAAY,KAAgB,IAAQ,IAAI;IACxC;GACF,KAAK;IACH,IAAI,GAAY;IAChB,IAAY,KAAgB,IAAQ,KAAK;IACzC;GACF,KAAK;IACH,IAAI,CAAC,GAAY;IACjB,IAAY,IAAe;IAC3B;GACF,KAAK;IACH,IAAI,CAAC,GAAY;IACjB,IAAY,IAAe;EAE/B;EAEI,MAAc,KAAA,MAGlB,EAAE,eAAe,GAEjB,AAGE,IAHE,EAAI,UAAU,KACH,IAAY,EAAM,UAAU,EAAM,SAEnC,KAAK,IAAI,EAAM,SAAS,GAAG,KAAK,IAAI,GAAG,CAAS,CAAC,GAG/D,EAAM,EAAU,CAAC,QAAQ,MAAM,GAC/B,EAAI,oBAAoB,EAAM,EAAU,CAAC,KAAK;CAChD,EAEuB;AACzB"}
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 +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"],"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,IAAA,QAAA;IAAA,OAChBrB,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 \"../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 +1 @@
1
- {"version":3,"file":"ToggleGroupItem.styles.js","names":[],"sources":["../../../../src/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\n/**\n * ToggleGroupItem 位于 ToggleGroup 内时需要的“拼接态”样式。\n *\n * 依赖根元素上的钩子:\n * - `group-data-[spacing=0]/toggle-group`:spacing 为 0 时相邻 item 拼接为整体\n * - `data-[spacing=0]`:item 自身的 data-spacing(shadcn 同样在 item 上输出)\n * - `group-data-horizontal|vertical/toggle-group`:按方向决定首尾圆角/边框\n * - `data-[variant=outline]`:outline 拼接时只保留内侧边框\n *\n * variant / size 的基础样式仍由 `toggleVariants` 提供,这里只补“组合关系”。\n */\nexport const toggleGroupItemVariants = cva(\n \"shrink-0 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n);\n"],"mappings":";;AAaA,IAAa,IAA0B,EACrC,k4BACF"}
1
+ {"version":3,"file":"ToggleGroupItem.styles.js","names":["toggleGroupItemVariants","cva"],"sources":["../../../../src/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\n/**\n * ToggleGroupItem 位于 ToggleGroup 内时需要的“拼接态”样式。\n *\n * 依赖根元素上的钩子:\n * - `group-data-[spacing=0]/toggle-group`:spacing 为 0 时相邻 item 拼接为整体\n * - `data-[spacing=0]`:item 自身的 data-spacing(shadcn 同样在 item 上输出)\n * - `group-data-horizontal|vertical/toggle-group`:按方向决定首尾圆角/边框\n * - `data-[variant=outline]`:outline 拼接时只保留内侧边框\n *\n * variant / size 的基础样式仍由 `toggleVariants` 提供,这里只补“组合关系”。\n */\nexport const toggleGroupItemVariants = cva(\n \"shrink-0 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n);\n"],"mappings":";;AAaA,IAAaA,IAA0BC,EACrC,k4BACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"call-event-handler.js","names":[],"sources":["../../../src/components/toggle-group/call-event-handler.ts"],"sourcesContent":["/**\n * 调用用户传入的事件处理器(兼容 Solid 的函数 / 函数数组 / bound 对象形式)。\n * splitProps 提取出的事件类型是 EventHandlerUnion,不能直接调用。\n */\nexport function callEventHandler<E extends Event>(\n handler: unknown,\n event: E,\n): void {\n const list = Array.isArray(handler) ? handler : [handler];\n for (const h of list) {\n if (typeof h === \"function\") (h as (e: E) => void)(event);\n }\n}\n"],"mappings":";AAIA,SAAgB,EACd,GACA,GACM;CACN,IAAM,IAAO,MAAM,QAAQ,CAAO,IAAI,IAAU,CAAC,CAAO;CACxD,KAAK,IAAM,KAAK,GACd,AAAI,OAAO,KAAM,cAAY,EAAsB,CAAK;AAE5D"}
1
+ {"version":3,"file":"call-event-handler.js","names":["callEventHandler","list","handler","h","event"],"sources":["../../../src/components/toggle-group/call-event-handler.ts"],"sourcesContent":["/**\n * 调用用户传入的事件处理器(兼容 Solid 的函数 / 函数数组 / bound 对象形式)。\n * splitProps 提取出的事件类型是 EventHandlerUnion,不能直接调用。\n */\nexport function callEventHandler<E extends Event>(\n handler: unknown,\n event: E,\n): void {\n const list = Array.isArray(handler) ? handler : [handler];\n for (const h of list) {\n if (typeof h === \"function\") (h as (e: E) => void)(event);\n }\n}\n"],"mappings":";AAIA,SAAgBA,EACd,GACA,GACM;CACN,IAAMC,IAAO,MAAM,QAAQC,CAAO,IAAIA,IAAU,CAACA,CAAO;CACxD,KAAK,IAAMC,KAAKF,GACd,AAAI,OAAOE,KAAM,cAAYA,EAAsBC,CAAK;AAE5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.context.js","names":[],"sources":["../../../../src/components/tooltip/Tooltip/Tooltip.context.ts"],"sourcesContent":["import { createContext, useContext } from \"solid-js\";\nimport type { TooltipContextValue } from \"./Tooltip.types\";\n\nexport const TooltipContext = createContext<TooltipContextValue>();\n\nexport function useTooltipContext(component: string): TooltipContextValue {\n const ctx = useContext(TooltipContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <Tooltip> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AAGA,IAAa,IAAiB,EAAmC;AAEjE,SAAgB,EAAkB,GAAwC;CACxE,IAAM,IAAM,EAAW,CAAc;CACrC,IAAI,CAAC,GACH,MAAU,MAAM,IAAI,EAAU,qBAAqB;CAErD,OAAO;AACT"}
1
+ {"version":3,"file":"Tooltip.context.js","names":["TooltipContext","createContext","useTooltipContext","ctx","useContext","component"],"sources":["../../../../src/components/tooltip/Tooltip/Tooltip.context.ts"],"sourcesContent":["import { createContext, useContext } from \"solid-js\";\nimport type { TooltipContextValue } from \"./Tooltip.types\";\n\nexport const TooltipContext = createContext<TooltipContextValue>();\n\nexport function useTooltipContext(component: string): TooltipContextValue {\n const ctx = useContext(TooltipContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <Tooltip> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AAGA,IAAaA,IAAiBC,EAAmC;AAEjE,SAAgBC,EAAkB,GAAwC;CACxE,IAAMC,IAAMC,EAAWJ,CAAc;CACrC,IAAI,CAACG,GACH,MAAU,MAAM,IAAIE,EAAU,qBAAqB;CAErD,OAAOF;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","names":["createSignal","createMemo","createUniqueId","createEffect","onCleanup","JSX","TooltipContext","useTooltipProviderContext","useTooltipGroupContext","TooltipContextValue","TooltipProps","Rect","DEFAULT_OPEN_DELAY","DEFAULT_CLOSE_DELAY","Tooltip","props","Element","group","provider","internalOpen","setInternalOpen","defaultOpen","open","undefined","disabled","reference","setReference","floating","setFloating","HTMLElement","pendingSlideFrom","setPendingSlideFrom","suppressExitAnimation","setSuppressExitAnimation","commit","next","onOpenChange","openTimer","closeTimer","clearTimers","window","clearTimeout","requestOpen","claimedRect","claim","setTimeout","openDelay","delay","requestClose","closeDelay","openImmediate","closeImmediate","forceCloseForGroup","keepOpen","unregister","registerActive","rect","getBoundingClientRect","forceClose","contentId","ctx","clearPendingSlideFrom","consumeSuppressExitAnimation","value","_$createComponent","Provider","children"],"sources":["../../../../src/components/tooltip/Tooltip/Tooltip.tsx"],"sourcesContent":["import {\n createSignal,\n createMemo,\n createUniqueId,\n createEffect,\n onCleanup,\n type JSX,\n} from \"solid-js\";\nimport { TooltipContext } from \"./Tooltip.context\";\nimport { useTooltipProviderContext } from \"../TooltipProvider/TooltipProvider.context\";\nimport { useTooltipGroupContext } from \"../TooltipGroup/TooltipGroup.context\";\nimport type { TooltipContextValue, TooltipProps } from \"./Tooltip.types\";\nimport type { Rect } from \"~/lib\";\n\nconst DEFAULT_OPEN_DELAY = 0;\nconst DEFAULT_CLOSE_DELAY = 150;\n\n/**\n * Tooltip 根组件:不渲染任何 DOM,只负责状态管理 + 提供 context。\n * 真正的展示交给 <TooltipTrigger>/<TooltipContent>/<TooltipArrow>。\n *\n * 如果外面包了 <TooltipGroup>,组内相邻 trigger 之间切换 hover 会跳过\n * openDelay,并触发\"从旧位置滑到新位置\"的过渡(细节见 TooltipGroup.context.ts)。\n *\n * @example\n * ```tsx\n * <Tooltip openDelay={300}>\n * <TooltipTrigger>悬停我</TooltipTrigger>\n * <TooltipContent>\n * 提示内容\n * <TooltipArrow />\n * </TooltipContent>\n * </Tooltip>\n * ```\n */\nexport function Tooltip(props: TooltipProps): JSX.Element {\n const group = useTooltipGroupContext(); // undefined 是正常情况,代表没用 TooltipGroup\n const provider = useTooltipProviderContext();\n\n const [internalOpen, setInternalOpen] = createSignal(\n props.defaultOpen ?? false,\n );\n const open = createMemo(() =>\n props.open !== undefined ? props.open : internalOpen(),\n );\n const disabled = createMemo(() => !!props.disabled);\n\n const [reference, setReference] = createSignal<Element>();\n const [floating, setFloating] = createSignal<HTMLElement>();\n const [pendingSlideFrom, setPendingSlideFrom] = createSignal<Rect>();\n const [suppressExitAnimation, setSuppressExitAnimation] = createSignal(false);\n\n const commit = (next: boolean) => {\n if (props.open === undefined) setInternalOpen(next);\n props.onOpenChange?.(next);\n };\n\n // 用 window.setTimeout/clearTimeout(而不是裸的全局 setTimeout)显式拿到\n // DOM lib 的重载(返回 number),避免和 @types/node 的 NodeJS.Timeout 重载冲突。\n let openTimer: number | undefined;\n let closeTimer: number | undefined;\n\n const clearTimers = () => {\n if (openTimer !== undefined) {\n window.clearTimeout(openTimer);\n openTimer = undefined;\n }\n if (closeTimer !== undefined) {\n window.clearTimeout(closeTimer);\n closeTimer = undefined;\n }\n };\n\n const requestOpen = () => {\n clearTimers();\n if (disabled() || open()) return;\n\n // 组内抢占:如果当前组里已经有一个活跃的 tooltip(哪怕它还在自己的\n // closeDelay 倒计时里,还没真正关闭),claim() 会立即强制关闭它、\n // 把它此刻的矩形要回来——这里直接跳过 openDelay,走\"滑入\"路径。\n const claimedRect = group?.claim();\n if (claimedRect) {\n setPendingSlideFrom(claimedRect);\n commit(true);\n return;\n }\n\n openTimer = window.setTimeout(\n () => commit(true),\n props.openDelay ?? provider?.delay() ?? DEFAULT_OPEN_DELAY,\n );\n };\n\n const requestClose = () => {\n clearTimers();\n closeTimer = window.setTimeout(\n () => commit(false),\n props.closeDelay ?? provider?.closeDelay() ?? DEFAULT_CLOSE_DELAY,\n );\n };\n\n const openImmediate = () => {\n if (disabled()) return;\n clearTimers();\n commit(true);\n };\n\n const closeImmediate = () => {\n clearTimers();\n commit(false);\n };\n\n /**\n * 专门给 <TooltipGroup> 抢占用的关闭方式:和 closeImmediate 的区别是,\n * 这里会额外标记 suppressExitAnimation,告诉 TooltipContent 的 Presence\n * 逻辑跳过退场动画、立即卸载——因为这次关闭是\"被新 tooltip 取代\",而不是\n * 用户主动关闭,旧的应该立刻让位,不该和正在滑入的新 tooltip 同时可见。\n * Escape/blur 等正常关闭场景依然走 closeImmediate,退场动画不受影响。\n */\n const forceCloseForGroup = () => {\n setSuppressExitAnimation(true);\n clearTimers();\n commit(false);\n };\n\n const keepOpen = () => {\n if (closeTimer !== undefined) {\n window.clearTimeout(closeTimer);\n closeTimer = undefined;\n }\n };\n\n onCleanup(clearTimers);\n\n // 打开期间把自己登记成\"组内当前活跃的 tooltip\",供其他 trigger 打开时\n // claim 走(触发平移过渡)。关闭或卸载时自动取消登记。\n createEffect(() => {\n if (!group || !open()) return;\n const unregister = group.registerActive({\n rect: () => floating()?.getBoundingClientRect(),\n forceClose: forceCloseForGroup,\n });\n onCleanup(unregister);\n });\n\n const contentId = `tooltip-${createUniqueId()}`;\n\n const ctx: TooltipContextValue = {\n open,\n disabled,\n contentId,\n reference,\n setReference,\n floating,\n setFloating,\n requestOpen,\n requestClose,\n openImmediate,\n closeImmediate,\n keepOpen,\n pendingSlideFrom,\n clearPendingSlideFrom: () => setPendingSlideFrom(undefined),\n suppressExitAnimation,\n consumeSuppressExitAnimation: () => {\n const value = suppressExitAnimation();\n if (value) setSuppressExitAnimation(false);\n return value;\n },\n };\n\n return (\n <TooltipContext.Provider value={ctx}>\n {props.children}\n </TooltipContext.Provider>\n );\n}\n"],"mappings":";;;;;;AAcA,IAAMY,IAAqB,GACrBC,IAAsB;AAoB5B,SAAgBC,EAAQC,GAAkC;CACxD,IAAME,IAAQT,EAAuB,GAC/BU,IAAWX,EAA0B,GAErC,CAACY,GAAcC,KAAmBpB,EACtCe,EAAMM,eAAe,EACvB,GACMC,IAAOrB,QACXc,EAAMO,SAASC,KAAAA,IAAyBJ,EAAa,IAA1BJ,EAAMO,IACnC,GACME,IAAWvB,QAAiB,CAAC,CAACc,EAAMS,QAAQ,GAE5C,CAACC,GAAWC,KAAgB1B,EAAsB,GAClD,CAAC2B,GAAUC,KAAe5B,EAA0B,GACpD,CAAC8B,GAAkBC,KAAuB/B,EAAmB,GAC7D,CAACgC,GAAuBC,KAA4BjC,EAAa,EAAK,GAEtEkC,KAAUC,MAAkB;EAEhCpB,AADIA,EAAMO,SAASC,KAAAA,KAAWH,EAAgBe,CAAI,GAClDpB,EAAMqB,eAAeD,CAAI;CAC3B,GAIIE,GACAC,GAEEC,UAAoB;EAKxB,AAJIF,MAAcd,KAAAA,MAChBiB,OAAOC,aAAaJ,CAAS,GAC7BA,IAAYd,KAAAA,IAEVe,MAAef,KAAAA,MACjBiB,OAAOC,aAAaH,CAAU,GAC9BA,IAAaf,KAAAA;CAEjB,GAEMmB,UAAoB;EAExB,IADAH,EAAY,GACRf,EAAS,KAAKF,EAAK,GAAG;EAK1B,IAAMqB,IAAc1B,GAAO2B,MAAM;EACjC,IAAID,GAAa;GAEfT,AADAH,EAAoBY,CAAW,GAC/BT,EAAO,EAAI;GACX;EACF;EAEAG,IAAYG,OAAOK,iBACXX,EAAO,EAAI,GACjBnB,EAAM+B,aAAa5B,GAAU6B,MAAM,KAAKnC,CAC1C;CACF,GAEMoC,UAAqB;EAEzBV,AADAC,EAAY,GACZD,IAAaE,OAAOK,iBACZX,EAAO,EAAK,GAClBnB,EAAMkC,cAAc/B,GAAU+B,WAAW,KAAKpC,CAChD;CACF,GAEMqC,UAAsB;EACtB1B,EAAS,MACbe,EAAY,GACZL,EAAO,EAAI;CACb,GAEMiB,UAAuB;EAE3BjB,AADAK,EAAY,GACZL,EAAO,EAAK;CACd,GASMkB,UAA2B;EAG/BlB,AAFAD,EAAyB,EAAI,GAC7BM,EAAY,GACZL,EAAO,EAAK;CACd,GAEMmB,UAAiB;EACrB,AAAIf,MAAef,KAAAA,MACjBiB,OAAOC,aAAaH,CAAU,GAC9BA,IAAaf,KAAAA;CAEjB;CAMApB,AAJAC,EAAUmC,CAAW,GAIrBpC,QAAmB;EACjB,IAAI,CAACc,KAAS,CAACK,EAAK,GAAG;EACvB,IAAMgC,IAAarC,EAAMsC,eAAe;GACtCC,YAAY7B,EAAS,CAAC,EAAE8B,sBAAsB;GAC9CC,YAAYN;EACd,CAAC;EACDhD,EAAUkD,CAAU;CACtB,CAAC;CAID,IAAMM,IAA2B;EAC/BtC;EACAE;EACAmC,WAAAA,WAL2BzD,EAAe;EAM1CuB;EACAC;EACAC;EACAC;EACAc;EACAM;EACAE;EACAC;EACAE;EACAvB;EACA+B,6BAA6B9B,EAAoBR,KAAAA,CAAS;EAC1DS;EACA8B,oCAAoC;GAClC,IAAMC,IAAQ/B,EAAsB;GAEpC,OADI+B,KAAO9B,EAAyB,EAAK,GAClC8B;EACT;CACF;CAEA,OAAAC,EACG1D,EAAe2D,UAAQ;EAACF,OAAOH;EAAG,IAAAM,WAAA;GAAA,OAChCnD,EAAMmD;EAAQ;CAAA,CAAA;AAGrB"}
1
+ {"version":3,"file":"Tooltip.js","names":["createSignal","createMemo","createUniqueId","createEffect","onCleanup","JSX","TooltipContext","useTooltipProviderContext","useTooltipGroupContext","TooltipContextValue","TooltipProps","Rect","DEFAULT_OPEN_DELAY","DEFAULT_CLOSE_DELAY","Tooltip","props","Element","group","provider","internalOpen","setInternalOpen","defaultOpen","open","undefined","disabled","reference","setReference","floating","setFloating","HTMLElement","pendingSlideFrom","setPendingSlideFrom","suppressExitAnimation","setSuppressExitAnimation","commit","next","onOpenChange","openTimer","closeTimer","clearTimers","window","clearTimeout","requestOpen","claimedRect","claim","setTimeout","openDelay","delay","requestClose","closeDelay","openImmediate","closeImmediate","forceCloseForGroup","keepOpen","unregister","registerActive","rect","getBoundingClientRect","forceClose","contentId","ctx","clearPendingSlideFrom","consumeSuppressExitAnimation","value","_$createComponent","Provider","children","_$createComponent","DEFAULT_OPEN_DELAY","DEFAULT_CLOSE_DELAY","Tooltip","group","useTooltipGroupContext","provider","useTooltipProviderContext","internalOpen","setInternalOpen","createSignal","props","open","createMemo","disabled","reference","setReference","floating","setFloating","pendingSlideFrom","setPendingSlideFrom","suppressExitAnimation","setSuppressExitAnimation","commit","next","openTimer","closeTimer","clearTimers","requestOpen","claimedRect","requestClose","openImmediate","closeImmediate","forceCloseForGroup","keepOpen","onCleanup","createEffect","unregister","ctx","createUniqueId","value","createComponent","TooltipContext"],"sources":["../../../../src/components/tooltip/Tooltip/Tooltip.tsx"],"sourcesContent":["import {\n createSignal,\n createMemo,\n createUniqueId,\n createEffect,\n onCleanup,\n type JSX,\n} from \"solid-js\";\nimport { TooltipContext } from \"./Tooltip.context\";\nimport { useTooltipProviderContext } from \"../TooltipProvider/TooltipProvider.context\";\nimport { useTooltipGroupContext } from \"../TooltipGroup/TooltipGroup.context\";\nimport type { TooltipContextValue, TooltipProps } from \"./Tooltip.types\";\nimport type { Rect } from \"~/lib\";\n\nconst DEFAULT_OPEN_DELAY = 0;\nconst DEFAULT_CLOSE_DELAY = 150;\n\n/**\n * Tooltip 根组件:不渲染任何 DOM,只负责状态管理 + 提供 context。\n * 真正的展示交给 <TooltipTrigger>/<TooltipContent>/<TooltipArrow>。\n *\n * 如果外面包了 <TooltipGroup>,组内相邻 trigger 之间切换 hover 会跳过\n * openDelay,并触发\"从旧位置滑到新位置\"的过渡(细节见 TooltipGroup.context.ts)。\n *\n * @example\n * ```tsx\n * <Tooltip openDelay={300}>\n * <TooltipTrigger>悬停我</TooltipTrigger>\n * <TooltipContent>\n * 提示内容\n * <TooltipArrow />\n * </TooltipContent>\n * </Tooltip>\n * ```\n */\nexport function Tooltip(props: TooltipProps): JSX.Element {\n const group = useTooltipGroupContext(); // undefined 是正常情况,代表没用 TooltipGroup\n const provider = useTooltipProviderContext();\n\n const [internalOpen, setInternalOpen] = createSignal(\n props.defaultOpen ?? false,\n );\n const open = createMemo(() =>\n props.open !== undefined ? props.open : internalOpen(),\n );\n const disabled = createMemo(() => !!props.disabled);\n\n const [reference, setReference] = createSignal<Element>();\n const [floating, setFloating] = createSignal<HTMLElement>();\n const [pendingSlideFrom, setPendingSlideFrom] = createSignal<Rect>();\n const [suppressExitAnimation, setSuppressExitAnimation] = createSignal(false);\n\n const commit = (next: boolean) => {\n if (props.open === undefined) setInternalOpen(next);\n props.onOpenChange?.(next);\n };\n\n // 用 window.setTimeout/clearTimeout(而不是裸的全局 setTimeout)显式拿到\n // DOM lib 的重载(返回 number),避免和 @types/node 的 NodeJS.Timeout 重载冲突。\n let openTimer: number | undefined;\n let closeTimer: number | undefined;\n\n const clearTimers = () => {\n if (openTimer !== undefined) {\n window.clearTimeout(openTimer);\n openTimer = undefined;\n }\n if (closeTimer !== undefined) {\n window.clearTimeout(closeTimer);\n closeTimer = undefined;\n }\n };\n\n const requestOpen = () => {\n clearTimers();\n if (disabled() || open()) return;\n\n // 组内抢占:如果当前组里已经有一个活跃的 tooltip(哪怕它还在自己的\n // closeDelay 倒计时里,还没真正关闭),claim() 会立即强制关闭它、\n // 把它此刻的矩形要回来——这里直接跳过 openDelay,走\"滑入\"路径。\n const claimedRect = group?.claim();\n if (claimedRect) {\n setPendingSlideFrom(claimedRect);\n commit(true);\n return;\n }\n\n openTimer = window.setTimeout(\n () => commit(true),\n props.openDelay ?? provider?.delay() ?? DEFAULT_OPEN_DELAY,\n );\n };\n\n const requestClose = () => {\n clearTimers();\n closeTimer = window.setTimeout(\n () => commit(false),\n props.closeDelay ?? provider?.closeDelay() ?? DEFAULT_CLOSE_DELAY,\n );\n };\n\n const openImmediate = () => {\n if (disabled()) return;\n clearTimers();\n commit(true);\n };\n\n const closeImmediate = () => {\n clearTimers();\n commit(false);\n };\n\n /**\n * 专门给 <TooltipGroup> 抢占用的关闭方式:和 closeImmediate 的区别是,\n * 这里会额外标记 suppressExitAnimation,告诉 TooltipContent 的 Presence\n * 逻辑跳过退场动画、立即卸载——因为这次关闭是\"被新 tooltip 取代\",而不是\n * 用户主动关闭,旧的应该立刻让位,不该和正在滑入的新 tooltip 同时可见。\n * Escape/blur 等正常关闭场景依然走 closeImmediate,退场动画不受影响。\n */\n const forceCloseForGroup = () => {\n setSuppressExitAnimation(true);\n clearTimers();\n commit(false);\n };\n\n const keepOpen = () => {\n if (closeTimer !== undefined) {\n window.clearTimeout(closeTimer);\n closeTimer = undefined;\n }\n };\n\n onCleanup(clearTimers);\n\n // 打开期间把自己登记成\"组内当前活跃的 tooltip\",供其他 trigger 打开时\n // claim 走(触发平移过渡)。关闭或卸载时自动取消登记。\n createEffect(() => {\n if (!group || !open()) return;\n const unregister = group.registerActive({\n rect: () => floating()?.getBoundingClientRect(),\n forceClose: forceCloseForGroup,\n });\n onCleanup(unregister);\n });\n\n const contentId = `tooltip-${createUniqueId()}`;\n\n const ctx: TooltipContextValue = {\n open,\n disabled,\n contentId,\n reference,\n setReference,\n floating,\n setFloating,\n requestOpen,\n requestClose,\n openImmediate,\n closeImmediate,\n keepOpen,\n pendingSlideFrom,\n clearPendingSlideFrom: () => setPendingSlideFrom(undefined),\n suppressExitAnimation,\n consumeSuppressExitAnimation: () => {\n const value = suppressExitAnimation();\n if (value) setSuppressExitAnimation(false);\n return value;\n },\n };\n\n return (\n <TooltipContext.Provider value={ctx}>\n {props.children}\n </TooltipContext.Provider>\n );\n}\n"],"mappings":";;;;;;AAcA,IAAMY,IAAqB,GACrBC,IAAsB;AAoB5B,SAAgBC,EAAQC,GAAkC;CACxD,IAAME,IAAQT,EAAuB,GAC/BU,IAAWX,EAA0B,GAErC,CAACY,GAAcC,KAAmBpB,EACtCe,EAAMM,eAAe,EACvB,GACMC,IAAOrB,QACXc,EAAMO,SAASC,KAAAA,IAAyBJ,EAAa,IAA1BJ,EAAMO,IACnC,GACME,IAAWvB,QAAiB,CAAC,CAACc,EAAMS,QAAQ,GAE5C,CAACC,GAAWC,KAAgB1B,EAAsB,GAClD,CAAC2B,GAAUC,KAAe5B,EAA0B,GACpD,CAAC8B,GAAkBC,KAAuB/B,EAAmB,GAC7D,CAACgC,GAAuBC,KAA4BjC,EAAa,EAAK,GAEtEkC,KAAUC,MAAkB;EAEhCpB,AADIA,EAAMO,SAASC,KAAAA,KAAWH,EAAgBe,CAAI,GAClDpB,EAAMqB,eAAeD,CAAI;CAC3B,GAIIE,GACAC,GAEEC,UAAoB;EAKxB,AAJIF,MAAcd,KAAAA,MAChBiB,OAAOC,aAAaJ,CAAS,GAC7BA,IAAYd,KAAAA,IAEVe,MAAef,KAAAA,MACjBiB,OAAOC,aAAaH,CAAU,GAC9BA,IAAaf,KAAAA;CAEjB,GAEMmB,UAAoB;EAExB,IADAH,EAAY,GACRf,EAAS,KAAKF,EAAK,GAAG;EAK1B,IAAMqB,IAAc1B,GAAO2B,MAAM;EACjC,IAAID,GAAa;GAEfT,AADAH,EAAoBY,CAAW,GAC/BT,EAAO,EAAI;GACX;EACF;EAEAG,IAAYG,OAAOK,iBACXX,EAAO,EAAI,GACjBnB,EAAM+B,aAAa5B,GAAU6B,MAAM,KAAKnC,CAC1C;CACF,GAEMoC,UAAqB;EAEzBV,AADAC,EAAY,GACZD,IAAaE,OAAOK,iBACZX,EAAO,EAAK,GAClBnB,EAAMkC,cAAc/B,GAAU+B,WAAW,KAAKpC,CAChD;CACF,GAEMqC,UAAsB;EAC1B,AAAI1B,EAAS,MACbe,EAAY,GACZL,EAAO,EAAI;CACb,GAEMiB,UAAuB;EAE3BjB,AADAK,EAAY,GACZL,EAAO,EAAK;CACd,GASMkB,UAA2B;EAG/BlB,AAFAD,EAAyB,EAAI,GAC7BM,EAAY,GACZL,EAAO,EAAK;CACd,GAEMmB,UAAiB;EACrB,AAAIf,MAAef,KAAAA,MACjBiB,OAAOC,aAAaH,CAAU,GAC9BA,IAAaf,KAAAA;CAEjB;CAMApB,AAJAC,EAAUmC,CAAW,GAIrBpC,QAAmB;EACjB,IAAI,CAACc,KAAS,CAACK,EAAK,GAAG;EACvB,IAAMgC,IAAarC,EAAMsC,eAAe;GACtCC,YAAY7B,EAAS,CAAC,EAAE8B,sBAAsB;GAC9CC,YAAYN;EACd,CAAC;EACDhD,EAAUkD,CAAU;CACtB,CAAC;CAID,IAAMM,IAA2B;EAC/BtC;EACAE;EACAmC,WAAAA,WAL2BzD,EAAe;EAM1CuB;EACAC;EACAC;EACAC;EACAc;EACAM;EACAE;EACAC;EACAE;EACAvB;EACA+B,6BAA6B9B,EAAoBR,KAAAA,CAAS;EAC1DS;EACA8B,oCAAoC;GAClC,IAAMC,IAAQ/B,EAAsB;GAEpC,OADI+B,KAAO9B,EAAyB,EAAK,GAClC8B;EACT;CACF;CAEA,OAAAC,EACG1D,EAAe2D,UAAQ;EAACF,OAAOH;EAAG,IAAAM,WAAA;GAAA,OAChCnD,EAAMmD;EAAQ;CAAA,CAAA;AAGrB"}
@@ -6,4 +6,4 @@ export interface TooltipArrowProps {
6
6
  * 采用 shadcn Base UI 的定位方式:通过 data-side / data-align 和 CSS 变量
7
7
  * 完成贴边与对齐,不手动计算 top/left。
8
8
  */
9
- export declare function TooltipArrow(props: TooltipArrowProps): import("solid-js").JSX.Element;
9
+ export declare function TooltipArrow(props: TooltipArrowProps): import('solid-js').JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipArrow.js","names":["createMemo","getAlignment","getSide","clsx","useTooltipContentContext","TooltipArrowProps","class","TooltipArrow","props","ctx","side","placement","align","triggerWidth","reference","getBoundingClientRect","width","_el$","_tmpl$","_ref$","setArrowElement","_$use","_$effect","_p$","_v$","_v$2","_v$3","_v$4","e","_$setAttribute","t","a","_$setStyleProperty","o","_$className","undefined"],"sources":["../../../../src/components/tooltip/TooltipArrow/TooltipArrow.tsx"],"sourcesContent":["import { createMemo } from \"solid-js\";\nimport { getAlignment, getSide } from \"~/lib\";\nimport { clsx } from \"~/utils\";\nimport { useTooltipContentContext } from \"../TooltipContent/TooltipContent.context\";\n\nexport interface TooltipArrowProps {\n class?: string;\n}\n\n/**\n * 箭头组件,必须渲染在 <TooltipContent> 内部。\n * 采用 shadcn Base UI 的定位方式:通过 data-side / data-align 和 CSS 变量\n * 完成贴边与对齐,不手动计算 top/left。\n */\nexport function TooltipArrow(props: TooltipArrowProps) {\n const ctx = useTooltipContentContext(\"TooltipArrow\");\n\n const side = createMemo(() => getSide(ctx.placement()));\n const align = createMemo(() => getAlignment(ctx.placement()) ?? \"center\");\n\n const triggerWidth = () =>\n ctx.reference?.()?.getBoundingClientRect().width ?? 0;\n\n return (\n <div\n ref={ctx.setArrowElement}\n data-side={side()}\n data-align={align()}\n style={{ \"--arrow-offset\": `${triggerWidth() / 2}px` }}\n class={clsx(\n \"absolute size-2.5 z-50 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs bg-foreground fill-foreground\",\n \"data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2\",\n \"data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2\",\n \"data-[side=left]:top-1/2! data-[side=left]:right-[-0.175rem] data-[side=left]:-translate-y-1/2\",\n \"data-[side=right]:top-1/2! data-[side=right]:left-[-0.175rem] data-[side=right]:-translate-y-1/2\",\n \"data-[side=top]:-bottom-2.5 data-[side=top]:data-[align=center]:left-1/2 data-[side=top]:data-[align=center]:-translate-x-1/2 data-[side=top]:data-[align=start]:left-(--arrow-offset) data-[side=top]:data-[align=start]:-translate-x-1/2 data-[side=top]:data-[align=end]:right-(--arrow-offset) data-[side=top]:data-[align=end]:translate-x-1/2\",\n \"data-[side=bottom]:top-1 data-[side=bottom]:data-[align=center]:left-1/2 data-[side=bottom]:data-[align=center]:-translate-x-1/2 data-[side=bottom]:data-[align=start]:left-(--arrow-offset) data-[side=bottom]:data-[align=start]:-translate-x-1/2 data-[side=bottom]:data-[align=end]:right-(--arrow-offset) data-[side=bottom]:data-[align=end]:translate-x-1/2\",\n props.class,\n )}\n aria-hidden=\"true\"\n />\n );\n}\n"],"mappings":";;;;;;;AAcA,SAAgBO,EAAaC,GAA0B;CACrD,IAAMC,IAAML,EAAyB,cAAc,GAE7CM,IAAOV,QAAiBE,EAAQO,EAAIE,UAAU,CAAC,CAAC,GAChDC,IAAQZ,QAAiBC,EAAaQ,EAAIE,UAAU,CAAC,KAAK,QAAQ,GAElEE,UACJJ,EAAIK,YAAY,CAAC,EAAEC,sBAAsB,CAAC,CAACC,SAAS;CAEtD,cAAA;EAAA,IAAAC,IAAAC,EAAA,GAAAC,IAESV,EAAIW;EAaR,OAbuB,OAAAD,KAAA,aAAAE,EAAAF,GAAAF,CAAA,IAAnBR,EAAIW,kBAAeH,GAAAK,GAAAC,MAAA;GAAA,IAAAC,IACbd,EAAK,GAACe,IACLb,EAAM,GAACc,IACQ,GAAGb,EAAa,IAAI,EAAC,KAAIc,IAC7CxB,EACL,0GACA,0GACA,iHACA,kGACA,oGACA,uVACA,sWACAK,EAAMF,KACR;GAAC,OAAAkB,MAAAD,EAAAK,KAAAC,EAAAZ,GAAA,aAAAM,EAAAK,IAAAJ,CAAA,GAAAC,MAAAF,EAAAO,KAAAD,EAAAZ,GAAA,cAAAM,EAAAO,IAAAL,CAAA,GAAAC,MAAAH,EAAAQ,KAAAC,EAAAf,GAAA,kBAAAM,EAAAQ,IAAAL,CAAA,GAAAC,MAAAJ,EAAAU,KAAAC,EAAAjB,GAAAM,EAAAU,IAAAN,CAAA,GAAAJ;EAAA,GAAA;GAAAK,GAAAO,KAAAA;GAAAL,GAAAK,KAAAA;GAAAJ,GAAAI,KAAAA;GAAAF,GAAAE,KAAAA;EAAA,CAAA,GAAAlB;CAAA,EAAA,CAAA;AAIP"}
1
+ {"version":3,"file":"TooltipArrow.js","names":["createMemo","getAlignment","getSide","clsx","useTooltipContentContext","TooltipArrowProps","class","TooltipArrow","props","ctx","side","placement","align","triggerWidth","reference","getBoundingClientRect","width","_el$","_tmpl$","_ref$","setArrowElement","_$use","_$effect","_p$","_v$","_v$2","_v$3","_v$4","e","_$setAttribute","t","a","_$setStyleProperty","o","_$className","undefined","_$use","_$setAttribute","_$setStyleProperty","_$className","_tmpl$","TooltipArrow","ctx","useTooltipContentContext","side","createMemo","getSide","align","getAlignment","triggerWidth","_el$","_ref$","use","effect","_v$","_v$2","_v$3","_v$4","clsx","props","_p$","setAttribute","setStyleProperty","className"],"sources":["../../../../src/components/tooltip/TooltipArrow/TooltipArrow.tsx"],"sourcesContent":["import { createMemo } from \"solid-js\";\nimport { getAlignment, getSide } from \"~/lib\";\nimport { clsx } from \"~/utils\";\nimport { useTooltipContentContext } from \"../TooltipContent/TooltipContent.context\";\n\nexport interface TooltipArrowProps {\n class?: string;\n}\n\n/**\n * 箭头组件,必须渲染在 <TooltipContent> 内部。\n * 采用 shadcn Base UI 的定位方式:通过 data-side / data-align 和 CSS 变量\n * 完成贴边与对齐,不手动计算 top/left。\n */\nexport function TooltipArrow(props: TooltipArrowProps) {\n const ctx = useTooltipContentContext(\"TooltipArrow\");\n\n const side = createMemo(() => getSide(ctx.placement()));\n const align = createMemo(() => getAlignment(ctx.placement()) ?? \"center\");\n\n const triggerWidth = () =>\n ctx.reference?.()?.getBoundingClientRect().width ?? 0;\n\n return (\n <div\n ref={ctx.setArrowElement}\n data-side={side()}\n data-align={align()}\n style={{ \"--arrow-offset\": `${triggerWidth() / 2}px` }}\n class={clsx(\n \"absolute size-2.5 z-50 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs bg-foreground fill-foreground\",\n \"data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2\",\n \"data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2\",\n \"data-[side=left]:top-1/2! data-[side=left]:right-[-0.175rem] data-[side=left]:-translate-y-1/2\",\n \"data-[side=right]:top-1/2! data-[side=right]:left-[-0.175rem] data-[side=right]:-translate-y-1/2\",\n \"data-[side=top]:-bottom-2.5 data-[side=top]:data-[align=center]:left-1/2 data-[side=top]:data-[align=center]:-translate-x-1/2 data-[side=top]:data-[align=start]:left-(--arrow-offset) data-[side=top]:data-[align=start]:-translate-x-1/2 data-[side=top]:data-[align=end]:right-(--arrow-offset) data-[side=top]:data-[align=end]:translate-x-1/2\",\n \"data-[side=bottom]:top-1 data-[side=bottom]:data-[align=center]:left-1/2 data-[side=bottom]:data-[align=center]:-translate-x-1/2 data-[side=bottom]:data-[align=start]:left-(--arrow-offset) data-[side=bottom]:data-[align=start]:-translate-x-1/2 data-[side=bottom]:data-[align=end]:right-(--arrow-offset) data-[side=bottom]:data-[align=end]:translate-x-1/2\",\n props.class,\n )}\n aria-hidden=\"true\"\n />\n );\n}\n"],"mappings":";;;;;;;AAcA,SAAgBO,EAAaC,GAA0B;CACrD,IAAMC,IAAML,EAAyB,cAAc,GAE7CM,IAAOV,QAAiBE,EAAQO,EAAIE,UAAU,CAAC,CAAC,GAChDC,IAAQZ,QAAiBC,EAAaQ,EAAIE,UAAU,CAAC,KAAK,QAAQ,GAElEE,UACJJ,EAAIK,YAAY,CAAC,EAAEC,sBAAsB,CAAC,CAACC,SAAS;CAEtD,cAAA;EAAA,IAAAC,IAAAC,EAAA,GAAAC,IAESV,EAAIW;EAaR,OAbuB,OAAAD,KAAA,aAAAE,EAAAF,GAAAF,CAAA,IAAnBR,EAAIW,kBAAeH,GAAAK,GAAAC,MAAA;GAAA,IAAAC,IACbd,EAAK,GAACe,IACLb,EAAM,GAACc,IACQ,GAAGb,EAAa,IAAI,EAAC,KAAIc,IAC7CxB,EACL,0GACA,0GACA,iHACA,kGACA,oGACA,uVACA,sWACAK,EAAMF,KACR;GAAC,OAAAkB,MAAAD,EAAAK,KAAAC,EAAAZ,GAAA,aAAAM,EAAAK,IAAAJ,CAAA,GAAAC,MAAAF,EAAAO,KAAAD,EAAAZ,GAAA,cAAAM,EAAAO,IAAAL,CAAA,GAAAC,MAAAH,EAAAQ,KAAAC,EAAAf,GAAA,kBAAAM,EAAAQ,IAAAL,CAAA,GAAAC,MAAAJ,EAAAU,KAAAC,EAAAjB,GAAAM,EAAAU,IAAAN,CAAA,GAAAJ;EAAA,GAAA;GAAAK,GAAAO,KAAAA;GAAAL,GAAAK,KAAAA;GAAAJ,GAAAI,KAAAA;GAAAF,GAAAE,KAAAA;EAAA,CAAA,GAAAlB;CAAA,EAAA,CAAA;AAIP"}
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipContent.context.js","names":[],"sources":["../../../../src/components/tooltip/TooltipContent/TooltipContent.context.ts"],"sourcesContent":["import { createContext, useContext, type Accessor } from \"solid-js\";\nimport type { MiddlewareData, Placement } from \"~/lib\";\n\nexport interface TooltipContentContextValue {\n /** createPositioner 产出的 middlewareData,TooltipArrow 从里面取 arrow 中间件算好的偏移量 */\n middlewareData: Accessor<MiddlewareData>;\n /** 触发器元素访问器,TooltipArrow 用它计算 --arrow-offset */\n reference: Accessor<Element | undefined>;\n /** 经过 flip 调整后的最终 placement,决定箭头贴哪条边、朝哪个方向 */\n placement: Accessor<Placement>;\n /** TooltipArrow 挂载时用来把自己的 DOM 节点注册给 arrow middleware(Element 而不是 HTMLElement,兼容 SVG 箭头) */\n setArrowElement: (el: Element) => void;\n /**\n * 驱动进出场动画的状态,和 TooltipContent 内层元素的 data-state 用的是\n * 同一个信号——TooltipArrow 应该用它独立播放自己的一份动画,而不是依赖\n * \"作为内层元素的子节点、被动继承内层的 transform/opacity 动画\"这种隐式\n * 机制(内层的 zoom-in-95 动画会给它加一个非 none 的 transform,CSS 规范\n * 规定这会让内层变成子元素新的\"包含块\",和箭头故意跳过内层、以外层为\n * 基准的设计相冲突,动画播放期间会让\"父子两层谁负责什么\"变得不可靠)。\n */\n animationState: Accessor<\"open\" | \"closed\">;\n}\n\nexport const TooltipContentContext =\n createContext<TooltipContentContextValue>();\n\nexport function useTooltipContentContext(\n component: string,\n): TooltipContentContextValue {\n const ctx = useContext(TooltipContentContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <TooltipContent> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AAuBA,IAAa,IACX,EAA0C;AAE5C,SAAgB,EACd,GAC4B;CAC5B,IAAM,IAAM,EAAW,CAAqB;CAC5C,IAAI,CAAC,GACH,MAAU,MAAM,IAAI,EAAU,4BAA4B;CAE5D,OAAO;AACT"}
1
+ {"version":3,"file":"TooltipContent.context.js","names":["TooltipContentContext","createContext","useTooltipContentContext","ctx","useContext","component"],"sources":["../../../../src/components/tooltip/TooltipContent/TooltipContent.context.ts"],"sourcesContent":["import { createContext, useContext, type Accessor } from \"solid-js\";\nimport type { MiddlewareData, Placement } from \"~/lib\";\n\nexport interface TooltipContentContextValue {\n /** createPositioner 产出的 middlewareData,TooltipArrow 从里面取 arrow 中间件算好的偏移量 */\n middlewareData: Accessor<MiddlewareData>;\n /** 触发器元素访问器,TooltipArrow 用它计算 --arrow-offset */\n reference: Accessor<Element | undefined>;\n /** 经过 flip 调整后的最终 placement,决定箭头贴哪条边、朝哪个方向 */\n placement: Accessor<Placement>;\n /** TooltipArrow 挂载时用来把自己的 DOM 节点注册给 arrow middleware(Element 而不是 HTMLElement,兼容 SVG 箭头) */\n setArrowElement: (el: Element) => void;\n /**\n * 驱动进出场动画的状态,和 TooltipContent 内层元素的 data-state 用的是\n * 同一个信号——TooltipArrow 应该用它独立播放自己的一份动画,而不是依赖\n * \"作为内层元素的子节点、被动继承内层的 transform/opacity 动画\"这种隐式\n * 机制(内层的 zoom-in-95 动画会给它加一个非 none 的 transform,CSS 规范\n * 规定这会让内层变成子元素新的\"包含块\",和箭头故意跳过内层、以外层为\n * 基准的设计相冲突,动画播放期间会让\"父子两层谁负责什么\"变得不可靠)。\n */\n animationState: Accessor<\"open\" | \"closed\">;\n}\n\nexport const TooltipContentContext =\n createContext<TooltipContentContextValue>();\n\nexport function useTooltipContentContext(\n component: string,\n): TooltipContentContextValue {\n const ctx = useContext(TooltipContentContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <TooltipContent> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AAuBA,IAAaA,IACXC,EAA0C;AAE5C,SAAgBC,EACd,GAC4B;CAC5B,IAAMC,IAAMC,EAAWJ,CAAqB;CAC5C,IAAI,CAACG,GACH,MAAU,MAAM,IAAIE,EAAU,4BAA4B;CAE5D,OAAOF;AACT"}
@@ -8,4 +8,4 @@ import { TooltipContentProps } from './TooltipContent.types';
8
8
  * "离开 trigger 就关闭" 而选不到。如果你的 tooltip 内容很简单、不需要这个特性,
9
9
  * 可以自己在外面包一层设置 pointer-events: none。
10
10
  */
11
- export declare function TooltipContent(props: TooltipContentProps): import("solid-js").JSX.Element;
11
+ export declare function TooltipContent(props: TooltipContentProps): import('solid-js').JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipContent.js","names":["Show","onCleanup","splitProps","Portal","useTooltipContent","TooltipContentContext","getTransformOrigin","getSide","getAlignment","TooltipContentProps","clsx","TooltipContent","props","ctx","pos","mounted","animationState","setArrowElement","setContentElement","slideStyle","local","rest","_$createComponent","when","children","_el$","_tmpl$","_el$2","firstChild","_el$3","_$use","el","setFloating","undefined","_$spread","_$mergeProps","id","contentId","data-state","data-side","placement","data-align","onMouseEnter","keepOpen","onMouseLeave","requestClose","style","class","_$insert","Provider","value","middlewareData","reference","_$effect","_p$","_v$","_v$2","floatingStyles","opacity","isPositioned","_v$3","e","_$setAttribute","t","_$style","a"],"sources":["../../../../src/components/tooltip/TooltipContent/TooltipContent.tsx"],"sourcesContent":["import { Show, onCleanup, splitProps } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport { useTooltipContent } from \"./useTooltipContent\";\nimport { TooltipContentContext } from \"./TooltipContent.context\";\nimport { getTransformOrigin } from \"./TooltipContent.utils\";\nimport { getSide, getAlignment } from \"~/lib\";\nimport type { TooltipContentProps } from \"./TooltipContent.types\";\nimport { clsx } from \"~/utils\";\n\n/**\n * Tooltip 的浮层内容。挂 Portal 到 body,用 position:fixed 定位。\n *\n * 内容本身默认是可以 hover 的(不是 pointer-events:none):鼠标移进 content\n * 会取消待执行的关闭计时器(ctx.keepOpen),移出才真正走 closeDelay 关闭——\n * 这样用户可以把鼠标从 trigger 移动到 tooltip 上选中里面的文字,不会因为\n * \"离开 trigger 就关闭\" 而选不到。如果你的 tooltip 内容很简单、不需要这个特性,\n * 可以自己在外面包一层设置 pointer-events: none。\n */\nexport function TooltipContent(props: TooltipContentProps) {\n const {\n ctx,\n pos,\n mounted,\n animationState,\n setArrowElement,\n setContentElement,\n slideStyle,\n } = useTooltipContent(() => props);\n\n // 只摘出内部要单独处理的几个字段,剩下的(style、data-*、onXxx 等任意原生\n // prop)原样透传给内层元素——和 TooltipTrigger 是同一套约定。\n const [local, rest] = splitProps(props, [\n \"side\",\n \"align\",\n \"sideOffset\",\n \"alignOffset\",\n \"collisionPadding\",\n \"class\",\n \"style\",\n \"children\",\n ]);\n\n return (\n <Show when={mounted()}>\n <Portal>\n {/*\n 外层:只负责定位(position:fixed 来自 floatingStyles),不设 overflow,\n 也不参与任何动画——它的 transform 已经被占用来做定位(translate(x,y)),\n 如果别的动画也要控制 transform 会互相冲突,所以动画都放在下面两层。\n */}\n <div\n ref={(el) => {\n ctx.setFloating(el);\n // Solid 的 ref 回调只在元素创建时触发一次,元素被移除时不会自动\n // 再调用一次传 undefined(这是 React 的约定,不是 Solid 的)。\n // 不手动清空的话,ctx.floating() 会一直指向一个已经从 DOM 里\n // 摘除的\"僵尸节点\",直到下次重新打开——期间如果被别处读取\n // (比如 TooltipGroup 抢占时读取矩形),getBoundingClientRect()\n // 对一个 detached 元素规范规定就是返回全 0 的矩形,会造成\n // \"滑动效果从左上角(0,0)滑入\"这种明显错误的观感。\n onCleanup(() => ctx.setFloating(undefined));\n }}\n data-placement={pos.placement()}\n style={{\n ...pos.floatingStyles(),\n \"z-index\": 1000,\n opacity: pos.isPositioned() ? 1 : 0,\n }}\n >\n {/*\n 滑动层:命中 <TooltipGroup> 抢占时,用来把整个 tooltip(内容+箭头)\n 从旧 tooltip 的位置平移过来(FLIP 技术,细节见 useTooltipContent 里\n 的 slideOffset 计算)。平时 slideStyle() 是空对象,这一层形同不存在。\n\n 这一层必须夹在\"定位层\"和\"样式/动画层\"之间、而不是随便找个地方加:\n 它自己也会用到 transform(滑动过程中),如果和定位层共用一个元素会\n 跟 translate(x,y) 冲突(原因同上);但它又不能在样式层(overflow:auto\n 那层)的下面/内部,因为箭头的 position:absolute 是故意跳过样式层、\n 以\"最近的已定位祖先\"为基准的(这是修复箭头戳出来触发滚动条那次的\n 设计),如果滑动层的 transform 出现在样式层内部,箭头的定位基准就会\n 变成滑动层而不是外层——效果上依然正确(滑动层的盒子和外层几乎重合),\n 但为了让\"定位基准\"这件事始终清晰、不产生\"技术上是谁、视觉上又是谁\"\n 的心智负担,把滑动层放在外层和样式层之间、维持这条链路的清晰顺序。\n */}\n <div style={slideStyle()}>\n {/*\n 内层:真正的视觉样式 + 进出场动画。\n data-state 跟着 animationState 走(不是 isVisible/mounted):\n - isVisible 变 false 的瞬间,animationState 立刻跟着变 closed,\n 触发退场动画的 class;\n - isVisible 变 true 时,animationState 会晚一帧才变 open,\n 留出时间让箭头(TooltipArrow)完成挂载、注册给 arrow middleware、\n 算出正确的位置偏移(细节见 useTooltipContent 里的注释);\n - mounted 会比 animationState 变 closed 更晚才变 false(见下面的\n Presence 逻辑),留出时间让退场动画播完。\n\n data-[state=open]/data-[state=closed] 这套 class 依赖 tailwindcss-animate\n 插件提供的 animate-in/animate-out/fade-in-0/zoom-in-95 等工具类——\n 如果你的项目还没装,`npm install tailwindcss-animate` 并在 tailwind\n config 里加上这个 plugin 即可;不想装的话,把这几个 data-[state=...]\n class 换成你自己写的 @keyframes + 对应 class 也一样能工作,\n Presence 逻辑(mounted 延迟卸载)不依赖具体用了哪套动画实现。\n\n 箭头(TooltipArrow)不依赖\"作为这个元素的子节点、被动继承这里的\n transform/opacity 动画\"这种隐式机制——它自己也从 context 里读到\n 同一个 animationState,独立播放一份自己的入场/退场动画,两者由\n 同一个信号同步触发。\n\n data-side/data-align 是从最终生效的 placement 拆出来的,驱动上面\n 这几条方向感知的 slide-in class,也顺带给 transform-origin 提供了\n 依据——缩放动画的锚点会落在\"贴近 trigger 的那条边\"上(细节见\n TooltipContent.utils.ts 里的 getTransformOrigin),而不是默认的\n 几何中心,这样整个入场效果才会像是\"从 trigger 那里长出来\",\n 贴近 shadcn 的实际观感。\n\n 特意没有 overflow:auto / max-height,tooltip 不支持内容超长时滚动——\n 宽度上限靠下面静态的 max-w-xs class 兜底,让文字自然换行;高度完全\n 不做限制。这不只是为了贴近 shadcn/Radix 的行为(它们的 tooltip 也不\n 允许滚动),还避免了一个真实踩过的坑:overflow:auto 配合这里的\n zoom-in-95 动画(会给这个元素加一个非 none 的 transform,CSS 规范\n 规定这会让它变成子元素新的包含块)曾经导致箭头戳出边缘的那部分被\n 误判成\"可滚动溢出\",表现为打开瞬间闪一下滚动条、箭头跟着被遮住,\n 动画播完滚动条消失、箭头才重新出现。去掉滚动能力后这个耦合从根上\n 就不存在了。\n */}\n <div\n ref={setContentElement}\n id={ctx.contentId}\n role=\"tooltip\"\n data-state={animationState()}\n data-side={getSide(pos.placement())}\n data-align={getAlignment(pos.placement()) ?? \"center\"}\n onMouseEnter={ctx.keepOpen}\n onMouseLeave={ctx.requestClose}\n style={{\n \"transform-origin\": getTransformOrigin(pos.placement()),\n ...(typeof local.style === \"object\" ? local.style : undefined),\n }}\n class={clsx(\n \"inline-flex w-fit max-w-xs items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background\",\n \"has-data-[slot=kbd]:pr-1.5\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n // 方向感知的滑入:不只是原地淡入缩放,还从\"贴近 trigger 的反方向\"\n // 轻微位移过来——比如 placement 是 top(content 在 trigger 上方),\n // 就从下方 8px(slide-in-from-bottom-2)滑上来,视觉上更像是从\n // trigger 那里\"冒出来\",而不是凭空原地出现。只在打开时生效,\n // 贴近 shadcn 的实际行为(它们的退场动画没有对应的滑出位移)。\n \"data-[side=top]:slide-in-from-bottom-2\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n local.class,\n )}\n {...rest}\n >\n <TooltipContentContext.Provider\n value={{\n middlewareData: pos.middlewareData,\n reference: ctx.reference,\n placement: pos.placement,\n setArrowElement,\n animationState,\n }}\n >\n {local.children}\n </TooltipContentContext.Provider>\n </div>\n </div>\n </div>\n </Portal>\n </Show>\n );\n}\n"],"mappings":";;;;;;;;;AAkBA,SAAgBW,EAAeC,GAA4B;CACzD,IAAM,EACJC,QACAC,QACAC,YACAC,mBACAC,oBACAC,sBACAC,kBACEf,QAAwBQ,CAAK,GAI3B,CAACQ,GAAOC,KAAQnB,EAAWU,GAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX;CAED,OAAAU,EACGtB,GAAI;EAAA,IAACuB,OAAI;GAAA,OAAER,EAAQ;EAAC;EAAA,IAAAS,WAAA;GAAA,OAAAF,EAClBnB,GAAM,EAAA,IAAAqB,WAAA;IAAA,IAAAC,IAAAC,EAAA,GAAAC,IAAAF,EAAAG,YAAAC,IAAAF,EAAAC;IAwCqB,OAxCrBE,GAOGC,MAAO;KASX9B,AARAY,EAAImB,YAAYD,CAAE,GAQlB9B,QAAgBY,EAAImB,YAAYC,KAAAA,CAAS,CAAC;IAC5C,GAACR,CAAA,GAAAK,EAiEQZ,GAAiBW,CAAA,GAAAK,EAAAL,GAAAM,EAAA;KAAA,IACtBC,KAAE;MAAA,OAAEvB,EAAIwB;KAAS;KAAA,IAAA,eAAA;MAAA,OAELrB,EAAe;KAAC;KAAA,IAAA,cAAA;MAAA,OACjBT,EAAQO,EAAI0B,UAAU,CAAC;KAAC;KAAA,IAAA,eAAA;MAAA,OACvBhC,EAAaM,EAAI0B,UAAU,CAAC,KAAK;KAAQ;KAAA,IACrDE,eAAY;MAAA,OAAE7B,EAAI8B;KAAQ;KAAA,IAC1BC,eAAY;MAAA,OAAE/B,EAAIgC;KAAY;KAAA,IAC9BC,QAAK;MAAA,OAAE;OACL,oBAAoBxC,EAAmBQ,EAAI0B,UAAU,CAAC;OACtD,GAAI,OAAOpB,EAAM0B,SAAU,WAAW1B,EAAM0B,QAAQb,KAAAA;MACtD;KAAC;KAAA,IAAA,QAAA;MAAA,OACMvB,EACL,gHACA,8BACA,yFACA,kGAMA,0CACA,0CACA,0CACA,0CACAU,EAAM2B,KACR;KAAC;IAAA,GACG1B,CAAI,GAAA,IAAA,EAAA,GAAA2B,EAAAnB,GAAAP,EAEPjB,EAAsB4C,UAAQ;KAAA,IAC7BC,QAAK;MAAA,OAAE;OACLC,gBAAgBrC,EAAIqC;OACpBC,WAAWvC,EAAIuC;OACfZ,WAAW1B,EAAI0B;OACfvB;OACAD;MACF;KAAC;KAAA,IAAAQ,WAAA;MAAA,OAEAJ,EAAMI;KAAQ;IAAA,CAAA,CAAA,GAAA6B,GAAAC,MAAA;KAAA,IAAAC,IAvGLzC,EAAI0B,UAAU,GAACgB,IACxB;MACL,GAAG1C,EAAI2C,eAAe;MAEtBC,SAAS5C,KAAI6C,aAAa;KAC5B,GAACC,IAiBWzC,EAAW;KAAC,OAAAoC,MAAAD,EAAAO,KAAAC,EAAArC,GAAA,kBAAA6B,EAAAO,IAAAN,CAAA,GAAAD,EAAAS,IAAAC,EAAAvC,GAAA+B,GAAAF,EAAAS,CAAA,GAAAT,EAAAW,IAAAD,EAAArC,GAAAiC,GAAAN,EAAAW,CAAA,GAAAX;IAAA,GAAA;KAAAO,GAAA5B,KAAAA;KAAA8B,GAAA9B,KAAAA;KAAAgC,GAAAhC,KAAAA;IAAA,CAAA,GAAAR;GAAA,EAAA,CAAA;EAAA;CAAA,CAAA;AAyFlC"}
1
+ {"version":3,"file":"TooltipContent.js","names":["Show","onCleanup","splitProps","Portal","useTooltipContent","TooltipContentContext","getTransformOrigin","getSide","getAlignment","TooltipContentProps","clsx","TooltipContent","props","ctx","pos","mounted","animationState","setArrowElement","setContentElement","slideStyle","local","rest","_$createComponent","when","children","_el$","_tmpl$","_el$2","firstChild","_el$3","_$use","el","setFloating","undefined","_$spread","_$mergeProps","id","contentId","data-state","data-side","placement","data-align","onMouseEnter","keepOpen","onMouseLeave","requestClose","style","class","_$insert","Provider","value","middlewareData","reference","_$effect","_p$","_v$","_v$2","floatingStyles","opacity","isPositioned","_v$3","e","_$setAttribute","t","_$style","a","_$createComponent","_$mergeProps","_$setAttribute","_$style","_tmpl$","TooltipContent","useTooltipContent","props","local","rest","splitProps","createComponent","Show","mounted","Portal","_el$","_el$2","_el$3","use","ctx","el","onCleanup","setContentElement","spread","mergeProps","animationState","getSide","pos","getAlignment","getTransformOrigin","\"class\"","clsx","insert","TooltipContentContext","effect","_v$","_v$2","_v$3","slideStyle","_p$","setAttribute","style"],"sources":["../../../../src/components/tooltip/TooltipContent/TooltipContent.tsx"],"sourcesContent":["import { Show, onCleanup, splitProps } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport { useTooltipContent } from \"./useTooltipContent\";\nimport { TooltipContentContext } from \"./TooltipContent.context\";\nimport { getTransformOrigin } from \"./TooltipContent.utils\";\nimport { getSide, getAlignment } from \"~/lib\";\nimport type { TooltipContentProps } from \"./TooltipContent.types\";\nimport { clsx } from \"~/utils\";\n\n/**\n * Tooltip 的浮层内容。挂 Portal 到 body,用 position:fixed 定位。\n *\n * 内容本身默认是可以 hover 的(不是 pointer-events:none):鼠标移进 content\n * 会取消待执行的关闭计时器(ctx.keepOpen),移出才真正走 closeDelay 关闭——\n * 这样用户可以把鼠标从 trigger 移动到 tooltip 上选中里面的文字,不会因为\n * \"离开 trigger 就关闭\" 而选不到。如果你的 tooltip 内容很简单、不需要这个特性,\n * 可以自己在外面包一层设置 pointer-events: none。\n */\nexport function TooltipContent(props: TooltipContentProps) {\n const {\n ctx,\n pos,\n mounted,\n animationState,\n setArrowElement,\n setContentElement,\n slideStyle,\n } = useTooltipContent(() => props);\n\n // 只摘出内部要单独处理的几个字段,剩下的(style、data-*、onXxx 等任意原生\n // prop)原样透传给内层元素——和 TooltipTrigger 是同一套约定。\n const [local, rest] = splitProps(props, [\n \"side\",\n \"align\",\n \"sideOffset\",\n \"alignOffset\",\n \"collisionPadding\",\n \"class\",\n \"style\",\n \"children\",\n ]);\n\n return (\n <Show when={mounted()}>\n <Portal>\n {/*\n 外层:只负责定位(position:fixed 来自 floatingStyles),不设 overflow,\n 也不参与任何动画——它的 transform 已经被占用来做定位(translate(x,y)),\n 如果别的动画也要控制 transform 会互相冲突,所以动画都放在下面两层。\n */}\n <div\n ref={(el) => {\n ctx.setFloating(el);\n // Solid 的 ref 回调只在元素创建时触发一次,元素被移除时不会自动\n // 再调用一次传 undefined(这是 React 的约定,不是 Solid 的)。\n // 不手动清空的话,ctx.floating() 会一直指向一个已经从 DOM 里\n // 摘除的\"僵尸节点\",直到下次重新打开——期间如果被别处读取\n // (比如 TooltipGroup 抢占时读取矩形),getBoundingClientRect()\n // 对一个 detached 元素规范规定就是返回全 0 的矩形,会造成\n // \"滑动效果从左上角(0,0)滑入\"这种明显错误的观感。\n onCleanup(() => ctx.setFloating(undefined));\n }}\n data-placement={pos.placement()}\n style={{\n ...pos.floatingStyles(),\n \"z-index\": 1000,\n opacity: pos.isPositioned() ? 1 : 0,\n }}\n >\n {/*\n 滑动层:命中 <TooltipGroup> 抢占时,用来把整个 tooltip(内容+箭头)\n 从旧 tooltip 的位置平移过来(FLIP 技术,细节见 useTooltipContent 里\n 的 slideOffset 计算)。平时 slideStyle() 是空对象,这一层形同不存在。\n\n 这一层必须夹在\"定位层\"和\"样式/动画层\"之间、而不是随便找个地方加:\n 它自己也会用到 transform(滑动过程中),如果和定位层共用一个元素会\n 跟 translate(x,y) 冲突(原因同上);但它又不能在样式层(overflow:auto\n 那层)的下面/内部,因为箭头的 position:absolute 是故意跳过样式层、\n 以\"最近的已定位祖先\"为基准的(这是修复箭头戳出来触发滚动条那次的\n 设计),如果滑动层的 transform 出现在样式层内部,箭头的定位基准就会\n 变成滑动层而不是外层——效果上依然正确(滑动层的盒子和外层几乎重合),\n 但为了让\"定位基准\"这件事始终清晰、不产生\"技术上是谁、视觉上又是谁\"\n 的心智负担,把滑动层放在外层和样式层之间、维持这条链路的清晰顺序。\n */}\n <div style={slideStyle()}>\n {/*\n 内层:真正的视觉样式 + 进出场动画。\n data-state 跟着 animationState 走(不是 isVisible/mounted):\n - isVisible 变 false 的瞬间,animationState 立刻跟着变 closed,\n 触发退场动画的 class;\n - isVisible 变 true 时,animationState 会晚一帧才变 open,\n 留出时间让箭头(TooltipArrow)完成挂载、注册给 arrow middleware、\n 算出正确的位置偏移(细节见 useTooltipContent 里的注释);\n - mounted 会比 animationState 变 closed 更晚才变 false(见下面的\n Presence 逻辑),留出时间让退场动画播完。\n\n data-[state=open]/data-[state=closed] 这套 class 依赖 tailwindcss-animate\n 插件提供的 animate-in/animate-out/fade-in-0/zoom-in-95 等工具类——\n 如果你的项目还没装,`npm install tailwindcss-animate` 并在 tailwind\n config 里加上这个 plugin 即可;不想装的话,把这几个 data-[state=...]\n class 换成你自己写的 @keyframes + 对应 class 也一样能工作,\n Presence 逻辑(mounted 延迟卸载)不依赖具体用了哪套动画实现。\n\n 箭头(TooltipArrow)不依赖\"作为这个元素的子节点、被动继承这里的\n transform/opacity 动画\"这种隐式机制——它自己也从 context 里读到\n 同一个 animationState,独立播放一份自己的入场/退场动画,两者由\n 同一个信号同步触发。\n\n data-side/data-align 是从最终生效的 placement 拆出来的,驱动上面\n 这几条方向感知的 slide-in class,也顺带给 transform-origin 提供了\n 依据——缩放动画的锚点会落在\"贴近 trigger 的那条边\"上(细节见\n TooltipContent.utils.ts 里的 getTransformOrigin),而不是默认的\n 几何中心,这样整个入场效果才会像是\"从 trigger 那里长出来\",\n 贴近 shadcn 的实际观感。\n\n 特意没有 overflow:auto / max-height,tooltip 不支持内容超长时滚动——\n 宽度上限靠下面静态的 max-w-xs class 兜底,让文字自然换行;高度完全\n 不做限制。这不只是为了贴近 shadcn/Radix 的行为(它们的 tooltip 也不\n 允许滚动),还避免了一个真实踩过的坑:overflow:auto 配合这里的\n zoom-in-95 动画(会给这个元素加一个非 none 的 transform,CSS 规范\n 规定这会让它变成子元素新的包含块)曾经导致箭头戳出边缘的那部分被\n 误判成\"可滚动溢出\",表现为打开瞬间闪一下滚动条、箭头跟着被遮住,\n 动画播完滚动条消失、箭头才重新出现。去掉滚动能力后这个耦合从根上\n 就不存在了。\n */}\n <div\n ref={setContentElement}\n id={ctx.contentId}\n role=\"tooltip\"\n data-state={animationState()}\n data-side={getSide(pos.placement())}\n data-align={getAlignment(pos.placement()) ?? \"center\"}\n onMouseEnter={ctx.keepOpen}\n onMouseLeave={ctx.requestClose}\n style={{\n \"transform-origin\": getTransformOrigin(pos.placement()),\n ...(typeof local.style === \"object\" ? local.style : undefined),\n }}\n class={clsx(\n \"inline-flex w-fit max-w-xs items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background\",\n \"has-data-[slot=kbd]:pr-1.5\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n // 方向感知的滑入:不只是原地淡入缩放,还从\"贴近 trigger 的反方向\"\n // 轻微位移过来——比如 placement 是 top(content 在 trigger 上方),\n // 就从下方 8px(slide-in-from-bottom-2)滑上来,视觉上更像是从\n // trigger 那里\"冒出来\",而不是凭空原地出现。只在打开时生效,\n // 贴近 shadcn 的实际行为(它们的退场动画没有对应的滑出位移)。\n \"data-[side=top]:slide-in-from-bottom-2\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n local.class,\n )}\n {...rest}\n >\n <TooltipContentContext.Provider\n value={{\n middlewareData: pos.middlewareData,\n reference: ctx.reference,\n placement: pos.placement,\n setArrowElement,\n animationState,\n }}\n >\n {local.children}\n </TooltipContentContext.Provider>\n </div>\n </div>\n </div>\n </Portal>\n </Show>\n );\n}\n"],"mappings":";;;;;;;;;AAkBA,SAAgBW,EAAeC,GAA4B;CACzD,IAAM,EACJC,QACAC,QACAC,YACAC,mBACAC,oBACAC,sBACAC,kBACEf,QAAwBQ,CAAK,GAI3B,CAACQ,GAAOC,KAAQnB,EAAWU,GAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX;CAED,OAAAU,EACGtB,GAAI;EAAA,IAACuB,OAAI;GAAA,OAAER,EAAQ;EAAC;EAAA,IAAAS,WAAA;GAAA,OAAAF,EAClBnB,GAAM,EAAA,IAAAqB,WAAA;IAAA,IAAAC,IAAAC,EAAA,GAAAC,IAAAF,EAAAG,YAAAC,IAAAF,EAAAC;IAwCqB,OAxCrBE,GAOGC,MAAO;KASX9B,AARAY,EAAImB,YAAYD,CAAE,GAQlB9B,QAAgBY,EAAImB,YAAYC,KAAAA,CAAS,CAAC;IAC5C,GAACR,CAAA,GAAAK,EAiEQZ,GAAiBW,CAAA,GAAAK,EAAAL,GAAAM,EAAA;KAAA,IACtBC,KAAE;MAAA,OAAEvB,EAAIwB;KAAS;KAAA,IAAA,eAAA;MAAA,OAELrB,EAAe;KAAC;KAAA,IAAA,cAAA;MAAA,OACjBT,EAAQO,EAAI0B,UAAU,CAAC;KAAC;KAAA,IAAA,eAAA;MAAA,OACvBhC,EAAaM,EAAI0B,UAAU,CAAC,KAAK;KAAQ;KAAA,IACrDE,eAAY;MAAA,OAAE7B,EAAI8B;KAAQ;KAAA,IAC1BC,eAAY;MAAA,OAAE/B,EAAIgC;KAAY;KAAA,IAC9BC,QAAK;MAAA,OAAE;OACL,oBAAoBxC,EAAmBQ,EAAI0B,UAAU,CAAC;OACtD,GAAI,OAAOpB,EAAM0B,SAAU,WAAW1B,EAAM0B,QAAQb,KAAAA;MACtD;KAAC;KAAA,IAAA+D,QAAA;MAAA,OACMtF,EACL,gHACA,8BACA,yFACA,kGAMA,0CACA,0CACA,0CACA,0CACAU,EAAM2B,KACR;KAAC;IAAA,GACG1B,CAAI,GAAA,IAAA,EAAA,GAAA2B,EAAAnB,GAAAP,EAEPjB,EAAsB4C,UAAQ;KAAA,IAC7BC,QAAK;MAAA,OAAE;OACLC,gBAAgBrC,EAAIqC;OACpBC,WAAWvC,EAAIuC;OACfZ,WAAW1B,EAAI0B;OACfvB;OACAD;MACF;KAAC;KAAA,IAAAQ,WAAA;MAAA,OAEAJ,EAAMI;KAAQ;IAAA,CAAA,CAAA,GAAA6B,GAAAC,MAAA;KAAA,IAAAC,IAvGLzC,EAAI0B,UAAU,GAACgB,IACxB;MACL,GAAG1C,EAAI2C,eAAe;MAEtBC,SAAS5C,KAAI6C,aAAa;KAC5B,GAACC,IAiBWzC,EAAW;KAAC,OAAAoC,MAAAD,EAAAO,KAAAC,EAAArC,GAAA,kBAAA6B,EAAAO,IAAAN,CAAA,GAAAD,EAAAS,IAAAC,EAAAvC,GAAA+B,GAAAF,EAAAS,CAAA,GAAAT,EAAAW,IAAAD,EAAArC,GAAAiC,GAAAN,EAAAW,CAAA,GAAAX;IAAA,GAAA;KAAAO,GAAA5B,KAAAA;KAAA8B,GAAA9B,KAAAA;KAAAgC,GAAAhC,KAAAA;IAAA,CAAA,GAAAR;GAAA,EAAA,CAAA;EAAA;CAAA,CAAA;AAyFlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipContent.utils.js","names":[],"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,SAAgB,EACd,GACA,GACM;CAON,OANI,MAAS,iBACJ,MAAQ,QAAQ,UAAU,SAE/B,MAAS,eACJ,MAAQ,QAAQ,SAAS,UAE3B;AACT;AAEA,SAAgB,EACd,GACA,GACA,GACW;CACX,IAAM,IAAW,EAAe,GAAM,CAAG;CACzC,OAAO,MAAU,WAAW,IAAY,GAAG,EAAS,GAAG;AACzD;AAUA,SAAgB,EAAmB,GAA8B;CAC/D,IAAM,IAAO,EAAQ,CAAS,GACxB,IAAQ,EAAa,CAAS,GAC9B,IACJ,MAAU,UAAU,OAAO,MAAU,QAAQ,SAAS;CAExD,QAAQ,GAAR;EACE,KAAK,OACH,OAAO,GAAG,EAAgB;EAC5B,KAAK,UACH,OAAO,GAAG,EAAgB;EAC5B,KAAK,QACH,OAAO,QAAQ;EACjB,KAAK,SACH,OAAO,MAAM;CACjB;AACF;AA2CA,SAAgB,EACd,GACc;CACd,OAAO;EACL,EAAO;GAAE,UAAU,EAAQ;GAAY,WAAW,EAAQ;EAAY,CAAC;EACvE,EAAK;EACL,EAAM,EAAE,SAAS,EAAQ,iBAAiB,CAAC;EAC3C,EAAM;GAAE,SAAS,EAAQ;GAAc,SAAS;EAAE,CAAC;EACnD,EAAK;EACL,EAAsB;CACxB;AACF"}
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"}