@gunkin/uiify 0.0.19-alpha → 0.0.22-alpha

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 (439) hide show
  1. package/agents/components.md +14 -1
  2. package/agents/index.md +32 -1
  3. package/agents/reference/components/alert.md +44 -0
  4. package/agents/reference/components/aspect-ratio.md +26 -0
  5. package/agents/reference/components/avatar.md +32 -0
  6. package/agents/reference/components/badge.md +31 -0
  7. package/agents/reference/components/breadcrumb.md +11 -1
  8. package/agents/reference/components/button.md +4 -4
  9. package/agents/reference/components/candle-chart.md +20 -1
  10. package/agents/reference/components/card.md +24 -0
  11. package/agents/reference/components/carousel.md +3 -2
  12. package/agents/reference/components/checkbox.md +2 -0
  13. package/agents/reference/components/combobox.md +2 -1
  14. package/agents/reference/components/date-picker.md +23 -0
  15. package/agents/reference/components/description-list.md +38 -0
  16. package/agents/reference/components/drawer.md +8 -1
  17. package/agents/reference/components/dropdown-menu.md +1 -1
  18. package/agents/reference/components/empty.md +45 -0
  19. package/agents/reference/components/fieldset.md +31 -0
  20. package/agents/reference/components/file-upload.md +12 -1
  21. package/agents/reference/components/form-error-summary.md +33 -0
  22. package/agents/reference/components/input-group.md +33 -0
  23. package/agents/reference/components/item.md +52 -0
  24. package/agents/reference/components/line-chart.md +1 -0
  25. package/agents/reference/components/modal.md +8 -1
  26. package/agents/reference/components/number-field.md +14 -3
  27. package/agents/reference/components/pagination.md +22 -1
  28. package/agents/reference/components/progress.md +16 -0
  29. package/agents/reference/components/slider.md +9 -1
  30. package/agents/reference/components/spinner.md +8 -1
  31. package/agents/reference/components/toast.md +14 -1
  32. package/dist/components/alert/Alert.d.ts +15 -0
  33. package/dist/components/alert/Alert.d.ts.map +1 -0
  34. package/dist/components/alert/Alert.js +61 -0
  35. package/dist/components/alert/Alert.js.map +1 -0
  36. package/dist/components/alert/index.d.ts +3 -0
  37. package/dist/components/alert/index.d.ts.map +1 -0
  38. package/dist/components/alert/index.js +7 -0
  39. package/dist/components/alert/index.js.map +1 -0
  40. package/dist/components/alert/types.d.ts +20 -0
  41. package/dist/components/alert/types.d.ts.map +1 -0
  42. package/dist/components/alert/types.js +1 -0
  43. package/dist/components/alert/types.js.map +1 -0
  44. package/dist/components/alert.d.ts +1 -0
  45. package/dist/components/alert.js +1 -0
  46. package/dist/components/aspect-ratio/AspectRatio.d.ts +7 -0
  47. package/dist/components/aspect-ratio/AspectRatio.d.ts.map +1 -0
  48. package/dist/components/aspect-ratio/AspectRatio.js +26 -0
  49. package/dist/components/aspect-ratio/AspectRatio.js.map +1 -0
  50. package/dist/components/aspect-ratio/index.d.ts +3 -0
  51. package/dist/components/aspect-ratio/index.d.ts.map +1 -0
  52. package/dist/components/aspect-ratio/index.js +5 -0
  53. package/dist/components/aspect-ratio/index.js.map +1 -0
  54. package/dist/components/aspect-ratio/types.d.ts +9 -0
  55. package/dist/components/aspect-ratio/types.d.ts.map +1 -0
  56. package/dist/components/aspect-ratio/types.js +1 -0
  57. package/dist/components/aspect-ratio/types.js.map +1 -0
  58. package/dist/components/aspect-ratio.d.ts +1 -0
  59. package/dist/components/aspect-ratio.js +1 -0
  60. package/dist/components/avatar/Avatar.d.ts +7 -0
  61. package/dist/components/avatar/Avatar.d.ts.map +1 -0
  62. package/dist/components/avatar/Avatar.js +24 -0
  63. package/dist/components/avatar/Avatar.js.map +1 -0
  64. package/dist/components/avatar/index.d.ts +3 -0
  65. package/dist/components/avatar/index.d.ts.map +1 -0
  66. package/dist/components/avatar/index.js +5 -0
  67. package/dist/components/avatar/index.js.map +1 -0
  68. package/dist/components/avatar/types.d.ts +12 -0
  69. package/dist/components/avatar/types.d.ts.map +1 -0
  70. package/dist/components/avatar/types.js +1 -0
  71. package/dist/components/avatar/types.js.map +1 -0
  72. package/dist/components/avatar.d.ts +1 -0
  73. package/dist/components/avatar.js +1 -0
  74. package/dist/components/badge/Badge.d.ts +7 -0
  75. package/dist/components/badge/Badge.d.ts.map +1 -0
  76. package/dist/components/badge/Badge.js +21 -0
  77. package/dist/components/badge/Badge.js.map +1 -0
  78. package/dist/components/badge/index.d.ts +3 -0
  79. package/dist/components/badge/index.d.ts.map +1 -0
  80. package/dist/components/badge/index.js +5 -0
  81. package/dist/components/badge/index.js.map +1 -0
  82. package/dist/components/badge/types.d.ts +11 -0
  83. package/dist/components/badge/types.d.ts.map +1 -0
  84. package/dist/components/badge/types.js +1 -0
  85. package/dist/components/badge/types.js.map +1 -0
  86. package/dist/components/badge.d.ts +1 -0
  87. package/dist/components/badge.js +1 -0
  88. package/dist/components/behavior.css +21 -9
  89. package/dist/components/behavior.css.map +1 -1
  90. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -1
  91. package/dist/components/breadcrumb/Breadcrumb.js +21 -4
  92. package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
  93. package/dist/components/breadcrumb/index.d.ts +1 -1
  94. package/dist/components/breadcrumb/index.d.ts.map +1 -1
  95. package/dist/components/breadcrumb/index.js.map +1 -1
  96. package/dist/components/breadcrumb/types.d.ts +7 -0
  97. package/dist/components/breadcrumb/types.d.ts.map +1 -1
  98. package/dist/components/button/types.d.ts +4 -0
  99. package/dist/components/button/types.d.ts.map +1 -1
  100. package/dist/components/candle-chart/CandleChart.d.ts +1 -1
  101. package/dist/components/candle-chart/CandleChart.d.ts.map +1 -1
  102. package/dist/components/candle-chart/CandleChart.js +81 -46
  103. package/dist/components/candle-chart/CandleChart.js.map +1 -1
  104. package/dist/components/candle-chart/client/CandleChartClient.d.ts.map +1 -1
  105. package/dist/components/candle-chart/client/CandleChartClient.js +5 -0
  106. package/dist/components/candle-chart/client/CandleChartClient.js.map +1 -1
  107. package/dist/components/candle-chart/index.d.ts +1 -1
  108. package/dist/components/candle-chart/index.d.ts.map +1 -1
  109. package/dist/components/candle-chart/index.js.map +1 -1
  110. package/dist/components/candle-chart/types.d.ts +17 -0
  111. package/dist/components/candle-chart/types.d.ts.map +1 -1
  112. package/dist/components/card/Card.d.ts +7 -0
  113. package/dist/components/card/Card.d.ts.map +1 -0
  114. package/dist/components/card/Card.js +16 -0
  115. package/dist/components/card/Card.js.map +1 -0
  116. package/dist/components/card/index.d.ts +3 -0
  117. package/dist/components/card/index.d.ts.map +1 -0
  118. package/dist/components/card/index.js +5 -0
  119. package/dist/components/card/index.js.map +1 -0
  120. package/dist/components/card/types.d.ts +7 -0
  121. package/dist/components/card/types.d.ts.map +1 -0
  122. package/dist/components/card/types.js +1 -0
  123. package/dist/components/card/types.js.map +1 -0
  124. package/dist/components/card.d.ts +1 -0
  125. package/dist/components/card.js +1 -0
  126. package/dist/components/carousel/CarouselMarkup.d.ts.map +1 -1
  127. package/dist/components/carousel/CarouselMarkup.js +20 -3
  128. package/dist/components/carousel/CarouselMarkup.js.map +1 -1
  129. package/dist/components/carousel/carousel-markup.js +2 -2
  130. package/dist/components/carousel/carousel-markup.js.map +1 -1
  131. package/dist/components/carousel/types.d.ts +3 -2
  132. package/dist/components/carousel/types.d.ts.map +1 -1
  133. package/dist/components/checkbox/types.d.ts +2 -0
  134. package/dist/components/checkbox/types.d.ts.map +1 -1
  135. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  136. package/dist/components/combobox/Combobox.js +37 -23
  137. package/dist/components/combobox/Combobox.js.map +1 -1
  138. package/dist/components/combobox/combobox-store.d.ts.map +1 -1
  139. package/dist/components/combobox/combobox-store.js +5 -2
  140. package/dist/components/combobox/combobox-store.js.map +1 -1
  141. package/dist/components/combobox/types.d.ts +2 -3
  142. package/dist/components/combobox/types.d.ts.map +1 -1
  143. package/dist/components/context-menu/ContextMenu.d.ts.map +1 -1
  144. package/dist/components/context-menu/ContextMenu.js +25 -5
  145. package/dist/components/context-menu/ContextMenu.js.map +1 -1
  146. package/dist/components/date-picker/DatePicker.d.ts +7 -0
  147. package/dist/components/date-picker/DatePicker.d.ts.map +1 -0
  148. package/dist/components/date-picker/DatePicker.js +19 -0
  149. package/dist/components/date-picker/DatePicker.js.map +1 -0
  150. package/dist/components/date-picker/index.d.ts +3 -0
  151. package/dist/components/date-picker/index.d.ts.map +1 -0
  152. package/dist/components/date-picker/index.js +5 -0
  153. package/dist/components/date-picker/index.js.map +1 -0
  154. package/dist/components/date-picker/types.d.ts +5 -0
  155. package/dist/components/date-picker/types.d.ts.map +1 -0
  156. package/dist/components/date-picker/types.js +1 -0
  157. package/dist/components/date-picker/types.js.map +1 -0
  158. package/dist/components/date-picker.d.ts +1 -0
  159. package/dist/components/date-picker.js +1 -0
  160. package/dist/components/description-list/DescriptionList.d.ts +15 -0
  161. package/dist/components/description-list/DescriptionList.d.ts.map +1 -0
  162. package/dist/components/description-list/DescriptionList.js +48 -0
  163. package/dist/components/description-list/DescriptionList.js.map +1 -0
  164. package/dist/components/description-list/index.d.ts +3 -0
  165. package/dist/components/description-list/index.d.ts.map +1 -0
  166. package/dist/components/description-list/index.js +7 -0
  167. package/dist/components/description-list/index.js.map +1 -0
  168. package/dist/components/description-list/types.d.ts +15 -0
  169. package/dist/components/description-list/types.d.ts.map +1 -0
  170. package/dist/components/description-list/types.js +1 -0
  171. package/dist/components/description-list/types.js.map +1 -0
  172. package/dist/components/description-list.d.ts +1 -0
  173. package/dist/components/description-list.js +1 -0
  174. package/dist/components/drawer/DrawerNative.d.ts +1 -1
  175. package/dist/components/drawer/DrawerNative.d.ts.map +1 -1
  176. package/dist/components/drawer/DrawerNative.js +5 -2
  177. package/dist/components/drawer/DrawerNative.js.map +1 -1
  178. package/dist/components/drawer/index.d.ts +1 -1
  179. package/dist/components/drawer/index.d.ts.map +1 -1
  180. package/dist/components/drawer/index.js.map +1 -1
  181. package/dist/components/drawer/types.d.ts +4 -0
  182. package/dist/components/drawer/types.d.ts.map +1 -1
  183. package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
  184. package/dist/components/dropdown-menu/DropdownMenu.js +31 -15
  185. package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -1
  186. package/dist/components/dropdown-menu/DropdownMenuBar.d.ts.map +1 -1
  187. package/dist/components/dropdown-menu/DropdownMenuBar.js +7 -5
  188. package/dist/components/dropdown-menu/DropdownMenuBar.js.map +1 -1
  189. package/dist/components/dropdown-menu/types.d.ts +1 -1
  190. package/dist/components/dropdown-menu/types.d.ts.map +1 -1
  191. package/dist/components/empty/Empty.d.ts +19 -0
  192. package/dist/components/empty/Empty.d.ts.map +1 -0
  193. package/dist/components/empty/Empty.js +56 -0
  194. package/dist/components/empty/Empty.js.map +1 -0
  195. package/dist/components/empty/index.d.ts +3 -0
  196. package/dist/components/empty/index.d.ts.map +1 -0
  197. package/dist/components/empty/index.js +8 -0
  198. package/dist/components/empty/index.js.map +1 -0
  199. package/dist/components/empty/types.d.ts +19 -0
  200. package/dist/components/empty/types.d.ts.map +1 -0
  201. package/dist/components/empty/types.js +1 -0
  202. package/dist/components/empty/types.js.map +1 -0
  203. package/dist/components/empty.d.ts +1 -0
  204. package/dist/components/empty.js +1 -0
  205. package/dist/components/fieldset/Fieldset.d.ts +11 -0
  206. package/dist/components/fieldset/Fieldset.d.ts.map +1 -0
  207. package/dist/components/fieldset/Fieldset.js +38 -0
  208. package/dist/components/fieldset/Fieldset.js.map +1 -0
  209. package/dist/components/fieldset/index.d.ts +3 -0
  210. package/dist/components/fieldset/index.d.ts.map +1 -0
  211. package/dist/components/fieldset/index.js +6 -0
  212. package/dist/components/fieldset/index.js.map +1 -0
  213. package/dist/components/fieldset/types.d.ts +11 -0
  214. package/dist/components/fieldset/types.d.ts.map +1 -0
  215. package/dist/components/fieldset/types.js +1 -0
  216. package/dist/components/fieldset/types.js.map +1 -0
  217. package/dist/components/fieldset.d.ts +1 -0
  218. package/dist/components/fieldset.js +1 -0
  219. package/dist/components/file-upload/FileUpload.d.ts.map +1 -1
  220. package/dist/components/file-upload/FileUpload.js +11 -4
  221. package/dist/components/file-upload/FileUpload.js.map +1 -1
  222. package/dist/components/file-upload/FileUploadRoot.d.ts +1 -1
  223. package/dist/components/file-upload/FileUploadRoot.d.ts.map +1 -1
  224. package/dist/components/file-upload/FileUploadRoot.js +9 -0
  225. package/dist/components/file-upload/FileUploadRoot.js.map +1 -1
  226. package/dist/components/file-upload/index.d.ts +1 -1
  227. package/dist/components/file-upload/index.d.ts.map +1 -1
  228. package/dist/components/file-upload/index.js.map +1 -1
  229. package/dist/components/file-upload/types.d.ts +8 -0
  230. package/dist/components/file-upload/types.d.ts.map +1 -1
  231. package/dist/components/form-error-summary/FormErrorSummary.d.ts +7 -0
  232. package/dist/components/form-error-summary/FormErrorSummary.d.ts.map +1 -0
  233. package/dist/components/form-error-summary/FormErrorSummary.js +25 -0
  234. package/dist/components/form-error-summary/FormErrorSummary.js.map +1 -0
  235. package/dist/components/form-error-summary/index.d.ts +3 -0
  236. package/dist/components/form-error-summary/index.d.ts.map +1 -0
  237. package/dist/components/form-error-summary/index.js +5 -0
  238. package/dist/components/form-error-summary/index.js.map +1 -0
  239. package/dist/components/form-error-summary/types.d.ts +12 -0
  240. package/dist/components/form-error-summary/types.d.ts.map +1 -0
  241. package/dist/components/form-error-summary/types.js +1 -0
  242. package/dist/components/form-error-summary/types.js.map +1 -0
  243. package/dist/components/form-error-summary.d.ts +1 -0
  244. package/dist/components/form-error-summary.js +1 -0
  245. package/dist/components/index.d.ts +13 -0
  246. package/dist/components/index.d.ts.map +1 -1
  247. package/dist/components/index.js +13 -0
  248. package/dist/components/index.js.map +1 -1
  249. package/dist/components/input-group/InputGroup.d.ts +5 -0
  250. package/dist/components/input-group/InputGroup.d.ts.map +1 -0
  251. package/dist/components/input-group/InputGroup.js +37 -0
  252. package/dist/components/input-group/InputGroup.js.map +1 -0
  253. package/dist/components/input-group/index.d.ts +3 -0
  254. package/dist/components/input-group/index.d.ts.map +1 -0
  255. package/dist/components/input-group/index.js +6 -0
  256. package/dist/components/input-group/index.js.map +1 -0
  257. package/dist/components/input-group/types.d.ts +12 -0
  258. package/dist/components/input-group/types.d.ts.map +1 -0
  259. package/dist/components/input-group/types.js +1 -0
  260. package/dist/components/input-group/types.js.map +1 -0
  261. package/dist/components/input-group.d.ts +1 -0
  262. package/dist/components/input-group.js +1 -0
  263. package/dist/components/internal/native-check-control/NativeCheckControl.d.ts.map +1 -1
  264. package/dist/components/internal/native-check-control/NativeCheckControl.js +4 -0
  265. package/dist/components/internal/native-check-control/NativeCheckControl.js.map +1 -1
  266. package/dist/components/internal/native-check-control/types.d.ts +2 -0
  267. package/dist/components/internal/native-check-control/types.d.ts.map +1 -1
  268. package/dist/components/item/Item.d.ts +23 -0
  269. package/dist/components/item/Item.d.ts.map +1 -0
  270. package/dist/components/item/Item.js +64 -0
  271. package/dist/components/item/Item.js.map +1 -0
  272. package/dist/components/item/index.d.ts +3 -0
  273. package/dist/components/item/index.d.ts.map +1 -0
  274. package/dist/components/item/index.js +9 -0
  275. package/dist/components/item/index.js.map +1 -0
  276. package/dist/components/item/types.d.ts +23 -0
  277. package/dist/components/item/types.d.ts.map +1 -0
  278. package/dist/components/item/types.js +1 -0
  279. package/dist/components/item/types.js.map +1 -0
  280. package/dist/components/item.d.ts +1 -0
  281. package/dist/components/item.js +1 -0
  282. package/dist/components/line-chart/LineChart.d.ts.map +1 -1
  283. package/dist/components/line-chart/LineChart.js +3 -2
  284. package/dist/components/line-chart/LineChart.js.map +1 -1
  285. package/dist/components/line-chart/line-chart-geometry.d.ts +2 -2
  286. package/dist/components/line-chart/line-chart-geometry.d.ts.map +1 -1
  287. package/dist/components/line-chart/line-chart-geometry.js +6 -6
  288. package/dist/components/line-chart/line-chart-geometry.js.map +1 -1
  289. package/dist/components/line-chart/types.d.ts +2 -0
  290. package/dist/components/line-chart/types.d.ts.map +1 -1
  291. package/dist/components/modal/Modal.d.ts +1 -1
  292. package/dist/components/modal/Modal.d.ts.map +1 -1
  293. package/dist/components/modal/Modal.js +5 -2
  294. package/dist/components/modal/Modal.js.map +1 -1
  295. package/dist/components/modal/index.d.ts +1 -1
  296. package/dist/components/modal/index.d.ts.map +1 -1
  297. package/dist/components/modal/index.js.map +1 -1
  298. package/dist/components/modal/types.d.ts +4 -0
  299. package/dist/components/modal/types.d.ts.map +1 -1
  300. package/dist/components/number-field/NumberField.d.ts +1 -1
  301. package/dist/components/number-field/NumberField.d.ts.map +1 -1
  302. package/dist/components/number-field/NumberField.js +25 -5
  303. package/dist/components/number-field/NumberField.js.map +1 -1
  304. package/dist/components/number-field/format.d.ts +1 -1
  305. package/dist/components/number-field/format.d.ts.map +1 -1
  306. package/dist/components/number-field/format.js +32 -7
  307. package/dist/components/number-field/format.js.map +1 -1
  308. package/dist/components/number-field/index.d.ts +1 -1
  309. package/dist/components/number-field/index.d.ts.map +1 -1
  310. package/dist/components/number-field/index.js.map +1 -1
  311. package/dist/components/number-field/types.d.ts +11 -2
  312. package/dist/components/number-field/types.d.ts.map +1 -1
  313. package/dist/components/otp-input/OtpInput.d.ts.map +1 -1
  314. package/dist/components/otp-input/OtpInput.js +2 -0
  315. package/dist/components/otp-input/OtpInput.js.map +1 -1
  316. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  317. package/dist/components/pagination/Pagination.js +93 -29
  318. package/dist/components/pagination/Pagination.js.map +1 -1
  319. package/dist/components/pagination/PaginationShell.d.ts +2 -1
  320. package/dist/components/pagination/PaginationShell.d.ts.map +1 -1
  321. package/dist/components/pagination/PaginationShell.js +44 -9
  322. package/dist/components/pagination/PaginationShell.js.map +1 -1
  323. package/dist/components/pagination/index.d.ts +1 -1
  324. package/dist/components/pagination/index.d.ts.map +1 -1
  325. package/dist/components/pagination/index.js.map +1 -1
  326. package/dist/components/pagination/types.d.ts +18 -0
  327. package/dist/components/pagination/types.d.ts.map +1 -1
  328. package/dist/components/progress/Progress.d.ts +7 -0
  329. package/dist/components/progress/Progress.d.ts.map +1 -0
  330. package/dist/components/progress/Progress.js +9 -0
  331. package/dist/components/progress/Progress.js.map +1 -0
  332. package/dist/components/progress/index.d.ts +3 -0
  333. package/dist/components/progress/index.d.ts.map +1 -0
  334. package/dist/components/progress/index.js +5 -0
  335. package/dist/components/progress/index.js.map +1 -0
  336. package/dist/components/progress/types.d.ts +3 -0
  337. package/dist/components/progress/types.d.ts.map +1 -0
  338. package/dist/components/progress/types.js +1 -0
  339. package/dist/components/progress/types.js.map +1 -0
  340. package/dist/components/progress.d.ts +1 -0
  341. package/dist/components/progress.js +1 -0
  342. package/dist/components/slider/client/SliderClient.d.ts.map +1 -1
  343. package/dist/components/slider/client/SliderClient.js +11 -2
  344. package/dist/components/slider/client/SliderClient.js.map +1 -1
  345. package/dist/components/slider/index.d.ts +1 -1
  346. package/dist/components/slider/index.d.ts.map +1 -1
  347. package/dist/components/slider/index.js.map +1 -1
  348. package/dist/components/slider/types.d.ts +5 -0
  349. package/dist/components/slider/types.d.ts.map +1 -1
  350. package/dist/components/spinner/Spinner.d.ts.map +1 -1
  351. package/dist/components/spinner/Spinner.js +6 -3
  352. package/dist/components/spinner/Spinner.js.map +1 -1
  353. package/dist/components/spinner/index.d.ts +1 -1
  354. package/dist/components/spinner/index.d.ts.map +1 -1
  355. package/dist/components/spinner/index.js.map +1 -1
  356. package/dist/components/spinner/types.d.ts +4 -0
  357. package/dist/components/spinner/types.d.ts.map +1 -1
  358. package/dist/components/tags-input/TagsInput.d.ts.map +1 -1
  359. package/dist/components/tags-input/TagsInput.js +2 -0
  360. package/dist/components/tags-input/TagsInput.js.map +1 -1
  361. package/dist/components/toast/Toast.d.ts +1 -1
  362. package/dist/components/toast/Toast.d.ts.map +1 -1
  363. package/dist/components/toast/Toast.js +33 -29
  364. package/dist/components/toast/Toast.js.map +1 -1
  365. package/dist/components/toast/ToastElements.d.ts.map +1 -1
  366. package/dist/components/toast/ToastElements.js +24 -12
  367. package/dist/components/toast/ToastElements.js.map +1 -1
  368. package/dist/components/toast/index.d.ts +1 -1
  369. package/dist/components/toast/index.d.ts.map +1 -1
  370. package/dist/components/toast/index.js.map +1 -1
  371. package/dist/components/toast/types.d.ts +10 -0
  372. package/dist/components/toast/types.d.ts.map +1 -1
  373. package/dist/components/toolbar/Toolbar.d.ts +2 -2
  374. package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
  375. package/dist/components/toolbar/Toolbar.js +8 -4
  376. package/dist/components/toolbar/Toolbar.js.map +1 -1
  377. package/dist/core/direction.d.ts +2 -0
  378. package/dist/core/direction.d.ts.map +1 -1
  379. package/dist/core/direction.js +8 -3
  380. package/dist/core/direction.js.map +1 -1
  381. package/dist/core/dismissable-layer-registry.d.ts.map +1 -1
  382. package/dist/core/dismissable-layer-registry.js +3 -1
  383. package/dist/core/dismissable-layer-registry.js.map +1 -1
  384. package/dist/core/format-label.d.ts +2 -0
  385. package/dist/core/format-label.d.ts.map +1 -0
  386. package/dist/core/format-label.js +13 -0
  387. package/dist/core/format-label.js.map +1 -0
  388. package/dist/core/ime.d.ts +16 -0
  389. package/dist/core/ime.d.ts.map +1 -0
  390. package/dist/core/ime.js +7 -0
  391. package/dist/core/ime.js.map +1 -0
  392. package/dist/core/index.d.ts +3 -0
  393. package/dist/core/index.d.ts.map +1 -1
  394. package/dist/core/index.js +3 -0
  395. package/dist/core/index.js.map +1 -1
  396. package/dist/core/roving-focus-store.d.ts +3 -2
  397. package/dist/core/roving-focus-store.d.ts.map +1 -1
  398. package/dist/core/roving-focus-store.js +5 -3
  399. package/dist/core/roving-focus-store.js.map +1 -1
  400. package/dist/core/roving-focus.d.ts.map +1 -1
  401. package/dist/core/roving-focus.js +10 -5
  402. package/dist/core/roving-focus.js.map +1 -1
  403. package/dist/core/text-direction.d.ts +7 -0
  404. package/dist/core/text-direction.d.ts.map +1 -0
  405. package/dist/core/text-direction.js +7 -0
  406. package/dist/core/text-direction.js.map +1 -0
  407. package/dist/styles/index.css +1 -1
  408. package/package.json +2 -1
  409. package/skills/uiify/SKILL.md +43 -34
  410. package/skills/uiify/references/elements/alert-modal.md +5 -5
  411. package/skills/uiify/references/elements/aspect-ratio.md +59 -0
  412. package/skills/uiify/references/elements/avatar.md +10 -19
  413. package/skills/uiify/references/elements/badge.md +11 -19
  414. package/skills/uiify/references/elements/button.md +5 -5
  415. package/skills/uiify/references/elements/candle-chart.md +2 -0
  416. package/skills/uiify/references/elements/card.md +10 -21
  417. package/skills/uiify/references/elements/carousel.md +2 -0
  418. package/skills/uiify/references/elements/checkbox.md +1 -1
  419. package/skills/uiify/references/elements/date-picker.md +11 -15
  420. package/skills/uiify/references/elements/description-list.md +38 -0
  421. package/skills/uiify/references/elements/empty-state.md +12 -23
  422. package/skills/uiify/references/elements/field.md +2 -2
  423. package/skills/uiify/references/elements/fieldset.md +39 -0
  424. package/skills/uiify/references/elements/form-error-summary.md +39 -0
  425. package/skills/uiify/references/elements/inline-alert.md +11 -19
  426. package/skills/uiify/references/elements/input-group.md +39 -0
  427. package/skills/uiify/references/elements/item.md +39 -0
  428. package/skills/uiify/references/elements/modal.md +1 -1
  429. package/skills/uiify/references/elements/number-field.md +2 -0
  430. package/skills/uiify/references/elements/pagination.md +2 -0
  431. package/skills/uiify/references/elements/progress-bar.md +11 -20
  432. package/skills/uiify/references/elements/select.md +1 -1
  433. package/skills/uiify/references/examples/alert-confirmation.md +21 -9
  434. package/skills/uiify/references/examples/field-validation.md +2 -2
  435. package/skills/uiify/references/examples/select-basic.md +1 -1
  436. package/skills/uiify/references/examples/table-controls.md +3 -2
  437. package/skills/uiify/references/guides/i18n.md +21 -0
  438. package/skills/uiify/references/guides/verification.md +9 -0
  439. package/skills/uiify/scripts/static.mjs +79 -0
