@neut/ui 0.0.12 → 0.0.13

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 (353) hide show
  1. package/dist/components/calendar/Calendar/Calendar.d.ts +10 -0
  2. package/dist/components/calendar/Calendar/Calendar.js +306 -0
  3. package/dist/components/calendar/Calendar/Calendar.js.map +1 -0
  4. package/dist/components/calendar/Calendar/Calendar.types.d.ts +62 -0
  5. package/dist/components/calendar/Calendar/Calendar.utils.d.ts +21 -0
  6. package/dist/components/calendar/Calendar/Calendar.utils.js +68 -0
  7. package/dist/components/calendar/Calendar/Calendar.utils.js.map +1 -0
  8. package/dist/components/calendar/Calendar/index.d.ts +2 -0
  9. package/dist/components/calendar/index.d.ts +2 -0
  10. package/dist/components/calendar/index.js +2 -0
  11. package/dist/components/combobox/Combobox/Combobox.context.d.ts +3 -0
  12. package/dist/components/combobox/Combobox/Combobox.context.js +12 -0
  13. package/dist/components/combobox/Combobox/Combobox.context.js.map +1 -0
  14. package/dist/components/combobox/Combobox/Combobox.d.ts +3 -0
  15. package/dist/components/combobox/Combobox/Combobox.js +60 -0
  16. package/dist/components/combobox/Combobox/Combobox.js.map +1 -0
  17. package/dist/components/combobox/Combobox/Combobox.types.d.ts +40 -0
  18. package/dist/components/combobox/Combobox/index.d.ts +2 -0
  19. package/dist/components/combobox/ComboboxChip/ComboboxChip.d.ts +7 -0
  20. package/dist/components/combobox/ComboboxChip/ComboboxChip.js +35 -0
  21. package/dist/components/combobox/ComboboxChip/ComboboxChip.js.map +1 -0
  22. package/dist/components/combobox/ComboboxChip/index.d.ts +1 -0
  23. package/dist/components/combobox/ComboboxChips/ComboboxChips.d.ts +5 -0
  24. package/dist/components/combobox/ComboboxChips/ComboboxChips.js +16 -0
  25. package/dist/components/combobox/ComboboxChips/ComboboxChips.js.map +1 -0
  26. package/dist/components/combobox/ComboboxChips/index.d.ts +1 -0
  27. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.d.ts +4 -0
  28. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js +27 -0
  29. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js.map +1 -0
  30. package/dist/components/combobox/ComboboxChipsInput/index.d.ts +1 -0
  31. package/dist/components/combobox/ComboboxClear/ComboboxClear.d.ts +4 -0
  32. package/dist/components/combobox/ComboboxClear/ComboboxClear.js +30 -0
  33. package/dist/components/combobox/ComboboxClear/ComboboxClear.js.map +1 -0
  34. package/dist/components/combobox/ComboboxClear/index.d.ts +1 -0
  35. package/dist/components/combobox/ComboboxCollection/ComboboxCollection.d.ts +5 -0
  36. package/dist/components/combobox/ComboboxCollection/ComboboxCollection.js +20 -0
  37. package/dist/components/combobox/ComboboxCollection/ComboboxCollection.js.map +1 -0
  38. package/dist/components/combobox/ComboboxCollection/index.d.ts +1 -0
  39. package/dist/components/combobox/ComboboxContent/ComboboxContent.d.ts +2 -0
  40. package/dist/components/combobox/ComboboxContent/ComboboxContent.js +49 -0
  41. package/dist/components/combobox/ComboboxContent/ComboboxContent.js.map +1 -0
  42. package/dist/components/combobox/ComboboxContent/ComboboxContent.types.d.ts +12 -0
  43. package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.d.ts +2 -0
  44. package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.js +6 -0
  45. package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.js.map +1 -0
  46. package/dist/components/combobox/ComboboxContent/index.d.ts +1 -0
  47. package/dist/components/combobox/ComboboxContent/useComboboxContent.d.ts +13 -0
  48. package/dist/components/combobox/ComboboxContent/useComboboxContent.js +48 -0
  49. package/dist/components/combobox/ComboboxContent/useComboboxContent.js.map +1 -0
  50. package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.d.ts +5 -0
  51. package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.js +14 -0
  52. package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.js.map +1 -0
  53. package/dist/components/combobox/ComboboxEmpty/index.d.ts +1 -0
  54. package/dist/components/combobox/ComboboxGroup/ComboboxGroup.d.ts +5 -0
  55. package/dist/components/combobox/ComboboxGroup/ComboboxGroup.js +13 -0
  56. package/dist/components/combobox/ComboboxGroup/ComboboxGroup.js.map +1 -0
  57. package/dist/components/combobox/ComboboxGroup/index.d.ts +1 -0
  58. package/dist/components/combobox/ComboboxInput/ComboboxInput.d.ts +9 -0
  59. package/dist/components/combobox/ComboboxInput/ComboboxInput.js +85 -0
  60. package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -0
  61. package/dist/components/combobox/ComboboxInput/index.d.ts +1 -0
  62. package/dist/components/combobox/ComboboxItem/ComboboxItem.d.ts +7 -0
  63. package/dist/components/combobox/ComboboxItem/ComboboxItem.js +40 -0
  64. package/dist/components/combobox/ComboboxItem/ComboboxItem.js.map +1 -0
  65. package/dist/components/combobox/ComboboxItem/index.d.ts +1 -0
  66. package/dist/components/combobox/ComboboxLabel/ComboboxLabel.d.ts +5 -0
  67. package/dist/components/combobox/ComboboxLabel/ComboboxLabel.js +14 -0
  68. package/dist/components/combobox/ComboboxLabel/ComboboxLabel.js.map +1 -0
  69. package/dist/components/combobox/ComboboxLabel/index.d.ts +1 -0
  70. package/dist/components/combobox/ComboboxList/ComboboxList.d.ts +5 -0
  71. package/dist/components/combobox/ComboboxList/ComboboxList.js +22 -0
  72. package/dist/components/combobox/ComboboxList/ComboboxList.js.map +1 -0
  73. package/dist/components/combobox/ComboboxList/index.d.ts +1 -0
  74. package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.d.ts +3 -0
  75. package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.js +14 -0
  76. package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.js.map +1 -0
  77. package/dist/components/combobox/ComboboxSeparator/index.d.ts +1 -0
  78. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.d.ts +6 -0
  79. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js +34 -0
  80. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js.map +1 -0
  81. package/dist/components/combobox/ComboboxTrigger/index.d.ts +1 -0
  82. package/dist/components/combobox/ComboboxValue/ComboboxValue.d.ts +5 -0
  83. package/dist/components/combobox/ComboboxValue/ComboboxValue.js +15 -0
  84. package/dist/components/combobox/ComboboxValue/ComboboxValue.js.map +1 -0
  85. package/dist/components/combobox/ComboboxValue/index.d.ts +1 -0
  86. package/dist/components/combobox/index.d.ts +18 -0
  87. package/dist/components/combobox/index.js +18 -0
  88. package/dist/components/combobox/useComboboxAnchor/index.d.ts +1 -0
  89. package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.d.ts +1 -0
  90. package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.js +9 -0
  91. package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.js.map +1 -0
  92. package/dist/components/date-picker/DatePicker/DatePicker.d.ts +11 -0
  93. package/dist/components/date-picker/DatePicker/DatePicker.js +136 -0
  94. package/dist/components/date-picker/DatePicker/DatePicker.js.map +1 -0
  95. package/dist/components/date-picker/DatePicker/DatePicker.types.d.ts +32 -0
  96. package/dist/components/date-picker/DatePicker/index.d.ts +2 -0
  97. package/dist/components/date-picker/index.d.ts +2 -0
  98. package/dist/components/date-picker/index.js +2 -0
  99. package/dist/components/dialog/Dialog/Dialog.context.d.ts +2 -1
  100. package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -1
  101. package/dist/components/dialog/Dialog/Dialog.js +21 -12
  102. package/dist/components/dialog/Dialog/Dialog.js.map +1 -1
  103. package/dist/components/dialog/Dialog/Dialog.types.d.ts +13 -1
  104. package/dist/components/dialog/Dialog/index.d.ts +1 -0
  105. package/dist/components/dialog/DialogTrigger/DialogTrigger.d.ts +4 -2
  106. package/dist/components/dialog/DialogTrigger/DialogTrigger.js +27 -6
  107. package/dist/components/dialog/DialogTrigger/DialogTrigger.js.map +1 -1
  108. package/dist/components/dialog/DialogTrigger/DialogTrigger.types.d.ts +3 -0
  109. package/dist/components/dialog/DialogTrigger/index.d.ts +3 -0
  110. package/dist/components/dialog/DialogTrigger/useDialogTrigger.d.ts +13 -2
  111. package/dist/components/dialog/DialogTrigger/useDialogTrigger.js +15 -19
  112. package/dist/components/dialog/DialogTrigger/useDialogTrigger.js.map +1 -1
  113. package/dist/components/dialog/index.js +3 -2
  114. package/dist/components/empty/Empty/Empty.d.ts +2 -0
  115. package/dist/components/empty/Empty/Empty.js +18 -0
  116. package/dist/components/empty/Empty/Empty.js.map +1 -0
  117. package/dist/components/empty/Empty/index.d.ts +1 -0
  118. package/dist/components/empty/EmptyContent/EmptyContent.d.ts +2 -0
  119. package/dist/components/empty/EmptyContent/EmptyContent.js +18 -0
  120. package/dist/components/empty/EmptyContent/EmptyContent.js.map +1 -0
  121. package/dist/components/empty/EmptyContent/index.d.ts +1 -0
  122. package/dist/components/empty/EmptyDescription/EmptyDescription.d.ts +2 -0
  123. package/dist/components/empty/EmptyDescription/EmptyDescription.js +18 -0
  124. package/dist/components/empty/EmptyDescription/EmptyDescription.js.map +1 -0
  125. package/dist/components/empty/EmptyDescription/index.d.ts +1 -0
  126. package/dist/components/empty/EmptyHeader/EmptyHeader.d.ts +2 -0
  127. package/dist/components/empty/EmptyHeader/EmptyHeader.js +18 -0
  128. package/dist/components/empty/EmptyHeader/EmptyHeader.js.map +1 -0
  129. package/dist/components/empty/EmptyHeader/index.d.ts +1 -0
  130. package/dist/components/empty/EmptyMedia/EmptyMedia.d.ts +4 -0
  131. package/dist/components/empty/EmptyMedia/EmptyMedia.js +27 -0
  132. package/dist/components/empty/EmptyMedia/EmptyMedia.js.map +1 -0
  133. package/dist/components/empty/EmptyMedia/EmptyMedia.styles.d.ts +3 -0
  134. package/dist/components/empty/EmptyMedia/EmptyMedia.styles.js +13 -0
  135. package/dist/components/empty/EmptyMedia/EmptyMedia.styles.js.map +1 -0
  136. package/dist/components/empty/EmptyMedia/EmptyMedia.types.d.ts +3 -0
  137. package/dist/components/empty/EmptyMedia/index.d.ts +2 -0
  138. package/dist/components/empty/EmptyTitle/EmptyTitle.d.ts +2 -0
  139. package/dist/components/empty/EmptyTitle/EmptyTitle.js +18 -0
  140. package/dist/components/empty/EmptyTitle/EmptyTitle.js.map +1 -0
  141. package/dist/components/empty/EmptyTitle/index.d.ts +1 -0
  142. package/dist/components/empty/index.d.ts +7 -0
  143. package/dist/components/empty/index.js +7 -0
  144. package/dist/components/image/Image.utils.js.map +1 -1
  145. package/dist/components/popover/Popover/Popover.context.d.ts +3 -0
  146. package/dist/components/popover/Popover/Popover.context.js +12 -0
  147. package/dist/components/popover/Popover/Popover.context.js.map +1 -0
  148. package/dist/components/popover/Popover/Popover.d.ts +18 -0
  149. package/dist/components/popover/Popover/Popover.js +37 -0
  150. package/dist/components/popover/Popover/Popover.js.map +1 -0
  151. package/dist/components/popover/Popover/Popover.types.d.ts +24 -0
  152. package/dist/components/popover/Popover/index.d.ts +3 -0
  153. package/dist/components/popover/PopoverContent/PopoverContent.d.ts +6 -0
  154. package/dist/components/popover/PopoverContent/PopoverContent.js +72 -0
  155. package/dist/components/popover/PopoverContent/PopoverContent.js.map +1 -0
  156. package/dist/components/popover/PopoverContent/PopoverContent.types.d.ts +16 -0
  157. package/dist/components/popover/PopoverContent/PopoverContent.utils.d.ts +20 -0
  158. package/dist/components/popover/PopoverContent/PopoverContent.utils.js +36 -0
  159. package/dist/components/popover/PopoverContent/PopoverContent.utils.js.map +1 -0
  160. package/dist/components/popover/PopoverContent/index.d.ts +6 -0
  161. package/dist/components/popover/PopoverContent/usePopoverContent.d.ts +11 -0
  162. package/dist/components/popover/PopoverContent/usePopoverContent.js +42 -0
  163. package/dist/components/popover/PopoverContent/usePopoverContent.js.map +1 -0
  164. package/dist/components/popover/PopoverDescription/PopoverDescription.d.ts +2 -0
  165. package/dist/components/popover/PopoverDescription/PopoverDescription.js +18 -0
  166. package/dist/components/popover/PopoverDescription/PopoverDescription.js.map +1 -0
  167. package/dist/components/popover/PopoverDescription/index.d.ts +1 -0
  168. package/dist/components/popover/PopoverHeader/PopoverHeader.d.ts +2 -0
  169. package/dist/components/popover/PopoverHeader/PopoverHeader.js +18 -0
  170. package/dist/components/popover/PopoverHeader/PopoverHeader.js.map +1 -0
  171. package/dist/components/popover/PopoverHeader/index.d.ts +1 -0
  172. package/dist/components/popover/PopoverTitle/PopoverTitle.d.ts +2 -0
  173. package/dist/components/popover/PopoverTitle/PopoverTitle.js +18 -0
  174. package/dist/components/popover/PopoverTitle/PopoverTitle.js.map +1 -0
  175. package/dist/components/popover/PopoverTitle/index.d.ts +1 -0
  176. package/dist/components/popover/PopoverTrigger/PopoverTrigger.d.ts +4 -0
  177. package/dist/components/popover/PopoverTrigger/PopoverTrigger.js +35 -0
  178. package/dist/components/popover/PopoverTrigger/PopoverTrigger.js.map +1 -0
  179. package/dist/components/popover/PopoverTrigger/PopoverTrigger.types.d.ts +3 -0
  180. package/dist/components/popover/PopoverTrigger/index.d.ts +4 -0
  181. package/dist/components/popover/PopoverTrigger/usePopoverTrigger.d.ts +14 -0
  182. package/dist/components/popover/PopoverTrigger/usePopoverTrigger.js +35 -0
  183. package/dist/components/popover/PopoverTrigger/usePopoverTrigger.js.map +1 -0
  184. package/dist/components/popover/index.d.ts +9 -0
  185. package/dist/components/popover/index.js +7 -0
  186. package/dist/components/radio-group/RadioGroup/RadioGroup.context.d.ts +3 -0
  187. package/dist/components/radio-group/RadioGroup/RadioGroup.context.js +12 -0
  188. package/dist/components/radio-group/RadioGroup/RadioGroup.context.js.map +1 -0
  189. package/dist/components/radio-group/RadioGroup/RadioGroup.d.ts +15 -0
  190. package/dist/components/radio-group/RadioGroup/RadioGroup.js +56 -0
  191. package/dist/components/radio-group/RadioGroup/RadioGroup.js.map +1 -0
  192. package/dist/components/radio-group/RadioGroup/RadioGroup.types.d.ts +22 -0
  193. package/dist/components/radio-group/RadioGroup/index.d.ts +3 -0
  194. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.d.ts +6 -0
  195. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js +80 -0
  196. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js.map +1 -0
  197. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.types.d.ts +9 -0
  198. package/dist/components/radio-group/RadioGroupItem/index.d.ts +2 -0
  199. package/dist/components/radio-group/index.d.ts +4 -0
  200. package/dist/components/radio-group/index.js +3 -0
  201. package/dist/components/select/Select/Select.context.d.ts +3 -3
  202. package/dist/components/select/Select/Select.context.js.map +1 -1
  203. package/dist/components/select/Select/Select.d.ts +5 -2
  204. package/dist/components/select/Select/Select.js +1 -1
  205. package/dist/components/select/Select/Select.js.map +1 -1
  206. package/dist/components/select/Select/Select.types.d.ts +19 -15
  207. package/dist/components/select/Select/index.d.ts +1 -1
  208. package/dist/components/select/SelectContent/SelectContent.js +2 -2
  209. package/dist/components/select/SelectContent/SelectContent.js.map +1 -1
  210. package/dist/components/select/SelectContent/SelectContent.utils.d.ts +2 -1
  211. package/dist/components/select/SelectContent/SelectContent.utils.js +2 -2
  212. package/dist/components/select/SelectContent/SelectContent.utils.js.map +1 -1
  213. package/dist/components/select/SelectContent/useSelectContent.js +6 -2
  214. package/dist/components/select/SelectContent/useSelectContent.js.map +1 -1
  215. package/dist/components/select/SelectItem/SelectItem.js +1 -1
  216. package/dist/components/select/SelectItem/SelectItem.js.map +1 -1
  217. package/dist/components/select/SelectItem/SelectItem.types.d.ts +3 -2
  218. package/dist/components/select/SelectItem/useSelectItem.d.ts +2 -1
  219. package/dist/components/select/SelectItem/useSelectItem.js +1 -1
  220. package/dist/components/select/SelectItem/useSelectItem.js.map +1 -1
  221. package/dist/components/select/SelectValue/SelectValue.js +1 -1
  222. package/dist/components/select/SelectValue/SelectValue.js.map +1 -1
  223. package/dist/components/toast/Toast/Toast.d.ts +3 -0
  224. package/dist/components/toast/Toast/Toast.js +181 -0
  225. package/dist/components/toast/Toast/Toast.js.map +1 -0
  226. package/dist/components/toast/Toast/Toast.styles.d.ts +6 -0
  227. package/dist/components/toast/Toast/Toast.styles.js +27 -0
  228. package/dist/components/toast/Toast/Toast.styles.js.map +1 -0
  229. package/dist/components/toast/Toast/Toast.types.d.ts +90 -0
  230. package/dist/components/toast/Toast/Toast.types.js +6 -0
  231. package/dist/components/toast/Toast/Toast.types.js.map +1 -0
  232. package/dist/components/toast/Toast/index.d.ts +2 -0
  233. package/dist/components/toast/{components → Toaster}/Toaster.d.ts +1 -1
  234. package/dist/components/toast/Toaster/Toaster.js +102 -0
  235. package/dist/components/toast/Toaster/Toaster.js.map +1 -0
  236. package/dist/components/toast/Toaster/Toaster.styles.d.ts +1 -0
  237. package/dist/components/toast/Toaster/Toaster.styles.js +6 -0
  238. package/dist/components/toast/Toaster/Toaster.styles.js.map +1 -0
  239. package/dist/components/toast/Toaster/Toaster.types.d.ts +44 -0
  240. package/dist/components/toast/Toaster/Toaster.utils.d.ts +7 -0
  241. package/dist/components/toast/Toaster/Toaster.utils.js +33 -0
  242. package/dist/components/toast/Toaster/Toaster.utils.js.map +1 -0
  243. package/dist/components/toast/Toaster/index.d.ts +3 -0
  244. package/dist/components/toast/index.d.ts +5 -10
  245. package/dist/components/toast/index.js +4 -5
  246. package/dist/components/toast/state/index.d.ts +1 -0
  247. package/dist/components/toast/state/toast.d.ts +24 -0
  248. package/dist/components/toast/state/toast.js +116 -0
  249. package/dist/components/toast/state/toast.js.map +1 -0
  250. package/dist/components/toggle/Toggle/Toggle.d.ts +3 -0
  251. package/dist/components/toggle/Toggle/Toggle.js +49 -0
  252. package/dist/components/toggle/Toggle/Toggle.js.map +1 -0
  253. package/dist/components/toggle/Toggle/Toggle.styles.d.ts +4 -0
  254. package/dist/components/toggle/Toggle/Toggle.styles.js +23 -0
  255. package/dist/components/toggle/Toggle/Toggle.styles.js.map +1 -0
  256. package/dist/components/toggle/Toggle/Toggle.types.d.ts +12 -0
  257. package/dist/components/toggle/Toggle/index.d.ts +3 -0
  258. package/dist/components/toggle/index.d.ts +2 -0
  259. package/dist/components/toggle/index.js +3 -0
  260. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.d.ts +3 -0
  261. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js +12 -0
  262. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js.map +1 -0
  263. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.d.ts +3 -0
  264. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js +68 -0
  265. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -0
  266. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.types.d.ts +28 -0
  267. package/dist/components/toggle-group/ToggleGroup/index.d.ts +3 -0
  268. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.d.ts +3 -0
  269. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js +72 -0
  270. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -0
  271. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.types.d.ts +10 -0
  272. package/dist/components/toggle-group/ToggleGroupItem/index.d.ts +2 -0
  273. package/dist/components/toggle-group/index.d.ts +4 -0
  274. package/dist/components/toggle-group/index.js +3 -0
  275. package/dist/components/tooltip/Tooltip/Tooltip.js +51 -50
  276. package/dist/components/tooltip/Tooltip/Tooltip.js.map +1 -1
  277. package/dist/components/tooltip/TooltipArrow/TooltipArrow.d.ts +3 -28
  278. package/dist/components/tooltip/TooltipArrow/TooltipArrow.js +13 -45
  279. package/dist/components/tooltip/TooltipArrow/TooltipArrow.js.map +1 -1
  280. package/dist/components/tooltip/TooltipContent/TooltipContent.context.d.ts +2 -0
  281. package/dist/components/tooltip/TooltipContent/TooltipContent.context.js.map +1 -1
  282. package/dist/components/tooltip/TooltipContent/TooltipContent.js +2 -1
  283. package/dist/components/tooltip/TooltipContent/TooltipContent.js.map +1 -1
  284. package/dist/components/tooltip/TooltipContent/TooltipContent.types.d.ts +3 -2
  285. package/dist/components/tooltip/TooltipContent/TooltipContent.utils.d.ts +2 -1
  286. package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js +8 -4
  287. package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js.map +1 -1
  288. package/dist/components/tooltip/TooltipContent/useTooltipContent.js +20 -19
  289. package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
  290. package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.d.ts +3 -0
  291. package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.js +10 -0
  292. package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.js.map +1 -0
  293. package/dist/components/tooltip/TooltipProvider/TooltipProvider.d.ts +3 -0
  294. package/dist/components/tooltip/TooltipProvider/TooltipProvider.js +20 -0
  295. package/dist/components/tooltip/TooltipProvider/TooltipProvider.js.map +1 -0
  296. package/dist/components/tooltip/TooltipProvider/TooltipProvider.types.d.ts +11 -0
  297. package/dist/components/tooltip/TooltipProvider/index.d.ts +3 -0
  298. package/dist/components/tooltip/index.d.ts +2 -0
  299. package/dist/components/tooltip/index.js +7 -6
  300. package/dist/index.d.ts +8 -0
  301. package/dist/index.js +153 -115
  302. package/dist/ui.css +1 -1
  303. package/package.json +7 -6
  304. package/dist/components/toast/components/Assets.d.ts +0 -9
  305. package/dist/components/toast/components/Assets.js +0 -32
  306. package/dist/components/toast/components/Assets.js.map +0 -1
  307. package/dist/components/toast/components/Toast.d.ts +0 -3
  308. package/dist/components/toast/components/Toast.js +0 -152
  309. package/dist/components/toast/components/Toast.js.map +0 -1
  310. package/dist/components/toast/components/ToastActions.d.ts +0 -12
  311. package/dist/components/toast/components/ToastActions.js +0 -62
  312. package/dist/components/toast/components/ToastActions.js.map +0 -1
  313. package/dist/components/toast/components/ToastContent.d.ts +0 -9
  314. package/dist/components/toast/components/ToastContent.js +0 -36
  315. package/dist/components/toast/components/ToastContent.js.map +0 -1
  316. package/dist/components/toast/components/ToastIcon.d.ts +0 -9
  317. package/dist/components/toast/components/ToastIcon.js +0 -59
  318. package/dist/components/toast/components/ToastIcon.js.map +0 -1
  319. package/dist/components/toast/components/Toaster.js +0 -163
  320. package/dist/components/toast/components/Toaster.js.map +0 -1
  321. package/dist/components/toast/constants.d.ts +0 -16
  322. package/dist/components/toast/constants.js +0 -6
  323. package/dist/components/toast/constants.js.map +0 -1
  324. package/dist/components/toast/hooks/useSwipe.d.ts +0 -23
  325. package/dist/components/toast/hooks/useSwipe.js +0 -59
  326. package/dist/components/toast/hooks/useSwipe.js.map +0 -1
  327. package/dist/components/toast/hooks/useTheme.d.ts +0 -2
  328. package/dist/components/toast/hooks/useTheme.js +0 -22
  329. package/dist/components/toast/hooks/useTheme.js.map +0 -1
  330. package/dist/components/toast/hooks/useToastHeight.d.ts +0 -11
  331. package/dist/components/toast/hooks/useToastHeight.js +0 -35
  332. package/dist/components/toast/hooks/useToastHeight.js.map +0 -1
  333. package/dist/components/toast/hooks/useToastSubscription.d.ts +0 -5
  334. package/dist/components/toast/hooks/useToastSubscription.js +0 -38
  335. package/dist/components/toast/hooks/useToastSubscription.js.map +0 -1
  336. package/dist/components/toast/hooks/useToastTimer.d.ts +0 -11
  337. package/dist/components/toast/hooks/useToastTimer.js +0 -22
  338. package/dist/components/toast/hooks/useToastTimer.js.map +0 -1
  339. package/dist/components/toast/hooks/useToasterKeyboard.d.ts +0 -7
  340. package/dist/components/toast/hooks/useToasterKeyboard.js +0 -14
  341. package/dist/components/toast/hooks/useToasterKeyboard.js.map +0 -1
  342. package/dist/components/toast/hooks.d.ts +0 -13
  343. package/dist/components/toast/hooks.js +0 -37
  344. package/dist/components/toast/hooks.js.map +0 -1
  345. package/dist/components/toast/state.d.ts +0 -52
  346. package/dist/components/toast/state.js +0 -170
  347. package/dist/components/toast/state.js.map +0 -1
  348. package/dist/components/toast/types.d.ts +0 -168
  349. package/dist/components/toast/types.js +0 -6
  350. package/dist/components/toast/types.js.map +0 -1
  351. package/dist/components/toast/utils.d.ts +0 -10
  352. package/dist/components/toast/utils.js +0 -39
  353. package/dist/components/toast/utils.js.map +0 -1