@@ -22,14 +22,19 @@ import {
22
22
  ToastTitle,
23
23
  ToastViewport as ToastViewportElement
24
24
  } from "./ToastElements.js";
25
- const SWIPE_DISMISS_THRESHOLD = 80;
25
+ const DEFAULT_TOAST_LABELS = {
26
+ region: "Notifications",
27
+ notification: "Notification",
28
+ close: "Close"
29
+ };
26
30
  const TOAST_TRANSITION = "uiify-toast";
27
31
  const [ToastStoreProvider, useToastStoreContext] = createPartContext(
28
32
  "Toast",
29
33
  "Provider"
30
34
  );
31
35
  function ToastProvider(props) {
32
- const { children, limit = 3 } = props;
36
+ const { children, limit = 3, labels } = props;
37
+ const resolvedLabels = useMemo(() => ({ ...DEFAULT_TOAST_LABELS, ...labels }), [labels]);
33
38
  const storeRef = useRef(null);
34
39
  storeRef.current ??= createToastStore({ limit });
35
40
  const store = storeRef.current;
@@ -47,8 +52,8 @@ function ToastProvider(props) {
47
52
  () => ""
48
53
  );
49
54
  const contextValue = useMemo(
50
- () => ({ dismiss, pause, resume, store }),
51
- [dismiss, pause, resume, store]
55
+ () => ({ dismiss, pause, resume, store, labels: resolvedLabels }),
56
+ [dismiss, pause, resume, store, resolvedLabels]
52
57
  );
53
58
  return /* @__PURE__ */ jsxs(ToastStoreProvider, { value: contextValue, children: [
54
59
  children,
@@ -70,6 +75,8 @@ function ToastViewport(props) {
70
75
  return unsubscribe;
71
76
  }, [store]);
72
77
  const [consumerRef, domProps] = splitRef(props);
78
+ const { labels } = useToastStoreContext("Viewport");
79
+ const resolvedLabels = { ...labels, ...props.labels };
73
80
  const viewportRef = useRef(null);
74
81
  const mergedRef = useMergedRefs(viewportRef, consumerRef);
75
82
  const hasToasts = toasts.length > 0;
@@ -82,19 +89,21 @@ function ToastViewport(props) {
82
89
  } catch {
83
90
  }
84
91
  }, [hasToasts]);
85
- return /* @__PURE__ */ jsx(ToastViewportElement, { ...domProps, popover: "manual", ref: mergedRef, children: toasts.map((toast) => /* @__PURE__ */ jsx(ViewTransition, { default: TOAST_TRANSITION, children: /* @__PURE__ */ jsx(ToastRoot, { toast }) }, toast.id)) });
92
+ return /* @__PURE__ */ jsx(ToastViewportElement, { ...domProps, labels: resolvedLabels, popover: "manual", ref: mergedRef, children: toasts.map((toast) => /* @__PURE__ */ jsx(ViewTransition, { default: TOAST_TRANSITION, children: /* @__PURE__ */ jsx(ToastRoot, { toast }) }, toast.id)) });
86
93
  }
87
94
  ToastViewport.displayName = "ToastViewport";
88
95
  function ToastRoot(props) {
89
- const { toast } = props;
90
- const { dismiss, pause, resume } = useToastStoreContext("Root");
91
- const startXRef = useRef(0);
92
- const startYRef = useRef(0);
93
- const swipingRef = useRef(false);
96
+ const { toast, labels: labelOverrides } = props;
97
+ const { dismiss, pause, resume, labels: providerLabels } = useToastStoreContext("Root");
98
+ const labels = { ...providerLabels, ...labelOverrides };
99
+ const swipeRef = useRef(null);
100
+ const endSwipe = (event) => {
101
+ if (swipeRef.current?.pointerId === event.pointerId) swipeRef.current = null;
102
+ };
94
103
  return /* @__PURE__ */ jsxs(
95
104
  "div",
96
105
  {
97
- "aria-label": typeof toast.title === "string" ? toast.title : "Notification",
106
+ "aria-label": typeof toast.title === "string" ? toast.title : labels.notification,
98
107
  "data-state": "open",
99
108
  "data-part": "item",
100
109
  "data-uiify-toast": "",
@@ -102,7 +111,7 @@ function ToastRoot(props) {
102
111
  tabIndex: 0,
103
112
  onFocus: () => pause(toast.id),
104
113
  onBlur: (event) => {
105
- if (!event.currentTarget.contains(event.relatedTarget)) resume(toast.id);
114
+ if (!event.currentTarget.matches(":hover, :focus-within")) resume(toast.id);
106
115
  },
107
116
  onKeyDown: (event) => {
108
117
  if (event.key === "Escape") {
@@ -111,27 +120,22 @@ function ToastRoot(props) {
111
120
  }
112
121
  },
113
122
  onPointerEnter: () => pause(toast.id),
114
- onPointerLeave: () => resume(toast.id),
115
- onPointerCancel: () => {
116
- swipingRef.current = false;
123
+ onPointerLeave: (event) => {
124
+ if (!event.currentTarget.matches(":focus-within")) resume(toast.id);
117
125
  },
126
+ onPointerCancel: endSwipe,
118
127
  onPointerDown: (event) => {
119
- startXRef.current = event.clientX;
120
- startYRef.current = event.clientY;
121
- swipingRef.current = true;
128
+ if (!swipeRef.current && event.isPrimary) swipeRef.current = event;
122
129
  },
123
130
  onPointerMove: (event) => {
124
- if (!swipingRef.current) return;
125
- const deltaX = event.clientX - startXRef.current;
126
- const deltaY = event.clientY - startYRef.current;
127
- if (Math.abs(deltaX) > Math.abs(deltaY) && Math.abs(deltaX) > SWIPE_DISMISS_THRESHOLD) {
128
- swipingRef.current = false;
129
- dismiss(toast.id);
130
- }
131
- },
132
- onPointerUp: () => {
133
- swipingRef.current = false;
131
+ const swipe = swipeRef.current;
132
+ if (swipe?.pointerId !== event.pointerId) return;
133
+ const deltaX = event.clientX - swipe.clientX;
134
+ const deltaY = event.clientY - swipe.clientY;
135
+ if (Math.abs(deltaX) <= 80 || Math.abs(deltaX) <= Math.abs(deltaY)) return;
136
+ dismiss(toast.id);
134
137
  },
138
+ onPointerUp: endSwipe,
135
139
  children: [
136
140
  toast.title ? /* @__PURE__ */ jsx(ToastTitle, { children: toast.title }) : null,
137
141
  toast.description ? /* @__PURE__ */ jsx(ToastDescription, { children: toast.description }) : null,
@@ -145,7 +149,7 @@ function ToastRoot(props) {
145
149
  children: toast.action.label
146
150
  }
147
151
  ) : null,
148
- /* @__PURE__ */ jsx(ToastClose, { onClick: () => dismiss(toast.id) })
152
+ /* @__PURE__ */ jsx(ToastClose, { labels, onClick: () => dismiss(toast.id) })
149
153
  ]
150
154
  }
151
155
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/toast/Toast.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n addTransitionType,\n startTransition,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n ViewTransition,\n} from \"react\";\nimport type { FocusEvent, KeyboardEvent, PointerEvent, ReactElement } from \"react\";\nimport { useIsomorphicLayoutEffect, useMergedRefs } from \"@gunkin/uiify/hooks\";\nimport { createPartContext, splitRef } from \"@gunkin/uiify/core\";\nimport { VisuallyHidden } from \"@gunkin/uiify/core/visually-hidden\";\nimport { createToastStore } from \"./toast-store.js\";\nimport {\n ToastAction as ToastActionElement,\n ToastClose as ToastCloseElement,\n ToastDescription,\n ToastTitle,\n ToastViewport as ToastViewportElement,\n} from \"./ToastElements.js\";\nimport type {\n ToastInput,\n ToastStore,\n ToastContextValue,\n ToastProviderOwnProps,\n ToastViewportOwnProps,\n ToastRootOwnProps,\n ToastActionProps,\n ToastCloseProps,\n} from \"./types.js\";\n\nexport type {\n ToastActionProps,\n ToastCloseProps,\n ToastDescriptionOwnProps,\n ToastInput,\n ToastPriority,\n ToastProviderOwnProps,\n ToastRecord,\n ToastRootOwnProps,\n ToastStore,\n ToastTitleOwnProps,\n ToastViewportOwnProps,\n} from \"./types.js\";\n\nconst SWIPE_DISMISS_THRESHOLD = 80;\n\n/** Transition type and view-transition-class shared with behavior.css and styles/toast.css. */\nconst TOAST_TRANSITION = \"uiify-toast\";\n\nconst [ToastStoreProvider, useToastStoreContext] = createPartContext<ToastContextValue>(\n \"Toast\",\n \"Provider\",\n);\n\nexport { ToastDescription, ToastTitle };\n\nexport function ToastProvider(props: ToastProviderOwnProps): ReactElement | null {\n const { children, limit = 3 } = props;\n const storeRef = useRef<ToastStore | null>(null);\n storeRef.current ??= createToastStore({ limit });\n const store = storeRef.current;\n\n const dismiss = useCallback((id: string) => store.dismiss(id), [store]);\n const pause = useCallback((id: string) => store.pause(id), [store]);\n const resume = useCallback((id: string) => store.resume(id), [store]);\n\n const announcement = useSyncExternalStore(\n store.subscribe,\n () => store.getAnnouncement(),\n () => \"\",\n );\n const assertiveAnnouncement = useSyncExternalStore(\n store.subscribe,\n () => store.getAssertiveAnnouncement(),\n () => \"\",\n );\n const contextValue = useMemo(\n () => ({ dismiss, pause, resume, store }),\n [dismiss, pause, resume, store],\n );\n\n return (\n <ToastStoreProvider value={contextValue}>\n {children}\n <VisuallyHidden aria-atomic=\"true\" aria-live=\"polite\">\n {announcement}\n </VisuallyHidden>\n <VisuallyHidden aria-atomic=\"true\" aria-live=\"assertive\">\n {assertiveAnnouncement}\n </VisuallyHidden>\n </ToastStoreProvider>\n );\n}\nToastProvider.displayName = \"ToastProvider\";\n\nexport function ToastViewport(props: ToastViewportOwnProps): ReactElement | null {\n const { store } = useToastStoreContext(\"Viewport\");\n // Not useSyncExternalStore: a store read there always commits synchronously, and\n // <ViewTransition> only animates commits made inside a Transition.\n const [toasts, setToasts] = useState(store.getServerSnapshot);\n useEffect(() => {\n const sync = () =>\n startTransition(() => {\n addTransitionType(TOAST_TRANSITION);\n setToasts(store.getSnapshot());\n });\n const unsubscribe = store.subscribe(sync);\n sync();\n return unsubscribe;\n }, [store]);\n const [consumerRef, domProps] = splitRef<HTMLElement, ToastViewportOwnProps>(props);\n const viewportRef = useRef<HTMLElement | null>(null);\n const mergedRef = useMergedRefs(viewportRef, consumerRef);\n const hasToasts = toasts.length > 0;\n\n // Same technique as core/use-popover.ts: guard with .matches(\":popover-open\")\n // so a StrictMode double-invoke or an unrelated re-run doesn't call\n // showPopover/hidePopover on a popover already in that state (both throw).\n // try/catch covers the node having disconnected between render and effect.\n useIsomorphicLayoutEffect(() => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n try {\n if (hasToasts && !viewport.matches(\":popover-open\")) viewport.showPopover();\n if (!hasToasts && viewport.matches(\":popover-open\")) viewport.hidePopover();\n } catch {\n // The node may have disconnected between render and layout effect.\n }\n }, [hasToasts]);\n\n return (\n <ToastViewportElement {...domProps} popover=\"manual\" ref={mergedRef}>\n {toasts.map((toast) => (\n <ViewTransition default={TOAST_TRANSITION} key={toast.id}>\n <ToastRoot toast={toast} />\n </ViewTransition>\n ))}\n </ToastViewportElement>\n );\n}\nToastViewport.displayName = \"ToastViewport\";\n\nexport function ToastRoot(props: ToastRootOwnProps): ReactElement | null {\n const { toast } = props;\n const { dismiss, pause, resume } = useToastStoreContext(\"Root\");\n const startXRef = useRef(0);\n const startYRef = useRef(0);\n const swipingRef = useRef(false);\n\n /* oxlint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex, jsx-a11y/prefer-tag-over-role -- pause/swipe on toast card */\n return (\n <div\n aria-label={typeof toast.title === \"string\" ? toast.title : \"Notification\"}\n data-state=\"open\"\n data-part=\"item\"\n data-uiify-toast=\"\"\n role=\"group\"\n tabIndex={0}\n onFocus={() => pause(toast.id)}\n onBlur={(event: FocusEvent<HTMLDivElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) resume(toast.id);\n }}\n onKeyDown={(event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n dismiss(toast.id);\n }\n }}\n onPointerEnter={() => pause(toast.id)}\n onPointerLeave={() => resume(toast.id)}\n onPointerCancel={() => {\n swipingRef.current = false;\n }}\n onPointerDown={(event: PointerEvent<HTMLDivElement>) => {\n startXRef.current = event.clientX;\n startYRef.current = event.clientY;\n swipingRef.current = true;\n }}\n onPointerMove={(event: PointerEvent<HTMLDivElement>) => {\n if (!swipingRef.current) return;\n const deltaX = event.clientX - startXRef.current;\n const deltaY = event.clientY - startYRef.current;\n if (Math.abs(deltaX) > Math.abs(deltaY) && Math.abs(deltaX) > SWIPE_DISMISS_THRESHOLD) {\n swipingRef.current = false;\n dismiss(toast.id);\n }\n }}\n onPointerUp={() => {\n swipingRef.current = false;\n }}\n >\n {toast.title ? <ToastTitle>{toast.title}</ToastTitle> : null}\n {toast.description ? <ToastDescription>{toast.description}</ToastDescription> : null}\n {toast.action ? (\n <ToastAction\n onClick={() => {\n toast.action?.onClick();\n dismiss(toast.id);\n }}\n >\n {toast.action.label}\n </ToastAction>\n ) : null}\n <ToastClose onClick={() => dismiss(toast.id)} />\n </div>\n );\n /* oxlint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex, jsx-a11y/prefer-tag-over-role */\n}\nToastRoot.displayName = \"ToastRoot\";\n\nexport function ToastAction(props: ToastActionProps): ReactElement | null {\n return <ToastActionElement {...props} />;\n}\nToastAction.displayName = \"ToastAction\";\n\nexport function ToastClose(props: ToastCloseProps): ReactElement | null {\n return <ToastCloseElement {...props} />;\n}\nToastClose.displayName = \"ToastClose\";\n\nexport function useToast() {\n const { dismiss, store } = useToastStoreContext(\"useToast\");\n return {\n dismiss,\n toast(input: ToastInput) {\n return store.enqueue(input);\n },\n };\n}\n\nexport const Toast = {\n Action: ToastAction,\n Close: ToastClose,\n Description: ToastDescription,\n Provider: ToastProvider,\n Root: ToastRoot,\n Title: ToastTitle,\n Viewport: ToastViewport,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/toast/Toast.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n addTransitionType,\n startTransition,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n ViewTransition,\n} from \"react\";\nimport type { FocusEvent, KeyboardEvent, PointerEvent, ReactElement } from \"react\";\nimport { useIsomorphicLayoutEffect, useMergedRefs } from \"@gunkin/uiify/hooks\";\nimport { createPartContext, splitRef } from \"@gunkin/uiify/core\";\nimport { VisuallyHidden } from \"@gunkin/uiify/core/visually-hidden\";\nimport { createToastStore } from \"./toast-store.js\";\nimport {\n ToastAction as ToastActionElement,\n ToastClose as ToastCloseElement,\n ToastDescription,\n ToastTitle,\n ToastViewport as ToastViewportElement,\n} from \"./ToastElements.js\";\nimport type {\n ToastInput,\n ToastStore,\n ToastContextValue,\n ToastProviderOwnProps,\n ToastViewportOwnProps,\n ToastRootOwnProps,\n ToastActionProps,\n ToastCloseProps,\n ToastLabels,\n} from \"./types.js\";\n\nexport type {\n ToastActionProps,\n ToastCloseProps,\n ToastDescriptionOwnProps,\n ToastInput,\n ToastLabels,\n ToastPriority,\n ToastProviderOwnProps,\n ToastRecord,\n ToastRootOwnProps,\n ToastStore,\n ToastTitleOwnProps,\n ToastViewportOwnProps,\n} from \"./types.js\";\n\nconst DEFAULT_TOAST_LABELS: ToastLabels = {\n region: \"Notifications\",\n notification: \"Notification\",\n close: \"Close\",\n};\n\n/** Transition type and view-transition-class shared with behavior.css and styles/toast.css. */\nconst TOAST_TRANSITION = \"uiify-toast\";\n\nconst [ToastStoreProvider, useToastStoreContext] = createPartContext<ToastContextValue>(\n \"Toast\",\n \"Provider\",\n);\n\nexport { ToastDescription, ToastTitle };\n\nexport function ToastProvider(props: ToastProviderOwnProps): ReactElement | null {\n const { children, limit = 3, labels } = props;\n const resolvedLabels = useMemo(() => ({ ...DEFAULT_TOAST_LABELS, ...labels }), [labels]);\n const storeRef = useRef<ToastStore | null>(null);\n storeRef.current ??= createToastStore({ limit });\n const store = storeRef.current;\n\n const dismiss = useCallback((id: string) => store.dismiss(id), [store]);\n const pause = useCallback((id: string) => store.pause(id), [store]);\n const resume = useCallback((id: string) => store.resume(id), [store]);\n\n const announcement = useSyncExternalStore(\n store.subscribe,\n () => store.getAnnouncement(),\n () => \"\",\n );\n const assertiveAnnouncement = useSyncExternalStore(\n store.subscribe,\n () => store.getAssertiveAnnouncement(),\n () => \"\",\n );\n const contextValue = useMemo(\n () => ({ dismiss, pause, resume, store, labels: resolvedLabels }),\n [dismiss, pause, resume, store, resolvedLabels],\n );\n\n return (\n <ToastStoreProvider value={contextValue}>\n {children}\n <VisuallyHidden aria-atomic=\"true\" aria-live=\"polite\">\n {announcement}\n </VisuallyHidden>\n <VisuallyHidden aria-atomic=\"true\" aria-live=\"assertive\">\n {assertiveAnnouncement}\n </VisuallyHidden>\n </ToastStoreProvider>\n );\n}\nToastProvider.displayName = \"ToastProvider\";\n\nexport function ToastViewport(props: ToastViewportOwnProps): ReactElement | null {\n const { store } = useToastStoreContext(\"Viewport\");\n // Not useSyncExternalStore: a store read there always commits synchronously, and\n // <ViewTransition> only animates commits made inside a Transition.\n const [toasts, setToasts] = useState(store.getServerSnapshot);\n useEffect(() => {\n const sync = () =>\n startTransition(() => {\n addTransitionType(TOAST_TRANSITION);\n setToasts(store.getSnapshot());\n });\n const unsubscribe = store.subscribe(sync);\n sync();\n return unsubscribe;\n }, [store]);\n const [consumerRef, domProps] = splitRef<HTMLElement, ToastViewportOwnProps>(props);\n const { labels } = useToastStoreContext(\"Viewport\");\n const resolvedLabels = { ...labels, ...props.labels };\n const viewportRef = useRef<HTMLElement | null>(null);\n const mergedRef = useMergedRefs(viewportRef, consumerRef);\n const hasToasts = toasts.length > 0;\n\n // Same technique as core/use-popover.ts: guard with .matches(\":popover-open\")\n // so a StrictMode double-invoke or an unrelated re-run doesn't call\n // showPopover/hidePopover on a popover already in that state (both throw).\n // try/catch covers the node having disconnected between render and effect.\n useIsomorphicLayoutEffect(() => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n try {\n if (hasToasts && !viewport.matches(\":popover-open\")) viewport.showPopover();\n if (!hasToasts && viewport.matches(\":popover-open\")) viewport.hidePopover();\n } catch {\n // The node may have disconnected between render and layout effect.\n }\n }, [hasToasts]);\n\n return (\n <ToastViewportElement {...domProps} labels={resolvedLabels} popover=\"manual\" ref={mergedRef}>\n {toasts.map((toast) => (\n <ViewTransition default={TOAST_TRANSITION} key={toast.id}>\n <ToastRoot toast={toast} />\n </ViewTransition>\n ))}\n </ToastViewportElement>\n );\n}\nToastViewport.displayName = \"ToastViewport\";\n\nexport function ToastRoot(props: ToastRootOwnProps): ReactElement | null {\n const { toast, labels: labelOverrides } = props;\n const { dismiss, pause, resume, labels: providerLabels } = useToastStoreContext(\"Root\");\n const labels = { ...providerLabels, ...labelOverrides };\n const swipeRef = useRef<PointerEvent<HTMLDivElement> | null>(null);\n const endSwipe = (event: PointerEvent<HTMLDivElement>) => {\n if (swipeRef.current?.pointerId === event.pointerId) swipeRef.current = null;\n };\n\n /* oxlint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex, jsx-a11y/prefer-tag-over-role -- pause/swipe on toast card */\n return (\n <div\n aria-label={typeof toast.title === \"string\" ? toast.title : labels.notification}\n data-state=\"open\"\n data-part=\"item\"\n data-uiify-toast=\"\"\n role=\"group\"\n tabIndex={0}\n onFocus={() => pause(toast.id)}\n onBlur={(event: FocusEvent<HTMLDivElement>) => {\n if (!event.currentTarget.matches(\":hover, :focus-within\")) resume(toast.id);\n }}\n onKeyDown={(event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n dismiss(toast.id);\n }\n }}\n onPointerEnter={() => pause(toast.id)}\n onPointerLeave={(event: PointerEvent<HTMLDivElement>) => {\n if (!event.currentTarget.matches(\":focus-within\")) resume(toast.id);\n }}\n onPointerCancel={endSwipe}\n onPointerDown={(event: PointerEvent<HTMLDivElement>) => {\n if (!swipeRef.current && event.isPrimary) swipeRef.current = event;\n }}\n onPointerMove={(event: PointerEvent<HTMLDivElement>) => {\n const swipe = swipeRef.current;\n if (swipe?.pointerId !== event.pointerId) return;\n const deltaX = event.clientX - swipe.clientX;\n const deltaY = event.clientY - swipe.clientY;\n if (Math.abs(deltaX) <= 80 || Math.abs(deltaX) <= Math.abs(deltaY)) return;\n dismiss(toast.id);\n }}\n onPointerUp={endSwipe}\n >\n {toast.title ? <ToastTitle>{toast.title}</ToastTitle> : null}\n {toast.description ? <ToastDescription>{toast.description}</ToastDescription> : null}\n {toast.action ? (\n <ToastAction\n onClick={() => {\n toast.action?.onClick();\n dismiss(toast.id);\n }}\n >\n {toast.action.label}\n </ToastAction>\n ) : null}\n <ToastClose labels={labels} onClick={() => dismiss(toast.id)} />\n </div>\n );\n /* oxlint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex, jsx-a11y/prefer-tag-over-role */\n}\nToastRoot.displayName = \"ToastRoot\";\n\nexport function ToastAction(props: ToastActionProps): ReactElement | null {\n return <ToastActionElement {...props} />;\n}\nToastAction.displayName = \"ToastAction\";\n\nexport function ToastClose(props: ToastCloseProps): ReactElement | null {\n return <ToastCloseElement {...props} />;\n}\nToastClose.displayName = \"ToastClose\";\n\nexport function useToast() {\n const { dismiss, store } = useToastStoreContext(\"useToast\");\n return {\n dismiss,\n toast(input: ToastInput) {\n return store.enqueue(input);\n },\n };\n}\n\nexport const Toast = {\n Action: ToastAction,\n Close: ToastClose,\n Description: ToastDescription,\n Provider: ToastProvider,\n Root: ToastRoot,\n Title: ToastTitle,\n Viewport: ToastViewport,\n};\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToastElements.d.ts","sourceRoot":"","sources":["../../../src/components/toast/ToastElements.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CAE/E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CAgB/E;yBAhBe,aAAa;;;AAmB7B,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CAgBvE;yBAhBe,SAAS;;;AAmBzB,wBAAgB,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CAUzE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,GAAG,IAAI,CAUrF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CAaxE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CActE;AAED,eAAO,MAAM,KAAK;;;;;;;;CAQjB,CAAC"}
1
+ {"version":3,"file":"ToastElements.d.ts","sourceRoot":"","sources":["../../../src/components/toast/ToastElements.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EAEhB,MAAM,YAAY,CAAC;AAQpB,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CAE/E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CAiB/E;yBAjBe,aAAa;;;AAoB7B,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CAiBvE;yBAjBe,SAAS;;;AAoBzB,wBAAgB,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CAWzE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,GAAG,IAAI,CAWrF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CAcxE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAiBtE;AAED,eAAO,MAAM,KAAK;;;;;;;;CAQjB,CAAC"}
@@ -1,14 +1,20 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useRenderElement } from "@gunkin/uiify/core/render";
3
+ const DEFAULT_TOAST_LABELS = {
4
+ region: "Notifications",
5
+ notification: "Notification",
6
+ close: "Close"
7
+ };
3
8
  function ToastProvider(props) {
4
9
  return props.children ?? null;
5
10
  }
6
11
  function ToastViewport(props) {
7
- const { children, className, "aria-label": ariaLabel = "Notifications", popover, ref } = props;
12
+ const { children, className, "aria-label": ariaLabel, labels, popover, ref } = props;
13
+ const resolvedLabels = { ...DEFAULT_TOAST_LABELS, ...labels };
8
14
  return /* @__PURE__ */ jsx(
9
15
  "section",
10
16
  {
11
- "aria-label": ariaLabel,
17
+ "aria-label": ariaLabel ?? resolvedLabels.region,
12
18
  "data-part": "viewport",
13
19
  "data-testid": "toast-viewport",
14
20
  "data-uiify-toast": "",
@@ -21,11 +27,12 @@ function ToastViewport(props) {
21
27
  }
22
28
  ToastViewport.displayName = "ToastViewport";
23
29
  function ToastRoot(props) {
24
- const { toast } = props;
30
+ const { toast, labels } = props;
31
+ const resolvedLabels = { ...DEFAULT_TOAST_LABELS, ...labels };
25
32
  return /* @__PURE__ */ jsxs(
26
33
  "fieldset",
27
34
  {
28
- "aria-label": typeof toast.title === "string" ? toast.title : "Notification",
35
+ "aria-label": typeof toast.title === "string" ? toast.title : resolvedLabels.notification,
29
36
  "data-part": "item",
30
37
  "data-state": "open",
31
38
  "data-uiify-toast": "",
@@ -33,7 +40,7 @@ function ToastRoot(props) {
33
40
  toast.title ? /* @__PURE__ */ jsx(ToastTitle, { children: toast.title }) : null,
34
41
  toast.description ? /* @__PURE__ */ jsx(ToastDescription, { children: toast.description }) : null,
35
42
  toast.action ? /* @__PURE__ */ jsx(ToastAction, { children: toast.action.label }) : null,
36
- /* @__PURE__ */ jsx(ToastClose, {})
43
+ /* @__PURE__ */ jsx(ToastClose, { labels: resolvedLabels })
37
44
  ]
38
45
  }
39
46
  );
@@ -44,7 +51,8 @@ function ToastTitle(props) {
44
51
  return useRenderElement({
45
52
  defaultTag: "div",
46
53
  props: {
47
- ...className ? { className } : {},
54
+ "data-part": "title",
55
+ className,
48
56
  children
49
57
  },
50
58
  state: {}
@@ -55,7 +63,8 @@ function ToastDescription(props) {
55
63
  return useRenderElement({
56
64
  defaultTag: "div",
57
65
  props: {
58
- ...className ? { className } : {},
66
+ "data-part": "description",
67
+ className,
59
68
  children
60
69
  },
61
70
  state: {}
@@ -68,7 +77,8 @@ function ToastAction(props) {
68
77
  props: {
69
78
  ...consumerProps,
70
79
  type: "button",
71
- ...className ? { className } : {},
80
+ "data-part": "action",
81
+ className,
72
82
  onClick,
73
83
  children
74
84
  },
@@ -76,16 +86,18 @@ function ToastAction(props) {
76
86
  });
77
87
  }
78
88
  function ToastClose(props) {
79
- const { children = "Close", className, onClick, ...consumerProps } = props;
89
+ const { children, className, labels, onClick, ...consumerProps } = props;
90
+ const resolvedChildren = children ?? labels?.close ?? DEFAULT_TOAST_LABELS.close;
80
91
  return useRenderElement({
81
92
  defaultTag: "button",
82
93
  props: {
83
94
  ...consumerProps,
84
95
  type: "button",
85
- "aria-label": typeof children === "string" ? children : "Close",
86
- ...className ? { className } : {},
96
+ "aria-label": typeof resolvedChildren === "string" ? resolvedChildren : DEFAULT_TOAST_LABELS.close,
97
+ "data-part": "close",
98
+ className,
87
99
  onClick,
88
- children
100
+ children: resolvedChildren
89
101
  },
90
102
  state: {}
91
103
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/toast/ToastElements.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type {\n ToastProviderOwnProps,\n ToastViewportOwnProps,\n ToastRootOwnProps,\n ToastTitleOwnProps,\n ToastDescriptionOwnProps,\n ToastActionProps,\n ToastCloseProps,\n} from \"./types.js\";\n\nexport function ToastProvider(props: ToastProviderOwnProps): ReactElement | null {\n return (props.children ?? null) as ReactElement | null;\n}\n\nexport function ToastViewport(props: ToastViewportOwnProps): ReactElement | null {\n const { children, className, \"aria-label\": ariaLabel = \"Notifications\", popover, ref } = props;\n\n return (\n <section\n aria-label={ariaLabel}\n data-part=\"viewport\"\n data-testid=\"toast-viewport\"\n data-uiify-toast=\"\"\n ref={ref}\n {...(popover ? { popover } : {})}\n {...(className ? { className } : {})}\n >\n {children}\n </section>\n );\n}\nToastViewport.displayName = \"ToastViewport\";\n\nexport function ToastRoot(props: ToastRootOwnProps): ReactElement | null {\n const { toast } = props;\n\n return (\n <fieldset\n aria-label={typeof toast.title === \"string\" ? toast.title : \"Notification\"}\n data-part=\"item\"\n data-state=\"open\"\n data-uiify-toast=\"\"\n >\n {toast.title ? <ToastTitle>{toast.title}</ToastTitle> : null}\n {toast.description ? <ToastDescription>{toast.description}</ToastDescription> : null}\n {toast.action ? <ToastAction>{toast.action.label}</ToastAction> : null}\n <ToastClose />\n </fieldset>\n );\n}\nToastRoot.displayName = \"ToastRoot\";\n\nexport function ToastTitle(props: ToastTitleOwnProps): ReactElement | null {\n const { children, className } = props;\n return useRenderElement({\n defaultTag: \"div\",\n props: {\n ...(className ? { className } : {}),\n children,\n },\n state: {},\n });\n}\n\nexport function ToastDescription(props: ToastDescriptionOwnProps): ReactElement | null {\n const { children, className } = props;\n return useRenderElement({\n defaultTag: \"div\",\n props: {\n ...(className ? { className } : {}),\n children,\n },\n state: {},\n });\n}\n\nexport function ToastAction(props: ToastActionProps): ReactElement | null {\n const { children, className, onClick, ...consumerProps } = props;\n return useRenderElement({\n defaultTag: \"button\",\n props: {\n ...consumerProps,\n type: \"button\",\n ...(className ? { className } : {}),\n onClick,\n children,\n },\n state: {},\n });\n}\n\nexport function ToastClose(props: ToastCloseProps): ReactElement | null {\n const { children = \"Close\", className, onClick, ...consumerProps } = props;\n return useRenderElement({\n defaultTag: \"button\",\n props: {\n ...consumerProps,\n type: \"button\",\n \"aria-label\": typeof children === \"string\" ? children : \"Close\",\n ...(className ? { className } : {}),\n onClick,\n children,\n },\n state: {},\n });\n}\n\nexport const Toast = {\n Action: ToastAction,\n Close: ToastClose,\n Description: ToastDescription,\n Provider: ToastProvider,\n Root: ToastRoot,\n Title: ToastTitle,\n Viewport: ToastViewport,\n};\n"],"mappings":"AAoBI,cAmBA,YAnBA;AAnBJ,SAAS,wBAAwB;AAW1B,SAAS,cAAc,OAAmD;AAC/E,SAAQ,MAAM,YAAY;AAC5B;AAEO,SAAS,cAAc,OAAmD;AAC/E,QAAM,EAAE,UAAU,WAAW,cAAc,YAAY,iBAAiB,SAAS,IAAI,IAAI;AAEzF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY;AAAA,MACZ,aAAU;AAAA,MACV,eAAY;AAAA,MACZ,oBAAiB;AAAA,MACjB;AAAA,MACC,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,MAC7B,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,MAEjC;AAAA;AAAA,EACH;AAEJ;AACA,cAAc,cAAc;AAErB,SAAS,UAAU,OAA+C;AACvE,QAAM,EAAE,MAAM,IAAI;AAElB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ;AAAA,MAC5D,aAAU;AAAA,MACV,cAAW;AAAA,MACX,oBAAiB;AAAA,MAEhB;AAAA,cAAM,QAAQ,oBAAC,cAAY,gBAAM,OAAM,IAAgB;AAAA,QACvD,MAAM,cAAc,oBAAC,oBAAkB,gBAAM,aAAY,IAAsB;AAAA,QAC/E,MAAM,SAAS,oBAAC,eAAa,gBAAM,OAAO,OAAM,IAAiB;AAAA,QAClE,oBAAC,cAAW;AAAA;AAAA;AAAA,EACd;AAEJ;AACA,UAAU,cAAc;AAEjB,SAAS,WAAW,OAAgD;AACzE,QAAM,EAAE,UAAU,UAAU,IAAI;AAChC,SAAO,iBAAiB;AAAA,IACtB,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEO,SAAS,iBAAiB,OAAsD;AACrF,QAAM,EAAE,UAAU,UAAU,IAAI;AAChC,SAAO,iBAAiB;AAAA,IACtB,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEO,SAAS,YAAY,OAA8C;AACxE,QAAM,EAAE,UAAU,WAAW,SAAS,GAAG,cAAc,IAAI;AAC3D,SAAO,iBAAiB;AAAA,IACtB,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,MACjC;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEO,SAAS,WAAW,OAA6C;AACtE,QAAM,EAAE,WAAW,SAAS,WAAW,SAAS,GAAG,cAAc,IAAI;AACrE,SAAO,iBAAiB;AAAA,IACtB,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,cAAc,OAAO,aAAa,WAAW,WAAW;AAAA,MACxD,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,MACjC;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEO,MAAM,QAAQ;AAAA,EACnB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AACZ;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/toast/ToastElements.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type {\n ToastProviderOwnProps,\n ToastViewportOwnProps,\n ToastRootOwnProps,\n ToastTitleOwnProps,\n ToastDescriptionOwnProps,\n ToastActionProps,\n ToastCloseProps,\n ToastLabels,\n} from \"./types.js\";\n\nconst DEFAULT_TOAST_LABELS: ToastLabels = {\n region: \"Notifications\",\n notification: \"Notification\",\n close: \"Close\",\n};\n\nexport function ToastProvider(props: ToastProviderOwnProps): ReactElement | null {\n return (props.children ?? null) as ReactElement | null;\n}\n\nexport function ToastViewport(props: ToastViewportOwnProps): ReactElement | null {\n const { children, className, \"aria-label\": ariaLabel, labels, popover, ref } = props;\n const resolvedLabels = { ...DEFAULT_TOAST_LABELS, ...labels };\n\n return (\n <section\n aria-label={ariaLabel ?? resolvedLabels.region}\n data-part=\"viewport\"\n data-testid=\"toast-viewport\"\n data-uiify-toast=\"\"\n ref={ref}\n {...(popover ? { popover } : {})}\n {...(className ? { className } : {})}\n >\n {children}\n </section>\n );\n}\nToastViewport.displayName = \"ToastViewport\";\n\nexport function ToastRoot(props: ToastRootOwnProps): ReactElement | null {\n const { toast, labels } = props;\n const resolvedLabels = { ...DEFAULT_TOAST_LABELS, ...labels };\n\n return (\n <fieldset\n aria-label={typeof toast.title === \"string\" ? toast.title : resolvedLabels.notification}\n data-part=\"item\"\n data-state=\"open\"\n data-uiify-toast=\"\"\n >\n {toast.title ? <ToastTitle>{toast.title}</ToastTitle> : null}\n {toast.description ? <ToastDescription>{toast.description}</ToastDescription> : null}\n {toast.action ? <ToastAction>{toast.action.label}</ToastAction> : null}\n <ToastClose labels={resolvedLabels} />\n </fieldset>\n );\n}\nToastRoot.displayName = \"ToastRoot\";\n\nexport function ToastTitle(props: ToastTitleOwnProps): ReactElement | null {\n const { children, className } = props;\n return useRenderElement({\n defaultTag: \"div\",\n props: {\n \"data-part\": \"title\",\n className,\n children,\n },\n state: {},\n });\n}\n\nexport function ToastDescription(props: ToastDescriptionOwnProps): ReactElement | null {\n const { children, className } = props;\n return useRenderElement({\n defaultTag: \"div\",\n props: {\n \"data-part\": \"description\",\n className,\n children,\n },\n state: {},\n });\n}\n\nexport function ToastAction(props: ToastActionProps): ReactElement | null {\n const { children, className, onClick, ...consumerProps } = props;\n return useRenderElement({\n defaultTag: \"button\",\n props: {\n ...consumerProps,\n type: \"button\",\n \"data-part\": \"action\",\n className,\n onClick,\n children,\n },\n state: {},\n });\n}\n\nexport function ToastClose(props: ToastCloseProps): ReactElement | null {\n const { children, className, labels, onClick, ...consumerProps } = props;\n const resolvedChildren = children ?? labels?.close ?? DEFAULT_TOAST_LABELS.close;\n return useRenderElement({\n defaultTag: \"button\",\n props: {\n ...consumerProps,\n type: \"button\",\n \"aria-label\":\n typeof resolvedChildren === \"string\" ? resolvedChildren : DEFAULT_TOAST_LABELS.close,\n \"data-part\": \"close\",\n className,\n onClick,\n children: resolvedChildren,\n },\n state: {},\n });\n}\n\nexport const Toast = {\n Action: ToastAction,\n Close: ToastClose,\n Description: ToastDescription,\n Provider: ToastProvider,\n Root: ToastRoot,\n Title: ToastTitle,\n Viewport: ToastViewport,\n};\n"],"mappings":"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","names":[]}
@@ -1,4 +1,4 @@
1
1
  export { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastRoot, ToastTitle, ToastViewport, useToast, } from "./Toast.js";
2
- export type { ToastActionOwnProps, ToastActionProps, ToastCloseOwnProps, ToastCloseProps, ToastDescriptionOwnProps, ToastProviderOwnProps, ToastRootOwnProps, ToastTitleOwnProps, ToastViewportOwnProps, } from "./types.js";
2
+ export type { ToastActionOwnProps, ToastActionProps, ToastCloseOwnProps, ToastCloseProps, ToastLabels, ToastDescriptionOwnProps, ToastProviderOwnProps, ToastRootOwnProps, ToastTitleOwnProps, ToastViewportOwnProps, } from "./types.js";
3
3
  export type { ToastInput, ToastPriority, ToastRecord, ToastStore } from "./types.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toast/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,UAAU,EACV,aAAa,EACb,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toast/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,UAAU,EACV,aAAa,EACb,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/toast/index.ts"],"sourcesContent":["export {\n Toast,\n ToastAction,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastRoot,\n ToastTitle,\n ToastViewport,\n useToast,\n} from \"./Toast.js\";\nexport type {\n ToastActionOwnProps,\n ToastActionProps,\n ToastCloseOwnProps,\n ToastCloseProps,\n ToastDescriptionOwnProps,\n ToastProviderOwnProps,\n ToastRootOwnProps,\n ToastTitleOwnProps,\n ToastViewportOwnProps,\n} from \"./types.js\";\nexport type { ToastInput, ToastPriority, ToastRecord, ToastStore } from \"./types.js\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/toast/index.ts"],"sourcesContent":["export {\n Toast,\n ToastAction,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastRoot,\n ToastTitle,\n ToastViewport,\n useToast,\n} from \"./Toast.js\";\nexport type {\n ToastActionOwnProps,\n ToastActionProps,\n ToastCloseOwnProps,\n ToastCloseProps,\n ToastLabels,\n ToastDescriptionOwnProps,\n ToastProviderOwnProps,\n ToastRootOwnProps,\n ToastTitleOwnProps,\n ToastViewportOwnProps,\n} from \"./types.js\";\nexport type { ToastInput, ToastPriority, ToastRecord, ToastStore } from \"./types.js\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
@@ -1,5 +1,10 @@
1
1
  import type { MouseEvent, ReactNode, Ref } from "react";
2
2
  export type ToastPriority = "polite" | "assertive";
3
+ export interface ToastLabels {
4
+ readonly region: string;
5
+ readonly notification: string;
6
+ readonly close: string;
7
+ }
3
8
  export interface ToastAction {
4
9
  readonly label: ReactNode;
5
10
  readonly onClick: () => void;
@@ -44,15 +49,18 @@ export interface ToastContextValue {
44
49
  readonly pause: (id: string) => void;
45
50
  readonly resume: (id: string) => void;
46
51
  readonly store: ToastStore;
52
+ readonly labels: ToastLabels;
47
53
  }
48
54
  export interface ToastProviderOwnProps {
49
55
  readonly children?: ReactNode;
56
+ readonly labels?: Partial<ToastLabels>;
50
57
  readonly limit?: number;
51
58
  }
52
59
  export interface ToastViewportOwnProps {
53
60
  readonly "aria-label"?: string;
54
61
  readonly children?: ReactNode;
55
62
  readonly className?: string;
63
+ readonly labels?: Partial<ToastLabels>;
56
64
  /**
57
65
  * Set by the live client viewport (@gunkin/uiify/components/toast/Toast.js) to
58
66
  * `"manual"` so the queue's rendered surface sits in the top layer. The
@@ -64,6 +72,7 @@ export interface ToastViewportOwnProps {
64
72
  readonly ref?: Ref<HTMLElement>;
65
73
  }
66
74
  export interface ToastRootOwnProps {
75
+ readonly labels?: Partial<ToastLabels>;
67
76
  readonly toast: ToastRecord;
68
77
  }
69
78
  export interface ToastTitleOwnProps {
@@ -84,6 +93,7 @@ export interface ToastActionProps extends ToastActionOwnProps {
84
93
  export interface ToastCloseOwnProps {
85
94
  readonly children?: ReactNode;
86
95
  readonly className?: string;
96
+ readonly labels?: Partial<ToastLabels>;
87
97
  }
88
98
  export interface ToastCloseProps extends ToastCloseOwnProps {
89
99
  readonly onClick?: (event: MouseEvent<HTMLButtonElement>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/toast/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/toast/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { HTMLAttributes, ReactElement, ReactNode } from "react";
2
- import type { Direction } from "@gunkin/uiify/core/direction";
2
+ import { type Direction } from "@gunkin/uiify/core/direction";
3
3
  import type { RovingFocusOrientation } from "@gunkin/uiify/core/roving-focus";
4
4
  import type { ToolbarButtonProps, ToolbarLinkProps, ToolbarSeparatorProps, ToolbarToggleGroupProps } from "./types.js";
5
5
  interface ToolbarRootClientProps extends HTMLAttributes<HTMLDivElement> {
@@ -8,7 +8,7 @@ interface ToolbarRootClientProps extends HTMLAttributes<HTMLDivElement> {
8
8
  readonly loop?: boolean;
9
9
  readonly orientation?: RovingFocusOrientation;
10
10
  }
11
- export declare function ToolbarRootClient({ children, className, dir, loop, orientation, ...consumerProps }: ToolbarRootClientProps): ReactElement;
11
+ export declare function ToolbarRootClient({ children, className, dir: localDir, loop, orientation, ...consumerProps }: ToolbarRootClientProps): ReactElement;
12
12
  export declare namespace ToolbarRootClient {
13
13
  var displayName: string;
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/toolbar/Toolbar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAQ9E,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,UAAU,sBAAuB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CAC/C;AAqCD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,GAAG,EACH,IAAW,EACX,WAA0B,EAC1B,GAAG,aAAa,EACjB,EAAE,sBAAsB,GAAG,YAAY,CAgFvC;yBAvFe,iBAAiB;;;AA0FjC,eAAO,MAAM,WAAW,0BAAoB,CAAC;AAE7C,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CAE5E;yBAFe,aAAa;;;AAK7B,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CAExE;yBAFe,WAAW;;;AAK3B,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CAElF;yBAFe,gBAAgB;;;AAKhC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,YAAY,GAAG,IAAI,CAEtF;yBAFe,kBAAkB;;;AAKlC,eAAO,MAAM,OAAO;;;;;;CAMnB,CAAC"}
1
+ {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/toolbar/Toolbar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAQ9E,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,UAAU,sBAAuB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CAC/C;AAqCD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,GAAG,EAAE,QAAQ,EACb,IAAW,EACX,WAA0B,EAC1B,GAAG,aAAa,EACjB,EAAE,sBAAsB,GAAG,YAAY,CAkFvC;yBAzFe,iBAAiB;;;AA4FjC,eAAO,MAAM,WAAW,0BAAoB,CAAC;AAE7C,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CAE5E;yBAFe,aAAa;;;AAK7B,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CAExE;yBAFe,WAAW;;;AAK3B,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CAElF;yBAFe,gBAAgB;;;AAKhC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,YAAY,GAAG,IAAI,CAEtF;yBAFe,kBAAkB;;;AAKlC,eAAO,MAAM,OAAO;;;;;;CAMnB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { useEffect, useRef } from "react";
4
+ import { useDirectionOverride } from "@gunkin/uiify/core/direction";
5
+ import { resolveDirection } from "@gunkin/uiify/core/text-direction";
4
6
  import {
5
7
  ToolbarButton as ServerToolbarButton,
6
8
  ToolbarLink as ServerToolbarLink,
@@ -33,11 +35,12 @@ function moveIndex(currentIndex, offset, length, loop) {
33
35
  function ToolbarRootClient({
34
36
  children,
35
37
  className,
36
- dir,
38
+ dir: localDir,
37
39
  loop = true,
38
40
  orientation = "horizontal",
39
41
  ...consumerProps
40
42
  }) {
43
+ const dir = useDirectionOverride(localDir);
41
44
  const rootRef = useRef(null);
42
45
  const currentRef = useRef(null);
43
46
  useEffect(() => {
@@ -66,11 +69,12 @@ function ToolbarRootClient({
66
69
  let nextIndex = null;
67
70
  if (event.key === "Home") nextIndex = 0;
68
71
  if (event.key === "End") nextIndex = enabled.length - 1;
72
+ const rtl = resolveDirection(item, dir) === "rtl";
69
73
  if (orientation !== "vertical" && event.key === "ArrowRight") {
70
- nextIndex = moveIndex(currentIndex, dir === "rtl" ? -1 : 1, enabled.length, loop);
74
+ nextIndex = moveIndex(currentIndex, rtl ? -1 : 1, enabled.length, loop);
71
75
  }
72
76
  if (orientation !== "vertical" && event.key === "ArrowLeft") {
73
- nextIndex = moveIndex(currentIndex, dir === "rtl" ? 1 : -1, enabled.length, loop);
77
+ nextIndex = moveIndex(currentIndex, rtl ? 1 : -1, enabled.length, loop);
74
78
  }
75
79
  if (orientation !== "horizontal" && event.key === "ArrowDown") {
76
80
  nextIndex = moveIndex(currentIndex, 1, enabled.length, loop);
@@ -100,7 +104,7 @@ function ToolbarRootClient({
100
104
  "data-orientation": orientation,
101
105
  "data-part": "root",
102
106
  "data-uiify-toolbar": "",
103
- dir,
107
+ ...dir ? { dir } : {},
104
108
  ref: rootRef,
105
109
  role: "toolbar",
106
110
  children
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/toolbar/Toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport type { HTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport type { Direction } from \"@gunkin/uiify/core/direction\";\nimport type { RovingFocusOrientation } from \"@gunkin/uiify/core/roving-focus\";\n\nimport {\n ToolbarButton as ServerToolbarButton,\n ToolbarLink as ServerToolbarLink,\n ToolbarSeparator as ServerToolbarSeparator,\n ToolbarToggleGroup as ServerToolbarToggleGroup,\n} from \"./ToolbarShell.js\";\nimport type {\n ToolbarButtonProps,\n ToolbarLinkProps,\n ToolbarSeparatorProps,\n ToolbarToggleGroupProps,\n} from \"./types.js\";\n\ninterface ToolbarRootClientProps extends HTMLAttributes<HTMLDivElement> {\n readonly children?: ReactNode;\n readonly dir?: Direction;\n readonly loop?: boolean;\n readonly orientation?: RovingFocusOrientation;\n}\n\nfunction getToolbarItems(root: HTMLDivElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>('[data-uiify-toolbar][data-part=\"item\"]'));\n}\n\nfunction isDisabledItem(item: HTMLElement): boolean {\n return item.getAttribute(\"aria-disabled\") === \"true\" || item.hasAttribute(\"disabled\");\n}\n\nfunction syncTabStops(root: HTMLDivElement, current: HTMLElement | null): HTMLElement | null {\n const items = getToolbarItems(root);\n const enabled = items.filter((item) => !isDisabledItem(item));\n if (enabled.length === 0) return null;\n\n const nextCurrent = current && enabled.includes(current) ? current : (enabled[0] ?? null);\n\n for (const item of items) {\n item.tabIndex = nextCurrent === item ? 0 : -1;\n }\n\n return nextCurrent;\n}\n\nfunction moveIndex(\n currentIndex: number,\n offset: number,\n length: number,\n loop: boolean,\n): number | null {\n if (length === 0) return null;\n if (loop) return (currentIndex + offset + length) % length;\n const nextIndex = currentIndex + offset;\n if (nextIndex < 0 || nextIndex >= length) return null;\n return nextIndex;\n}\n\nexport function ToolbarRootClient({\n children,\n className,\n dir,\n loop = true,\n orientation = \"horizontal\",\n ...consumerProps\n}: ToolbarRootClientProps): ReactElement {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const currentRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n currentRef.current = syncTabStops(root, currentRef.current);\n });\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n\n const handleFocusIn = (event: FocusEvent) => {\n const target = event.target;\n if (!(target instanceof HTMLElement)) return;\n const item = target.closest<HTMLElement>('[data-uiify-toolbar][data-part=\"item\"]');\n if (!item || !root.contains(item) || isDisabledItem(item)) return;\n currentRef.current = syncTabStops(root, item);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const target = event.target;\n if (!(target instanceof HTMLElement)) return;\n const item = target.closest<HTMLElement>('[data-uiify-toolbar][data-part=\"item\"]');\n if (!item || !root.contains(item)) return;\n\n const enabled = getToolbarItems(root).filter((entry) => !isDisabledItem(entry));\n const currentIndex = enabled.indexOf(item);\n if (currentIndex === -1) return;\n\n let nextIndex: number | null = null;\n if (event.key === \"Home\") nextIndex = 0;\n if (event.key === \"End\") nextIndex = enabled.length - 1;\n if (orientation !== \"vertical\" && event.key === \"ArrowRight\") {\n nextIndex = moveIndex(currentIndex, dir === \"rtl\" ? -1 : 1, enabled.length, loop);\n }\n if (orientation !== \"vertical\" && event.key === \"ArrowLeft\") {\n nextIndex = moveIndex(currentIndex, dir === \"rtl\" ? 1 : -1, enabled.length, loop);\n }\n if (orientation !== \"horizontal\" && event.key === \"ArrowDown\") {\n nextIndex = moveIndex(currentIndex, 1, enabled.length, loop);\n }\n if (orientation !== \"horizontal\" && event.key === \"ArrowUp\") {\n nextIndex = moveIndex(currentIndex, -1, enabled.length, loop);\n }\n\n if (nextIndex === null) return;\n\n event.preventDefault();\n const nextItem = enabled[nextIndex];\n if (!nextItem) return;\n currentRef.current = syncTabStops(root, nextItem);\n nextItem.focus();\n };\n\n root.addEventListener(\"focusin\", handleFocusIn);\n root.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n root.removeEventListener(\"focusin\", handleFocusIn);\n root.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [dir, loop, orientation]);\n\n return (\n <div\n {...consumerProps}\n className={className}\n data-orientation={orientation}\n data-part=\"root\"\n data-uiify-toolbar=\"\"\n dir={dir}\n ref={rootRef}\n role=\"toolbar\"\n >\n {children}\n </div>\n );\n}\nToolbarRootClient.displayName = \"ToolbarRootClient\";\n\nexport const ToolbarRoot = ToolbarRootClient;\n\nexport function ToolbarButton(props: ToolbarButtonProps): ReactElement | null {\n return <ServerToolbarButton {...props} />;\n}\nToolbarButton.displayName = \"ToolbarButton\";\n\nexport function ToolbarLink(props: ToolbarLinkProps): ReactElement | null {\n return <ServerToolbarLink {...props} />;\n}\nToolbarLink.displayName = \"ToolbarLink\";\n\nexport function ToolbarSeparator(props: ToolbarSeparatorProps): ReactElement | null {\n return <ServerToolbarSeparator {...props} />;\n}\nToolbarSeparator.displayName = \"ToolbarSeparator\";\n\nexport function ToolbarToggleGroup(props: ToolbarToggleGroupProps): ReactElement | null {\n return <ServerToolbarToggleGroup {...props} />;\n}\nToolbarToggleGroup.displayName = \"ToolbarToggleGroup\";\n\nexport const Toolbar = {\n Button: ToolbarButton,\n Link: ToolbarLink,\n Root: ToolbarRoot,\n Separator: ToolbarSeparator,\n ToggleGroup: ToolbarToggleGroup,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/toolbar/Toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport type { HTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { useDirectionOverride, type Direction } from \"@gunkin/uiify/core/direction\";\nimport { resolveDirection } from \"@gunkin/uiify/core/text-direction\";\nimport type { RovingFocusOrientation } from \"@gunkin/uiify/core/roving-focus\";\n\nimport {\n ToolbarButton as ServerToolbarButton,\n ToolbarLink as ServerToolbarLink,\n ToolbarSeparator as ServerToolbarSeparator,\n ToolbarToggleGroup as ServerToolbarToggleGroup,\n} from \"./ToolbarShell.js\";\nimport type {\n ToolbarButtonProps,\n ToolbarLinkProps,\n ToolbarSeparatorProps,\n ToolbarToggleGroupProps,\n} from \"./types.js\";\n\ninterface ToolbarRootClientProps extends HTMLAttributes<HTMLDivElement> {\n readonly children?: ReactNode;\n readonly dir?: Direction;\n readonly loop?: boolean;\n readonly orientation?: RovingFocusOrientation;\n}\n\nfunction getToolbarItems(root: HTMLDivElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>('[data-uiify-toolbar][data-part=\"item\"]'));\n}\n\nfunction isDisabledItem(item: HTMLElement): boolean {\n return item.getAttribute(\"aria-disabled\") === \"true\" || item.hasAttribute(\"disabled\");\n}\n\nfunction syncTabStops(root: HTMLDivElement, current: HTMLElement | null): HTMLElement | null {\n const items = getToolbarItems(root);\n const enabled = items.filter((item) => !isDisabledItem(item));\n if (enabled.length === 0) return null;\n\n const nextCurrent = current && enabled.includes(current) ? current : (enabled[0] ?? null);\n\n for (const item of items) {\n item.tabIndex = nextCurrent === item ? 0 : -1;\n }\n\n return nextCurrent;\n}\n\nfunction moveIndex(\n currentIndex: number,\n offset: number,\n length: number,\n loop: boolean,\n): number | null {\n if (length === 0) return null;\n if (loop) return (currentIndex + offset + length) % length;\n const nextIndex = currentIndex + offset;\n if (nextIndex < 0 || nextIndex >= length) return null;\n return nextIndex;\n}\n\nexport function ToolbarRootClient({\n children,\n className,\n dir: localDir,\n loop = true,\n orientation = \"horizontal\",\n ...consumerProps\n}: ToolbarRootClientProps): ReactElement {\n const dir = useDirectionOverride(localDir);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const currentRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n currentRef.current = syncTabStops(root, currentRef.current);\n });\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n\n const handleFocusIn = (event: FocusEvent) => {\n const target = event.target;\n if (!(target instanceof HTMLElement)) return;\n const item = target.closest<HTMLElement>('[data-uiify-toolbar][data-part=\"item\"]');\n if (!item || !root.contains(item) || isDisabledItem(item)) return;\n currentRef.current = syncTabStops(root, item);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const target = event.target;\n if (!(target instanceof HTMLElement)) return;\n const item = target.closest<HTMLElement>('[data-uiify-toolbar][data-part=\"item\"]');\n if (!item || !root.contains(item)) return;\n\n const enabled = getToolbarItems(root).filter((entry) => !isDisabledItem(entry));\n const currentIndex = enabled.indexOf(item);\n if (currentIndex === -1) return;\n\n let nextIndex: number | null = null;\n if (event.key === \"Home\") nextIndex = 0;\n if (event.key === \"End\") nextIndex = enabled.length - 1;\n const rtl = resolveDirection(item, dir) === \"rtl\";\n if (orientation !== \"vertical\" && event.key === \"ArrowRight\") {\n nextIndex = moveIndex(currentIndex, rtl ? -1 : 1, enabled.length, loop);\n }\n if (orientation !== \"vertical\" && event.key === \"ArrowLeft\") {\n nextIndex = moveIndex(currentIndex, rtl ? 1 : -1, enabled.length, loop);\n }\n if (orientation !== \"horizontal\" && event.key === \"ArrowDown\") {\n nextIndex = moveIndex(currentIndex, 1, enabled.length, loop);\n }\n if (orientation !== \"horizontal\" && event.key === \"ArrowUp\") {\n nextIndex = moveIndex(currentIndex, -1, enabled.length, loop);\n }\n\n if (nextIndex === null) return;\n\n event.preventDefault();\n const nextItem = enabled[nextIndex];\n if (!nextItem) return;\n currentRef.current = syncTabStops(root, nextItem);\n nextItem.focus();\n };\n\n root.addEventListener(\"focusin\", handleFocusIn);\n root.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n root.removeEventListener(\"focusin\", handleFocusIn);\n root.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [dir, loop, orientation]);\n\n return (\n <div\n {...consumerProps}\n className={className}\n data-orientation={orientation}\n data-part=\"root\"\n data-uiify-toolbar=\"\"\n {...(dir ? { dir } : {})}\n ref={rootRef}\n role=\"toolbar\"\n >\n {children}\n </div>\n );\n}\nToolbarRootClient.displayName = \"ToolbarRootClient\";\n\nexport const ToolbarRoot = ToolbarRootClient;\n\nexport function ToolbarButton(props: ToolbarButtonProps): ReactElement | null {\n return <ServerToolbarButton {...props} />;\n}\nToolbarButton.displayName = \"ToolbarButton\";\n\nexport function ToolbarLink(props: ToolbarLinkProps): ReactElement | null {\n return <ServerToolbarLink {...props} />;\n}\nToolbarLink.displayName = \"ToolbarLink\";\n\nexport function ToolbarSeparator(props: ToolbarSeparatorProps): ReactElement | null {\n return <ServerToolbarSeparator {...props} />;\n}\nToolbarSeparator.displayName = \"ToolbarSeparator\";\n\nexport function ToolbarToggleGroup(props: ToolbarToggleGroupProps): ReactElement | null {\n return <ServerToolbarToggleGroup {...props} />;\n}\nToolbarToggleGroup.displayName = \"ToolbarToggleGroup\";\n\nexport const Toolbar = {\n Button: ToolbarButton,\n Link: ToolbarLink,\n Root: ToolbarRoot,\n Separator: ToolbarSeparator,\n ToggleGroup: ToolbarToggleGroup,\n};\n"],"mappings":"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","names":[]}
@@ -8,4 +8,6 @@ export declare namespace DirectionProvider {
8
8
  var displayName: string;
9
9
  }
10
10
  export declare function useDirection(local?: Direction, element?: Element | null): Direction;
11
+ /** Returns `local`, else the nearest `DirectionProvider` value, else `undefined`. */
12
+ export declare function useDirectionOverride(local?: Direction): Direction | undefined;
11
13
  //# sourceMappingURL=direction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"direction.d.ts","sourceRoot":"","sources":["../../src/core/direction.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAItC,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;CACzB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,sBAAsB,+BAE1E;yBAFe,iBAAiB;;;AAKjC,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAMnF"}
1
+ {"version":3,"file":"direction.d.ts","sourceRoot":"","sources":["../../src/core/direction.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAItC,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;CACzB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,sBAAsB,+BAE1E;yBAFe,iBAAiB;;;AAKjC,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAQnF;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAG7E"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { createContext, useContext } from "react";
4
- const DirectionContext = createContext("ltr");
4
+ const DirectionContext = createContext(void 0);
5
5
  function DirectionProvider({ children, dir }) {
6
6
  return /* @__PURE__ */ jsx(DirectionContext, { value: dir, children });
7
7
  }
@@ -10,10 +10,15 @@ function useDirection(local, element) {
10
10
  const inherited = useContext(DirectionContext);
11
11
  if (local) return local;
12
12
  const semanticDirection = element?.closest("[dir]")?.getAttribute("dir");
13
- return semanticDirection === "rtl" || semanticDirection === "ltr" ? semanticDirection : inherited;
13
+ return semanticDirection === "rtl" || semanticDirection === "ltr" ? semanticDirection : inherited ?? "ltr";
14
+ }
15
+ function useDirectionOverride(local) {
16
+ const inherited = useContext(DirectionContext);
17
+ return local ?? inherited;
14
18
  }
15
19
  export {
16
20
  DirectionProvider,
17
- useDirection
21
+ useDirection,
22
+ useDirectionOverride
18
23
  };
19
24
  //# sourceMappingURL=direction.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/direction.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport type { PropsWithChildren } from \"react\";\n\nexport type Direction = \"ltr\" | \"rtl\";\n\nconst DirectionContext = createContext<Direction>(\"ltr\");\n\nexport interface DirectionProviderProps extends PropsWithChildren {\n readonly dir: Direction;\n}\n\nexport function DirectionProvider({ children, dir }: DirectionProviderProps) {\n return <DirectionContext value={dir}>{children}</DirectionContext>;\n}\nDirectionProvider.displayName = \"DirectionProvider\";\n\nexport function useDirection(local?: Direction, element?: Element | null): Direction {\n const inherited = useContext(DirectionContext);\n if (local) return local;\n\n const semanticDirection = element?.closest(\"[dir]\")?.getAttribute(\"dir\");\n return semanticDirection === \"rtl\" || semanticDirection === \"ltr\" ? semanticDirection : inherited;\n}\n"],"mappings":";AAcS;AAZT,SAAS,eAAe,kBAAkB;AAK1C,MAAM,mBAAmB,cAAyB,KAAK;AAMhD,SAAS,kBAAkB,EAAE,UAAU,IAAI,GAA2B;AAC3E,SAAO,oBAAC,oBAAiB,OAAO,KAAM,UAAS;AACjD;AACA,kBAAkB,cAAc;AAEzB,SAAS,aAAa,OAAmB,SAAqC;AACnF,QAAM,YAAY,WAAW,gBAAgB;AAC7C,MAAI,MAAO,QAAO;AAElB,QAAM,oBAAoB,SAAS,QAAQ,OAAO,GAAG,aAAa,KAAK;AACvE,SAAO,sBAAsB,SAAS,sBAAsB,QAAQ,oBAAoB;AAC1F;","names":[]}
1
+ {"version":3,"sources":["../../src/core/direction.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport type { PropsWithChildren } from \"react\";\n\nexport type Direction = \"ltr\" | \"rtl\";\n\nconst DirectionContext = createContext<Direction | undefined>(undefined);\n\nexport interface DirectionProviderProps extends PropsWithChildren {\n readonly dir: Direction;\n}\n\nexport function DirectionProvider({ children, dir }: DirectionProviderProps) {\n return <DirectionContext value={dir}>{children}</DirectionContext>;\n}\nDirectionProvider.displayName = \"DirectionProvider\";\n\nexport function useDirection(local?: Direction, element?: Element | null): Direction {\n const inherited = useContext(DirectionContext);\n if (local) return local;\n\n const semanticDirection = element?.closest(\"[dir]\")?.getAttribute(\"dir\");\n return semanticDirection === \"rtl\" || semanticDirection === \"ltr\"\n ? semanticDirection\n : (inherited ?? \"ltr\");\n}\n\n/** Returns `local`, else the nearest `DirectionProvider` value, else `undefined`. */\nexport function useDirectionOverride(local?: Direction): Direction | undefined {\n const inherited = useContext(DirectionContext);\n return local ?? inherited;\n}\n"],"mappings":";AAcS;AAZT,SAAS,eAAe,kBAAkB;AAK1C,MAAM,mBAAmB,cAAqC,MAAS;AAMhE,SAAS,kBAAkB,EAAE,UAAU,IAAI,GAA2B;AAC3E,SAAO,oBAAC,oBAAiB,OAAO,KAAM,UAAS;AACjD;AACA,kBAAkB,cAAc;AAEzB,SAAS,aAAa,OAAmB,SAAqC;AACnF,QAAM,YAAY,WAAW,gBAAgB;AAC7C,MAAI,MAAO,QAAO;AAElB,QAAM,oBAAoB,SAAS,QAAQ,OAAO,GAAG,aAAa,KAAK;AACvE,SAAO,sBAAsB,SAAS,sBAAsB,QACxD,oBACC,aAAa;AACpB;AAGO,SAAS,qBAAqB,OAA0C;AAC7E,QAAM,YAAY,WAAW,gBAAgB;AAC7C,SAAO,SAAS;AAClB;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"dismissable-layer-registry.d.ts","sourceRoot":"","sources":["../../src/core/dismissable-layer-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACtE;AA6CD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,sBAAsB,GAC7B,MAAM,IAAI,CAaZ"}
1
+ {"version":3,"file":"dismissable-layer-registry.d.ts","sourceRoot":"","sources":["../../src/core/dismissable-layer-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACtE;AA8CD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,sBAAsB,GAC7B,MAAM,IAAI,CAaZ"}
@@ -1,3 +1,4 @@
1
+ import { isComposingKeyEvent } from "./ime.js";
1
2
  import { getEventPath, isEventInsideLayer } from "./platform.js";
2
3
  const registries = /* @__PURE__ */ new WeakMap();
3
4
  function dispatch(document, reason, event) {
@@ -15,7 +16,8 @@ function createRegistry(document) {
15
16
  document.addEventListener(
16
17
  "keydown",
17
18
  (event) => {
18
- if (event.key === "Escape") dispatch(document, "escape-key", event);
19
+ if (event.key === "Escape" && !isComposingKeyEvent(event))
20
+ dispatch(document, "escape-key", event);
19
21
  },
20
22
  options
21
23
  );