@@ -1,163 +0,0 @@
1
- import { assignOffset as e, getDocumentDirection as t } from "../utils.js";
2
- import { Toast as n } from "./Toast.js";
3
- import { useTheme as r } from "../hooks/useTheme.js";
4
- import { useToasterKeyboard as i } from "../hooks/useToasterKeyboard.js";
5
- import { useToastSubscription as a } from "../hooks/useToastSubscription.js";
6
- import { Portal as o, className as s, createComponent as c, delegateEvents as l, effect as u, insert as d, setAttribute as f, style as p, template as m, use as h } from "solid-js/web";
7
- import { For as g, Show as _, createMemo as v, createSignal as y, mergeProps as b } from "solid-js";
8
- //#region src/components/toast/components/Toaster.tsx
9
- var x = /*#__PURE__*/ m("<section tabindex=-1 aria-live=polite aria-relevant=\"additions text\"aria-atomic=false>"), S = /*#__PURE__*/ m("<ol tabindex=-1 data-sonner-toaster>"), C = (l) => {
10
- console.warn("The current `Toast` component still has many bugs, which originate from the upstream component library at https://github.com/emilkowalski/sonner. If you encounter a bug, you can file an issue in the upstream repository or in this repository. The design concept of the upstream project is very impressive, but due to poor code quality, this component will not stay in sync with the upstream code unless the upstream adds significantly more impressive features. Bugs and some edge cases will be fixed independently.");
11
- let m = b({
12
- position: "bottom-right",
13
- hotkey: ["altKey", "KeyT"],
14
- gap: 14,
15
- visibleToasts: 3,
16
- dir: t(),
17
- containerAriaLabel: "Notifications"
18
- }, l), C = () => m.hotkey.join("+").replace(/Key/g, "").replace(/Digit/g, ""), [w, T] = y([]), [E, D] = y(!1), [O, k] = y(!1), A, j = null, M = !1, N = r(() => l.theme ?? "light"), { toasts: P, removeToast: F } = a();
19
- i({
20
- hotkey: m.hotkey,
21
- listRef: () => A,
22
- setExpanded: D
23
- });
24
- let I = v(() => {
25
- let e = l.id;
26
- return e ? P().filter((t) => t.toasterId === e) : P().filter((e) => !e.toasterId);
27
- }), L = v(() => Array.from(new Set([m.position].concat(I().filter((e) => e.position).map((e) => e.position)))));
28
- v(() => {
29
- P().length <= 1 && D(!1);
30
- });
31
- let R = (e) => {
32
- e.target.dataset.dismissible !== "false" && (M || (M = !0, j = e.relatedTarget));
33
- }, z = (e) => {
34
- let t = e.currentTarget;
35
- M && !t.contains(e.relatedTarget) && (M = !1, j &&= (j.focus({ preventScroll: !0 }), null));
36
- }, B = v(() => e(l.offset, l.mobileOffset));
37
- return c(o, { get children() {
38
- var e = x();
39
- return d(e, c(g, {
40
- get each() {
41
- return L();
42
- },
43
- children: (e) => {
44
- let [r, i] = e.split("-"), a = () => I().filter((t) => !t.position && e === m.position || t.position === e);
45
- return c(_, {
46
- get when() {
47
- return a().length > 0;
48
- },
49
- get children() {
50
- var o = S();
51
- return o.$$pointerup = () => k(!1), o.$$pointerdown = (e) => {
52
- e.target.dataset.dismissible !== "false" && k(!0);
53
- }, o.addEventListener("dragend", () => D(!1)), o.addEventListener("mouseleave", () => {
54
- O() || D(!1);
55
- }), o.$$mousemove = () => D(!0), o.addEventListener("mouseenter", () => D(!0)), o.addEventListener("focus", R), o.addEventListener("blur", z), h((e) => A = e, o), f(o, "data-y-position", r), f(o, "data-x-position", i), d(o, c(g, {
56
- get each() {
57
- return a();
58
- },
59
- children: (t, r) => {
60
- let i = v(() => w().filter((e) => e.position === t.position));
61
- return c(n, {
62
- get icons() {
63
- return l.icons;
64
- },
65
- get index() {
66
- return r();
67
- },
68
- toast: t,
69
- get defaultRichColors() {
70
- return l.richColors;
71
- },
72
- get duration() {
73
- return l.toastOptions?.duration ?? l.duration;
74
- },
75
- get class() {
76
- return l.toastOptions?.class;
77
- },
78
- get descriptionClass() {
79
- return l.toastOptions?.descriptionClass;
80
- },
81
- get invert() {
82
- return l.invert ?? !1;
83
- },
84
- get visibleToasts() {
85
- return m.visibleToasts;
86
- },
87
- get closeButton() {
88
- return l.toastOptions?.closeButton ?? l.closeButton ?? !1;
89
- },
90
- get interacting() {
91
- return O();
92
- },
93
- position: e,
94
- get style() {
95
- return l.toastOptions?.style;
96
- },
97
- get unstyled() {
98
- return l.toastOptions?.unstyled;
99
- },
100
- get classes() {
101
- return l.toastOptions?.classes;
102
- },
103
- get cancelButtonStyle() {
104
- return l.toastOptions?.cancelButtonStyle;
105
- },
106
- get actionButtonStyle() {
107
- return l.toastOptions?.actionButtonStyle;
108
- },
109
- get closeButtonAriaLabel() {
110
- return l.toastOptions?.closeButtonAriaLabel;
111
- },
112
- removeToast: F,
113
- get toasts() {
114
- return a();
115
- },
116
- get heights() {
117
- return i();
118
- },
119
- setHeights: T,
120
- get expandByDefault() {
121
- return l.expand ?? !1;
122
- },
123
- get gap() {
124
- return m.gap;
125
- },
126
- get expanded() {
127
- return E();
128
- },
129
- get swipeDirections() {
130
- return l.swipeDirections;
131
- }
132
- });
133
- }
134
- })), u((e) => {
135
- var n = m.dir === "auto" ? t() : m.dir, r = l.class, i = N(), a = {
136
- "--front-toast-height": `${w()[0]?.height ?? 0}px`,
137
- "--width": "356px",
138
- "--gap": `${m.gap}px`,
139
- ...l.style,
140
- ...B()
141
- };
142
- return n !== e.e && f(o, "dir", e.e = n), r !== e.t && s(o, e.t = r), i !== e.a && f(o, "data-sonner-theme", e.a = i), e.o = p(o, a, e.o), e;
143
- }, {
144
- e: void 0,
145
- t: void 0,
146
- a: void 0,
147
- o: void 0
148
- }), o;
149
- }
150
- });
151
- }
152
- })), u(() => f(e, "aria-label", l.customAriaLabel ?? `${m.containerAriaLabel} ${C()}`)), e;
153
- } });
154
- };
155
- l([
156
- "mousemove",
157
- "pointerdown",
158
- "pointerup"
159
- ]);
160
- //#endregion
161
- export { C as Toaster };
162
-
163
- //# sourceMappingURL=Toaster.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Toaster.js","names":["createMemo","createSignal","For","mergeProps","Show","Component","Toast","useTheme","useToasterKeyboard","useToastSubscription","assignOffset","getDocumentDirection","GAP","TOAST_WIDTH","VISIBLE_TOASTS_AMOUNT","HeightT","Position","ToasterProps","Portal","Toaster","props","console","warn","merged","position","hotkey","gap","visibleToasts","dir","containerAriaLabel","const","hotkeyLabel","join","replace","heights","setHeights","expanded","setExpanded","interacting","setInteracting","listRef","HTMLOListElement","lastFocusedElement","HTMLElement","isFocusWithin","actualTheme","theme","toasts","removeToast","filteredToasts","id","filter","t","toasterId","possiblePositions","Array","from","Set","concat","map","length","onFocus","e","FocusEvent","target","dataset","dismissible","relatedTarget","onBlur","currentTarget","contains","Node","focus","preventScroll","offsetVars","offset","mobileOffset","_$createComponent","children","_el$","_tmpl$","_$insert","each","pos","posY","posX","split","toastsForPos","when","_el$2","_tmpl$2","$$pointerup","$$pointerdown","addEventListener","$$mousemove","_$use","el","_$setAttribute","toast","index","heightsForPos","h","icons","defaultRichColors","richColors","duration","toastOptions","class","descriptionClass","invert","closeButton","style","unstyled","classes","cancelButtonStyle","actionButtonStyle","closeButtonAriaLabel","expandByDefault","expand","swipeDirections","_$effect","_p$","_v$","_v$2","_v$3","_v$4","height","_$className","a","o","_$style","undefined","customAriaLabel","_$delegateEvents"],"sources":["../../../../src/components/toast/components/Toaster.tsx"],"sourcesContent":["/**\n * components/Toaster.tsx\n * Root component that renders the toast container(s) into a portal.\n * Single responsibility: layout, positioning, and orchestrating sub-components/hooks.\n * All state logic is delegated to dedicated hooks.\n */\nimport {\n createMemo,\n createSignal,\n For,\n mergeProps,\n Show,\n type Component,\n} from \"solid-js\";\nimport { Toast } from \"./Toast\";\nimport { useTheme } from \"../hooks/useTheme\";\nimport { useToasterKeyboard } from \"../hooks/useToasterKeyboard\";\nimport { useToastSubscription } from \"../hooks/useToastSubscription\";\nimport { assignOffset, getDocumentDirection } from \"../utils\";\nimport { GAP, TOAST_WIDTH, VISIBLE_TOASTS_AMOUNT } from \"../constants\";\nimport type { HeightT, Position, ToasterProps } from \"../types\";\nimport { Portal } from \"solid-js/web\";\n\nexport const Toaster: Component<ToasterProps> = (props) => {\n console.warn(\n \"The current `Toast` component still has many bugs, which originate from the upstream component library at https://github.com/emilkowalski/sonner. If you encounter a bug, you can file an issue in the upstream repository or in this repository. The design concept of the upstream project is very impressive, but due to poor code quality, this component will not stay in sync with the upstream code unless the upstream adds significantly more impressive features. Bugs and some edge cases will be fixed independently.\",\n );\n\n const merged = mergeProps(\n {\n position: \"bottom-right\",\n hotkey: [\"altKey\", \"KeyT\"] as string[],\n gap: GAP,\n visibleToasts: VISIBLE_TOASTS_AMOUNT,\n dir: getDocumentDirection(),\n containerAriaLabel: \"Notifications\",\n } as const,\n props,\n );\n\n const hotkeyLabel = () =>\n merged.hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\");\n\n // ─── Local state ──────────────────────────────────────────────────────────────\n const [heights, setHeights] = createSignal<HeightT[]>([]);\n const [expanded, setExpanded] = createSignal(false);\n const [interacting, setInteracting] = createSignal(false);\n\n let listRef: HTMLOListElement | undefined;\n let lastFocusedElement: HTMLElement | null = null;\n let isFocusWithin = false;\n\n // ─── Composed hooks ───────────────────────────────────────────────────────────\n const actualTheme = useTheme(() => props.theme ?? \"light\");\n const { toasts, removeToast } = useToastSubscription();\n\n useToasterKeyboard({\n hotkey: merged.hotkey,\n listRef: () => listRef,\n setExpanded,\n });\n\n // ─── Derived data ─────────────────────────────────────────────────────────────\n /** Toasts that belong to this specific Toaster instance (by id) */\n const filteredToasts = createMemo(() => {\n const id = props.id;\n return id\n ? toasts().filter((t) => t.toasterId === id)\n : toasts().filter((t) => !t.toasterId);\n });\n\n /** All unique positions used by active toasts (plus the default position) */\n const possiblePositions = createMemo(() =>\n Array.from(\n new Set(\n [merged.position].concat(\n filteredToasts()\n .filter((t) => t.position)\n .map((t) => t.position as Position),\n ),\n ),\n ),\n );\n\n // Collapse when only one toast remains\n createMemo(() => {\n if (toasts().length <= 1) setExpanded(false);\n });\n\n // ─── Focus management ─────────────────────────────────────────────────────────\n const onFocus = (e: FocusEvent) => {\n const target = e.target as HTMLElement;\n if (target.dataset.dismissible === \"false\") return;\n if (!isFocusWithin) {\n isFocusWithin = true;\n lastFocusedElement = e.relatedTarget as HTMLElement;\n }\n };\n\n const onBlur = (e: FocusEvent) => {\n const currentTarget = e.currentTarget as HTMLElement;\n if (isFocusWithin && !currentTarget.contains(e.relatedTarget as Node)) {\n isFocusWithin = false;\n if (lastFocusedElement) {\n lastFocusedElement.focus({ preventScroll: true });\n lastFocusedElement = null;\n }\n }\n };\n\n // ─── CSS offset vars ──────────────────────────────────────────────────────────\n const offsetVars = createMemo(() =>\n assignOffset(props.offset, props.mobileOffset),\n );\n\n return (\n <Portal>\n <section\n aria-label={\n props.customAriaLabel ??\n `${merged.containerAriaLabel} ${hotkeyLabel()}`\n }\n tabIndex={-1}\n aria-live=\"polite\"\n aria-relevant=\"additions text\"\n aria-atomic=\"false\"\n >\n <For each={possiblePositions()}>\n {(pos) => {\n const [posY, posX] = pos.split(\"-\");\n const toastsForPos = () =>\n filteredToasts().filter(\n (t) =>\n (!t.position && pos === merged.position) ||\n t.position === pos,\n );\n\n return (\n <Show when={toastsForPos().length > 0}>\n <ol\n ref={(el) => (listRef = el)}\n dir={\n merged.dir === \"auto\" ? getDocumentDirection() : merged.dir\n }\n tabIndex={-1}\n class={props.class}\n data-sonner-toaster\n data-sonner-theme={actualTheme()}\n data-y-position={posY}\n data-x-position={posX}\n style={{\n \"--front-toast-height\": `${heights()[0]?.height ?? 0}px`,\n \"--width\": `${TOAST_WIDTH}px`,\n \"--gap\": `${merged.gap}px`,\n ...(props.style as any),\n ...offsetVars(),\n }}\n onBlur={onBlur}\n onFocus={onFocus}\n onMouseEnter={() => setExpanded(true)}\n onMouseMove={() => setExpanded(true)}\n onMouseLeave={() => {\n if (!interacting()) setExpanded(false);\n }}\n onDragEnd={() => setExpanded(false)}\n onPointerDown={(e) => {\n const target = e.target as HTMLElement;\n if (target.dataset.dismissible === \"false\") return;\n setInteracting(true);\n }}\n onPointerUp={() => setInteracting(false)}\n >\n <For each={toastsForPos()}>\n {(toast, index) => {\n const heightsForPos = createMemo(() =>\n heights().filter((h) => h.position === toast.position),\n );\n\n return (\n <Toast\n icons={props.icons}\n index={index()}\n toast={toast}\n defaultRichColors={props.richColors}\n duration={\n props.toastOptions?.duration ?? props.duration\n }\n class={props.toastOptions?.class}\n descriptionClass={\n props.toastOptions?.descriptionClass\n }\n invert={props.invert ?? false}\n visibleToasts={merged.visibleToasts}\n closeButton={\n props.toastOptions?.closeButton ??\n props.closeButton ??\n false\n }\n interacting={interacting()}\n position={pos}\n style={props.toastOptions?.style}\n unstyled={props.toastOptions?.unstyled}\n classes={props.toastOptions?.classes}\n cancelButtonStyle={\n props.toastOptions?.cancelButtonStyle\n }\n actionButtonStyle={\n props.toastOptions?.actionButtonStyle\n }\n closeButtonAriaLabel={\n props.toastOptions?.closeButtonAriaLabel\n }\n removeToast={removeToast}\n toasts={toastsForPos()}\n heights={heightsForPos()}\n setHeights={setHeights}\n expandByDefault={props.expand ?? false}\n gap={merged.gap}\n expanded={expanded()}\n swipeDirections={props.swipeDirections}\n />\n );\n }}\n </For>\n </ol>\n </Show>\n );\n }}\n </For>\n </section>\n </Portal>\n );\n};\n"],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /** How many toasts are visible at once (stacked) */
2
- export declare const VISIBLE_TOASTS_AMOUNT = 3;
3
- /** Default desktop viewport offset */
4
- export declare const VIEWPORT_OFFSET = "24px";
5
- /** Default mobile viewport offset */
6
- export declare const MOBILE_VIEWPORT_OFFSET = "16px";
7
- /** Auto-dismiss duration in milliseconds */
8
- export declare const TOAST_LIFETIME = 4000;
9
- /** Default toast width in pixels */
10
- export declare const TOAST_WIDTH = 356;
11
- /** Vertical gap between stacked toasts in pixels */
12
- export declare const GAP = 14;
13
- /** Minimum swipe distance (px) or velocity to dismiss */
14
- export declare const SWIPE_THRESHOLD = 45;
15
- /** Delay (ms) before removing a dismissed toast from the DOM */
16
- export declare const TIME_BEFORE_UNMOUNT = 200;
@@ -1,6 +0,0 @@
1
- //#region src/components/toast/constants.ts
2
- var e = "24px", t = "16px", n = 4e3;
3
- //#endregion
4
- export { t as MOBILE_VIEWPORT_OFFSET, n as TOAST_LIFETIME, e as VIEWPORT_OFFSET };
5
-
6
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","names":[],"sources":["../../../src/components/toast/constants.ts"],"sourcesContent":["/** How many toasts are visible at once (stacked) */\nexport const VISIBLE_TOASTS_AMOUNT = 3;\n\n/** Default desktop viewport offset */\nexport const VIEWPORT_OFFSET = \"24px\";\n\n/** Default mobile viewport offset */\nexport const MOBILE_VIEWPORT_OFFSET = \"16px\";\n\n/** Auto-dismiss duration in milliseconds */\nexport const TOAST_LIFETIME = 4000;\n\n/** Default toast width in pixels */\nexport const TOAST_WIDTH = 356;\n\n/** Vertical gap between stacked toasts in pixels */\nexport const GAP = 14;\n\n/** Minimum swipe distance (px) or velocity to dismiss */\nexport const SWIPE_THRESHOLD = 45;\n\n/** Delay (ms) before removing a dismissed toast from the DOM */\nexport const TIME_BEFORE_UNMOUNT = 200;\n"],"mappings":";AAIA,IAAa,IAAkB,QAGlB,IAAyB,QAGzB,IAAiB"}
@@ -1,23 +0,0 @@
1
- import { SwipeDirection, ToastT } from '../types';
2
- interface UseSwipeOptions {
3
- toastRef: () => HTMLLIElement | undefined;
4
- toast: ToastT;
5
- dismissible: boolean;
6
- position: string;
7
- swipeDirections?: SwipeDirection[];
8
- offset: () => number;
9
- deleteToast: () => void;
10
- }
11
- export declare function useSwipe(opts: UseSwipeOptions): {
12
- swiping: import('solid-js').Accessor<boolean>;
13
- swipeOut: import('solid-js').Accessor<boolean>;
14
- swipeOutDirection: import('solid-js').Accessor<"left" | "right" | "up" | "down" | null>;
15
- isSwiped: import('solid-js').Accessor<boolean>;
16
- offsetBeforeRemove: import('solid-js').Accessor<number>;
17
- setOffsetBeforeRemove: import('solid-js').Setter<number>;
18
- onPointerDown: (e: PointerEvent) => void;
19
- onPointerUp: () => void;
20
- onPointerMove: (e: PointerEvent) => void;
21
- onDragEnd: () => void;
22
- };
23
- export {};
@@ -1,59 +0,0 @@
1
- import { getDefaultSwipeDirections as e } from "../utils.js";
2
- import { createSignal as t } from "solid-js";
3
- //#region src/components/toast/hooks/useSwipe.ts
4
- function n(n) {
5
- let [r, i] = t(!1), [a, o] = t(!1), [s, c] = t(null), [l, u] = t(!1), [d, f] = t(0), p = null, m = null, h = null, g = () => n.toast.type === "loading";
6
- return {
7
- swiping: r,
8
- swipeOut: a,
9
- swipeOutDirection: s,
10
- isSwiped: l,
11
- offsetBeforeRemove: d,
12
- setOffsetBeforeRemove: f,
13
- onPointerDown: (e) => {
14
- e.button !== 2 && (g() || !n.dismissible || (h = /* @__PURE__ */ new Date(), f(n.offset()), e.target.setPointerCapture(e.pointerId), e.target.tagName !== "BUTTON" && (i(!0), m = {
15
- x: e.clientX,
16
- y: e.clientY
17
- })));
18
- },
19
- onPointerUp: () => {
20
- if (a() || !n.dismissible) return;
21
- m = null;
22
- let e = n.toastRef(), t = Number(e?.style.getPropertyValue("--swipe-amount-x").replace("px", "") || 0), r = Number(e?.style.getPropertyValue("--swipe-amount-y").replace("px", "") || 0), s = Date.now() - (h?.getTime() ?? 0), l = p === "x" ? t : r, d = Math.abs(l) / s;
23
- if (Math.abs(l) >= 45 || d > .11) {
24
- f(n.offset()), n.toast.onDismiss?.(n.toast), c(p === "x" ? t > 0 ? "right" : "left" : r > 0 ? "down" : "up"), n.deleteToast(), o(!0);
25
- return;
26
- }
27
- e?.style.setProperty("--swipe-amount-x", "0px"), e?.style.setProperty("--swipe-amount-y", "0px"), u(!1), i(!1), p = null;
28
- },
29
- onPointerMove: (t) => {
30
- if (!m || !n.dismissible || (window.getSelection()?.toString().length ?? 0) > 0) return;
31
- let r = t.clientY - m.y, i = t.clientX - m.x, a = n.swipeDirections ?? e(n.position);
32
- !p && (Math.abs(i) > 1 || Math.abs(r) > 1) && (p = Math.abs(i) > Math.abs(r) ? "x" : "y");
33
- let o = (e) => 1 / (1.5 + Math.abs(e) / 20), s = {
34
- x: 0,
35
- y: 0
36
- };
37
- if (p === "y" && (a.includes("top") || a.includes("bottom"))) if (a.includes("top") && r < 0 || a.includes("bottom") && r > 0) s.y = r;
38
- else {
39
- let e = r * o(r);
40
- s.y = Math.abs(e) < Math.abs(r) ? e : r;
41
- }
42
- else if (p === "x" && (a.includes("left") || a.includes("right"))) if (a.includes("left") && i < 0 || a.includes("right") && i > 0) s.x = i;
43
- else {
44
- let e = i * o(i);
45
- s.x = Math.abs(e) < Math.abs(i) ? e : i;
46
- }
47
- (Math.abs(s.x) > 0 || Math.abs(s.y) > 0) && u(!0);
48
- let c = n.toastRef();
49
- c?.style.setProperty("--swipe-amount-x", `${s.x}px`), c?.style.setProperty("--swipe-amount-y", `${s.y}px`);
50
- },
51
- onDragEnd: () => {
52
- i(!1), p = null, m = null;
53
- }
54
- };
55
- }
56
- //#endregion
57
- export { n as useSwipe };
58
-
59
- //# sourceMappingURL=useSwipe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSwipe.js","names":[],"sources":["../../../../src/components/toast/hooks/useSwipe.ts"],"sourcesContent":["import { createSignal } from \"solid-js\";\nimport { SWIPE_THRESHOLD } from \"../constants\";\nimport { getDefaultSwipeDirections } from \"../utils\";\nimport type { SwipeDirection, ToastT } from \"../types\";\n\ninterface UseSwipeOptions {\n toastRef: () => HTMLLIElement | undefined;\n toast: ToastT;\n dismissible: boolean;\n position: string;\n swipeDirections?: SwipeDirection[];\n offset: () => number;\n deleteToast: () => void;\n}\n\nexport function useSwipe(opts: UseSwipeOptions) {\n const [swiping, setSwiping] = createSignal(false);\n const [swipeOut, setSwipeOut] = createSignal(false);\n const [swipeOutDirection, setSwipeOutDirection] = createSignal<\n \"left\" | \"right\" | \"up\" | \"down\" | null\n >(null);\n const [isSwiped, setIsSwiped] = createSignal(false);\n const [offsetBeforeRemove, setOffsetBeforeRemove] = createSignal(0);\n\n let swipeDirection: \"x\" | \"y\" | null = null;\n let pointerStart: { x: number; y: number } | null = null;\n let dragStartTime: Date | null = null;\n\n const disabled = () => opts.toast.type === \"loading\";\n\n const onPointerDown = (e: PointerEvent) => {\n if (e.button === 2) return;\n if (disabled() || !opts.dismissible) return;\n dragStartTime = new Date();\n setOffsetBeforeRemove(opts.offset());\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n if ((e.target as HTMLElement).tagName === \"BUTTON\") return;\n setSwiping(true);\n pointerStart = { x: e.clientX, y: e.clientY };\n };\n\n const onPointerUp = () => {\n if (swipeOut() || !opts.dismissible) return;\n pointerStart = null;\n\n const el = opts.toastRef();\n const amtX = Number(\n el?.style.getPropertyValue(\"--swipe-amount-x\").replace(\"px\", \"\") || 0,\n );\n const amtY = Number(\n el?.style.getPropertyValue(\"--swipe-amount-y\").replace(\"px\", \"\") || 0,\n );\n const timeTaken = Date.now() - (dragStartTime?.getTime() ?? 0);\n const swipeAmt = swipeDirection === \"x\" ? amtX : amtY;\n const velocity = Math.abs(swipeAmt) / timeTaken;\n\n if (Math.abs(swipeAmt) >= SWIPE_THRESHOLD || velocity > 0.11) {\n setOffsetBeforeRemove(opts.offset());\n opts.toast.onDismiss?.(opts.toast);\n if (swipeDirection === \"x\") {\n setSwipeOutDirection(amtX > 0 ? \"right\" : \"left\");\n } else {\n setSwipeOutDirection(amtY > 0 ? \"down\" : \"up\");\n }\n opts.deleteToast();\n setSwipeOut(true);\n return;\n }\n\n el?.style.setProperty(\"--swipe-amount-x\", \"0px\");\n el?.style.setProperty(\"--swipe-amount-y\", \"0px\");\n setIsSwiped(false);\n setSwiping(false);\n swipeDirection = null;\n };\n\n const onPointerMove = (e: PointerEvent) => {\n if (!pointerStart || !opts.dismissible) return;\n if ((window.getSelection()?.toString().length ?? 0) > 0) return;\n\n const yDelta = e.clientY - pointerStart.y;\n const xDelta = e.clientX - pointerStart.x;\n const dirs =\n opts.swipeDirections ?? getDefaultSwipeDirections(opts.position);\n\n if (!swipeDirection && (Math.abs(xDelta) > 1 || Math.abs(yDelta) > 1)) {\n swipeDirection = Math.abs(xDelta) > Math.abs(yDelta) ? \"x\" : \"y\";\n }\n\n const getDampen = (delta: number) => 1 / (1.5 + Math.abs(delta) / 20);\n\n const swipeAmt = { x: 0, y: 0 };\n\n if (\n swipeDirection === \"y\" &&\n (dirs.includes(\"top\") || dirs.includes(\"bottom\"))\n ) {\n if (\n (dirs.includes(\"top\") && yDelta < 0) ||\n (dirs.includes(\"bottom\") && yDelta > 0)\n ) {\n swipeAmt.y = yDelta;\n } else {\n const d = yDelta * getDampen(yDelta);\n swipeAmt.y = Math.abs(d) < Math.abs(yDelta) ? d : yDelta;\n }\n } else if (\n swipeDirection === \"x\" &&\n (dirs.includes(\"left\") || dirs.includes(\"right\"))\n ) {\n if (\n (dirs.includes(\"left\") && xDelta < 0) ||\n (dirs.includes(\"right\") && xDelta > 0)\n ) {\n swipeAmt.x = xDelta;\n } else {\n const d = xDelta * getDampen(xDelta);\n swipeAmt.x = Math.abs(d) < Math.abs(xDelta) ? d : xDelta;\n }\n }\n\n if (Math.abs(swipeAmt.x) > 0 || Math.abs(swipeAmt.y) > 0) setIsSwiped(true);\n\n const el = opts.toastRef();\n el?.style.setProperty(\"--swipe-amount-x\", `${swipeAmt.x}px`);\n el?.style.setProperty(\"--swipe-amount-y\", `${swipeAmt.y}px`);\n };\n\n const onDragEnd = () => {\n setSwiping(false);\n swipeDirection = null;\n pointerStart = null;\n };\n\n return {\n swiping,\n swipeOut,\n swipeOutDirection,\n isSwiped,\n offsetBeforeRemove,\n setOffsetBeforeRemove,\n onPointerDown,\n onPointerUp,\n onPointerMove,\n onDragEnd,\n };\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { Theme } from '../types';
2
- export declare function useTheme(theme: () => Theme | "system"): import('solid-js').Accessor<Theme>;
@@ -1,22 +0,0 @@
1
- import { createEffect as e, createSignal as t, onCleanup as n } from "solid-js";
2
- //#region src/components/toast/hooks/useTheme.ts
3
- function r(r) {
4
- let i = () => typeof window < "u" && window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light", [a, o] = t(r() === "system" ? i() : r());
5
- return e(() => {
6
- if (r() !== "system") {
7
- o(r());
8
- return;
9
- }
10
- if (o(i()), typeof window > "u") return;
11
- let e = window.matchMedia("(prefers-color-scheme: dark)"), t = (e) => o(e.matches ? "dark" : "light");
12
- try {
13
- e.addEventListener("change", t), n(() => e.removeEventListener("change", t));
14
- } catch {
15
- e.addListener(t), n(() => e.removeListener(t));
16
- }
17
- }), a;
18
- }
19
- //#endregion
20
- export { r as useTheme };
21
-
22
- //# sourceMappingURL=useTheme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTheme.js","names":[],"sources":["../../../../src/components/toast/hooks/useTheme.ts"],"sourcesContent":["import { createEffect, createSignal, onCleanup } from \"solid-js\";\nimport type { Theme } from \"../types\";\n\nexport function useTheme(theme: () => Theme | \"system\") {\n const getSystemTheme = (): Theme =>\n typeof window !== \"undefined\" &&\n window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n\n const [actualTheme, setActualTheme] = createSignal<Theme>(\n theme() !== \"system\" ? (theme() as Theme) : getSystemTheme(),\n );\n\n createEffect(() => {\n if (theme() !== \"system\") {\n setActualTheme(theme() as Theme);\n return;\n }\n\n setActualTheme(getSystemTheme());\n\n if (typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (e: MediaQueryListEvent) =>\n setActualTheme(e.matches ? \"dark\" : \"light\");\n\n try {\n mq.addEventListener(\"change\", handler);\n onCleanup(() => mq.removeEventListener(\"change\", handler));\n } catch {\n // Safari < 14 fallback\n mq.addListener(handler);\n onCleanup(() => mq.removeListener(handler as any));\n }\n });\n\n return actualTheme;\n}\n"],"mappings":";;AAGA,SAAgB,EAAS,GAA+B;CACtD,IAAM,UACJ,OAAO,SAAW,OAClB,OAAO,aAAa,8BAA8B,CAAC,CAAC,UAChD,SACA,SAEA,CAAC,GAAa,KAAkB,EACpC,EAAM,MAAM,WAAgC,EAAe,IAAnC,EAAM,CAChC;CAyBA,OAvBA,QAAmB;EACjB,IAAI,EAAM,MAAM,UAAU;GACxB,EAAe,EAAM,CAAU;GAC/B;EACF;EAIA,IAFA,EAAe,EAAe,CAAC,GAE3B,OAAO,SAAW,KAAa;EACnC,IAAM,IAAK,OAAO,WAAW,8BAA8B,GACrD,KAAW,MACf,EAAe,EAAE,UAAU,SAAS,OAAO;EAE7C,IAAI;GAEF,AADA,EAAG,iBAAiB,UAAU,CAAO,GACrC,QAAgB,EAAG,oBAAoB,UAAU,CAAO,CAAC;EAC3D,QAAQ;GAGN,AADA,EAAG,YAAY,CAAO,GACtB,QAAgB,EAAG,eAAe,CAAc,CAAC;EACnD;CACF,CAAC,GAEM;AACT"}
@@ -1,11 +0,0 @@
1
- import { HeightT, ToastT } from '../types';
2
- interface UseToastHeightOptions {
3
- toastRef: () => HTMLLIElement | undefined;
4
- toast: () => ToastT;
5
- mounted: () => boolean;
6
- setHeights: (updater: (prev: HeightT[]) => HeightT[]) => void;
7
- }
8
- export declare function useToastHeight(opts: UseToastHeightOptions): {
9
- initialHeight: import('solid-js').Accessor<number>;
10
- };
11
- export {};
@@ -1,35 +0,0 @@
1
- import { createEffect as e, createSignal as t, onCleanup as n } from "solid-js";
2
- //#region src/components/toast/hooks/useToastHeight.ts
3
- function r(r) {
4
- let [i, a] = t(0), o = r.toast();
5
- return e(() => {
6
- let e = r.toastRef();
7
- if (!e) return;
8
- let t = e.getBoundingClientRect().height;
9
- a(t), r.setHeights((e) => [{
10
- toastId: o.id,
11
- height: t,
12
- position: o.position
13
- }, ...e]), n(() => r.setHeights((e) => e.filter((e) => e.toastId !== o.id)));
14
- }), e(() => {
15
- if (!r.mounted()) return;
16
- let e = r.toastRef();
17
- if (!e) return;
18
- o.title, o.description, o.jsx, o.action, o.cancel;
19
- let t = e.style.height;
20
- e.style.height = "auto";
21
- let n = e.getBoundingClientRect().height;
22
- e.style.height = t, a(n), r.setHeights((e) => e.find((e) => e.toastId === o.id) ? e.map((e) => e.toastId === o.id ? {
23
- ...e,
24
- height: n
25
- } : e) : [{
26
- toastId: o.id,
27
- height: n,
28
- position: o.position
29
- }, ...e]);
30
- }), { initialHeight: i };
31
- }
32
- //#endregion
33
- export { r as useToastHeight };
34
-
35
- //# sourceMappingURL=useToastHeight.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useToastHeight.js","names":[],"sources":["../../../../src/components/toast/hooks/useToastHeight.ts"],"sourcesContent":["import { createEffect, createSignal, onCleanup } from \"solid-js\";\nimport type { HeightT, Position, ToastT } from \"../types\";\n\ninterface UseToastHeightOptions {\n toastRef: () => HTMLLIElement | undefined;\n toast: () => ToastT;\n mounted: () => boolean;\n setHeights: (updater: (prev: HeightT[]) => HeightT[]) => void;\n}\n\nexport function useToastHeight(opts: UseToastHeightOptions) {\n const [initialHeight, setInitialHeight] = createSignal(0);\n\n const toast = opts.toast();\n\n // Register height on first mount\n createEffect(() => {\n const el = opts.toastRef();\n if (!el) return;\n const h = el.getBoundingClientRect().height;\n setInitialHeight(h);\n opts.setHeights((prev) => [\n {\n toastId: toast.id,\n height: h,\n position: toast.position as Position,\n },\n ...prev,\n ]);\n onCleanup(() =>\n opts.setHeights((prev) => prev.filter((x) => x.toastId !== toast.id)),\n );\n });\n\n // Keep height in sync when content changes\n createEffect(() => {\n if (!opts.mounted()) return;\n const el = opts.toastRef();\n if (!el) return;\n\n // Read deps so effect re-runs on content change\n void toast.title;\n void toast.description;\n void toast.jsx;\n void toast.action;\n void toast.cancel;\n\n const orig = el.style.height;\n el.style.height = \"auto\";\n const newH = el.getBoundingClientRect().height;\n el.style.height = orig;\n setInitialHeight(newH);\n\n opts.setHeights((prev) => {\n const exists = prev.find((x) => x.toastId === toast.id);\n if (!exists) {\n return [\n {\n toastId: toast.id,\n height: newH,\n position: toast.position as Position,\n },\n ...prev,\n ];\n }\n return prev.map((x) =>\n x.toastId === toast.id ? { ...x, height: newH } : x,\n );\n });\n });\n\n return { initialHeight };\n}\n"],"mappings":";;AAUA,SAAgB,EAAe,GAA6B;CAC1D,IAAM,CAAC,GAAe,KAAoB,EAAa,CAAC,GAElD,IAAQ,EAAK,MAAM;CA0DzB,OAvDA,QAAmB;EACjB,IAAM,IAAK,EAAK,SAAS;EACzB,IAAI,CAAC,GAAI;EACT,IAAM,IAAI,EAAG,sBAAsB,CAAC,CAAC;EAUrC,AATA,EAAiB,CAAC,GAClB,EAAK,YAAY,MAAS,CACxB;GACE,SAAS,EAAM;GACf,QAAQ;GACR,UAAU,EAAM;EAClB,GACA,GAAG,CACL,CAAC,GACD,QACE,EAAK,YAAY,MAAS,EAAK,QAAQ,MAAM,EAAE,YAAY,EAAM,EAAE,CAAC,CACtE;CACF,CAAC,GAGD,QAAmB;EACjB,IAAI,CAAC,EAAK,QAAQ,GAAG;EACrB,IAAM,IAAK,EAAK,SAAS;EACzB,IAAI,CAAC,GAAI;EAOT,AAJA,EAAW,OACX,EAAW,aACX,EAAW,KACX,EAAW,QACX,EAAW;EAEX,IAAM,IAAO,EAAG,MAAM;EACtB,EAAG,MAAM,SAAS;EAClB,IAAM,IAAO,EAAG,sBAAsB,CAAC,CAAC;EAIxC,AAHA,EAAG,MAAM,SAAS,GAClB,EAAiB,CAAI,GAErB,EAAK,YAAY,MACA,EAAK,MAAM,MAAM,EAAE,YAAY,EAAM,EAC/C,IAUE,EAAK,KAAK,MACf,EAAE,YAAY,EAAM,KAAK;GAAE,GAAG;GAAG,QAAQ;EAAK,IAAI,CACpD,IAXS,CACL;GACE,SAAS,EAAM;GACf,QAAQ;GACR,UAAU,EAAM;EAClB,GACA,GAAG,CACL,CAKH;CACH,CAAC,GAEM,EAAE,iBAAc;AACzB"}
@@ -1,5 +0,0 @@
1
- import { ToastT } from '../types';
2
- export declare function useToastSubscription(): {
3
- toasts: import('solid-js').Accessor<ToastT[]>;
4
- removeToast: (toast: ToastT) => void;
5
- };
@@ -1,38 +0,0 @@
1
- import { ToastState as e } from "../state.js";
2
- import { createSignal as t, onCleanup as n, onMount as r } from "solid-js";
3
- //#region src/components/toast/hooks/useToastSubscription.ts
4
- function i() {
5
- let [i, a] = t([]);
6
- return r(() => {
7
- let t = e.subscribe((e) => {
8
- if (e.dismiss) {
9
- a((t) => t.map((t) => t.id === e.id ? {
10
- ...t,
11
- delete: !0
12
- } : t));
13
- return;
14
- }
15
- a((t) => {
16
- let n = t.findIndex((t) => t.id === e.id);
17
- return n === -1 ? [e, ...t] : [
18
- ...t.slice(0, n),
19
- {
20
- ...t[n],
21
- ...e
22
- },
23
- ...t.slice(n + 1)
24
- ];
25
- });
26
- });
27
- n(t);
28
- }), {
29
- toasts: i,
30
- removeToast: (t) => {
31
- t.delete || e.dismiss(t.id), a((e) => e.filter((e) => e.id !== t.id));
32
- }
33
- };
34
- }
35
- //#endregion
36
- export { i as useToastSubscription };
37
-
38
- //# sourceMappingURL=useToastSubscription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useToastSubscription.js","names":[],"sources":["../../../../src/components/toast/hooks/useToastSubscription.ts"],"sourcesContent":["/**\n * hooks/useToastSubscription.ts\n * Subscribes to the global ToastState observable and maintains a local reactive\n * list of toasts for the Toaster component.\n * Single responsibility: state synchronization between the observer and Solid signals.\n */\nimport { createSignal, onCleanup, onMount } from \"solid-js\";\nimport { ToastState } from \"../state\";\nimport type { ToastT, ToastToDismiss } from \"../types\";\n\nexport function useToastSubscription() {\n const [toasts, setToasts] = createSignal<ToastT[]>([]);\n\n onMount(() => {\n const unsubscribe = ToastState.subscribe((incoming) => {\n if ((incoming as ToastToDismiss).dismiss) {\n // Mark as deleted — the Toast component will animate out\n setToasts((prev) =>\n prev.map((t) => (t.id === incoming.id ? { ...t, delete: true } : t)),\n );\n return;\n }\n\n setToasts((prev) => {\n const idx = prev.findIndex((t) => t.id === incoming.id);\n if (idx !== -1) {\n return [\n ...prev.slice(0, idx),\n { ...prev[idx], ...(incoming as ToastT) },\n ...prev.slice(idx + 1),\n ];\n }\n return [incoming as ToastT, ...prev];\n });\n });\n\n onCleanup(unsubscribe);\n });\n\n const removeToast = (toast: ToastT) => {\n if (!toast.delete) ToastState.dismiss(toast.id);\n setToasts((prev) => prev.filter((t) => t.id !== toast.id));\n };\n\n return { toasts, removeToast };\n}\n"],"mappings":";;;AAUA,SAAgB,IAAuB;CACrC,IAAM,CAAC,GAAQ,KAAa,EAAuB,CAAC,CAAC;CAiCrD,OA/BA,QAAc;EACZ,IAAM,IAAc,EAAW,WAAW,MAAa;GACrD,IAAK,EAA4B,SAAS;IAExC,GAAW,MACT,EAAK,KAAK,MAAO,EAAE,OAAO,EAAS,KAAK;KAAE,GAAG;KAAG,QAAQ;IAAK,IAAI,CAAE,CACrE;IACA;GACF;GAEA,GAAW,MAAS;IAClB,IAAM,IAAM,EAAK,WAAW,MAAM,EAAE,OAAO,EAAS,EAAE;IAQtD,OAPI,MAAQ,KAOL,CAAC,GAAoB,GAAG,CAAI,IAN1B;KACL,GAAG,EAAK,MAAM,GAAG,CAAG;KACpB;MAAE,GAAG,EAAK;MAAM,GAAI;KAAoB;KACxC,GAAG,EAAK,MAAM,IAAM,CAAC;IACvB;GAGJ,CAAC;EACH,CAAC;EAED,EAAU,CAAW;CACvB,CAAC,GAOM;EAAE;EAAQ,cALI,MAAkB;GAErC,AADK,EAAM,UAAQ,EAAW,QAAQ,EAAM,EAAE,GAC9C,GAAW,MAAS,EAAK,QAAQ,MAAM,EAAE,OAAO,EAAM,EAAE,CAAC;EAC3D;CAE6B;AAC/B"}
@@ -1,11 +0,0 @@
1
- import { ToastT } from '../types';
2
- interface UseToastTimerOptions {
3
- toast: ToastT;
4
- duration: number;
5
- expanded: () => boolean;
6
- interacting: () => boolean;
7
- isDocumentHidden: () => boolean;
8
- deleteToast: () => void;
9
- }
10
- export declare function useToastTimer(opts: UseToastTimerOptions): void;
11
- export {};
@@ -1,22 +0,0 @@
1
- import { createEffect as e, onCleanup as t } from "solid-js";
2
- //#region src/components/toast/hooks/useToastTimer.ts
3
- function n(n) {
4
- let r = n.toast.duration ?? n.duration, i = 0, a = 0, o, s = () => n.toast.promise && n.toast.type === "loading" || n.toast.duration === Infinity || n.toast.type === "loading", c = () => {
5
- if (a < i) {
6
- let e = Date.now() - i;
7
- r = Math.max(0, r - e);
8
- }
9
- a = Date.now();
10
- }, l = () => {
11
- r !== Infinity && (clearTimeout(o), i = Date.now(), o = setTimeout(() => {
12
- n.toast.onAutoClose?.(n.toast), n.deleteToast();
13
- }, r));
14
- };
15
- e(() => {
16
- s() || (n.expanded() || n.interacting() || n.isDocumentHidden() ? c() : l(), t(() => clearTimeout(o)));
17
- });
18
- }
19
- //#endregion
20
- export { n as useToastTimer };
21
-
22
- //# sourceMappingURL=useToastTimer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useToastTimer.js","names":[],"sources":["../../../../src/components/toast/hooks/useToastTimer.ts"],"sourcesContent":["/**\n * hooks/useToastTimer.ts\n * Manages the auto-dismiss countdown for a single toast.\n * Single responsibility: start, pause, and resume a timer; call deleteToast when done.\n */\nimport { createEffect, onCleanup } from \"solid-js\";\nimport type { ToastT } from \"../types\";\n\ninterface UseToastTimerOptions {\n toast: ToastT;\n duration: number;\n expanded: () => boolean;\n interacting: () => boolean;\n isDocumentHidden: () => boolean;\n deleteToast: () => void;\n}\n\nexport function useToastTimer(opts: UseToastTimerOptions) {\n let remainingTime = opts.toast.duration ?? opts.duration;\n let closeTimerStart = 0;\n let lastPauseTime = 0;\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n const shouldSkip = () =>\n (opts.toast.promise && opts.toast.type === \"loading\") ||\n opts.toast.duration === Infinity ||\n opts.toast.type === \"loading\";\n\n const pauseTimer = () => {\n if (lastPauseTime < closeTimerStart) {\n const elapsed = Date.now() - closeTimerStart;\n remainingTime = Math.max(0, remainingTime - elapsed);\n }\n lastPauseTime = Date.now();\n };\n\n const startTimer = () => {\n if (remainingTime === Infinity) return;\n clearTimeout(timeoutId);\n closeTimerStart = Date.now();\n timeoutId = setTimeout(() => {\n opts.toast.onAutoClose?.(opts.toast);\n opts.deleteToast();\n }, remainingTime);\n };\n\n createEffect(() => {\n if (shouldSkip()) return;\n if (opts.expanded() || opts.interacting() || opts.isDocumentHidden()) {\n pauseTimer();\n } else {\n startTimer();\n }\n onCleanup(() => clearTimeout(timeoutId));\n });\n}\n"],"mappings":";;AAiBA,SAAgB,EAAc,GAA4B;CACxD,IAAI,IAAgB,EAAK,MAAM,YAAY,EAAK,UAC5C,IAAkB,GAClB,IAAgB,GAChB,GAEE,UACH,EAAK,MAAM,WAAW,EAAK,MAAM,SAAS,aAC3C,EAAK,MAAM,aAAa,YACxB,EAAK,MAAM,SAAS,WAEhB,UAAmB;EACvB,IAAI,IAAgB,GAAiB;GACnC,IAAM,IAAU,KAAK,IAAI,IAAI;GAC7B,IAAgB,KAAK,IAAI,GAAG,IAAgB,CAAO;EACrD;EACA,IAAgB,KAAK,IAAI;CAC3B,GAEM,UAAmB;EACnB,MAAkB,aACtB,aAAa,CAAS,GACtB,IAAkB,KAAK,IAAI,GAC3B,IAAY,iBAAiB;GAE3B,AADA,EAAK,MAAM,cAAc,EAAK,KAAK,GACnC,EAAK,YAAY;EACnB,GAAG,CAAa;CAClB;CAEA,QAAmB;EACb,EAAW,MACX,EAAK,SAAS,KAAK,EAAK,YAAY,KAAK,EAAK,iBAAiB,IACjE,EAAW,IAEX,EAAW,GAEb,QAAgB,aAAa,CAAS,CAAC;CACzC,CAAC;AACH"}
@@ -1,7 +0,0 @@
1
- interface UseToasterKeyboardOptions {
2
- hotkey: string[];
3
- listRef: () => HTMLOListElement | undefined;
4
- setExpanded: (v: boolean) => void;
5
- }
6
- export declare function useToasterKeyboard(opts: UseToasterKeyboardOptions): void;
7
- export {};
@@ -1,14 +0,0 @@
1
- import { onCleanup as e, onMount as t } from "solid-js";
2
- //#region src/components/toast/hooks/useToasterKeyboard.ts
3
- function n(n) {
4
- t(() => {
5
- let t = (e) => {
6
- n.hotkey.length > 0 && n.hotkey.every((t) => e[t] || e.code === t) && (n.setExpanded(!0), n.listRef()?.focus()), e.code === "Escape" && (document.activeElement === n.listRef() || n.listRef()?.contains(document.activeElement)) && n.setExpanded(!1);
7
- };
8
- document.addEventListener("keydown", t), e(() => document.removeEventListener("keydown", t));
9
- });
10
- }
11
- //#endregion
12
- export { n as useToasterKeyboard };
13
-
14
- //# sourceMappingURL=useToasterKeyboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useToasterKeyboard.js","names":[],"sources":["../../../../src/components/toast/hooks/useToasterKeyboard.ts"],"sourcesContent":["/**\n * hooks/useToasterKeyboard.ts\n * Handles keyboard interactions for the Toaster:\n * - Custom hotkey → expand the toast list and focus it\n * - Escape → collapse the toast list\n * Single responsibility: keyboard event binding only.\n */\nimport { onCleanup, onMount } from \"solid-js\";\n\ninterface UseToasterKeyboardOptions {\n hotkey: string[];\n listRef: () => HTMLOListElement | undefined;\n setExpanded: (v: boolean) => void;\n}\n\nexport function useToasterKeyboard(opts: UseToasterKeyboardOptions) {\n onMount(() => {\n const handler = (e: KeyboardEvent) => {\n const hotkeyPressed =\n opts.hotkey.length > 0 &&\n opts.hotkey.every((k) => (e as any)[k] || e.code === k);\n\n if (hotkeyPressed) {\n opts.setExpanded(true);\n opts.listRef()?.focus();\n }\n\n if (\n e.code === \"Escape\" &&\n (document.activeElement === opts.listRef() ||\n opts.listRef()?.contains(document.activeElement))\n ) {\n opts.setExpanded(false);\n }\n };\n\n document.addEventListener(\"keydown\", handler);\n onCleanup(() => document.removeEventListener(\"keydown\", handler));\n });\n}\n"],"mappings":";;AAeA,SAAgB,EAAmB,GAAiC;CAClE,QAAc;EACZ,IAAM,KAAW,MAAqB;GAUpC,AARE,EAAK,OAAO,SAAS,KACrB,EAAK,OAAO,OAAO,MAAO,EAAU,MAAM,EAAE,SAAS,CAAC,MAGtD,EAAK,YAAY,EAAI,GACrB,EAAK,QAAQ,CAAC,EAAE,MAAM,IAItB,EAAE,SAAS,aACV,SAAS,kBAAkB,EAAK,QAAQ,KACvC,EAAK,QAAQ,CAAC,EAAE,SAAS,SAAS,aAAa,MAEjD,EAAK,YAAY,EAAK;EAE1B;EAGA,AADA,SAAS,iBAAiB,WAAW,CAAO,GAC5C,QAAgB,SAAS,oBAAoB,WAAW,CAAO,CAAC;CAClE,CAAC;AACH"}
@@ -1,13 +0,0 @@
1
- import { ToastT } from './types';
2
- /**
3
- * Returns a reactive boolean that tracks whether the browser tab is hidden.
4
- * Used to pause auto-dismiss timers while the user has switched tabs.
5
- */
6
- export declare function useIsDocumentHidden(): import('solid-js').Accessor<boolean>;
7
- /**
8
- * Subscribes to the global ToastState and returns the list of currently visible
9
- * toasts as a SolidJS signal. Useful for building custom toast UIs.
10
- */
11
- export declare function useSonner(): {
12
- toasts: import('solid-js').Accessor<ToastT[]>;
13
- };
@@ -1,37 +0,0 @@
1
- import { ToastState as e } from "./state.js";
2
- import { createSignal as t, onCleanup as n, onMount as r } from "solid-js";
3
- //#region src/components/toast/hooks.ts
4
- function i() {
5
- let [e, i] = t(document.hidden);
6
- return r(() => {
7
- let e = () => i(document.hidden);
8
- document.addEventListener("visibilitychange", e), n(() => document.removeEventListener("visibilitychange", e));
9
- }), e;
10
- }
11
- function a() {
12
- let [i, a] = t([]);
13
- return r(() => {
14
- let t = e.subscribe((e) => {
15
- if (e.dismiss) {
16
- a((t) => t.filter((t) => t.id !== e.id));
17
- return;
18
- }
19
- a((t) => {
20
- let n = t.findIndex((t) => t.id === e.id);
21
- return n === -1 ? [e, ...t] : [
22
- ...t.slice(0, n),
23
- {
24
- ...t[n],
25
- ...e
26
- },
27
- ...t.slice(n + 1)
28
- ];
29
- });
30
- });
31
- n(t);
32
- }), { toasts: i };
33
- }
34
- //#endregion
35
- export { i as useIsDocumentHidden, a as useSonner };
36
-
37
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","names":[],"sources":["../../../src/components/toast/hooks.ts"],"sourcesContent":["import { createSignal, onCleanup, onMount } from \"solid-js\";\nimport { ToastState } from \"./state\";\nimport type { ToastT, ToastToDismiss } from \"./types\";\n\n// ─── Document visibility ───────────────────────────────────────────────────────\n/**\n * Returns a reactive boolean that tracks whether the browser tab is hidden.\n * Used to pause auto-dismiss timers while the user has switched tabs.\n */\nexport function useIsDocumentHidden() {\n const [isHidden, setIsHidden] = createSignal(document.hidden);\n\n onMount(() => {\n const handler = () => setIsHidden(document.hidden);\n document.addEventListener(\"visibilitychange\", handler);\n onCleanup(() => document.removeEventListener(\"visibilitychange\", handler));\n });\n\n return isHidden;\n}\n\n// ─── Active toasts (for external consumers) ────────────────────────────────────\n/**\n * Subscribes to the global ToastState and returns the list of currently visible\n * toasts as a SolidJS signal. Useful for building custom toast UIs.\n */\nexport function useSonner() {\n const [activeToasts, setActiveToasts] = createSignal<ToastT[]>([]);\n\n onMount(() => {\n const unsubscribe = ToastState.subscribe((toast) => {\n if ((toast as ToastToDismiss).dismiss) {\n setActiveToasts((prev) => prev.filter((t) => t.id !== toast.id));\n return;\n }\n\n setActiveToasts((prev) => {\n const idx = prev.findIndex((t) => t.id === toast.id);\n if (idx !== -1) {\n return [\n ...prev.slice(0, idx),\n { ...prev[idx], ...(toast as ToastT) },\n ...prev.slice(idx + 1),\n ];\n }\n return [toast as ToastT, ...prev];\n });\n });\n\n onCleanup(unsubscribe);\n });\n\n return { toasts: activeToasts };\n}\n"],"mappings":";;;AASA,SAAgB,IAAsB;CACpC,IAAM,CAAC,GAAU,KAAe,EAAa,SAAS,MAAM;CAQ5D,OANA,QAAc;EACZ,IAAM,UAAgB,EAAY,SAAS,MAAM;EAEjD,AADA,SAAS,iBAAiB,oBAAoB,CAAO,GACrD,QAAgB,SAAS,oBAAoB,oBAAoB,CAAO,CAAC;CAC3E,CAAC,GAEM;AACT;AAOA,SAAgB,IAAY;CAC1B,IAAM,CAAC,GAAc,KAAmB,EAAuB,CAAC,CAAC;CAyBjE,OAvBA,QAAc;EACZ,IAAM,IAAc,EAAW,WAAW,MAAU;GAClD,IAAK,EAAyB,SAAS;IACrC,GAAiB,MAAS,EAAK,QAAQ,MAAM,EAAE,OAAO,EAAM,EAAE,CAAC;IAC/D;GACF;GAEA,GAAiB,MAAS;IACxB,IAAM,IAAM,EAAK,WAAW,MAAM,EAAE,OAAO,EAAM,EAAE;IAQnD,OAPI,MAAQ,KAOL,CAAC,GAAiB,GAAG,CAAI,IANvB;KACL,GAAG,EAAK,MAAM,GAAG,CAAG;KACpB;MAAE,GAAG,EAAK;MAAM,GAAI;KAAiB;KACrC,GAAG,EAAK,MAAM,IAAM,CAAC;IACvB;GAGJ,CAAC;EACH,CAAC;EAED,EAAU,CAAW;CACvB,CAAC,GAEM,EAAE,QAAQ,EAAa;AAChC"}