@yamada-ui/react 2.2.6 → 2.2.7-dev-20260804111744

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 (811) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -1
  2. package/dist/cjs/components/accordion/accordion.cjs +4 -2
  3. package/dist/cjs/components/accordion/accordion.cjs.map +1 -1
  4. package/dist/cjs/components/accordion/use-accordion.cjs +1 -0
  5. package/dist/cjs/components/accordion/use-accordion.cjs.map +1 -1
  6. package/dist/cjs/components/action-bar/action-bar.cjs +1 -0
  7. package/dist/cjs/components/action-bar/action-bar.cjs.map +1 -1
  8. package/dist/cjs/components/action-bar/use-action-bar.cjs +1 -0
  9. package/dist/cjs/components/action-bar/use-action-bar.cjs.map +1 -1
  10. package/dist/cjs/components/airy/airy.cjs +1 -0
  11. package/dist/cjs/components/airy/airy.cjs.map +1 -1
  12. package/dist/cjs/components/alert/alert.cjs +5 -2
  13. package/dist/cjs/components/alert/alert.cjs.map +1 -1
  14. package/dist/cjs/components/alpha-slider/alpha-slider.cjs +1 -0
  15. package/dist/cjs/components/alpha-slider/alpha-slider.cjs.map +1 -1
  16. package/dist/cjs/components/aspect-ratio/aspect-ratio.cjs +1 -0
  17. package/dist/cjs/components/aspect-ratio/aspect-ratio.cjs.map +1 -1
  18. package/dist/cjs/components/autocomplete/autocomplete.cjs +14 -10
  19. package/dist/cjs/components/autocomplete/autocomplete.cjs.map +1 -1
  20. package/dist/cjs/components/autocomplete/use-autocomplete.cjs +1 -0
  21. package/dist/cjs/components/autocomplete/use-autocomplete.cjs.map +1 -1
  22. package/dist/cjs/components/avatar/avatar-group.cjs +13 -11
  23. package/dist/cjs/components/avatar/avatar-group.cjs.map +1 -1
  24. package/dist/cjs/components/avatar/use-avatar-group.cjs +1 -0
  25. package/dist/cjs/components/avatar/use-avatar-group.cjs.map +1 -1
  26. package/dist/cjs/components/avatar/use-avatar.cjs +1 -0
  27. package/dist/cjs/components/avatar/use-avatar.cjs.map +1 -1
  28. package/dist/cjs/components/blockquote/blockquote.cjs +1 -0
  29. package/dist/cjs/components/blockquote/blockquote.cjs.map +1 -1
  30. package/dist/cjs/components/breadcrumb/breadcrumb.cjs +1 -0
  31. package/dist/cjs/components/breadcrumb/breadcrumb.cjs.map +1 -1
  32. package/dist/cjs/components/breadcrumb/use-breadcrumb.cjs +1 -0
  33. package/dist/cjs/components/breadcrumb/use-breadcrumb.cjs.map +1 -1
  34. package/dist/cjs/components/button/button-group.cjs +1 -0
  35. package/dist/cjs/components/button/button-group.cjs.map +1 -1
  36. package/dist/cjs/components/button/button.cjs +9 -5
  37. package/dist/cjs/components/button/button.cjs.map +1 -1
  38. package/dist/cjs/components/calendar/calendar.cjs +1 -0
  39. package/dist/cjs/components/calendar/calendar.cjs.map +1 -1
  40. package/dist/cjs/components/calendar/use-calendar.cjs.map +1 -1
  41. package/dist/cjs/components/carousel/carousel.cjs +27 -25
  42. package/dist/cjs/components/carousel/carousel.cjs.map +1 -1
  43. package/dist/cjs/components/carousel/use-carousel.cjs.map +1 -1
  44. package/dist/cjs/components/chart/area-chart.cjs +6 -4
  45. package/dist/cjs/components/chart/area-chart.cjs.map +1 -1
  46. package/dist/cjs/components/chart/bar-chart.cjs +6 -4
  47. package/dist/cjs/components/chart/bar-chart.cjs.map +1 -1
  48. package/dist/cjs/components/chart/cartesian-chart.cjs +146 -139
  49. package/dist/cjs/components/chart/cartesian-chart.cjs.map +1 -1
  50. package/dist/cjs/components/chart/chart.cjs +3 -1
  51. package/dist/cjs/components/chart/chart.cjs.map +1 -1
  52. package/dist/cjs/components/chart/composed-chart.cjs +16 -14
  53. package/dist/cjs/components/chart/composed-chart.cjs.map +1 -1
  54. package/dist/cjs/components/chart/donut-chart.cjs +8 -5
  55. package/dist/cjs/components/chart/donut-chart.cjs.map +1 -1
  56. package/dist/cjs/components/chart/line-chart.cjs +6 -4
  57. package/dist/cjs/components/chart/line-chart.cjs.map +1 -1
  58. package/dist/cjs/components/chart/pie-chart.cjs +8 -5
  59. package/dist/cjs/components/chart/pie-chart.cjs.map +1 -1
  60. package/dist/cjs/components/chart/polar-chart.cjs +119 -111
  61. package/dist/cjs/components/chart/polar-chart.cjs.map +1 -1
  62. package/dist/cjs/components/chart/radar-chart.cjs +6 -4
  63. package/dist/cjs/components/chart/radar-chart.cjs.map +1 -1
  64. package/dist/cjs/components/chart/radial-chart.cjs +1 -0
  65. package/dist/cjs/components/chart/radial-chart.cjs.map +1 -1
  66. package/dist/cjs/components/chart/use-cartesian-chart.cjs +1 -0
  67. package/dist/cjs/components/chart/use-cartesian-chart.cjs.map +1 -1
  68. package/dist/cjs/components/chart/use-chart.cjs +1 -0
  69. package/dist/cjs/components/chart/use-chart.cjs.map +1 -1
  70. package/dist/cjs/components/chart/use-polar-chart.cjs +1 -0
  71. package/dist/cjs/components/chart/use-polar-chart.cjs.map +1 -1
  72. package/dist/cjs/components/checkbox/checkbox-group.cjs +39 -36
  73. package/dist/cjs/components/checkbox/checkbox-group.cjs.map +1 -1
  74. package/dist/cjs/components/checkbox/checkbox.cjs +1 -0
  75. package/dist/cjs/components/checkbox/checkbox.cjs.map +1 -1
  76. package/dist/cjs/components/checkbox/use-checkbox-group.cjs +1 -0
  77. package/dist/cjs/components/checkbox/use-checkbox-group.cjs.map +1 -1
  78. package/dist/cjs/components/checkbox/use-checkbox.cjs +3 -1
  79. package/dist/cjs/components/checkbox/use-checkbox.cjs.map +1 -1
  80. package/dist/cjs/components/checkbox-card/checkbox-card-group.cjs +43 -40
  81. package/dist/cjs/components/checkbox-card/checkbox-card-group.cjs.map +1 -1
  82. package/dist/cjs/components/checkbox-card/checkbox-card.cjs +1 -0
  83. package/dist/cjs/components/checkbox-card/checkbox-card.cjs.map +1 -1
  84. package/dist/cjs/components/circle-progress/circle-progress.cjs.map +1 -1
  85. package/dist/cjs/components/client-only/client-only.cjs +2 -1
  86. package/dist/cjs/components/client-only/client-only.cjs.map +1 -1
  87. package/dist/cjs/components/collapse/collapse.cjs +1 -0
  88. package/dist/cjs/components/collapse/collapse.cjs.map +1 -1
  89. package/dist/cjs/components/color-picker/color-picker.cjs +3 -1
  90. package/dist/cjs/components/color-picker/color-picker.cjs.map +1 -1
  91. package/dist/cjs/components/color-picker/use-color-picker.cjs +1 -0
  92. package/dist/cjs/components/color-picker/use-color-picker.cjs.map +1 -1
  93. package/dist/cjs/components/color-selector/color-selector.cjs +3 -1
  94. package/dist/cjs/components/color-selector/color-selector.cjs.map +1 -1
  95. package/dist/cjs/components/color-selector/use-color-selector.cjs +1 -0
  96. package/dist/cjs/components/color-selector/use-color-selector.cjs.map +1 -1
  97. package/dist/cjs/components/color-swatch/color-swatch.cjs.map +1 -1
  98. package/dist/cjs/components/data-list/data-list.cjs +9 -5
  99. package/dist/cjs/components/data-list/data-list.cjs.map +1 -1
  100. package/dist/cjs/components/date-picker/date-picker.cjs +3 -1
  101. package/dist/cjs/components/date-picker/date-picker.cjs.map +1 -1
  102. package/dist/cjs/components/date-picker/use-date-picker.cjs.map +1 -1
  103. package/dist/cjs/components/drawer/drawer.cjs +1 -0
  104. package/dist/cjs/components/drawer/drawer.cjs.map +1 -1
  105. package/dist/cjs/components/drawer/use-drawer.cjs +2 -3
  106. package/dist/cjs/components/drawer/use-drawer.cjs.map +1 -1
  107. package/dist/cjs/components/dropzone/dropzone.cjs +3 -1
  108. package/dist/cjs/components/dropzone/dropzone.cjs.map +1 -1
  109. package/dist/cjs/components/dropzone/use-dropzone.cjs +1 -0
  110. package/dist/cjs/components/dropzone/use-dropzone.cjs.map +1 -1
  111. package/dist/cjs/components/editable/editable.cjs.map +1 -1
  112. package/dist/cjs/components/editable/use-editable.cjs +1 -0
  113. package/dist/cjs/components/editable/use-editable.cjs.map +1 -1
  114. package/dist/cjs/components/fade/fade.cjs +1 -0
  115. package/dist/cjs/components/fade/fade.cjs.map +1 -1
  116. package/dist/cjs/components/fade-scale/fade-scale.cjs +1 -0
  117. package/dist/cjs/components/fade-scale/fade-scale.cjs.map +1 -1
  118. package/dist/cjs/components/field/field.cjs +1 -0
  119. package/dist/cjs/components/field/field.cjs.map +1 -1
  120. package/dist/cjs/components/field/use-field-props.cjs +1 -0
  121. package/dist/cjs/components/field/use-field-props.cjs.map +1 -1
  122. package/dist/cjs/components/fieldset/fieldset.cjs +1 -0
  123. package/dist/cjs/components/fieldset/fieldset.cjs.map +1 -1
  124. package/dist/cjs/components/file-button/use-file-button.cjs +1 -0
  125. package/dist/cjs/components/file-button/use-file-button.cjs.map +1 -1
  126. package/dist/cjs/components/file-input/file-input.cjs +3 -1
  127. package/dist/cjs/components/file-input/file-input.cjs.map +1 -1
  128. package/dist/cjs/components/file-input/use-file-input.cjs +1 -0
  129. package/dist/cjs/components/file-input/use-file-input.cjs.map +1 -1
  130. package/dist/cjs/components/flip/flip.cjs +1 -0
  131. package/dist/cjs/components/flip/flip.cjs.map +1 -1
  132. package/dist/cjs/components/float/float.cjs.map +1 -1
  133. package/dist/cjs/components/focus-lock/focus-lock.cjs.map +1 -1
  134. package/dist/cjs/components/for/for.cjs.map +1 -1
  135. package/dist/cjs/components/form/form.cjs +1 -0
  136. package/dist/cjs/components/form/form.cjs.map +1 -1
  137. package/dist/cjs/components/format/use-format-byte.cjs +1 -0
  138. package/dist/cjs/components/format/use-format-byte.cjs.map +1 -1
  139. package/dist/cjs/components/format/use-format-date-time.cjs +1 -0
  140. package/dist/cjs/components/format/use-format-date-time.cjs.map +1 -1
  141. package/dist/cjs/components/format/use-format-number.cjs +1 -0
  142. package/dist/cjs/components/format/use-format-number.cjs.map +1 -1
  143. package/dist/cjs/components/grid/grid-item.cjs.map +1 -1
  144. package/dist/cjs/components/group/group.cjs.map +1 -1
  145. package/dist/cjs/components/group/use-group.cjs +1 -0
  146. package/dist/cjs/components/group/use-group.cjs.map +1 -1
  147. package/dist/cjs/components/highlight/highlight.cjs +1 -0
  148. package/dist/cjs/components/highlight/highlight.cjs.map +1 -1
  149. package/dist/cjs/components/highlight/use-highlight.cjs +1 -0
  150. package/dist/cjs/components/highlight/use-highlight.cjs.map +1 -1
  151. package/dist/cjs/components/hue-slider/hue-slider.cjs +1 -0
  152. package/dist/cjs/components/hue-slider/hue-slider.cjs.map +1 -1
  153. package/dist/cjs/components/icon/icons/index.cjs +30 -6
  154. package/dist/cjs/components/icon/icons/index.cjs.map +1 -1
  155. package/dist/cjs/components/icon/icons/layout-freeform-icon.cjs +14 -0
  156. package/dist/cjs/components/icon/icons/layout-freeform-icon.cjs.map +1 -0
  157. package/dist/cjs/components/icon/icons/mic-audio-lines-icon.cjs +14 -0
  158. package/dist/cjs/components/icon/icons/mic-audio-lines-icon.cjs.map +1 -0
  159. package/dist/cjs/components/icon/icons/mic-signal-icon.cjs +14 -0
  160. package/dist/cjs/components/icon/icons/mic-signal-icon.cjs.map +1 -0
  161. package/dist/cjs/components/icon/icons/mosque-icon.cjs +14 -0
  162. package/dist/cjs/components/icon/icons/mosque-icon.cjs.map +1 -0
  163. package/dist/cjs/components/icon/icons/rotate-ccw-clock-icon.cjs +14 -0
  164. package/dist/cjs/components/icon/icons/rotate-ccw-clock-icon.cjs.map +1 -0
  165. package/dist/cjs/components/icon/icons/rotate-cw-fading-clock-icon.cjs +14 -0
  166. package/dist/cjs/components/icon/icons/rotate-cw-fading-clock-icon.cjs.map +1 -0
  167. package/dist/cjs/components/icon/icons/scan-square-icon.cjs +14 -0
  168. package/dist/cjs/components/icon/icons/scan-square-icon.cjs.map +1 -0
  169. package/dist/cjs/components/icon/icons/shield-keyhole-icon.cjs +14 -0
  170. package/dist/cjs/components/icon/icons/shield-keyhole-icon.cjs.map +1 -0
  171. package/dist/cjs/components/icon/icons/square-off-icon.cjs +14 -0
  172. package/dist/cjs/components/icon/icons/square-off-icon.cjs.map +1 -0
  173. package/dist/cjs/components/icon/icons/user-shield-icon.cjs +14 -0
  174. package/dist/cjs/components/icon/icons/user-shield-icon.cjs.map +1 -0
  175. package/dist/cjs/components/icon/index.cjs +20 -4
  176. package/dist/cjs/components/indicator/indicator.cjs +1 -0
  177. package/dist/cjs/components/indicator/indicator.cjs.map +1 -1
  178. package/dist/cjs/components/infinite-scroll-area/infinite-scroll-area.cjs +3 -1
  179. package/dist/cjs/components/infinite-scroll-area/infinite-scroll-area.cjs.map +1 -1
  180. package/dist/cjs/components/infinite-scroll-area/use-infinite-scroll.cjs +1 -0
  181. package/dist/cjs/components/infinite-scroll-area/use-infinite-scroll.cjs.map +1 -1
  182. package/dist/cjs/components/input/input-group.cjs +14 -12
  183. package/dist/cjs/components/input/input-group.cjs.map +1 -1
  184. package/dist/cjs/components/input/input.style.cjs.map +1 -1
  185. package/dist/cjs/components/input/use-input-border.cjs +1 -0
  186. package/dist/cjs/components/input/use-input-border.cjs.map +1 -1
  187. package/dist/cjs/components/link-box/link-box.cjs.map +1 -1
  188. package/dist/cjs/components/list/list.cjs +1 -0
  189. package/dist/cjs/components/list/list.cjs.map +1 -1
  190. package/dist/cjs/components/loading/audio.cjs.map +1 -1
  191. package/dist/cjs/components/loading/background.cjs +1 -0
  192. package/dist/cjs/components/loading/background.cjs.map +1 -1
  193. package/dist/cjs/components/loading/circles.cjs.map +1 -1
  194. package/dist/cjs/components/loading/dots.cjs.map +1 -1
  195. package/dist/cjs/components/loading/grid.cjs.map +1 -1
  196. package/dist/cjs/components/loading/loading-provider.cjs +1 -0
  197. package/dist/cjs/components/loading/loading-provider.cjs.map +1 -1
  198. package/dist/cjs/components/loading/oval.cjs.map +1 -1
  199. package/dist/cjs/components/loading/page.cjs +1 -0
  200. package/dist/cjs/components/loading/page.cjs.map +1 -1
  201. package/dist/cjs/components/loading/puff.cjs.map +1 -1
  202. package/dist/cjs/components/loading/rings.cjs.map +1 -1
  203. package/dist/cjs/components/loading/screen.cjs +1 -0
  204. package/dist/cjs/components/loading/screen.cjs.map +1 -1
  205. package/dist/cjs/components/loading/suspense.cjs +1 -0
  206. package/dist/cjs/components/loading/suspense.cjs.map +1 -1
  207. package/dist/cjs/components/loading/use-loading-component.cjs +1 -0
  208. package/dist/cjs/components/loading/use-loading-component.cjs.map +1 -1
  209. package/dist/cjs/components/menu/menu.cjs +13 -10
  210. package/dist/cjs/components/menu/menu.cjs.map +1 -1
  211. package/dist/cjs/components/menu/use-menu.cjs +1 -0
  212. package/dist/cjs/components/menu/use-menu.cjs.map +1 -1
  213. package/dist/cjs/components/modal/modal.cjs +1 -0
  214. package/dist/cjs/components/modal/modal.cjs.map +1 -1
  215. package/dist/cjs/components/modal/use-modal.cjs +1 -0
  216. package/dist/cjs/components/modal/use-modal.cjs.map +1 -1
  217. package/dist/cjs/components/motion/motion.cjs +1 -0
  218. package/dist/cjs/components/motion/motion.cjs.map +1 -1
  219. package/dist/cjs/components/motion/transition.cjs.map +1 -1
  220. package/dist/cjs/components/native-accordion/native-accordion.cjs +1 -0
  221. package/dist/cjs/components/native-accordion/native-accordion.cjs.map +1 -1
  222. package/dist/cjs/components/native-accordion/use-native-accordion.cjs +1 -0
  223. package/dist/cjs/components/native-accordion/use-native-accordion.cjs.map +1 -1
  224. package/dist/cjs/components/native-popover/native-popover.cjs +1 -0
  225. package/dist/cjs/components/native-popover/native-popover.cjs.map +1 -1
  226. package/dist/cjs/components/native-popover/use-native-popover.cjs +1 -0
  227. package/dist/cjs/components/native-popover/use-native-popover.cjs.map +1 -1
  228. package/dist/cjs/components/native-select/native-select.cjs +2 -1
  229. package/dist/cjs/components/native-select/native-select.cjs.map +1 -1
  230. package/dist/cjs/components/native-select/use-native-select.cjs +1 -0
  231. package/dist/cjs/components/native-select/use-native-select.cjs.map +1 -1
  232. package/dist/cjs/components/notice/notice-provider.cjs +1 -0
  233. package/dist/cjs/components/notice/notice-provider.cjs.map +1 -1
  234. package/dist/cjs/components/notice/notice.cjs +1 -0
  235. package/dist/cjs/components/notice/notice.cjs.map +1 -1
  236. package/dist/cjs/components/notice/use-notice.cjs +1 -0
  237. package/dist/cjs/components/notice/use-notice.cjs.map +1 -1
  238. package/dist/cjs/components/number-input/number-input.cjs +2 -1
  239. package/dist/cjs/components/number-input/number-input.cjs.map +1 -1
  240. package/dist/cjs/components/number-input/use-number-counter.cjs +1 -0
  241. package/dist/cjs/components/number-input/use-number-counter.cjs.map +1 -1
  242. package/dist/cjs/components/number-input/use-number-input.cjs +1 -0
  243. package/dist/cjs/components/number-input/use-number-input.cjs.map +1 -1
  244. package/dist/cjs/components/number-input/use-spinner.cjs +1 -0
  245. package/dist/cjs/components/number-input/use-spinner.cjs.map +1 -1
  246. package/dist/cjs/components/pagination/pagination.cjs +1 -0
  247. package/dist/cjs/components/pagination/pagination.cjs.map +1 -1
  248. package/dist/cjs/components/pagination/use-pagination.cjs +1 -0
  249. package/dist/cjs/components/pagination/use-pagination.cjs.map +1 -1
  250. package/dist/cjs/components/password-input/password-input.cjs +2 -1
  251. package/dist/cjs/components/password-input/password-input.cjs.map +1 -1
  252. package/dist/cjs/components/password-input/use-password-input.cjs +1 -0
  253. package/dist/cjs/components/password-input/use-password-input.cjs.map +1 -1
  254. package/dist/cjs/components/password-input/use-strength-meter.cjs +1 -0
  255. package/dist/cjs/components/password-input/use-strength-meter.cjs.map +1 -1
  256. package/dist/cjs/components/picture/picture.cjs +1 -0
  257. package/dist/cjs/components/picture/picture.cjs.map +1 -1
  258. package/dist/cjs/components/pin-input/pin-input.cjs +1 -0
  259. package/dist/cjs/components/pin-input/pin-input.cjs.map +1 -1
  260. package/dist/cjs/components/pin-input/use-pin-input.cjs +1 -0
  261. package/dist/cjs/components/pin-input/use-pin-input.cjs.map +1 -1
  262. package/dist/cjs/components/popover/popover.cjs +1 -0
  263. package/dist/cjs/components/popover/popover.cjs.map +1 -1
  264. package/dist/cjs/components/popover/use-popover.cjs +1 -0
  265. package/dist/cjs/components/popover/use-popover.cjs.map +1 -1
  266. package/dist/cjs/components/portal/portal.cjs +1 -0
  267. package/dist/cjs/components/portal/portal.cjs.map +1 -1
  268. package/dist/cjs/components/progress/progress.cjs.map +1 -1
  269. package/dist/cjs/components/progress/use-progress.cjs +1 -0
  270. package/dist/cjs/components/progress/use-progress.cjs.map +1 -1
  271. package/dist/cjs/components/qr-code/qr-code.cjs +1 -0
  272. package/dist/cjs/components/qr-code/qr-code.cjs.map +1 -1
  273. package/dist/cjs/components/qr-code/use-qr-code.cjs +1 -0
  274. package/dist/cjs/components/qr-code/use-qr-code.cjs.map +1 -1
  275. package/dist/cjs/components/radio/radio-group.cjs +37 -34
  276. package/dist/cjs/components/radio/radio-group.cjs.map +1 -1
  277. package/dist/cjs/components/radio/radio.cjs +1 -0
  278. package/dist/cjs/components/radio/radio.cjs.map +1 -1
  279. package/dist/cjs/components/radio/use-radio-group.cjs +1 -0
  280. package/dist/cjs/components/radio/use-radio-group.cjs.map +1 -1
  281. package/dist/cjs/components/radio/use-radio.cjs +3 -1
  282. package/dist/cjs/components/radio/use-radio.cjs.map +1 -1
  283. package/dist/cjs/components/radio-card/radio-card-group.cjs +41 -38
  284. package/dist/cjs/components/radio-card/radio-card-group.cjs.map +1 -1
  285. package/dist/cjs/components/radio-card/radio-card.cjs +1 -0
  286. package/dist/cjs/components/radio-card/radio-card.cjs.map +1 -1
  287. package/dist/cjs/components/rating/rating.cjs +1 -0
  288. package/dist/cjs/components/rating/rating.cjs.map +1 -1
  289. package/dist/cjs/components/rating/use-rating.cjs +1 -0
  290. package/dist/cjs/components/rating/use-rating.cjs.map +1 -1
  291. package/dist/cjs/components/reorder/use-reorder.cjs +1 -0
  292. package/dist/cjs/components/reorder/use-reorder.cjs.map +1 -1
  293. package/dist/cjs/components/resizable/resizable.cjs +13 -10
  294. package/dist/cjs/components/resizable/resizable.cjs.map +1 -1
  295. package/dist/cjs/components/resizable/use-resizable.cjs +1 -0
  296. package/dist/cjs/components/resizable/use-resizable.cjs.map +1 -1
  297. package/dist/cjs/components/ripple/ripple.cjs.map +1 -1
  298. package/dist/cjs/components/ripple/use-ripple.cjs +1 -0
  299. package/dist/cjs/components/ripple/use-ripple.cjs.map +1 -1
  300. package/dist/cjs/components/rotate/rotate.cjs +1 -0
  301. package/dist/cjs/components/rotate/rotate.cjs.map +1 -1
  302. package/dist/cjs/components/saturation-slider/saturation-slider.cjs +1 -0
  303. package/dist/cjs/components/saturation-slider/saturation-slider.cjs.map +1 -1
  304. package/dist/cjs/components/saturation-slider/use-saturation-slider.cjs +1 -0
  305. package/dist/cjs/components/saturation-slider/use-saturation-slider.cjs.map +1 -1
  306. package/dist/cjs/components/scroll-area/use-scroll-area.cjs +1 -0
  307. package/dist/cjs/components/scroll-area/use-scroll-area.cjs.map +1 -1
  308. package/dist/cjs/components/segmented-control/segmented-control.cjs +3 -1
  309. package/dist/cjs/components/segmented-control/segmented-control.cjs.map +1 -1
  310. package/dist/cjs/components/segmented-control/use-segmented-control.cjs +1 -0
  311. package/dist/cjs/components/segmented-control/use-segmented-control.cjs.map +1 -1
  312. package/dist/cjs/components/select/select.cjs +14 -10
  313. package/dist/cjs/components/select/select.cjs.map +1 -1
  314. package/dist/cjs/components/select/use-select.cjs +1 -0
  315. package/dist/cjs/components/select/use-select.cjs.map +1 -1
  316. package/dist/cjs/components/show/show.cjs +1 -0
  317. package/dist/cjs/components/show/show.cjs.map +1 -1
  318. package/dist/cjs/components/sidebar/sidebar.cjs +6 -3
  319. package/dist/cjs/components/sidebar/sidebar.cjs.map +1 -1
  320. package/dist/cjs/components/sidebar/use-sidebar.cjs +1 -0
  321. package/dist/cjs/components/sidebar/use-sidebar.cjs.map +1 -1
  322. package/dist/cjs/components/simple-grid/simple-grid.cjs +1 -0
  323. package/dist/cjs/components/simple-grid/simple-grid.cjs.map +1 -1
  324. package/dist/cjs/components/skeleton/skeleton.cjs.map +1 -1
  325. package/dist/cjs/components/slide/slide.cjs +1 -0
  326. package/dist/cjs/components/slide/slide.cjs.map +1 -1
  327. package/dist/cjs/components/slide-fade/slide-fade.cjs +1 -0
  328. package/dist/cjs/components/slide-fade/slide-fade.cjs.map +1 -1
  329. package/dist/cjs/components/slider/slider.cjs +3 -1
  330. package/dist/cjs/components/slider/slider.cjs.map +1 -1
  331. package/dist/cjs/components/slider/use-slider.cjs +3 -1
  332. package/dist/cjs/components/slider/use-slider.cjs.map +1 -1
  333. package/dist/cjs/components/slot/slot.cjs +1 -0
  334. package/dist/cjs/components/slot/slot.cjs.map +1 -1
  335. package/dist/cjs/components/snacks/snacks.cjs +1 -0
  336. package/dist/cjs/components/snacks/snacks.cjs.map +1 -1
  337. package/dist/cjs/components/snacks/use-snacks.cjs +1 -0
  338. package/dist/cjs/components/snacks/use-snacks.cjs.map +1 -1
  339. package/dist/cjs/components/stack/stack.cjs +1 -0
  340. package/dist/cjs/components/stack/stack.cjs.map +1 -1
  341. package/dist/cjs/components/stack/z-stack.cjs +5 -2
  342. package/dist/cjs/components/stack/z-stack.cjs.map +1 -1
  343. package/dist/cjs/components/steps/steps.cjs +51 -47
  344. package/dist/cjs/components/steps/steps.cjs.map +1 -1
  345. package/dist/cjs/components/steps/use-steps.cjs +1 -0
  346. package/dist/cjs/components/steps/use-steps.cjs.map +1 -1
  347. package/dist/cjs/components/switch/switch.cjs.map +1 -1
  348. package/dist/cjs/components/switch/use-switch.cjs +1 -0
  349. package/dist/cjs/components/switch/use-switch.cjs.map +1 -1
  350. package/dist/cjs/components/table/table.cjs +51 -49
  351. package/dist/cjs/components/table/table.cjs.map +1 -1
  352. package/dist/cjs/components/tabs/tabs.cjs +23 -20
  353. package/dist/cjs/components/tabs/tabs.cjs.map +1 -1
  354. package/dist/cjs/components/tabs/use-tabs.cjs +1 -0
  355. package/dist/cjs/components/tabs/use-tabs.cjs.map +1 -1
  356. package/dist/cjs/components/tag/tag.cjs +1 -0
  357. package/dist/cjs/components/tag/tag.cjs.map +1 -1
  358. package/dist/cjs/components/textarea/use-autosize.cjs +1 -0
  359. package/dist/cjs/components/textarea/use-autosize.cjs.map +1 -1
  360. package/dist/cjs/components/textarea/use-textarea.cjs +1 -0
  361. package/dist/cjs/components/textarea/use-textarea.cjs.map +1 -1
  362. package/dist/cjs/components/timeline/timeline.cjs +1 -0
  363. package/dist/cjs/components/timeline/timeline.cjs.map +1 -1
  364. package/dist/cjs/components/tip/tip.cjs.map +1 -1
  365. package/dist/cjs/components/toggle/toggle-group.cjs +27 -24
  366. package/dist/cjs/components/toggle/toggle-group.cjs.map +1 -1
  367. package/dist/cjs/components/toggle/use-toggle-group.cjs +1 -0
  368. package/dist/cjs/components/toggle/use-toggle-group.cjs.map +1 -1
  369. package/dist/cjs/components/toggle/use-toggle.cjs +1 -0
  370. package/dist/cjs/components/toggle/use-toggle.cjs.map +1 -1
  371. package/dist/cjs/components/tooltip/tooltip.cjs.map +1 -1
  372. package/dist/cjs/components/tooltip/use-tooltip.cjs +1 -0
  373. package/dist/cjs/components/tooltip/use-tooltip.cjs.map +1 -1
  374. package/dist/cjs/components/tree/tree.cjs +1 -0
  375. package/dist/cjs/components/tree/tree.cjs.map +1 -1
  376. package/dist/cjs/components/tree/use-tree.cjs +1 -0
  377. package/dist/cjs/components/tree/use-tree.cjs.map +1 -1
  378. package/dist/cjs/core/components/create-component.cjs +5 -2
  379. package/dist/cjs/core/components/create-component.cjs.map +1 -1
  380. package/dist/cjs/core/components/props.cjs.map +1 -1
  381. package/dist/cjs/core/components/use-component-style.cjs +11 -6
  382. package/dist/cjs/core/components/use-component-style.cjs.map +1 -1
  383. package/dist/cjs/core/components/utils.cjs.map +1 -1
  384. package/dist/cjs/core/css/animation.cjs.map +1 -1
  385. package/dist/cjs/core/css/at-rule.cjs.map +1 -1
  386. package/dist/cjs/core/css/calc.cjs.map +1 -1
  387. package/dist/cjs/core/css/color-mix.cjs.map +1 -1
  388. package/dist/cjs/core/css/color-scheme.cjs.map +1 -1
  389. package/dist/cjs/core/css/config.cjs.map +1 -1
  390. package/dist/cjs/core/css/css.cjs +5 -3
  391. package/dist/cjs/core/css/css.cjs.map +1 -1
  392. package/dist/cjs/core/css/gradient.cjs.map +1 -1
  393. package/dist/cjs/core/css/merge-css.cjs.map +1 -1
  394. package/dist/cjs/core/css/style.cjs.map +1 -1
  395. package/dist/cjs/core/css/use-css.cjs +1 -0
  396. package/dist/cjs/core/css/use-css.cjs.map +1 -1
  397. package/dist/cjs/core/css/use-inject-vars.cjs +1 -0
  398. package/dist/cjs/core/css/use-inject-vars.cjs.map +1 -1
  399. package/dist/cjs/core/css/utils.cjs.map +1 -1
  400. package/dist/cjs/core/system/breakpoint.cjs.map +1 -1
  401. package/dist/cjs/core/system/color-mode-provider.cjs +1 -0
  402. package/dist/cjs/core/system/color-mode-provider.cjs.map +1 -1
  403. package/dist/cjs/core/system/create-system.cjs.map +1 -1
  404. package/dist/cjs/core/system/environment-provider.cjs +1 -0
  405. package/dist/cjs/core/system/environment-provider.cjs.map +1 -1
  406. package/dist/cjs/core/system/layer.cjs.map +1 -1
  407. package/dist/cjs/core/system/storage-script.cjs.map +1 -1
  408. package/dist/cjs/core/system/styled.cjs.map +1 -1
  409. package/dist/cjs/core/system/system-provider.cjs +1 -0
  410. package/dist/cjs/core/system/system-provider.cjs.map +1 -1
  411. package/dist/cjs/core/system/theme-provider.cjs +5 -3
  412. package/dist/cjs/core/system/theme-provider.cjs.map +1 -1
  413. package/dist/cjs/core/system/use-system-color-mode.cjs +1 -0
  414. package/dist/cjs/core/system/use-system-color-mode.cjs.map +1 -1
  415. package/dist/cjs/core/system/var.cjs +2 -1
  416. package/dist/cjs/core/system/var.cjs.map +1 -1
  417. package/dist/cjs/hooks/use-animation/index.cjs +4 -2
  418. package/dist/cjs/hooks/use-animation/index.cjs.map +1 -1
  419. package/dist/cjs/hooks/use-async/index.cjs +1 -0
  420. package/dist/cjs/hooks/use-async/index.cjs.map +1 -1
  421. package/dist/cjs/hooks/use-async-callback/index.cjs +1 -0
  422. package/dist/cjs/hooks/use-async-callback/index.cjs.map +1 -1
  423. package/dist/cjs/hooks/use-boolean/index.cjs +1 -0
  424. package/dist/cjs/hooks/use-boolean/index.cjs.map +1 -1
  425. package/dist/cjs/hooks/use-breakpoint/use-breakpoint-effect.cjs +1 -0
  426. package/dist/cjs/hooks/use-breakpoint/use-breakpoint-effect.cjs.map +1 -1
  427. package/dist/cjs/hooks/use-breakpoint/use-breakpoint-state.cjs +3 -1
  428. package/dist/cjs/hooks/use-breakpoint/use-breakpoint-state.cjs.map +1 -1
  429. package/dist/cjs/hooks/use-breakpoint/use-breakpoint-value.cjs +1 -0
  430. package/dist/cjs/hooks/use-breakpoint/use-breakpoint-value.cjs.map +1 -1
  431. package/dist/cjs/hooks/use-breakpoint/use-breakpoint.cjs +1 -0
  432. package/dist/cjs/hooks/use-breakpoint/use-breakpoint.cjs.map +1 -1
  433. package/dist/cjs/hooks/use-clickable/index.cjs +1 -0
  434. package/dist/cjs/hooks/use-clickable/index.cjs.map +1 -1
  435. package/dist/cjs/hooks/use-clipboard/index.cjs.map +1 -1
  436. package/dist/cjs/hooks/use-combobox/index.cjs.map +1 -1
  437. package/dist/cjs/hooks/use-controllable-state/index.cjs +1 -0
  438. package/dist/cjs/hooks/use-controllable-state/index.cjs.map +1 -1
  439. package/dist/cjs/hooks/use-counter/index.cjs +1 -0
  440. package/dist/cjs/hooks/use-counter/index.cjs.map +1 -1
  441. package/dist/cjs/hooks/use-descendants/index.cjs +1 -0
  442. package/dist/cjs/hooks/use-descendants/index.cjs.map +1 -1
  443. package/dist/cjs/hooks/use-disclosure/use-disclosure.cjs +1 -0
  444. package/dist/cjs/hooks/use-disclosure/use-disclosure.cjs.map +1 -1
  445. package/dist/cjs/hooks/use-disclosure/use-promise-disclosure.cjs +1 -0
  446. package/dist/cjs/hooks/use-disclosure/use-promise-disclosure.cjs.map +1 -1
  447. package/dist/cjs/hooks/use-event-listener/index.cjs +1 -0
  448. package/dist/cjs/hooks/use-event-listener/index.cjs.map +1 -1
  449. package/dist/cjs/hooks/use-eye-dropper/index.cjs +1 -0
  450. package/dist/cjs/hooks/use-eye-dropper/index.cjs.map +1 -1
  451. package/dist/cjs/hooks/use-field-sizing/index.cjs +1 -0
  452. package/dist/cjs/hooks/use-field-sizing/index.cjs.map +1 -1
  453. package/dist/cjs/hooks/use-focus/index.cjs +3 -1
  454. package/dist/cjs/hooks/use-focus/index.cjs.map +1 -1
  455. package/dist/cjs/hooks/use-hover/index.cjs +1 -0
  456. package/dist/cjs/hooks/use-hover/index.cjs.map +1 -1
  457. package/dist/cjs/hooks/use-idle/index.cjs +1 -0
  458. package/dist/cjs/hooks/use-idle/index.cjs.map +1 -1
  459. package/dist/cjs/hooks/use-interval/index.cjs +1 -0
  460. package/dist/cjs/hooks/use-interval/index.cjs.map +1 -1
  461. package/dist/cjs/hooks/use-lazy-mount/index.cjs +1 -0
  462. package/dist/cjs/hooks/use-lazy-mount/index.cjs.map +1 -1
  463. package/dist/cjs/hooks/use-local-storage/index.cjs +1 -0
  464. package/dist/cjs/hooks/use-local-storage/index.cjs.map +1 -1
  465. package/dist/cjs/hooks/use-media-query/index.cjs +1 -0
  466. package/dist/cjs/hooks/use-media-query/index.cjs.map +1 -1
  467. package/dist/cjs/hooks/use-mounted/index.cjs +1 -0
  468. package/dist/cjs/hooks/use-mounted/index.cjs.map +1 -1
  469. package/dist/cjs/hooks/use-online/index.cjs +1 -0
  470. package/dist/cjs/hooks/use-online/index.cjs.map +1 -1
  471. package/dist/cjs/hooks/use-os/index.cjs.map +1 -1
  472. package/dist/cjs/hooks/use-outside-click/index.cjs +1 -0
  473. package/dist/cjs/hooks/use-outside-click/index.cjs.map +1 -1
  474. package/dist/cjs/hooks/use-pan-event/index.cjs +1 -0
  475. package/dist/cjs/hooks/use-pan-event/index.cjs.map +1 -1
  476. package/dist/cjs/hooks/use-popper/index.cjs +1 -0
  477. package/dist/cjs/hooks/use-popper/index.cjs.map +1 -1
  478. package/dist/cjs/hooks/use-previous/index.cjs +1 -0
  479. package/dist/cjs/hooks/use-previous/index.cjs.map +1 -1
  480. package/dist/cjs/hooks/use-processing/index.cjs +1 -0
  481. package/dist/cjs/hooks/use-processing/index.cjs.map +1 -1
  482. package/dist/cjs/hooks/use-resize-observer/index.cjs +1 -0
  483. package/dist/cjs/hooks/use-resize-observer/index.cjs.map +1 -1
  484. package/dist/cjs/hooks/use-timeout/index.cjs +1 -0
  485. package/dist/cjs/hooks/use-timeout/index.cjs.map +1 -1
  486. package/dist/cjs/hooks/use-value/index.cjs +1 -0
  487. package/dist/cjs/hooks/use-value/index.cjs.map +1 -1
  488. package/dist/cjs/hooks/use-window-event/index.cjs +1 -0
  489. package/dist/cjs/hooks/use-window-event/index.cjs.map +1 -1
  490. package/dist/cjs/index.cjs +30 -6
  491. package/dist/cjs/providers/i18n-provider/i18n-provider.cjs.map +1 -1
  492. package/dist/cjs/providers/ui-provider/ui-provider.cjs.map +1 -1
  493. package/dist/cjs/utils/children.cjs.map +1 -1
  494. package/dist/cjs/utils/context.cjs.map +1 -1
  495. package/dist/cjs/utils/dom.cjs.map +1 -1
  496. package/dist/cjs/utils/ref.cjs.map +1 -1
  497. package/dist/cjs/utils/ssr.cjs +1 -0
  498. package/dist/cjs/utils/ssr.cjs.map +1 -1
  499. package/dist/cjs/utils/store.cjs +1 -0
  500. package/dist/cjs/utils/store.cjs.map +1 -1
  501. package/dist/esm/components/accordion/accordion.js +3 -2
  502. package/dist/esm/components/accordion/accordion.js.map +1 -1
  503. package/dist/esm/components/accordion/use-accordion.js.map +1 -1
  504. package/dist/esm/components/action-bar/action-bar.js.map +1 -1
  505. package/dist/esm/components/action-bar/use-action-bar.js.map +1 -1
  506. package/dist/esm/components/airy/airy.js.map +1 -1
  507. package/dist/esm/components/alert/alert.js +4 -2
  508. package/dist/esm/components/alert/alert.js.map +1 -1
  509. package/dist/esm/components/alpha-slider/alpha-slider.js.map +1 -1
  510. package/dist/esm/components/aspect-ratio/aspect-ratio.js.map +1 -1
  511. package/dist/esm/components/autocomplete/autocomplete.js +13 -10
  512. package/dist/esm/components/autocomplete/autocomplete.js.map +1 -1
  513. package/dist/esm/components/autocomplete/use-autocomplete.js.map +1 -1
  514. package/dist/esm/components/avatar/avatar-group.js +12 -11
  515. package/dist/esm/components/avatar/avatar-group.js.map +1 -1
  516. package/dist/esm/components/avatar/use-avatar-group.js.map +1 -1
  517. package/dist/esm/components/avatar/use-avatar.js.map +1 -1
  518. package/dist/esm/components/breadcrumb/use-breadcrumb.js.map +1 -1
  519. package/dist/esm/components/button/button.js +8 -5
  520. package/dist/esm/components/button/button.js.map +1 -1
  521. package/dist/esm/components/calendar/calendar.js.map +1 -1
  522. package/dist/esm/components/calendar/use-calendar.js.map +1 -1
  523. package/dist/esm/components/carousel/carousel.js +26 -25
  524. package/dist/esm/components/carousel/carousel.js.map +1 -1
  525. package/dist/esm/components/carousel/use-carousel.js.map +1 -1
  526. package/dist/esm/components/chart/area-chart.js +5 -4
  527. package/dist/esm/components/chart/area-chart.js.map +1 -1
  528. package/dist/esm/components/chart/bar-chart.js +5 -4
  529. package/dist/esm/components/chart/bar-chart.js.map +1 -1
  530. package/dist/esm/components/chart/cartesian-chart.js +145 -139
  531. package/dist/esm/components/chart/cartesian-chart.js.map +1 -1
  532. package/dist/esm/components/chart/chart.js +2 -1
  533. package/dist/esm/components/chart/chart.js.map +1 -1
  534. package/dist/esm/components/chart/composed-chart.js +15 -14
  535. package/dist/esm/components/chart/composed-chart.js.map +1 -1
  536. package/dist/esm/components/chart/donut-chart.js +7 -5
  537. package/dist/esm/components/chart/donut-chart.js.map +1 -1
  538. package/dist/esm/components/chart/line-chart.js +5 -4
  539. package/dist/esm/components/chart/line-chart.js.map +1 -1
  540. package/dist/esm/components/chart/pie-chart.js +7 -5
  541. package/dist/esm/components/chart/pie-chart.js.map +1 -1
  542. package/dist/esm/components/chart/polar-chart.js +118 -111
  543. package/dist/esm/components/chart/polar-chart.js.map +1 -1
  544. package/dist/esm/components/chart/radar-chart.js +5 -4
  545. package/dist/esm/components/chart/radar-chart.js.map +1 -1
  546. package/dist/esm/components/chart/use-cartesian-chart.js.map +1 -1
  547. package/dist/esm/components/chart/use-chart.js.map +1 -1
  548. package/dist/esm/components/chart/use-polar-chart.js.map +1 -1
  549. package/dist/esm/components/checkbox/checkbox-group.js +38 -36
  550. package/dist/esm/components/checkbox/checkbox-group.js.map +1 -1
  551. package/dist/esm/components/checkbox/use-checkbox-group.js.map +1 -1
  552. package/dist/esm/components/checkbox/use-checkbox.js +2 -1
  553. package/dist/esm/components/checkbox/use-checkbox.js.map +1 -1
  554. package/dist/esm/components/checkbox-card/checkbox-card-group.js +42 -40
  555. package/dist/esm/components/checkbox-card/checkbox-card-group.js.map +1 -1
  556. package/dist/esm/components/circle-progress/circle-progress.js.map +1 -1
  557. package/dist/esm/components/client-only/client-only.js +2 -1
  558. package/dist/esm/components/client-only/client-only.js.map +1 -1
  559. package/dist/esm/components/collapse/collapse.js.map +1 -1
  560. package/dist/esm/components/color-picker/color-picker.js +2 -1
  561. package/dist/esm/components/color-picker/color-picker.js.map +1 -1
  562. package/dist/esm/components/color-picker/use-color-picker.js.map +1 -1
  563. package/dist/esm/components/color-selector/color-selector.js +2 -1
  564. package/dist/esm/components/color-selector/color-selector.js.map +1 -1
  565. package/dist/esm/components/color-selector/use-color-selector.js.map +1 -1
  566. package/dist/esm/components/color-swatch/color-swatch.js.map +1 -1
  567. package/dist/esm/components/data-list/data-list.js +8 -5
  568. package/dist/esm/components/data-list/data-list.js.map +1 -1
  569. package/dist/esm/components/date-picker/date-picker.js +2 -1
  570. package/dist/esm/components/date-picker/date-picker.js.map +1 -1
  571. package/dist/esm/components/date-picker/use-date-picker.js.map +1 -1
  572. package/dist/esm/components/drawer/drawer.js.map +1 -1
  573. package/dist/esm/components/drawer/use-drawer.js +1 -3
  574. package/dist/esm/components/drawer/use-drawer.js.map +1 -1
  575. package/dist/esm/components/dropzone/dropzone.js +2 -1
  576. package/dist/esm/components/dropzone/dropzone.js.map +1 -1
  577. package/dist/esm/components/dropzone/use-dropzone.js.map +1 -1
  578. package/dist/esm/components/editable/editable.js.map +1 -1
  579. package/dist/esm/components/editable/use-editable.js.map +1 -1
  580. package/dist/esm/components/field/field.js.map +1 -1
  581. package/dist/esm/components/field/use-field-props.js.map +1 -1
  582. package/dist/esm/components/fieldset/fieldset.js.map +1 -1
  583. package/dist/esm/components/file-input/file-input.js +2 -1
  584. package/dist/esm/components/file-input/file-input.js.map +1 -1
  585. package/dist/esm/components/file-input/use-file-input.js.map +1 -1
  586. package/dist/esm/components/flip/flip.js.map +1 -1
  587. package/dist/esm/components/float/float.js.map +1 -1
  588. package/dist/esm/components/focus-lock/focus-lock.js.map +1 -1
  589. package/dist/esm/components/for/for.js.map +1 -1
  590. package/dist/esm/components/form/form.js.map +1 -1
  591. package/dist/esm/components/grid/grid-item.js.map +1 -1
  592. package/dist/esm/components/group/group.js.map +1 -1
  593. package/dist/esm/components/group/use-group.js.map +1 -1
  594. package/dist/esm/components/highlight/use-highlight.js.map +1 -1
  595. package/dist/esm/components/icon/icons/index.js +21 -5
  596. package/dist/esm/components/icon/icons/index.js.map +1 -1
  597. package/dist/esm/components/icon/icons/layout-freeform-icon.js +14 -0
  598. package/dist/esm/components/icon/icons/layout-freeform-icon.js.map +1 -0
  599. package/dist/esm/components/icon/icons/mic-audio-lines-icon.js +14 -0
  600. package/dist/esm/components/icon/icons/mic-audio-lines-icon.js.map +1 -0
  601. package/dist/esm/components/icon/icons/mic-signal-icon.js +14 -0
  602. package/dist/esm/components/icon/icons/mic-signal-icon.js.map +1 -0
  603. package/dist/esm/components/icon/icons/mosque-icon.js +14 -0
  604. package/dist/esm/components/icon/icons/mosque-icon.js.map +1 -0
  605. package/dist/esm/components/icon/icons/rotate-ccw-clock-icon.js +14 -0
  606. package/dist/esm/components/icon/icons/rotate-ccw-clock-icon.js.map +1 -0
  607. package/dist/esm/components/icon/icons/rotate-cw-fading-clock-icon.js +14 -0
  608. package/dist/esm/components/icon/icons/rotate-cw-fading-clock-icon.js.map +1 -0
  609. package/dist/esm/components/icon/icons/scan-square-icon.js +14 -0
  610. package/dist/esm/components/icon/icons/scan-square-icon.js.map +1 -0
  611. package/dist/esm/components/icon/icons/shield-keyhole-icon.js +14 -0
  612. package/dist/esm/components/icon/icons/shield-keyhole-icon.js.map +1 -0
  613. package/dist/esm/components/icon/icons/square-off-icon.js +14 -0
  614. package/dist/esm/components/icon/icons/square-off-icon.js.map +1 -0
  615. package/dist/esm/components/icon/icons/user-shield-icon.js +14 -0
  616. package/dist/esm/components/icon/icons/user-shield-icon.js.map +1 -0
  617. package/dist/esm/components/icon/index.js +11 -3
  618. package/dist/esm/components/indicator/indicator.js.map +1 -1
  619. package/dist/esm/components/infinite-scroll-area/infinite-scroll-area.js +2 -1
  620. package/dist/esm/components/infinite-scroll-area/infinite-scroll-area.js.map +1 -1
  621. package/dist/esm/components/input/input-group.js +13 -12
  622. package/dist/esm/components/input/input-group.js.map +1 -1
  623. package/dist/esm/components/input/input.style.js.map +1 -1
  624. package/dist/esm/components/link-box/link-box.js.map +1 -1
  625. package/dist/esm/components/loading/audio.js.map +1 -1
  626. package/dist/esm/components/loading/circles.js.map +1 -1
  627. package/dist/esm/components/loading/dots.js.map +1 -1
  628. package/dist/esm/components/loading/grid.js.map +1 -1
  629. package/dist/esm/components/loading/loading-provider.js.map +1 -1
  630. package/dist/esm/components/loading/oval.js.map +1 -1
  631. package/dist/esm/components/loading/puff.js.map +1 -1
  632. package/dist/esm/components/loading/rings.js.map +1 -1
  633. package/dist/esm/components/loading/use-loading-component.js.map +1 -1
  634. package/dist/esm/components/menu/menu.js +12 -10
  635. package/dist/esm/components/menu/menu.js.map +1 -1
  636. package/dist/esm/components/menu/use-menu.js.map +1 -1
  637. package/dist/esm/components/modal/modal.js.map +1 -1
  638. package/dist/esm/components/modal/use-modal.js.map +1 -1
  639. package/dist/esm/components/motion/motion.js.map +1 -1
  640. package/dist/esm/components/motion/transition.js.map +1 -1
  641. package/dist/esm/components/native-accordion/use-native-accordion.js.map +1 -1
  642. package/dist/esm/components/native-popover/native-popover.js.map +1 -1
  643. package/dist/esm/components/native-popover/use-native-popover.js.map +1 -1
  644. package/dist/esm/components/native-select/native-select.js +2 -1
  645. package/dist/esm/components/native-select/native-select.js.map +1 -1
  646. package/dist/esm/components/native-select/use-native-select.js.map +1 -1
  647. package/dist/esm/components/notice/notice.js.map +1 -1
  648. package/dist/esm/components/notice/use-notice.js.map +1 -1
  649. package/dist/esm/components/number-input/number-input.js +2 -1
  650. package/dist/esm/components/number-input/number-input.js.map +1 -1
  651. package/dist/esm/components/number-input/use-number-counter.js.map +1 -1
  652. package/dist/esm/components/number-input/use-number-input.js.map +1 -1
  653. package/dist/esm/components/pagination/pagination.js.map +1 -1
  654. package/dist/esm/components/pagination/use-pagination.js.map +1 -1
  655. package/dist/esm/components/password-input/password-input.js +2 -1
  656. package/dist/esm/components/password-input/password-input.js.map +1 -1
  657. package/dist/esm/components/password-input/use-password-input.js.map +1 -1
  658. package/dist/esm/components/password-input/use-strength-meter.js.map +1 -1
  659. package/dist/esm/components/picture/picture.js.map +1 -1
  660. package/dist/esm/components/pin-input/use-pin-input.js.map +1 -1
  661. package/dist/esm/components/popover/popover.js.map +1 -1
  662. package/dist/esm/components/popover/use-popover.js.map +1 -1
  663. package/dist/esm/components/portal/portal.js.map +1 -1
  664. package/dist/esm/components/progress/progress.js.map +1 -1
  665. package/dist/esm/components/progress/use-progress.js.map +1 -1
  666. package/dist/esm/components/radio/radio-group.js +36 -34
  667. package/dist/esm/components/radio/radio-group.js.map +1 -1
  668. package/dist/esm/components/radio/use-radio-group.js.map +1 -1
  669. package/dist/esm/components/radio/use-radio.js +2 -1
  670. package/dist/esm/components/radio/use-radio.js.map +1 -1
  671. package/dist/esm/components/radio-card/radio-card-group.js +40 -38
  672. package/dist/esm/components/radio-card/radio-card-group.js.map +1 -1
  673. package/dist/esm/components/rating/rating.js.map +1 -1
  674. package/dist/esm/components/rating/use-rating.js.map +1 -1
  675. package/dist/esm/components/reorder/use-reorder.js.map +1 -1
  676. package/dist/esm/components/resizable/resizable.js +12 -10
  677. package/dist/esm/components/resizable/resizable.js.map +1 -1
  678. package/dist/esm/components/resizable/use-resizable.js.map +1 -1
  679. package/dist/esm/components/ripple/ripple.js.map +1 -1
  680. package/dist/esm/components/ripple/use-ripple.js.map +1 -1
  681. package/dist/esm/components/rotate/rotate.js.map +1 -1
  682. package/dist/esm/components/saturation-slider/use-saturation-slider.js.map +1 -1
  683. package/dist/esm/components/scroll-area/use-scroll-area.js.map +1 -1
  684. package/dist/esm/components/segmented-control/segmented-control.js +2 -1
  685. package/dist/esm/components/segmented-control/segmented-control.js.map +1 -1
  686. package/dist/esm/components/segmented-control/use-segmented-control.js.map +1 -1
  687. package/dist/esm/components/select/select.js +13 -10
  688. package/dist/esm/components/select/select.js.map +1 -1
  689. package/dist/esm/components/select/use-select.js.map +1 -1
  690. package/dist/esm/components/show/show.js.map +1 -1
  691. package/dist/esm/components/sidebar/sidebar.js +5 -3
  692. package/dist/esm/components/sidebar/sidebar.js.map +1 -1
  693. package/dist/esm/components/sidebar/use-sidebar.js.map +1 -1
  694. package/dist/esm/components/simple-grid/simple-grid.js.map +1 -1
  695. package/dist/esm/components/skeleton/skeleton.js.map +1 -1
  696. package/dist/esm/components/slider/slider.js +2 -1
  697. package/dist/esm/components/slider/slider.js.map +1 -1
  698. package/dist/esm/components/slider/use-slider.js +2 -1
  699. package/dist/esm/components/slider/use-slider.js.map +1 -1
  700. package/dist/esm/components/snacks/snacks.js.map +1 -1
  701. package/dist/esm/components/stack/stack.js.map +1 -1
  702. package/dist/esm/components/stack/z-stack.js +4 -2
  703. package/dist/esm/components/stack/z-stack.js.map +1 -1
  704. package/dist/esm/components/steps/steps.js +50 -47
  705. package/dist/esm/components/steps/steps.js.map +1 -1
  706. package/dist/esm/components/steps/use-steps.js.map +1 -1
  707. package/dist/esm/components/switch/switch.js.map +1 -1
  708. package/dist/esm/components/switch/use-switch.js.map +1 -1
  709. package/dist/esm/components/table/table.js +50 -49
  710. package/dist/esm/components/table/table.js.map +1 -1
  711. package/dist/esm/components/tabs/tabs.js +22 -20
  712. package/dist/esm/components/tabs/tabs.js.map +1 -1
  713. package/dist/esm/components/tabs/use-tabs.js.map +1 -1
  714. package/dist/esm/components/tag/tag.js.map +1 -1
  715. package/dist/esm/components/textarea/use-autosize.js.map +1 -1
  716. package/dist/esm/components/timeline/timeline.js.map +1 -1
  717. package/dist/esm/components/tip/tip.js.map +1 -1
  718. package/dist/esm/components/toggle/toggle-group.js +26 -24
  719. package/dist/esm/components/toggle/toggle-group.js.map +1 -1
  720. package/dist/esm/components/toggle/use-toggle-group.js.map +1 -1
  721. package/dist/esm/components/toggle/use-toggle.js.map +1 -1
  722. package/dist/esm/components/tooltip/tooltip.js.map +1 -1
  723. package/dist/esm/components/tooltip/use-tooltip.js.map +1 -1
  724. package/dist/esm/components/tree/tree.js.map +1 -1
  725. package/dist/esm/components/tree/use-tree.js.map +1 -1
  726. package/dist/esm/core/components/create-component.js +4 -2
  727. package/dist/esm/core/components/create-component.js.map +1 -1
  728. package/dist/esm/core/components/props.js.map +1 -1
  729. package/dist/esm/core/components/use-component-style.js +10 -6
  730. package/dist/esm/core/components/use-component-style.js.map +1 -1
  731. package/dist/esm/core/components/utils.js.map +1 -1
  732. package/dist/esm/core/css/animation.js.map +1 -1
  733. package/dist/esm/core/css/at-rule.js.map +1 -1
  734. package/dist/esm/core/css/calc.js.map +1 -1
  735. package/dist/esm/core/css/color-mix.js.map +1 -1
  736. package/dist/esm/core/css/color-scheme.js.map +1 -1
  737. package/dist/esm/core/css/config.js.map +1 -1
  738. package/dist/esm/core/css/css.js +5 -3
  739. package/dist/esm/core/css/css.js.map +1 -1
  740. package/dist/esm/core/css/gradient.js.map +1 -1
  741. package/dist/esm/core/css/merge-css.js.map +1 -1
  742. package/dist/esm/core/css/style.js.map +1 -1
  743. package/dist/esm/core/css/use-css.js.map +1 -1
  744. package/dist/esm/core/css/utils.js.map +1 -1
  745. package/dist/esm/core/system/breakpoint.js.map +1 -1
  746. package/dist/esm/core/system/color-mode-provider.js.map +1 -1
  747. package/dist/esm/core/system/create-system.js.map +1 -1
  748. package/dist/esm/core/system/environment-provider.js.map +1 -1
  749. package/dist/esm/core/system/layer.js.map +1 -1
  750. package/dist/esm/core/system/storage-script.js.map +1 -1
  751. package/dist/esm/core/system/styled.js.map +1 -1
  752. package/dist/esm/core/system/theme-provider.js +4 -3
  753. package/dist/esm/core/system/theme-provider.js.map +1 -1
  754. package/dist/esm/core/system/use-system-color-mode.js.map +1 -1
  755. package/dist/esm/core/system/var.js +2 -1
  756. package/dist/esm/core/system/var.js.map +1 -1
  757. package/dist/esm/hooks/use-animation/index.js +3 -2
  758. package/dist/esm/hooks/use-animation/index.js.map +1 -1
  759. package/dist/esm/hooks/use-breakpoint/use-breakpoint-state.js +2 -1
  760. package/dist/esm/hooks/use-breakpoint/use-breakpoint-state.js.map +1 -1
  761. package/dist/esm/hooks/use-breakpoint/use-breakpoint.js.map +1 -1
  762. package/dist/esm/hooks/use-clickable/index.js.map +1 -1
  763. package/dist/esm/hooks/use-clipboard/index.js.map +1 -1
  764. package/dist/esm/hooks/use-combobox/index.js.map +1 -1
  765. package/dist/esm/hooks/use-controllable-state/index.js.map +1 -1
  766. package/dist/esm/hooks/use-counter/index.js.map +1 -1
  767. package/dist/esm/hooks/use-descendants/index.js.map +1 -1
  768. package/dist/esm/hooks/use-event-listener/index.js.map +1 -1
  769. package/dist/esm/hooks/use-focus/index.js +2 -1
  770. package/dist/esm/hooks/use-focus/index.js.map +1 -1
  771. package/dist/esm/hooks/use-local-storage/index.js.map +1 -1
  772. package/dist/esm/hooks/use-os/index.js.map +1 -1
  773. package/dist/esm/hooks/use-outside-click/index.js.map +1 -1
  774. package/dist/esm/hooks/use-pan-event/index.js.map +1 -1
  775. package/dist/esm/hooks/use-resize-observer/index.js.map +1 -1
  776. package/dist/esm/hooks/use-value/index.js.map +1 -1
  777. package/dist/esm/index.js +21 -5
  778. package/dist/esm/providers/i18n-provider/i18n-provider.js.map +1 -1
  779. package/dist/esm/providers/ui-provider/ui-provider.js.map +1 -1
  780. package/dist/types/components/chart/polar-chart.style.d.ts +1 -1
  781. package/dist/types/components/color-picker/color-picker.style.d.ts +1 -1
  782. package/dist/types/components/color-selector/color-selector.style.d.ts +2 -2
  783. package/dist/types/components/drawer/drawer.style.d.ts +2 -2
  784. package/dist/types/components/file-input/file-input.style.d.ts +1 -1
  785. package/dist/types/components/icon/icons/index.d.ts +12 -4
  786. package/dist/types/components/icon/icons/index.types.d.ts +1 -1
  787. package/dist/types/components/icon/icons/layout-freeform-icon.d.ts +13 -0
  788. package/dist/types/components/icon/icons/mic-audio-lines-icon.d.ts +13 -0
  789. package/dist/types/components/icon/icons/mic-signal-icon.d.ts +13 -0
  790. package/dist/types/components/icon/icons/mosque-icon.d.ts +13 -0
  791. package/dist/types/components/icon/icons/rotate-ccw-clock-icon.d.ts +13 -0
  792. package/dist/types/components/icon/icons/rotate-cw-fading-clock-icon.d.ts +13 -0
  793. package/dist/types/components/icon/icons/scan-square-icon.d.ts +13 -0
  794. package/dist/types/components/icon/icons/shield-keyhole-icon.d.ts +13 -0
  795. package/dist/types/components/icon/icons/{history-icon.d.ts → square-off-icon.d.ts} +5 -5
  796. package/dist/types/components/icon/icons/user-shield-icon.d.ts +13 -0
  797. package/dist/types/components/icon/index.d.ts +11 -3
  798. package/dist/types/components/modal/modal.style.d.ts +2 -2
  799. package/dist/types/components/notice/notice.style.d.ts +1 -1
  800. package/dist/types/components/tag/tag.style.d.ts +1 -1
  801. package/dist/types/index.d.ts +12 -4
  802. package/package.json +9 -9
  803. package/dist/cjs/components/icon/icons/history-icon.cjs +0 -14
  804. package/dist/cjs/components/icon/icons/history-icon.cjs.map +0 -1
  805. package/dist/cjs/components/icon/icons/podcast-icon.cjs +0 -14
  806. package/dist/cjs/components/icon/icons/podcast-icon.cjs.map +0 -1
  807. package/dist/esm/components/icon/icons/history-icon.js +0 -14
  808. package/dist/esm/components/icon/icons/history-icon.js.map +0 -1
  809. package/dist/esm/components/icon/icons/podcast-icon.js +0 -14
  810. package/dist/esm/components/icon/icons/podcast-icon.js.map +0 -1
  811. package/dist/types/components/icon/icons/podcast-icon.d.ts +0 -13
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["useLoading","useProcessing","useCallbackRef"],"sources":["../../../../src/hooks/use-async-callback/index.ts"],"sourcesContent":["import type { DependencyList } from \"react\"\nimport type { Loading } from \"../../components/loading\"\nimport { useCallback, useMemo } from \"react\"\nimport { useLoading } from \"../../components/loading\"\nimport { useCallbackRef } from \"../../utils/ref\"\nimport { useProcessing } from \"../use-processing\"\n\ntype Callback = (...args: any[]) => any\n\nexport interface UseAsyncCallbackOptions {\n /**\n * The method to use for loading.\n * If `false`, the loading will not be shown.\n */\n loading?: false | Loading.Method\n /**\n * The options to pass to the loading component.\n */\n loadingOptions?: Loading.Options\n /**\n * If `false`, the processing will not change.\n *\n * @default true\n */\n processing?: boolean\n}\n\n/**\n * `useAsyncCallback` is a custom hook used to manage async callbacks.\n *\n * @see https://yamada-ui.com/docs/hooks/use-async-callback\n */\nexport const useAsyncCallback = <Y extends Callback>(\n callback: Y,\n deps: DependencyList,\n {\n loading: method = false,\n loadingOptions,\n processing: shouldProcessing = true,\n }: UseAsyncCallbackOptions = {},\n): UseAsyncCallbackReturn<Y> => {\n const context = useLoading()\n const { finish, loading, start } = useProcessing()\n const shouldLoading = !!method\n const callbackRef = useCallbackRef(callback, deps)\n\n const asyncCallback = useCallback(\n async (...args: Parameters<Y>) => {\n try {\n if (shouldProcessing) start()\n if (shouldLoading) context[method].start(loadingOptions)\n\n return await callbackRef(...args)\n } finally {\n if (shouldProcessing) finish()\n if (shouldLoading) context[method].finish()\n }\n },\n [\n callbackRef,\n shouldProcessing,\n shouldLoading,\n context,\n method,\n loadingOptions,\n start,\n finish,\n ],\n )\n\n const control = useMemo(() => ({ finish, start }), [finish, start])\n\n return [loading, asyncCallback, control]\n}\n\nexport type UseAsyncCallbackReturn<Y extends Callback> = [\n loading: boolean,\n callback: (...args: Parameters<Y>) => Promise<Awaited<ReturnType<Y>>>,\n control: { finish: () => void; start: () => void },\n]\n"],"mappings":";;;;;;;;;;;AAgCA,MAAa,oBACX,UACA,MACA,EACE,SAAS,SAAS,OAClB,gBACA,YAAY,mBAAmB,SACJ,CAAC,MACA;CAC9B,MAAM,UAAUA,yBAAAA,WAAW;CAC3B,MAAM,EAAE,QAAQ,SAAS,UAAUC,mCAAAA,cAAc;CACjD,MAAM,gBAAgB,CAAC,CAAC;CACxB,MAAM,cAAcC,YAAAA,eAAe,UAAU,IAAI;CA4BjD,OAAO;EAAC;GAzBN,GAAA,MAAA,YAAA,CAAA,OAAO,GAAG,SAAwB;GAChC,IAAI;IACF,IAAI,kBAAkB,MAAM;IAC5B,IAAI,eAAe,QAAQ,OAAO,CAAC,MAAM,cAAc;IAEvD,OAAO,MAAM,YAAY,GAAG,IAAI;GAClC,UAAU;IACR,IAAI,kBAAkB,OAAO;IAC7B,IAAI,eAAe,QAAQ,OAAO,CAAC,OAAO;GAC5C;EACF,GACA;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAK2B;GAFE,GAAA,MAAA,QAAA,QAAA;GAAE;GAAQ;EAAM,IAAI,CAAC,QAAQ,KAAK,CAE3B;CAAC;AACzC"}
1
+ {"version":3,"file":"index.cjs","names":["useLoading","useProcessing","useCallbackRef","useCallback","useMemo"],"sources":["../../../../src/hooks/use-async-callback/index.ts"],"sourcesContent":["import type { DependencyList } from \"react\"\nimport type { Loading } from \"../../components/loading\"\nimport { useCallback, useMemo } from \"react\"\nimport { useLoading } from \"../../components/loading\"\nimport { useCallbackRef } from \"../../utils/ref\"\nimport { useProcessing } from \"../use-processing\"\n\ntype Callback = (...args: any[]) => any\n\nexport interface UseAsyncCallbackOptions {\n /**\n * The method to use for loading.\n * If `false`, the loading will not be shown.\n */\n loading?: false | Loading.Method\n /**\n * The options to pass to the loading component.\n */\n loadingOptions?: Loading.Options\n /**\n * If `false`, the processing will not change.\n *\n * @default true\n */\n processing?: boolean\n}\n\n/**\n * `useAsyncCallback` is a custom hook used to manage async callbacks.\n *\n * @see https://yamada-ui.com/docs/hooks/use-async-callback\n */\nexport const useAsyncCallback = <Y extends Callback>(\n callback: Y,\n deps: DependencyList,\n {\n loading: method = false,\n loadingOptions,\n processing: shouldProcessing = true,\n }: UseAsyncCallbackOptions = {},\n): UseAsyncCallbackReturn<Y> => {\n const context = useLoading()\n const { finish, loading, start } = useProcessing()\n const shouldLoading = !!method\n const callbackRef = useCallbackRef(callback, deps)\n\n const asyncCallback = useCallback(\n async (...args: Parameters<Y>) => {\n try {\n if (shouldProcessing) start()\n if (shouldLoading) context[method].start(loadingOptions)\n\n return await callbackRef(...args)\n } finally {\n if (shouldProcessing) finish()\n if (shouldLoading) context[method].finish()\n }\n },\n [\n callbackRef,\n shouldProcessing,\n shouldLoading,\n context,\n method,\n loadingOptions,\n start,\n finish,\n ],\n )\n\n const control = useMemo(() => ({ finish, start }), [finish, start])\n\n return [loading, asyncCallback, control]\n}\n\nexport type UseAsyncCallbackReturn<Y extends Callback> = [\n loading: boolean,\n callback: (...args: Parameters<Y>) => Promise<Awaited<ReturnType<Y>>>,\n control: { finish: () => void; start: () => void },\n]\n"],"mappings":";;;;;;;;;;;;AAgCA,MAAa,oBACX,UACA,MACA,EACE,SAAS,SAAS,OAClB,gBACA,YAAY,mBAAmB,SACJ,CAAC,MACA;CAC9B,MAAM,UAAUA,yBAAAA,WAAW;CAC3B,MAAM,EAAE,QAAQ,SAAS,UAAUC,mCAAAA,cAAc;CACjD,MAAM,gBAAgB,CAAC,CAAC;CACxB,MAAM,cAAcC,YAAAA,eAAe,UAAU,IAAI;CA4BjD,OAAO;EAAC;GA1BcC,GAAAA,MAAAA,YAAAA,CACpB,OAAO,GAAG,SAAwB;GAChC,IAAI;IACF,IAAI,kBAAkB,MAAM;IAC5B,IAAI,eAAe,QAAQ,OAAO,CAAC,MAAM,cAAc;IAEvD,OAAO,MAAM,YAAY,GAAG,IAAI;GAClC,UAAU;IACR,IAAI,kBAAkB,OAAO;IAC7B,IAAI,eAAe,QAAQ,OAAO,CAAC,OAAO;GAC5C;EACF,GACA;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAK2B;GAFbC,GAAAA,MAAAA,QAAAA,QAAe;GAAE;GAAQ;EAAM,IAAI,CAAC,QAAQ,KAAK,CAE3B;CAAC;AACzC"}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("../../_virtual/_rolldown/runtime.cjs");
3
4
  let react = require("react");
4
5
  //#region src/hooks/use-boolean/index.ts
5
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/hooks/use-boolean/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useState } from \"react\"\n\n/**\n * `useBoolean` is a custom hook used to manage boolean values using `on`, `off`, and `toggle` functions.\n *\n * @see https://yamada-ui.com/docs/hooks/use-boolean\n */\nexport const useBoolean = (init = false): UseBooleanReturn => {\n const [flg, setFlg] = useState<boolean>(init)\n\n const on = useCallback(() => setFlg(true), [])\n\n const off = useCallback(() => setFlg(false), [])\n\n const toggle = useCallback(() => setFlg((prev) => !prev), [])\n\n return [flg, { off, toggle, on }]\n}\n\nexport type UseBooleanReturn = [\n flg: boolean,\n setFlg: { off: () => void; on: () => void; toggle: () => void },\n]\n"],"mappings":";;;;;;;;;AASA,MAAa,cAAc,OAAO,UAA4B;CAC5D,MAAM,CAAC,KAAK,WAAA,GAAA,MAAA,SAAA,CAA4B,IAAI;CAE5C,MAAM,MAAA,GAAA,MAAA,YAAA,OAAuB,OAAO,IAAI,GAAG,CAAC,CAAC;CAM7C,OAAO,CAAC,KAAK;EAAE,MAAA,GAAA,MAAA,YAAA,OAJe,OAAO,KAAK,GAAG,CAAC,CAI7B;EAAG,SAAA,GAAA,MAAA,YAAA,OAFa,QAAQ,SAAS,CAAC,IAAI,GAAG,CAAC,CAElC;EAAG;CAAG,CAAC;AAClC"}
1
+ {"version":3,"file":"index.cjs","names":["useState","useCallback"],"sources":["../../../../src/hooks/use-boolean/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useState } from \"react\"\n\n/**\n * `useBoolean` is a custom hook used to manage boolean values using `on`, `off`, and `toggle` functions.\n *\n * @see https://yamada-ui.com/docs/hooks/use-boolean\n */\nexport const useBoolean = (init = false): UseBooleanReturn => {\n const [flg, setFlg] = useState<boolean>(init)\n\n const on = useCallback(() => setFlg(true), [])\n\n const off = useCallback(() => setFlg(false), [])\n\n const toggle = useCallback(() => setFlg((prev) => !prev), [])\n\n return [flg, { off, toggle, on }]\n}\n\nexport type UseBooleanReturn = [\n flg: boolean,\n setFlg: { off: () => void; on: () => void; toggle: () => void },\n]\n"],"mappings":";;;;;;;;;;AASA,MAAa,cAAc,OAAO,UAA4B;CAC5D,MAAM,CAAC,KAAK,WAAA,GAAUA,MAAAA,SAAAA,CAAkB,IAAI;CAE5C,MAAM,MAAA,GAAKC,MAAAA,YAAAA,OAAkB,OAAO,IAAI,GAAG,CAAC,CAAC;CAM7C,OAAO,CAAC,KAAK;EAAE,MAAA,GAJHA,MAAAA,YAAAA,OAAkB,OAAO,KAAK,GAAG,CAAC,CAI7B;EAAG,SAAA,GAFLA,MAAAA,YAAAA,OAAkB,QAAQ,SAAS,CAAC,IAAI,GAAG,CAAC,CAElC;EAAG;CAAG,CAAC;AAClC"}
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ require("../../_virtual/_rolldown/runtime.cjs");
2
3
  const require_use_breakpoint = require("./use-breakpoint.cjs");
3
4
  let react = require("react");
4
5
  //#region src/hooks/use-breakpoint/use-breakpoint-effect.ts
@@ -1 +1 @@
1
- {"version":3,"file":"use-breakpoint-effect.cjs","names":["useBreakpoint"],"sources":["../../../../src/hooks/use-breakpoint/use-breakpoint-effect.ts"],"sourcesContent":["\"use client\"\n\nimport type { DependencyList } from \"react\"\nimport type { Breakpoint } from \"../../core\"\nimport { useEffect } from \"react\"\nimport { useBreakpoint } from \"./use-breakpoint\"\n\n/**\n * `useBreakpointEffect` is a custom hook that executes a specific callback function when the breakpoint changes.\n *\n * @see https://yamada-ui.com/docs/hooks/use-breakpoint-effect\n */\nexport const useBreakpointEffect = (\n callback: (breakpoint: Breakpoint) => void,\n deps: DependencyList,\n) => {\n const breakpoint = useBreakpoint()\n\n useEffect(() => {\n callback(breakpoint)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [breakpoint, ...deps])\n}\n"],"mappings":";;;;;;;;;AAYA,MAAa,uBACX,UACA,SACG;CACH,MAAM,aAAaA,uBAAAA,cAAc;CAEjC,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,SAAS,UAAU;CAErB,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1B"}
1
+ {"version":3,"file":"use-breakpoint-effect.cjs","names":["useBreakpoint"],"sources":["../../../../src/hooks/use-breakpoint/use-breakpoint-effect.ts"],"sourcesContent":["\"use client\"\n\nimport type { DependencyList } from \"react\"\nimport type { Breakpoint } from \"../../core\"\nimport { useEffect } from \"react\"\nimport { useBreakpoint } from \"./use-breakpoint\"\n\n/**\n * `useBreakpointEffect` is a custom hook that executes a specific callback function when the breakpoint changes.\n *\n * @see https://yamada-ui.com/docs/hooks/use-breakpoint-effect\n */\nexport const useBreakpointEffect = (\n callback: (breakpoint: Breakpoint) => void,\n deps: DependencyList,\n) => {\n const breakpoint = useBreakpoint()\n\n useEffect(() => {\n callback(breakpoint)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [breakpoint, ...deps])\n}\n"],"mappings":";;;;;;;;;;AAYA,MAAa,uBACX,UACA,SACG;CACH,MAAM,aAAaA,uBAAAA,cAAc;CAEjC,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,SAAS,UAAU;CAErB,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1B"}
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ require("../../_virtual/_rolldown/runtime.cjs");
2
3
  const require_use_breakpoint_value = require("./use-breakpoint-value.cjs");
3
4
  let react = require("react");
4
5
  //#region src/hooks/use-breakpoint/use-breakpoint-state.ts
@@ -8,7 +9,8 @@ let react = require("react");
8
9
  * @see https://yamada-ui.com/docs/hooks/use-breakpoint-state
9
10
  */
10
11
  const useBreakpointState = (initialState) => {
11
- return (0, react.useState)(require_use_breakpoint_value.useBreakpointValue(initialState));
12
+ const state = require_use_breakpoint_value.useBreakpointValue(initialState);
13
+ return (0, react.useState)(state);
12
14
  };
13
15
  //#endregion
14
16
  exports.useBreakpointState = useBreakpointState;
@@ -1 +1 @@
1
- {"version":3,"file":"use-breakpoint-state.cjs","names":["useBreakpointValue"],"sources":["../../../../src/hooks/use-breakpoint/use-breakpoint-state.ts"],"sourcesContent":["\"use client\"\n\nimport type { ResponsiveObject } from \"../../core\"\nimport { useState } from \"react\"\nimport { useBreakpointValue } from \"./use-breakpoint-value\"\n\n/**\n * `useBreakpointState` is a custom hook that takes a responsive object as an initial state and returns a state corresponding to the current breakpoint.\n *\n * @see https://yamada-ui.com/docs/hooks/use-breakpoint-state\n */\nexport const useBreakpointState = <Y>(\n initialState: ResponsiveObject<Y, false>,\n) => {\n const state = useBreakpointValue(initialState)\n\n return useState(state)\n}\n"],"mappings":";;;;;;;;;AAWA,MAAa,sBACX,iBACG;CAGH,QAAA,GAAA,MAAA,SAAA,CAFcA,6BAAAA,mBAAmB,YAEb,CAAC;AACvB"}
1
+ {"version":3,"file":"use-breakpoint-state.cjs","names":["useBreakpointValue","useState"],"sources":["../../../../src/hooks/use-breakpoint/use-breakpoint-state.ts"],"sourcesContent":["\"use client\"\n\nimport type { ResponsiveObject } from \"../../core\"\nimport { useState } from \"react\"\nimport { useBreakpointValue } from \"./use-breakpoint-value\"\n\n/**\n * `useBreakpointState` is a custom hook that takes a responsive object as an initial state and returns a state corresponding to the current breakpoint.\n *\n * @see https://yamada-ui.com/docs/hooks/use-breakpoint-state\n */\nexport const useBreakpointState = <Y>(\n initialState: ResponsiveObject<Y, false>,\n) => {\n const state = useBreakpointValue(initialState)\n\n return useState(state)\n}\n"],"mappings":";;;;;;;;;;AAWA,MAAa,sBACX,iBACG;CACH,MAAM,QAAQA,6BAAAA,mBAAmB,YAAY;CAE7C,QAAA,GAAOC,MAAAA,SAAAA,CAAS,KAAK;AACvB"}
@@ -1,3 +1,4 @@
1
+ require("../../_virtual/_rolldown/runtime.cjs");
1
2
  const require_system_provider = require("../../core/system/system-provider.cjs");
2
3
  const require_use_breakpoint = require("./use-breakpoint.cjs");
3
4
  let react = require("react");
@@ -1 +1 @@
1
- {"version":3,"file":"use-breakpoint-value.cjs","names":["useSystem","useBreakpoint"],"sources":["../../../../src/hooks/use-breakpoint/use-breakpoint-value.ts"],"sourcesContent":["import type { Breakpoint, ResponsiveObject, System } from \"../../core\"\nimport { useMemo } from \"react\"\nimport { useSystem } from \"../../core\"\nimport { useBreakpoint } from \"./use-breakpoint\"\n\n/**\n * `useBreakpointValue` is a custom hook that returns the value of the current breakpoint from the provided object.\n * This hook monitors changes in the window size and returns the appropriate value.\n *\n * @see https://yamada-ui.com/docs/hooks/use-breakpoint-value\n */\nexport const useBreakpointValue = <Y>(\n values: ResponsiveObject<Y, false>,\n): Y => {\n const system = useSystem()\n const breakpoint = useBreakpoint()\n\n return useMemo(\n () => getBreakpointValue<Y>(values)(system, breakpoint),\n [values, system, breakpoint],\n )\n}\n\nexport const getBreakpointValue =\n <Y>(values: ResponsiveObject<Y, false> = {}) =>\n (system: System, breakpoint: Breakpoint): Y => {\n const breakpoints = system.breakpoints.keys\n\n if (!breakpoints.length)\n console.warn(\"getBreakpointValue: `breakpoints` is undefined.\")\n\n const currentIndex = breakpoints.indexOf(breakpoint)\n\n for (let i = currentIndex; 0 < i; i--) {\n const nextBreakpoint = breakpoints[i]\n\n if (nextBreakpoint && values.hasOwnProperty(nextBreakpoint))\n return values[nextBreakpoint] as Y\n }\n\n return values.base as Y\n }\n"],"mappings":";;;;;;;;;;AAWA,MAAa,sBACX,WACM;CACN,MAAM,SAASA,wBAAAA,UAAU;CACzB,MAAM,aAAaC,uBAAAA,cAAc;CAEjC,QAAA,GAAA,MAAA,QAAA,OACQ,mBAAsB,MAAM,CAAC,CAAC,QAAQ,UAAU,GACtD;EAAC;EAAQ;EAAQ;CAAU,CAC7B;AACF;AAEA,MAAa,sBACP,SAAqC,CAAC,OACzC,QAAgB,eAA8B;CAC7C,MAAM,cAAc,OAAO,YAAY;CAEvC,IAAI,CAAC,YAAY,QACf,QAAQ,KAAK,iDAAiD;CAEhE,MAAM,eAAe,YAAY,QAAQ,UAAU;CAEnD,KAAK,IAAI,IAAI,cAAc,IAAI,GAAG,KAAK;EACrC,MAAM,iBAAiB,YAAY;EAEnC,IAAI,kBAAkB,OAAO,eAAe,cAAc,GACxD,OAAO,OAAO;CAClB;CAEA,OAAO,OAAO;AAChB"}
1
+ {"version":3,"file":"use-breakpoint-value.cjs","names":["useSystem","useBreakpoint","useMemo"],"sources":["../../../../src/hooks/use-breakpoint/use-breakpoint-value.ts"],"sourcesContent":["import type { Breakpoint, ResponsiveObject, System } from \"../../core\"\nimport { useMemo } from \"react\"\nimport { useSystem } from \"../../core\"\nimport { useBreakpoint } from \"./use-breakpoint\"\n\n/**\n * `useBreakpointValue` is a custom hook that returns the value of the current breakpoint from the provided object.\n * This hook monitors changes in the window size and returns the appropriate value.\n *\n * @see https://yamada-ui.com/docs/hooks/use-breakpoint-value\n */\nexport const useBreakpointValue = <Y>(\n values: ResponsiveObject<Y, false>,\n): Y => {\n const system = useSystem()\n const breakpoint = useBreakpoint()\n\n return useMemo(\n () => getBreakpointValue<Y>(values)(system, breakpoint),\n [values, system, breakpoint],\n )\n}\n\nexport const getBreakpointValue =\n <Y>(values: ResponsiveObject<Y, false> = {}) =>\n (system: System, breakpoint: Breakpoint): Y => {\n const breakpoints = system.breakpoints.keys\n\n if (!breakpoints.length)\n console.warn(\"getBreakpointValue: `breakpoints` is undefined.\")\n\n const currentIndex = breakpoints.indexOf(breakpoint)\n\n for (let i = currentIndex; 0 < i; i--) {\n const nextBreakpoint = breakpoints[i]\n\n if (nextBreakpoint && values.hasOwnProperty(nextBreakpoint))\n return values[nextBreakpoint] as Y\n }\n\n return values.base as Y\n }\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,sBACX,WACM;CACN,MAAM,SAASA,wBAAAA,UAAU;CACzB,MAAM,aAAaC,uBAAAA,cAAc;CAEjC,QAAA,GAAOC,MAAAA,QAAAA,OACC,mBAAsB,MAAM,CAAC,CAAC,QAAQ,UAAU,GACtD;EAAC;EAAQ;EAAQ;CAAU,CAC7B;AACF;AAEA,MAAa,sBACP,SAAqC,CAAC,OACzC,QAAgB,eAA8B;CAC7C,MAAM,cAAc,OAAO,YAAY;CAEvC,IAAI,CAAC,YAAY,QACf,QAAQ,KAAK,iDAAiD;CAEhE,MAAM,eAAe,YAAY,QAAQ,UAAU;CAEnD,KAAK,IAAI,IAAI,cAAc,IAAI,GAAG,KAAK;EACrC,MAAM,iBAAiB,YAAY;EAEnC,IAAI,kBAAkB,OAAO,eAAe,cAAc,GACxD,OAAO,OAAO;CAClB;CAEA,OAAO,OAAO;AAChB"}
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ require("../../_virtual/_rolldown/runtime.cjs");
2
3
  const require_utils_index = require("../../utils/index.cjs");
3
4
  const require_environment_provider = require("../../core/system/environment-provider.cjs");
4
5
  const require_system_provider = require("../../core/system/system-provider.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"use-breakpoint.cjs","names":["useSystem","useEnvironment"],"sources":["../../../../src/hooks/use-breakpoint/use-breakpoint.ts"],"sourcesContent":["\"use client\"\n\nimport type { Breakpoint } from \"../../core\"\nimport { useCallback, useMemo, useRef, useSyncExternalStore } from \"react\"\nimport { useEnvironment, useSystem } from \"../../core\"\nimport { createdDom, isUndefined, noop } from \"../../utils\"\n\n/**\n * `useBreakpoint` is a custom hook that returns the current breakpoint.\n * This hook monitors changes in the window size and returns the appropriate value.\n *\n * @see https://yamada-ui.com/docs/hooks/use-breakpoint\n */\nexport const useBreakpoint = () => {\n const animationFrameId = useRef(0)\n const { breakpoints, config } = useSystem()\n const { getWindow } = useEnvironment()\n const {\n containerRef,\n direction = \"down\",\n identifier = \"@media screen\",\n } = config.breakpoint ?? {}\n const hasContainer = !!containerRef\n\n const queries = useMemo(() => {\n return breakpoints.queries.map(\n ({ breakpoint, maxW, minMaxQuery, minW }) => {\n const searchValue =\n identifier === \"@media screen\"\n ? \"@media screen and \"\n : `${identifier} `\n const query = minMaxQuery?.replace(searchValue, \"\") ?? \"\"\n\n return {\n breakpoint,\n maxW,\n minW,\n query,\n }\n },\n )\n }, [breakpoints, identifier])\n\n const hasQueries = !!queries.length\n\n const getBreakpoint = useCallback(\n (width?: number) => {\n if (isUndefined(width)) {\n const win = getWindow()\n\n if (hasContainer || !hasQueries) return \"base\"\n\n for (const { breakpoint, query } of queries) {\n const mql = win?.matchMedia(query)\n\n if (mql?.matches) return breakpoint\n }\n } else {\n for (const { breakpoint, maxW, minW } of queries)\n if (direction !== \"up\") {\n if ((minW ?? 0) <= width) return breakpoint\n } else {\n if (width <= (maxW ?? Infinity)) return breakpoint\n }\n }\n\n return \"base\"\n },\n [direction, getWindow, hasContainer, hasQueries, queries],\n )\n\n const breakpointRef = useRef<Breakpoint>(getBreakpoint())\n\n const subscribe = useCallback(\n (listener: () => void) => {\n if (!hasContainer || !hasQueries) {\n const observer = queries.map(({ breakpoint, query }): (() => void) => {\n const mql = getWindow()?.matchMedia(query)\n\n const onChange = (e: MediaQueryListEvent) => {\n if (e.matches) breakpointRef.current = breakpoint\n\n listener()\n }\n\n mql?.addEventListener(\"change\", onChange)\n\n return () => {\n mql?.removeEventListener(\"change\", onChange)\n }\n })\n\n return () => {\n observer.forEach((unobserve) => unobserve())\n }\n } else if (createdDom()) {\n const observer = new ResizeObserver(([entry]) => {\n if (!entry) return\n\n cancelAnimationFrame(animationFrameId.current)\n\n const { width } = entry.contentRect\n\n breakpointRef.current = getBreakpoint(width)\n\n animationFrameId.current = requestAnimationFrame(listener)\n })\n\n if (containerRef.current) observer.observe(containerRef.current)\n\n return () => {\n observer.disconnect()\n\n if (process.env.NODE_ENV !== \"test\")\n cancelAnimationFrame(animationFrameId.current)\n }\n } else {\n return noop\n }\n },\n [containerRef, getBreakpoint, getWindow, hasContainer, hasQueries, queries],\n )\n\n const getSnapshot = useCallback(() => {\n return breakpointRef.current\n }, [])\n\n const breakpoint = useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\n\n return breakpoint\n}\n"],"mappings":";;;;;;;;;;;;AAaA,MAAa,sBAAsB;CACjC,MAAM,oBAAA,GAAA,MAAA,OAAA,CAA0B,CAAC;CACjC,MAAM,EAAE,aAAa,WAAWA,wBAAAA,UAAU;CAC1C,MAAM,EAAE,cAAcC,6BAAAA,eAAe;CACrC,MAAM,EACJ,cACA,YAAY,QACZ,aAAa,oBACX,OAAO,cAAc,CAAC;CAC1B,MAAM,eAAe,CAAC,CAAC;CAEvB,MAAM,WAAA,GAAA,MAAA,QAAA,OAAwB;EAC5B,OAAO,YAAY,QAAQ,KACxB,EAAE,YAAY,MAAM,aAAa,WAAW;GAC3C,MAAM,cACJ,eAAe,kBACX,uBACA,GAAG,WAAW;GAGpB,OAAO;IACL;IACA;IACA;IACA,OANY,aAAa,QAAQ,aAAa,EAAE,KAAK;GAOvD;EACF,CACF;CACF,GAAG,CAAC,aAAa,UAAU,CAAC;CAE5B,MAAM,aAAa,CAAC,CAAC,QAAQ;CAE7B,MAAM,iBAAA,GAAA,MAAA,YAAA,EACH,UAAmB;EAClB,KAAA,GAAA,oBAAA,cAAA,YAAA,CAAgB,KAAK,GAAG;GACtB,MAAM,MAAM,UAAU;GAEtB,IAAI,gBAAgB,CAAC,YAAY,OAAO;GAExC,KAAK,MAAM,EAAE,YAAY,WAAW,SAGlC,KAFY,KAAK,WAAW,KAAK,EAAA,EAExB,SAAS,OAAO;EAE7B,OACE,KAAK,MAAM,EAAE,YAAY,MAAM,UAAU,SACvC,IAAI,cAAc,MACX;QAAA,QAAQ,MAAM,OAAO,OAAO;EAAA,OAEjC,IAAI,UAAU,QAAQ,WAAW,OAAO;EAI9C,OAAO;CACT,GACA;EAAC;EAAW;EAAW;EAAc;EAAY;CAAO,CAC1D;CAEA,MAAM,iBAAA,GAAA,MAAA,OAAA,CAAmC,cAAc,CAAC;CAExD,MAAM,aAAA,GAAA,MAAA,YAAA,EACH,aAAyB;EACxB,IAAI,CAAC,gBAAgB,CAAC,YAAY;GAChC,MAAM,WAAW,QAAQ,KAAK,EAAE,YAAY,YAA0B;IACpE,MAAM,MAAM,UAAU,CAAC,EAAE,WAAW,KAAK;IAEzC,MAAM,YAAY,MAA2B;KAC3C,IAAI,EAAE,SAAS,cAAc,UAAU;KAEvC,SAAS;IACX;IAEA,KAAK,iBAAiB,UAAU,QAAQ;IAExC,aAAa;KACX,KAAK,oBAAoB,UAAU,QAAQ;IAC7C;GACF,CAAC;GAED,aAAa;IACX,SAAS,SAAS,cAAc,UAAU,CAAC;GAC7C;EACF,OAAO,KAAA,GAAA,oBAAA,cAAA,WAAA,CAAe,GAAG;GACvB,MAAM,WAAW,IAAI,gBAAgB,CAAC,WAAW;IAC/C,IAAI,CAAC,OAAO;IAEZ,qBAAqB,iBAAiB,OAAO;IAE7C,MAAM,EAAE,UAAU,MAAM;IAExB,cAAc,UAAU,cAAc,KAAK;IAE3C,iBAAiB,UAAU,sBAAsB,QAAQ;GAC3D,CAAC;GAED,IAAI,aAAa,SAAS,SAAS,QAAQ,aAAa,OAAO;GAE/D,aAAa;IACX,SAAS,WAAW;IAEpB,IAAI,QAAQ,IAAI,aAAa,QAC3B,qBAAqB,iBAAiB,OAAO;GACjD;EACF,OACE,OAAA,oBAAA,cAAO;CAEX,GACA;EAAC;EAAc;EAAe;EAAW;EAAc;EAAY;CAAO,CAC5E;CAEA,MAAM,eAAA,GAAA,MAAA,YAAA,OAAgC;EACpC,OAAO,cAAc;CACvB,GAAG,CAAC,CAAC;CAIL,QAAA,GAAA,MAAA,qBAAA,CAFwC,WAAW,aAAa,WAEhD;AAClB"}
1
+ {"version":3,"file":"use-breakpoint.cjs","names":["useRef","useSystem","useEnvironment","useMemo","useCallback","useSyncExternalStore"],"sources":["../../../../src/hooks/use-breakpoint/use-breakpoint.ts"],"sourcesContent":["\"use client\"\n\nimport type { Breakpoint } from \"../../core\"\nimport { useCallback, useMemo, useRef, useSyncExternalStore } from \"react\"\nimport { useEnvironment, useSystem } from \"../../core\"\nimport { createdDom, isUndefined, noop } from \"../../utils\"\n\n/**\n * `useBreakpoint` is a custom hook that returns the current breakpoint.\n * This hook monitors changes in the window size and returns the appropriate value.\n *\n * @see https://yamada-ui.com/docs/hooks/use-breakpoint\n */\nexport const useBreakpoint = () => {\n const animationFrameId = useRef(0)\n const { breakpoints, config } = useSystem()\n const { getWindow } = useEnvironment()\n const {\n containerRef,\n direction = \"down\",\n identifier = \"@media screen\",\n } = config.breakpoint ?? {}\n const hasContainer = !!containerRef\n\n const queries = useMemo(() => {\n return breakpoints.queries.map(\n ({ breakpoint, maxW, minMaxQuery, minW }) => {\n const searchValue =\n identifier === \"@media screen\"\n ? \"@media screen and \"\n : `${identifier} `\n const query = minMaxQuery?.replace(searchValue, \"\") ?? \"\"\n\n return {\n breakpoint,\n maxW,\n minW,\n query,\n }\n },\n )\n }, [breakpoints, identifier])\n\n const hasQueries = !!queries.length\n\n const getBreakpoint = useCallback(\n (width?: number) => {\n if (isUndefined(width)) {\n const win = getWindow()\n\n if (hasContainer || !hasQueries) return \"base\"\n\n for (const { breakpoint, query } of queries) {\n const mql = win?.matchMedia(query)\n\n if (mql?.matches) return breakpoint\n }\n } else {\n for (const { breakpoint, maxW, minW } of queries)\n if (direction !== \"up\") {\n if ((minW ?? 0) <= width) return breakpoint\n } else {\n if (width <= (maxW ?? Infinity)) return breakpoint\n }\n }\n\n return \"base\"\n },\n [direction, getWindow, hasContainer, hasQueries, queries],\n )\n\n const breakpointRef = useRef<Breakpoint>(getBreakpoint())\n\n const subscribe = useCallback(\n (listener: () => void) => {\n if (!hasContainer || !hasQueries) {\n const observer = queries.map(({ breakpoint, query }): (() => void) => {\n const mql = getWindow()?.matchMedia(query)\n\n const onChange = (e: MediaQueryListEvent) => {\n if (e.matches) breakpointRef.current = breakpoint\n\n listener()\n }\n\n mql?.addEventListener(\"change\", onChange)\n\n return () => {\n mql?.removeEventListener(\"change\", onChange)\n }\n })\n\n return () => {\n observer.forEach((unobserve) => unobserve())\n }\n } else if (createdDom()) {\n const observer = new ResizeObserver(([entry]) => {\n if (!entry) return\n\n cancelAnimationFrame(animationFrameId.current)\n\n const { width } = entry.contentRect\n\n breakpointRef.current = getBreakpoint(width)\n\n animationFrameId.current = requestAnimationFrame(listener)\n })\n\n if (containerRef.current) observer.observe(containerRef.current)\n\n return () => {\n observer.disconnect()\n\n if (process.env.NODE_ENV !== \"test\")\n cancelAnimationFrame(animationFrameId.current)\n }\n } else {\n return noop\n }\n },\n [containerRef, getBreakpoint, getWindow, hasContainer, hasQueries, queries],\n )\n\n const getSnapshot = useCallback(() => {\n return breakpointRef.current\n }, [])\n\n const breakpoint = useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\n\n return breakpoint\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAa,sBAAsB;CACjC,MAAM,oBAAA,GAAmBA,MAAAA,OAAAA,CAAO,CAAC;CACjC,MAAM,EAAE,aAAa,WAAWC,wBAAAA,UAAU;CAC1C,MAAM,EAAE,cAAcC,6BAAAA,eAAe;CACrC,MAAM,EACJ,cACA,YAAY,QACZ,aAAa,oBACX,OAAO,cAAc,CAAC;CAC1B,MAAM,eAAe,CAAC,CAAC;CAEvB,MAAM,WAAA,GAAUC,MAAAA,QAAAA,OAAc;EAC5B,OAAO,YAAY,QAAQ,KACxB,EAAE,YAAY,MAAM,aAAa,WAAW;GAC3C,MAAM,cACJ,eAAe,kBACX,uBACA,GAAG,WAAW;GAGpB,OAAO;IACL;IACA;IACA;IACA,OANY,aAAa,QAAQ,aAAa,EAAE,KAAK;GAOvD;EACF,CACF;CACF,GAAG,CAAC,aAAa,UAAU,CAAC;CAE5B,MAAM,aAAa,CAAC,CAAC,QAAQ;CAE7B,MAAM,iBAAA,GAAgBC,MAAAA,YAAAA,EACnB,UAAmB;EAClB,KAAA,GAAA,oBAAA,cAAI,YAAA,CAAY,KAAK,GAAG;GACtB,MAAM,MAAM,UAAU;GAEtB,IAAI,gBAAgB,CAAC,YAAY,OAAO;GAExC,KAAK,MAAM,EAAE,YAAY,WAAW,SAGlC,KAFY,KAAK,WAAW,KAAK,EAAA,EAExB,SAAS,OAAO;EAE7B,OACE,KAAK,MAAM,EAAE,YAAY,MAAM,UAAU,SACvC,IAAI,cAAc,MACX;QAAA,QAAQ,MAAM,OAAO,OAAO;EAAA,OAEjC,IAAI,UAAU,QAAQ,WAAW,OAAO;EAI9C,OAAO;CACT,GACA;EAAC;EAAW;EAAW;EAAc;EAAY;CAAO,CAC1D;CAEA,MAAM,iBAAA,GAAgBJ,MAAAA,OAAAA,CAAmB,cAAc,CAAC;CAExD,MAAM,aAAA,GAAYI,MAAAA,YAAAA,EACf,aAAyB;EACxB,IAAI,CAAC,gBAAgB,CAAC,YAAY;GAChC,MAAM,WAAW,QAAQ,KAAK,EAAE,YAAY,YAA0B;IACpE,MAAM,MAAM,UAAU,CAAC,EAAE,WAAW,KAAK;IAEzC,MAAM,YAAY,MAA2B;KAC3C,IAAI,EAAE,SAAS,cAAc,UAAU;KAEvC,SAAS;IACX;IAEA,KAAK,iBAAiB,UAAU,QAAQ;IAExC,aAAa;KACX,KAAK,oBAAoB,UAAU,QAAQ;IAC7C;GACF,CAAC;GAED,aAAa;IACX,SAAS,SAAS,cAAc,UAAU,CAAC;GAC7C;EACF,OAAO,KAAA,GAAA,oBAAA,cAAI,WAAA,CAAW,GAAG;GACvB,MAAM,WAAW,IAAI,gBAAgB,CAAC,WAAW;IAC/C,IAAI,CAAC,OAAO;IAEZ,qBAAqB,iBAAiB,OAAO;IAE7C,MAAM,EAAE,UAAU,MAAM;IAExB,cAAc,UAAU,cAAc,KAAK;IAE3C,iBAAiB,UAAU,sBAAsB,QAAQ;GAC3D,CAAC;GAED,IAAI,aAAa,SAAS,SAAS,QAAQ,aAAa,OAAO;GAE/D,aAAa;IACX,SAAS,WAAW;IAEpB,IAAI,QAAQ,IAAI,aAAa,QAC3B,qBAAqB,iBAAiB,OAAO;GACjD;EACF,OACE,OAAA,oBAAA,cAAO;CAEX,GACA;EAAC;EAAc;EAAe;EAAW;EAAc;EAAY;CAAO,CAC5E;CAEA,MAAM,eAAA,GAAcA,MAAAA,YAAAA,OAAkB;EACpC,OAAO,cAAc;CACvB,GAAG,CAAC,CAAC;CAIL,QAAA,GAFmBC,MAAAA,qBAAAA,CAAqB,WAAW,aAAa,WAEhD;AAClB"}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("../../_virtual/_rolldown/runtime.cjs");
3
4
  const require_ref = require("../../utils/ref.cjs");
4
5
  const require_utils_index = require("../../utils/index.cjs");
5
6
  const require_hooks_use_event_listener_index = require("../use-event-listener/index.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["useEventListeners","mergeRefs"],"sources":["../../../../src/hooks/use-clickable/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { HTMLAttributes, KeyboardEvent, MouseEvent, Ref } from \"react\"\nimport type { StyledProps } from \"../../core\"\nimport { useCallback, useState } from \"react\"\nimport { dataAttr, isTouchDevice, mergeRefs } from \"../../utils\"\nimport { useEventListeners } from \"../use-event-listener\"\n\ntype Props<Y extends HTMLElement = HTMLElement> = Omit<\n HTMLAttributes<Y>,\n \"ref\" | \"size\" | keyof StyledProps\n>\n\nexport type UseClickableProps<\n Y extends HTMLElement = HTMLElement,\n M extends Props<Y> = Props<Y>,\n> = M & {\n /**\n * Whether or not trigger click on pressing `Enter`.\n *\n * @default true\n */\n clickOnEnter?: boolean\n /**\n * Whether or not trigger click on pressing `Space`.\n *\n * @default true\n */\n clickOnSpace?: boolean\n /**\n * If `true`, the element will be disabled. It will set the `disabled` HTML attribute.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * Disable the touch device behavior.\n *\n * @default true\n */\n disableTouchBehavior?: boolean\n /**\n * If `true` and isDisabled, the element will have only `aria-disabled` set to `true`.\n *\n * @default false\n */\n focusable?: boolean\n /**\n * Whether or not to focus the element when it is clicked.\n * If `true`, the element will receive focus upon click.\n *\n * @default true\n */\n focusOnClick?: boolean\n /**\n * The ref for the element.\n */\n ref?: Ref<Y>\n}\n\nconst isValidElement = (\n ev: KeyboardEvent | KeyboardEvent[\"nativeEvent\"],\n): boolean => {\n const { isContentEditable, tagName } = ev.target as HTMLElement\n\n return tagName !== \"INPUT\" && tagName !== \"TEXTAREA\" && !isContentEditable\n}\n\nexport const useClickable = <\n Y extends HTMLElement = HTMLElement,\n M extends Props<Y> = Props<Y>,\n>(\n {\n ref,\n clickOnEnter = true,\n clickOnSpace = true,\n disabled,\n disableTouchBehavior = true,\n focusable,\n focusOnClick = true,\n tabIndex: tabIndexProp,\n onClick: onClickProp,\n onKeyDown: onKeyDownProp,\n onKeyUp: onKeyUpProp,\n onMouseDown: onMouseDownProp,\n onMouseLeave: onMouseLeaveProp,\n onMouseOver: onMouseOverProp,\n onMouseUp: onMouseUpProp,\n ...props\n }: UseClickableProps<Y, M> = {} as UseClickableProps<Y, M>,\n) => {\n const [button, setButton] = useState<boolean>(true)\n const [pressed, setPressed] = useState<boolean>(false)\n\n const listeners = useEventListeners()\n\n const tabIndex = button ? tabIndexProp : tabIndexProp || 0\n const trulyDisabled = disabled && !focusable\n\n const refCb = (node: any) => {\n if (!node) return\n\n if (node.tagName !== \"BUTTON\") setButton(false)\n }\n\n const onClick = useCallback(\n (ev: MouseEvent<Y>) => {\n if (disabled) {\n ev.stopPropagation()\n ev.preventDefault()\n\n return\n }\n\n if (focusOnClick) ev.currentTarget.focus()\n onClickProp?.(ev)\n },\n [disabled, focusOnClick, onClickProp],\n )\n\n const onDocumentKeyUp = useCallback(\n (ev: globalThis.KeyboardEvent) => {\n if (pressed && isValidElement(ev)) {\n ev.preventDefault()\n ev.stopPropagation()\n\n setPressed(false)\n\n listeners.remove(document, \"keyup\", onDocumentKeyUp, false)\n }\n },\n [pressed, listeners],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<Y>) => {\n onKeyDownProp?.(ev)\n\n if (disabled || ev.defaultPrevented || ev.metaKey) return\n\n if (!isValidElement(ev.nativeEvent) || button) return\n\n if (clickOnSpace && ev.key === \" \") {\n ev.preventDefault()\n setPressed(true)\n }\n\n if (clickOnEnter && ev.key === \"Enter\") {\n ev.preventDefault()\n ev.currentTarget.click()\n }\n\n listeners.add(document, \"keyup\", onDocumentKeyUp, false)\n },\n [\n disabled,\n button,\n onKeyDownProp,\n clickOnEnter,\n clickOnSpace,\n listeners,\n onDocumentKeyUp,\n ],\n )\n\n const onKeyUp = useCallback(\n (ev: KeyboardEvent<Y>) => {\n onKeyUpProp?.(ev)\n\n if (disabled || ev.defaultPrevented || ev.metaKey) return\n\n if (!isValidElement(ev.nativeEvent) || button) return\n\n if (clickOnSpace && ev.key === \" \") {\n ev.preventDefault()\n setPressed(false)\n\n ev.currentTarget.click()\n }\n },\n [clickOnSpace, button, disabled, onKeyUpProp],\n )\n\n const onDocumentMouseUp = useCallback(\n (ev: globalThis.MouseEvent) => {\n if (ev.button !== 0) return\n\n setPressed(false)\n\n listeners.remove(document, \"mouseup\", onDocumentMouseUp, false)\n },\n [listeners],\n )\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<Y>) => {\n if (ev.button !== 0) return\n\n if (disabled) {\n ev.stopPropagation()\n ev.preventDefault()\n\n return\n }\n\n if (!button) setPressed(true)\n\n if (focusOnClick) ev.currentTarget.focus({ preventScroll: true })\n\n listeners.add(document, \"mouseup\", onDocumentMouseUp, false)\n\n onMouseDownProp?.(ev)\n },\n [\n disabled,\n button,\n onMouseDownProp,\n listeners,\n onDocumentMouseUp,\n focusOnClick,\n ],\n )\n\n const onMouseUp = useCallback(\n (ev: MouseEvent<Y>) => {\n if (ev.button !== 0) return\n\n if (!button) setPressed(false)\n\n onMouseUpProp?.(ev)\n },\n [onMouseUpProp, button],\n )\n\n const onMouseOver = useCallback(\n (ev: MouseEvent<Y>) => {\n if (disabled) {\n ev.preventDefault()\n\n return\n }\n\n if (disableTouchBehavior && isTouchDevice()) return\n\n onMouseOverProp?.(ev)\n },\n [disabled, onMouseOverProp, disableTouchBehavior],\n )\n\n const onMouseLeave = useCallback(\n (ev: MouseEvent<Y>) => {\n if (pressed) {\n ev.preventDefault()\n\n setPressed(false)\n }\n\n if (disableTouchBehavior && isTouchDevice()) return\n\n onMouseLeaveProp?.(ev)\n },\n [pressed, onMouseLeaveProp, disableTouchBehavior],\n )\n\n if (button)\n return {\n ...props,\n ref: mergeRefs(ref, refCb),\n type: \"button\" as const,\n \"aria-disabled\": trulyDisabled ? undefined : disabled,\n disabled: trulyDisabled,\n onClick: onClick,\n onKeyDown: onKeyDownProp,\n onKeyUp: onKeyUpProp,\n onMouseDown: onMouseDownProp,\n onMouseLeave: onMouseLeaveProp,\n onMouseOver: onMouseOverProp,\n onMouseUp: onMouseUpProp,\n }\n else\n return {\n ...props,\n ref: mergeRefs(ref, refCb),\n \"aria-disabled\": disabled ? (\"true\" as const) : undefined,\n \"data-active\": dataAttr(pressed),\n role: \"button\",\n tabIndex: trulyDisabled ? undefined : tabIndex,\n onClick,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseOver,\n onMouseUp,\n }\n}\n\nexport type UseClickableReturn = ReturnType<typeof useClickable>\n"],"mappings":";;;;;;;AA4DA,MAAM,kBACJ,OACY;CACZ,MAAM,EAAE,mBAAmB,YAAY,GAAG;CAE1C,OAAO,YAAY,WAAW,YAAY,cAAc,CAAC;AAC3D;AAEA,MAAa,gBAIX,EACE,KACA,eAAe,MACf,eAAe,MACf,UACA,uBAAuB,MACvB,WACA,eAAe,MACf,UAAU,cACV,SAAS,aACT,WAAW,eACX,SAAS,aACT,aAAa,iBACb,cAAc,kBACd,aAAa,iBACb,WAAW,eACX,GAAG,UACwB,CAAC,MAC3B;CACH,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,SAAA,CAA+B,IAAI;CAClD,MAAM,CAAC,SAAS,eAAA,GAAA,MAAA,SAAA,CAAgC,KAAK;CAErD,MAAM,YAAYA,uCAAAA,kBAAkB;CAEpC,MAAM,WAAW,SAAS,eAAe,gBAAgB;CACzD,MAAM,gBAAgB,YAAY,CAAC;CAEnC,MAAM,SAAS,SAAc;EAC3B,IAAI,CAAC,MAAM;EAEX,IAAI,KAAK,YAAY,UAAU,UAAU,KAAK;CAChD;CAEA,MAAM,WAAA,GAAA,MAAA,YAAA,EACH,OAAsB;EACrB,IAAI,UAAU;GACZ,GAAG,gBAAgB;GACnB,GAAG,eAAe;GAElB;EACF;EAEA,IAAI,cAAc,GAAG,cAAc,MAAM;EACzC,cAAc,EAAE;CAClB,GACA;EAAC;EAAU;EAAc;CAAW,CACtC;CAEA,MAAM,mBAAA,GAAA,MAAA,YAAA,EACH,OAAiC;EAChC,IAAI,WAAW,eAAe,EAAE,GAAG;GACjC,GAAG,eAAe;GAClB,GAAG,gBAAgB;GAEnB,WAAW,KAAK;GAEhB,UAAU,OAAO,UAAU,SAAS,iBAAiB,KAAK;EAC5D;CACF,GACA,CAAC,SAAS,SAAS,CACrB;CAEA,MAAM,aAAA,GAAA,MAAA,YAAA,EACH,OAAyB;EACxB,gBAAgB,EAAE;EAElB,IAAI,YAAY,GAAG,oBAAoB,GAAG,SAAS;EAEnD,IAAI,CAAC,eAAe,GAAG,WAAW,KAAK,QAAQ;EAE/C,IAAI,gBAAgB,GAAG,QAAQ,KAAK;GAClC,GAAG,eAAe;GAClB,WAAW,IAAI;EACjB;EAEA,IAAI,gBAAgB,GAAG,QAAQ,SAAS;GACtC,GAAG,eAAe;GAClB,GAAG,cAAc,MAAM;EACzB;EAEA,UAAU,IAAI,UAAU,SAAS,iBAAiB,KAAK;CACzD,GACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,MAAM,WAAA,GAAA,MAAA,YAAA,EACH,OAAyB;EACxB,cAAc,EAAE;EAEhB,IAAI,YAAY,GAAG,oBAAoB,GAAG,SAAS;EAEnD,IAAI,CAAC,eAAe,GAAG,WAAW,KAAK,QAAQ;EAE/C,IAAI,gBAAgB,GAAG,QAAQ,KAAK;GAClC,GAAG,eAAe;GAClB,WAAW,KAAK;GAEhB,GAAG,cAAc,MAAM;EACzB;CACF,GACA;EAAC;EAAc;EAAQ;EAAU;CAAW,CAC9C;CAEA,MAAM,qBAAA,GAAA,MAAA,YAAA,EACH,OAA8B;EAC7B,IAAI,GAAG,WAAW,GAAG;EAErB,WAAW,KAAK;EAEhB,UAAU,OAAO,UAAU,WAAW,mBAAmB,KAAK;CAChE,GACA,CAAC,SAAS,CACZ;CAEA,MAAM,eAAA,GAAA,MAAA,YAAA,EACH,OAAsB;EACrB,IAAI,GAAG,WAAW,GAAG;EAErB,IAAI,UAAU;GACZ,GAAG,gBAAgB;GACnB,GAAG,eAAe;GAElB;EACF;EAEA,IAAI,CAAC,QAAQ,WAAW,IAAI;EAE5B,IAAI,cAAc,GAAG,cAAc,MAAM,EAAE,eAAe,KAAK,CAAC;EAEhE,UAAU,IAAI,UAAU,WAAW,mBAAmB,KAAK;EAE3D,kBAAkB,EAAE;CACtB,GACA;EACE;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,MAAM,aAAA,GAAA,MAAA,YAAA,EACH,OAAsB;EACrB,IAAI,GAAG,WAAW,GAAG;EAErB,IAAI,CAAC,QAAQ,WAAW,KAAK;EAE7B,gBAAgB,EAAE;CACpB,GACA,CAAC,eAAe,MAAM,CACxB;CAEA,MAAM,eAAA,GAAA,MAAA,YAAA,EACH,OAAsB;EACrB,IAAI,UAAU;GACZ,GAAG,eAAe;GAElB;EACF;EAEA,IAAI,yBAAA,GAAA,oBAAA,cAAA,cAAA,CAAsC,GAAG;EAE7C,kBAAkB,EAAE;CACtB,GACA;EAAC;EAAU;EAAiB;CAAoB,CAClD;CAEA,MAAM,gBAAA,GAAA,MAAA,YAAA,EACH,OAAsB;EACrB,IAAI,SAAS;GACX,GAAG,eAAe;GAElB,WAAW,KAAK;EAClB;EAEA,IAAI,yBAAA,GAAA,oBAAA,cAAA,cAAA,CAAsC,GAAG;EAE7C,mBAAmB,EAAE;CACvB,GACA;EAAC;EAAS;EAAkB;CAAoB,CAClD;CAEA,IAAI,QACF,OAAO;EACL,GAAG;EACH,KAAKC,YAAAA,UAAU,KAAK,KAAK;EACzB,MAAM;EACN,iBAAiB,gBAAgB,KAAA,IAAY;EAC7C,UAAU;EACD;EACT,WAAW;EACX,SAAS;EACT,aAAa;EACb,cAAc;EACd,aAAa;EACb,WAAW;CACb;MAEA,OAAO;EACL,GAAG;EACH,KAAKA,YAAAA,UAAU,KAAK,KAAK;EACzB,iBAAiB,WAAY,SAAmB,KAAA;EAChD,gBAAA,GAAA,oBAAA,cAAA,SAAA,CAAwB,OAAO;EAC/B,MAAM;EACN,UAAU,gBAAgB,KAAA,IAAY;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACJ"}
1
+ {"version":3,"file":"index.cjs","names":["useState","useEventListeners","useCallback","mergeRefs"],"sources":["../../../../src/hooks/use-clickable/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { HTMLAttributes, KeyboardEvent, MouseEvent, Ref } from \"react\"\nimport type { StyledProps } from \"../../core\"\nimport { useCallback, useState } from \"react\"\nimport { dataAttr, isTouchDevice, mergeRefs } from \"../../utils\"\nimport { useEventListeners } from \"../use-event-listener\"\n\ntype Props<Y extends HTMLElement = HTMLElement> = Omit<\n HTMLAttributes<Y>,\n \"ref\" | \"size\" | keyof StyledProps\n>\n\nexport type UseClickableProps<\n Y extends HTMLElement = HTMLElement,\n M extends Props<Y> = Props<Y>,\n> = M & {\n /**\n * Whether or not trigger click on pressing `Enter`.\n *\n * @default true\n */\n clickOnEnter?: boolean\n /**\n * Whether or not trigger click on pressing `Space`.\n *\n * @default true\n */\n clickOnSpace?: boolean\n /**\n * If `true`, the element will be disabled. It will set the `disabled` HTML attribute.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * Disable the touch device behavior.\n *\n * @default true\n */\n disableTouchBehavior?: boolean\n /**\n * If `true` and isDisabled, the element will have only `aria-disabled` set to `true`.\n *\n * @default false\n */\n focusable?: boolean\n /**\n * Whether or not to focus the element when it is clicked.\n * If `true`, the element will receive focus upon click.\n *\n * @default true\n */\n focusOnClick?: boolean\n /**\n * The ref for the element.\n */\n ref?: Ref<Y>\n}\n\nconst isValidElement = (\n ev: KeyboardEvent | KeyboardEvent[\"nativeEvent\"],\n): boolean => {\n const { isContentEditable, tagName } = ev.target as HTMLElement\n\n return tagName !== \"INPUT\" && tagName !== \"TEXTAREA\" && !isContentEditable\n}\n\nexport const useClickable = <\n Y extends HTMLElement = HTMLElement,\n M extends Props<Y> = Props<Y>,\n>(\n {\n ref,\n clickOnEnter = true,\n clickOnSpace = true,\n disabled,\n disableTouchBehavior = true,\n focusable,\n focusOnClick = true,\n tabIndex: tabIndexProp,\n onClick: onClickProp,\n onKeyDown: onKeyDownProp,\n onKeyUp: onKeyUpProp,\n onMouseDown: onMouseDownProp,\n onMouseLeave: onMouseLeaveProp,\n onMouseOver: onMouseOverProp,\n onMouseUp: onMouseUpProp,\n ...props\n }: UseClickableProps<Y, M> = {} as UseClickableProps<Y, M>,\n) => {\n const [button, setButton] = useState<boolean>(true)\n const [pressed, setPressed] = useState<boolean>(false)\n\n const listeners = useEventListeners()\n\n const tabIndex = button ? tabIndexProp : tabIndexProp || 0\n const trulyDisabled = disabled && !focusable\n\n const refCb = (node: any) => {\n if (!node) return\n\n if (node.tagName !== \"BUTTON\") setButton(false)\n }\n\n const onClick = useCallback(\n (ev: MouseEvent<Y>) => {\n if (disabled) {\n ev.stopPropagation()\n ev.preventDefault()\n\n return\n }\n\n if (focusOnClick) ev.currentTarget.focus()\n onClickProp?.(ev)\n },\n [disabled, focusOnClick, onClickProp],\n )\n\n const onDocumentKeyUp = useCallback(\n (ev: globalThis.KeyboardEvent) => {\n if (pressed && isValidElement(ev)) {\n ev.preventDefault()\n ev.stopPropagation()\n\n setPressed(false)\n\n listeners.remove(document, \"keyup\", onDocumentKeyUp, false)\n }\n },\n [pressed, listeners],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<Y>) => {\n onKeyDownProp?.(ev)\n\n if (disabled || ev.defaultPrevented || ev.metaKey) return\n\n if (!isValidElement(ev.nativeEvent) || button) return\n\n if (clickOnSpace && ev.key === \" \") {\n ev.preventDefault()\n setPressed(true)\n }\n\n if (clickOnEnter && ev.key === \"Enter\") {\n ev.preventDefault()\n ev.currentTarget.click()\n }\n\n listeners.add(document, \"keyup\", onDocumentKeyUp, false)\n },\n [\n disabled,\n button,\n onKeyDownProp,\n clickOnEnter,\n clickOnSpace,\n listeners,\n onDocumentKeyUp,\n ],\n )\n\n const onKeyUp = useCallback(\n (ev: KeyboardEvent<Y>) => {\n onKeyUpProp?.(ev)\n\n if (disabled || ev.defaultPrevented || ev.metaKey) return\n\n if (!isValidElement(ev.nativeEvent) || button) return\n\n if (clickOnSpace && ev.key === \" \") {\n ev.preventDefault()\n setPressed(false)\n\n ev.currentTarget.click()\n }\n },\n [clickOnSpace, button, disabled, onKeyUpProp],\n )\n\n const onDocumentMouseUp = useCallback(\n (ev: globalThis.MouseEvent) => {\n if (ev.button !== 0) return\n\n setPressed(false)\n\n listeners.remove(document, \"mouseup\", onDocumentMouseUp, false)\n },\n [listeners],\n )\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<Y>) => {\n if (ev.button !== 0) return\n\n if (disabled) {\n ev.stopPropagation()\n ev.preventDefault()\n\n return\n }\n\n if (!button) setPressed(true)\n\n if (focusOnClick) ev.currentTarget.focus({ preventScroll: true })\n\n listeners.add(document, \"mouseup\", onDocumentMouseUp, false)\n\n onMouseDownProp?.(ev)\n },\n [\n disabled,\n button,\n onMouseDownProp,\n listeners,\n onDocumentMouseUp,\n focusOnClick,\n ],\n )\n\n const onMouseUp = useCallback(\n (ev: MouseEvent<Y>) => {\n if (ev.button !== 0) return\n\n if (!button) setPressed(false)\n\n onMouseUpProp?.(ev)\n },\n [onMouseUpProp, button],\n )\n\n const onMouseOver = useCallback(\n (ev: MouseEvent<Y>) => {\n if (disabled) {\n ev.preventDefault()\n\n return\n }\n\n if (disableTouchBehavior && isTouchDevice()) return\n\n onMouseOverProp?.(ev)\n },\n [disabled, onMouseOverProp, disableTouchBehavior],\n )\n\n const onMouseLeave = useCallback(\n (ev: MouseEvent<Y>) => {\n if (pressed) {\n ev.preventDefault()\n\n setPressed(false)\n }\n\n if (disableTouchBehavior && isTouchDevice()) return\n\n onMouseLeaveProp?.(ev)\n },\n [pressed, onMouseLeaveProp, disableTouchBehavior],\n )\n\n if (button)\n return {\n ...props,\n ref: mergeRefs(ref, refCb),\n type: \"button\" as const,\n \"aria-disabled\": trulyDisabled ? undefined : disabled,\n disabled: trulyDisabled,\n onClick: onClick,\n onKeyDown: onKeyDownProp,\n onKeyUp: onKeyUpProp,\n onMouseDown: onMouseDownProp,\n onMouseLeave: onMouseLeaveProp,\n onMouseOver: onMouseOverProp,\n onMouseUp: onMouseUpProp,\n }\n else\n return {\n ...props,\n ref: mergeRefs(ref, refCb),\n \"aria-disabled\": disabled ? (\"true\" as const) : undefined,\n \"data-active\": dataAttr(pressed),\n role: \"button\",\n tabIndex: trulyDisabled ? undefined : tabIndex,\n onClick,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseOver,\n onMouseUp,\n }\n}\n\nexport type UseClickableReturn = ReturnType<typeof useClickable>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/hooks/use-clipboard/index.ts"],"sourcesContent":["\"use client\"\n\nimport copy from \"copy-to-clipboard\"\nimport { useCallback, useEffect, useState } from \"react\"\nimport { isNumber, isString } from \"../../utils\"\n\nexport interface UseClipboardOptions {\n format?: string\n timeout?: number\n}\n\n/**\n * `useClipboard` is a custom hook that performs the operation of copying a value to the clipboard.\n *\n * @see https://yamada-ui.com/docs/hooks/use-clipboard\n */\nexport const useClipboard = (\n defaultValue = \"\",\n timeoutOrOptions: number | UseClipboardOptions = {},\n) => {\n const [copied, setCopied] = useState(false)\n\n const [value, setValue] = useState(defaultValue)\n\n useEffect(() => setValue(defaultValue), [defaultValue])\n\n const { timeout = 1500, ...copyOptions } = isNumber(timeoutOrOptions)\n ? { timeout: timeoutOrOptions }\n : timeoutOrOptions\n\n const onCopy = useCallback(\n (newValue?: any) => {\n if (!isString(newValue)) newValue = value\n else setValue(newValue)\n\n const copied = copy(newValue, copyOptions)\n\n setCopied(copied)\n },\n [value, copyOptions],\n )\n\n useEffect(() => {\n let timeoutId: NodeJS.Timeout | null = null\n\n if (copied)\n timeoutId = setTimeout(() => {\n setCopied(false)\n }, timeout)\n\n return () => {\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [timeout, copied])\n\n return {\n copied,\n setValue,\n value,\n onCopy,\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAa,gBACX,eAAe,IACf,mBAAiD,CAAC,MAC/C;CACH,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,SAAA,CAAsB,KAAK;CAE1C,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,SAAA,CAAqB,YAAY;CAE/C,CAAA,GAAA,MAAA,UAAA,OAAgB,SAAS,YAAY,GAAG,CAAC,YAAY,CAAC;CAEtD,MAAM,EAAE,UAAU,MAAM,GAAG,iBAAA,GAAA,oBAAA,cAAA,SAAA,CAAyB,gBAAgB,IAChE,EAAE,SAAS,iBAAiB,IAC5B;CAEJ,MAAM,UAAA,GAAA,MAAA,YAAA,EACH,aAAmB;EAClB,IAAI,EAAA,GAAA,oBAAA,cAAA,SAAA,CAAU,QAAQ,GAAG,WAAW;OAC/B,SAAS,QAAQ;EAEtB,MAAM,UAAA,GAAA,kBAAA,QAAA,CAAc,UAAU,WAAW;EAEzC,UAAU,MAAM;CAClB,GACA,CAAC,OAAO,WAAW,CACrB;CAEA,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,IAAI,YAAmC;EAEvC,IAAI,QACF,YAAY,iBAAiB;GAC3B,UAAU,KAAK;EACjB,GAAG,OAAO;EAEZ,aAAa;GACX,IAAI,WAAW,aAAa,SAAS;EACvC;CACF,GAAG,CAAC,SAAS,MAAM,CAAC;CAEpB,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"index.cjs","names":["useState","useCallback","copy"],"sources":["../../../../src/hooks/use-clipboard/index.ts"],"sourcesContent":["\"use client\"\n\nimport copy from \"copy-to-clipboard\"\nimport { useCallback, useEffect, useState } from \"react\"\nimport { isNumber, isString } from \"../../utils\"\n\nexport interface UseClipboardOptions {\n format?: string\n timeout?: number\n}\n\n/**\n * `useClipboard` is a custom hook that performs the operation of copying a value to the clipboard.\n *\n * @see https://yamada-ui.com/docs/hooks/use-clipboard\n */\nexport const useClipboard = (\n defaultValue = \"\",\n timeoutOrOptions: number | UseClipboardOptions = {},\n) => {\n const [copied, setCopied] = useState(false)\n\n const [value, setValue] = useState(defaultValue)\n\n useEffect(() => setValue(defaultValue), [defaultValue])\n\n const { timeout = 1500, ...copyOptions } = isNumber(timeoutOrOptions)\n ? { timeout: timeoutOrOptions }\n : timeoutOrOptions\n\n const onCopy = useCallback(\n (newValue?: any) => {\n if (!isString(newValue)) newValue = value\n else setValue(newValue)\n\n const copied = copy(newValue, copyOptions)\n\n setCopied(copied)\n },\n [value, copyOptions],\n )\n\n useEffect(() => {\n let timeoutId: NodeJS.Timeout | null = null\n\n if (copied)\n timeoutId = setTimeout(() => {\n setCopied(false)\n }, timeout)\n\n return () => {\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [timeout, copied])\n\n return {\n copied,\n setValue,\n value,\n onCopy,\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAa,gBACX,eAAe,IACf,mBAAiD,CAAC,MAC/C;CACH,MAAM,CAAC,QAAQ,cAAA,GAAaA,MAAAA,SAAAA,CAAS,KAAK;CAE1C,MAAM,CAAC,OAAO,aAAA,GAAYA,MAAAA,SAAAA,CAAS,YAAY;CAE/C,CAAA,GAAA,MAAA,UAAA,OAAgB,SAAS,YAAY,GAAG,CAAC,YAAY,CAAC;CAEtD,MAAM,EAAE,UAAU,MAAM,GAAG,iBAAA,GAAA,oBAAA,cAAgB,SAAA,CAAS,gBAAgB,IAChE,EAAE,SAAS,iBAAiB,IAC5B;CAEJ,MAAM,UAAA,GAASC,MAAAA,YAAAA,EACZ,aAAmB;EAClB,IAAI,EAAA,GAAA,oBAAA,cAAC,SAAA,CAAS,QAAQ,GAAG,WAAW;OAC/B,SAAS,QAAQ;EAEtB,MAAM,UAAA,GAASC,kBAAAA,QAAAA,CAAK,UAAU,WAAW;EAEzC,UAAU,MAAM;CAClB,GACA,CAAC,OAAO,WAAW,CACrB;CAEA,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,IAAI,YAAmC;EAEvC,IAAI,QACF,YAAY,iBAAiB;GAC3B,UAAU,KAAK;EACjB,GAAG,OAAO;EAEZ,aAAa;GACX,IAAI,WAAW,aAAa,SAAS;EACvC;CACF,GAAG,CAAC,SAAS,MAAM,CAAC;CAEpB,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["getValidChildren","isSomeElement","findChild","createDescendants","createContext","usePopoverProps","useEnvironment","useDisclosure","isComposing","mergeProps","mergeRefs"],"sources":["../../../../src/hooks/use-combobox/index.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n JSXElementConstructor,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n} from \"react\"\nimport type { UsePopoverProps } from \"../../components/popover\"\nimport type { HTMLProps, PropGetter, SimpleDirection } from \"../../core\"\nimport type { Descendant } from \"../use-descendants\"\nimport type { UseDisclosureProps } from \"../use-disclosure\"\nimport { useCallback, useId, useMemo, useRef } from \"react\"\nimport scrollIntoView from \"scroll-into-view-if-needed\"\nimport { usePopoverProps } from \"../../components/popover\"\nimport { mergeProps, useEnvironment } from \"../../core\"\nimport {\n ariaAttr,\n createContext,\n cx,\n dataAttr,\n findChild,\n getValidChildren,\n handlerAll,\n isComposing,\n isSomeElement,\n isUndefined,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\nimport { createDescendants } from \"../use-descendants\"\nimport { useDisclosure } from \"../use-disclosure\"\n\ninterface ComboboxSharedItem extends Omit<HTMLProps, \"children\" | \"value\"> {\n label: ReactNode\n}\n\nexport interface ComboboxItemWithValue extends ComboboxSharedItem {\n query?: string\n value?: string\n}\n\nexport interface ComboboxItemWithItems extends ComboboxSharedItem {\n items: ComboboxItemWithValue[]\n}\n\nexport type ComboboxItem = ComboboxItemWithItems | ComboboxItemWithValue\n\nexport interface CreateComboboxItemOptions {\n Group: JSXElementConstructor<any>\n Label: JSXElementConstructor<any>\n Option: JSXElementConstructor<any>\n}\n\nexport const createComboboxItem = (\n children: ReactNode,\n { Group, Label, Option }: CreateComboboxItemOptions,\n) => {\n const validChildren = getValidChildren(children)\n\n return validChildren\n .filter(\n ({ type }) => isSomeElement(type, Option) || isSomeElement(type, Group),\n )\n .map(({ type, props }) => {\n if (isSomeElement(type, Option)) {\n return { ...props, label: props.children }\n } else {\n const validChildren = getValidChildren(props.children)\n const label = findChild(validChildren, Label)\n\n return {\n ...props,\n items: validChildren\n .filter(({ type }) => isSomeElement(type, Option))\n .map(({ props }) => ({ ...props, label: props.children })),\n label: label?.props.children ?? props.label,\n }\n }\n })\n}\n\nexport interface CreateComboboxChildrenOptions {\n Group: JSXElementConstructor<any>\n Option: JSXElementConstructor<any>\n Empty?: JSXElementConstructor<any>\n}\n\nexport const createComboboxChildren = (\n items: ComboboxItem[],\n { Empty, Group, Option }: CreateComboboxChildrenOptions,\n) => {\n return items.map((item, index) => {\n if (\"data-empty\" in item && Empty) {\n const { label, ...rest } = item\n\n return (\n <Empty key={index} {...rest}>\n {label}\n </Empty>\n )\n } else if (\"items\" in item) {\n const { items, label, ...rest } = item\n\n return (\n <Group key={index} label={label} {...rest}>\n {items.map(({ label, ...rest }, index) => (\n <Option key={index} {...rest}>\n {label}\n </Option>\n ))}\n </Group>\n )\n } else {\n const { label, ...rest } = item\n\n return (\n <Option key={index} {...rest}>\n {label}\n </Option>\n )\n }\n })\n}\n\nexport interface ComboboxDescendantProps {\n id: string\n closeOnSelect?: boolean\n value?: string\n}\nexport type ComboboxDescendant = Descendant<\n HTMLDivElement,\n ComboboxDescendantProps\n>\n\nconst {\n DescendantsContext: ComboboxDescendantsContext,\n useDescendant: useComboboxDescendant,\n useDescendantRegister: useComboboxDescendantRegister,\n useDescendants: useComboboxDescendants,\n} = createDescendants<HTMLDivElement, ComboboxDescendantProps>()\n\nexport {\n ComboboxDescendantsContext,\n useComboboxDescendant,\n useComboboxDescendantRegister,\n useComboboxDescendants,\n}\n\ninterface ComboboxContext extends Pick<\n UseComboboxReturn,\n \"onActiveDescendant\" | \"onClose\" | \"onSelect\"\n> {}\n\nconst [ComboboxContext, useComboboxContext] = createContext<ComboboxContext>({\n name: \"ComboboxContext\",\n})\n\ninterface ComboboxGroupContext extends Pick<\n UseComboboxGroupReturn,\n \"getLabelProps\"\n> {}\n\nconst [ComboboxGroupContext, useComboboxGroupContext] =\n createContext<ComboboxGroupContext>({\n name: \"ComboboxGroupContext\",\n })\n\nexport {\n ComboboxContext,\n ComboboxGroupContext,\n useComboboxContext,\n useComboboxGroupContext,\n}\n\nexport interface UseComboboxProps\n extends\n Omit<HTMLProps, \"onChange\">,\n Omit<UseDisclosureProps, \"timing\">,\n Omit<\n UsePopoverProps,\n \"autoFocus\" | \"initialFocusRef\" | \"modal\" | \"transform\" | \"updateRef\"\n > {\n /**\n * If `true`, the list element will be closed when value is selected.\n *\n * @default true\n */\n closeOnSelect?: boolean\n /**\n * If `true`, the combobox will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The value to focus on when the combobox is opened.\n */\n initialFocusValue?: string\n /**\n * If `true`, the combobox will be opened when click on the field.\n *\n * @default true\n */\n openOnClick?: boolean\n /**\n * If `true`, the combobox will be opened when enter is pressed.\n *\n * @default true\n */\n openOnEnter?: boolean\n /**\n * If `true`, the combobox will be opened when space is pressed.\n *\n * @default true\n */\n openOnSpace?: boolean\n /**\n * If `true`, the combobox will be readonly.\n *\n * @default false\n */\n readOnly?: boolean\n /**\n * The `ref` of the element that should receive focus when selected.\n */\n selectFocusRef?: RefObject<HTMLElement | null>\n /**\n * If `true`, the item will be selected when space is pressed.\n *\n * @default true\n */\n selectOnSpace?: boolean\n /**\n * The callback invoked when value is selected.\n */\n onChange?: (value: string) => void\n}\n\nexport const useCombobox = (props: UseComboboxProps = {}) => {\n const [\n { matchWidth = true, ...popoverProps },\n {\n \"aria-label\": ariaLabelProp,\n \"aria-labelledby\": ariaLabelledbyProp,\n closeOnSelect: closeOnSelectProp = true,\n defaultOpen,\n disabled,\n initialFocusValue,\n open: openProp,\n openOnClick = true,\n openOnEnter = true,\n openOnSpace = true,\n readOnly,\n selectFocusRef,\n selectOnSpace = true,\n onChange: onChangeProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n },\n ] = usePopoverProps(props, [\n \"disabled\",\n \"open\",\n \"defaultOpen\",\n \"onOpen\",\n \"onClose\",\n \"openOnClick\",\n ])\n const { getWindow } = useEnvironment()\n const interactive = !(readOnly || disabled)\n const triggerRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const contentId = useId()\n const descendants = useComboboxDescendants()\n const { open, onClose, onOpen } = useDisclosure({\n defaultOpen,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const activeDescendant = useRef<ComboboxDescendant | null>(null)\n const mergedPopoverProps = useMemo<UsePopoverProps>(\n () => ({\n autoFocus: false,\n matchWidth,\n openOnClick: false,\n ...popoverProps,\n disabled: !interactive,\n open,\n onClose,\n onOpen,\n }),\n [interactive, matchWidth, onClose, onOpen, open, popoverProps],\n )\n\n const onSelect = useCallback(\n (value?: string, closeOnSelect = closeOnSelectProp) => {\n const ref = selectFocusRef ?? triggerRef\n\n ref.current?.focus()\n\n if (!interactive || isUndefined(value)) return\n\n onChangeProp?.(value)\n\n if (!closeOnSelect) return\n\n onClose()\n },\n [closeOnSelectProp, interactive, onChangeProp, onClose, selectFocusRef],\n )\n\n const onScrollIntoView = useCallback(\n (descendant?: ComboboxDescendant, block: SimpleDirection = \"start\") => {\n if (!contentRef.current || !descendant) return\n\n const style = getWindow()?.getComputedStyle(contentRef.current)\n const padding =\n block === \"start\" ? style?.paddingBlockStart : style?.paddingBlockEnd\n const value = parseInt(padding ?? \"0px\")\n\n scrollIntoView(descendant.node, {\n behavior: (actions) =>\n actions.forEach(({ el, top }) => {\n el.scrollTop = block === \"start\" ? top - value : top + value\n }),\n block,\n boundary: contentRef.current,\n inline: \"nearest\",\n scrollMode: \"if-needed\",\n })\n },\n [getWindow],\n )\n\n const onActiveDescendant = useCallback(\n (descendant?: ComboboxDescendant) => {\n if (!triggerRef.current || !descendant || disabled) return\n\n triggerRef.current.setAttribute(\"aria-activedescendant\", descendant.id)\n\n activeDescendant.current = descendant\n\n descendants.active(descendant)\n },\n [descendants, disabled],\n )\n\n const onOpenWithActiveDescendant = useCallback(\n (\n getFallbackDescendant: () => ComboboxDescendant | undefined,\n block: SimpleDirection = \"start\",\n ) => {\n onOpen()\n\n setTimeout(() => {\n if (!initialFocusValue) {\n const descendant = getFallbackDescendant()\n\n onActiveDescendant(descendant)\n onScrollIntoView(descendant, block)\n } else {\n const values = descendants.values()\n const descendant =\n values.find(({ value }) => initialFocusValue === value) ??\n getFallbackDescendant()\n\n onActiveDescendant(descendant)\n onScrollIntoView(descendant, block)\n }\n })\n },\n [\n descendants,\n initialFocusValue,\n onActiveDescendant,\n onOpen,\n onScrollIntoView,\n ],\n )\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n if (disabled) return\n\n ev.preventDefault()\n\n if (!open) {\n if (openOnClick)\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n onClose()\n }\n },\n [\n descendants,\n disabled,\n onClose,\n onOpenWithActiveDescendant,\n open,\n openOnClick,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n if (disabled || isComposing(ev)) return\n\n runKeyAction(\n ev,\n {\n ArrowDown: (ev) => {\n ev.preventDefault()\n\n if (!open) {\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else if (activeDescendant.current) {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n )\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(\n descendant,\n descendant?.recurred ? \"start\" : \"end\",\n )\n } else {\n const descendant = descendants.enabledFirstValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant)\n }\n },\n ArrowUp: (ev) => {\n ev.preventDefault()\n\n if (!open) {\n onOpenWithActiveDescendant(descendants.enabledLastValue, \"end\")\n } else if (activeDescendant.current) {\n const descendant = descendants.enabledPrevValue(\n activeDescendant.current,\n )\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(\n descendant,\n descendant?.recurred ? \"end\" : \"start\",\n )\n } else {\n const descendant = descendants.enabledLastValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant, \"end\")\n }\n },\n End: (ev) => {\n ev.preventDefault()\n\n if (!open) return\n\n const descendant = descendants.enabledLastValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant, \"end\")\n },\n Enter: (ev) => {\n if (!open) {\n if (!openOnEnter) return\n\n ev.preventDefault()\n\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n if (!activeDescendant.current) return\n\n ev.preventDefault()\n\n const { closeOnSelect, value } = activeDescendant.current\n\n onSelect(value, closeOnSelect)\n }\n },\n Home: (ev) => {\n if (!open) return\n\n ev.preventDefault()\n\n const descendant = descendants.enabledFirstValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant)\n },\n Space: (ev) => {\n if (!open) {\n if (!openOnSpace) return\n\n ev.preventDefault()\n\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n if (!activeDescendant.current || !selectOnSpace) return\n\n ev.preventDefault()\n\n const { closeOnSelect, value } = activeDescendant.current\n\n onSelect(value, closeOnSelect)\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n disabled,\n open,\n onOpenWithActiveDescendant,\n descendants,\n onActiveDescendant,\n onScrollIntoView,\n openOnEnter,\n onSelect,\n openOnSpace,\n selectOnSpace,\n ],\n )\n\n useUpdateEffect(() => {\n if (open) return\n\n activeDescendant.current = null\n }, [open])\n\n const getTriggerProps: PropGetter = useCallback(\n ({\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n ...props\n } = {}) => ({\n ...mergeProps(\n {\n ref: triggerRef,\n \"aria-controls\": open ? contentId : undefined,\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-expanded\": open,\n \"aria-haspopup\": \"listbox\",\n \"aria-label\": ariaLabel || ariaLabelProp,\n \"aria-labelledby\": cx(ariaLabelledby, ariaLabelledbyProp),\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(readOnly),\n role: \"combobox\",\n tabIndex: interactive ? 0 : -1,\n },\n rest,\n props,\n )({ mergeEvent: false }),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onKeyDown: handlerAll(props.onKeyDown, rest.onKeyDown, onKeyDown),\n }),\n [\n open,\n contentId,\n interactive,\n ariaLabelledbyProp,\n disabled,\n readOnly,\n ariaLabelProp,\n rest,\n onClick,\n onKeyDown,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) => ({\n id: contentId,\n role: \"listbox\",\n ...props,\n ref: mergeRefs(ref, contentRef),\n onKeyDown: handlerAll(props.onKeyDown),\n }),\n [contentId],\n )\n\n const getSeparatorProps: PropGetter = useCallback(\n (props) => ({ role: \"separator\", ...props }),\n [],\n )\n\n return {\n activeDescendant,\n descendants,\n interactive,\n open,\n getContentProps,\n getSeparatorProps,\n getTriggerProps,\n popoverProps: mergedPopoverProps,\n onActiveDescendant,\n onClose,\n onOpen,\n onOpenWithActiveDescendant,\n onScrollIntoView,\n onSelect,\n }\n}\n\nexport type UseComboboxReturn = ReturnType<typeof useCombobox>\n\nexport interface UseComboboxGroupProps extends HTMLProps {}\n\nexport const useComboboxGroup = ({\n \"aria-labelledby\": ariaLabelledbyProp,\n ...rest\n}: UseComboboxGroupProps = {}) => {\n const labelId = useId()\n\n const getGroupProps: PropGetter = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) =>\n mergeProps(\n {\n \"aria-labelledby\": cx(ariaLabelledbyProp, ariaLabelledby, labelId),\n role: \"group\",\n },\n rest,\n props,\n )(),\n [ariaLabelledbyProp, labelId, rest],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props) => ({ id: labelId, role: \"presentation\", ...props }),\n [labelId],\n )\n\n return { getGroupProps, getLabelProps }\n}\n\nexport type UseComboboxGroupReturn = ReturnType<typeof useComboboxGroup>\n\nexport interface UseComboboxItemProps extends HTMLProps {\n /**\n * If `true`, the item will be closed when selected.\n */\n closeOnSelect?: boolean\n /**\n * If `true`, the item will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * If `true`, the item will be selected.\n */\n selected?: boolean\n /**\n * The value of the item.\n */\n value?: string\n}\n\nexport const useComboboxItem = ({\n id,\n \"aria-disabled\": ariaDisabled,\n \"data-disabled\": dataDisabled,\n closeOnSelect,\n disabled = false,\n selected = false,\n value,\n ...rest\n}: UseComboboxItemProps = {}) => {\n const uuid = useId()\n const itemRef = useRef<HTMLDivElement>(null)\n const { onActiveDescendant, onClose, onSelect } = useComboboxContext()\n\n id ??= uuid\n\n const { descendants, register } = useComboboxDescendant({\n id,\n closeOnSelect,\n disabled,\n value,\n })\n\n const onActive = useCallback(() => {\n if (disabled) return\n\n const current = descendants.value(itemRef.current)\n\n onActiveDescendant(current)\n }, [descendants, disabled, onActiveDescendant])\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n ev.preventDefault()\n\n if (disabled) return\n\n onSelect(value, closeOnSelect)\n },\n [closeOnSelect, disabled, onSelect, value],\n )\n\n const getItemProps: PropGetter = useCallback(\n (props = {}) => ({\n ...mergeProps(\n {\n id,\n ref: itemRef,\n \"aria-disabled\": ariaDisabled ?? ariaAttr(disabled),\n \"aria-selected\": selected,\n \"data-disabled\": dataDisabled ?? dataAttr(disabled),\n \"data-selected\": dataAttr(selected),\n \"data-value\": value,\n role: \"option\",\n tabIndex: -1,\n },\n rest,\n props,\n { ref: register },\n )({ mergeEvent: false }),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onMouseMove: handlerAll(props.onMouseMove, rest.onMouseMove, onActive),\n }),\n [\n id,\n ariaDisabled,\n disabled,\n selected,\n dataDisabled,\n value,\n rest,\n register,\n onClick,\n onActive,\n ],\n )\n\n const getIndicatorProps: PropGetter = useCallback(\n (props = {}) =>\n mergeProps({ style: { opacity: selected ? 1 : 0 } }, props)(),\n [selected],\n )\n\n return {\n descendants,\n disabled,\n selected,\n getIndicatorProps,\n getItemProps,\n onActiveDescendant,\n onClose,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["getValidChildren","isSomeElement","findChild","createDescendants","createContext","usePopoverProps","useEnvironment","useRef","useId","useDisclosure","useMemo","useCallback","isComposing","mergeProps","mergeRefs"],"sources":["../../../../src/hooks/use-combobox/index.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n JSXElementConstructor,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n} from \"react\"\nimport type { UsePopoverProps } from \"../../components/popover\"\nimport type { HTMLProps, PropGetter, SimpleDirection } from \"../../core\"\nimport type { Descendant } from \"../use-descendants\"\nimport type { UseDisclosureProps } from \"../use-disclosure\"\nimport { useCallback, useId, useMemo, useRef } from \"react\"\nimport scrollIntoView from \"scroll-into-view-if-needed\"\nimport { usePopoverProps } from \"../../components/popover\"\nimport { mergeProps, useEnvironment } from \"../../core\"\nimport {\n ariaAttr,\n createContext,\n cx,\n dataAttr,\n findChild,\n getValidChildren,\n handlerAll,\n isComposing,\n isSomeElement,\n isUndefined,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\nimport { createDescendants } from \"../use-descendants\"\nimport { useDisclosure } from \"../use-disclosure\"\n\ninterface ComboboxSharedItem extends Omit<HTMLProps, \"children\" | \"value\"> {\n label: ReactNode\n}\n\nexport interface ComboboxItemWithValue extends ComboboxSharedItem {\n query?: string\n value?: string\n}\n\nexport interface ComboboxItemWithItems extends ComboboxSharedItem {\n items: ComboboxItemWithValue[]\n}\n\nexport type ComboboxItem = ComboboxItemWithItems | ComboboxItemWithValue\n\nexport interface CreateComboboxItemOptions {\n Group: JSXElementConstructor<any>\n Label: JSXElementConstructor<any>\n Option: JSXElementConstructor<any>\n}\n\nexport const createComboboxItem = (\n children: ReactNode,\n { Group, Label, Option }: CreateComboboxItemOptions,\n) => {\n const validChildren = getValidChildren(children)\n\n return validChildren\n .filter(\n ({ type }) => isSomeElement(type, Option) || isSomeElement(type, Group),\n )\n .map(({ type, props }) => {\n if (isSomeElement(type, Option)) {\n return { ...props, label: props.children }\n } else {\n const validChildren = getValidChildren(props.children)\n const label = findChild(validChildren, Label)\n\n return {\n ...props,\n items: validChildren\n .filter(({ type }) => isSomeElement(type, Option))\n .map(({ props }) => ({ ...props, label: props.children })),\n label: label?.props.children ?? props.label,\n }\n }\n })\n}\n\nexport interface CreateComboboxChildrenOptions {\n Group: JSXElementConstructor<any>\n Option: JSXElementConstructor<any>\n Empty?: JSXElementConstructor<any>\n}\n\nexport const createComboboxChildren = (\n items: ComboboxItem[],\n { Empty, Group, Option }: CreateComboboxChildrenOptions,\n) => {\n return items.map((item, index) => {\n if (\"data-empty\" in item && Empty) {\n const { label, ...rest } = item\n\n return (\n <Empty key={index} {...rest}>\n {label}\n </Empty>\n )\n } else if (\"items\" in item) {\n const { items, label, ...rest } = item\n\n return (\n <Group key={index} label={label} {...rest}>\n {items.map(({ label, ...rest }, index) => (\n <Option key={index} {...rest}>\n {label}\n </Option>\n ))}\n </Group>\n )\n } else {\n const { label, ...rest } = item\n\n return (\n <Option key={index} {...rest}>\n {label}\n </Option>\n )\n }\n })\n}\n\nexport interface ComboboxDescendantProps {\n id: string\n closeOnSelect?: boolean\n value?: string\n}\nexport type ComboboxDescendant = Descendant<\n HTMLDivElement,\n ComboboxDescendantProps\n>\n\nconst {\n DescendantsContext: ComboboxDescendantsContext,\n useDescendant: useComboboxDescendant,\n useDescendantRegister: useComboboxDescendantRegister,\n useDescendants: useComboboxDescendants,\n} = createDescendants<HTMLDivElement, ComboboxDescendantProps>()\n\nexport {\n ComboboxDescendantsContext,\n useComboboxDescendant,\n useComboboxDescendantRegister,\n useComboboxDescendants,\n}\n\ninterface ComboboxContext extends Pick<\n UseComboboxReturn,\n \"onActiveDescendant\" | \"onClose\" | \"onSelect\"\n> {}\n\nconst [ComboboxContext, useComboboxContext] = createContext<ComboboxContext>({\n name: \"ComboboxContext\",\n})\n\ninterface ComboboxGroupContext extends Pick<\n UseComboboxGroupReturn,\n \"getLabelProps\"\n> {}\n\nconst [ComboboxGroupContext, useComboboxGroupContext] =\n createContext<ComboboxGroupContext>({\n name: \"ComboboxGroupContext\",\n })\n\nexport {\n ComboboxContext,\n ComboboxGroupContext,\n useComboboxContext,\n useComboboxGroupContext,\n}\n\nexport interface UseComboboxProps\n extends\n Omit<HTMLProps, \"onChange\">,\n Omit<UseDisclosureProps, \"timing\">,\n Omit<\n UsePopoverProps,\n \"autoFocus\" | \"initialFocusRef\" | \"modal\" | \"transform\" | \"updateRef\"\n > {\n /**\n * If `true`, the list element will be closed when value is selected.\n *\n * @default true\n */\n closeOnSelect?: boolean\n /**\n * If `true`, the combobox will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The value to focus on when the combobox is opened.\n */\n initialFocusValue?: string\n /**\n * If `true`, the combobox will be opened when click on the field.\n *\n * @default true\n */\n openOnClick?: boolean\n /**\n * If `true`, the combobox will be opened when enter is pressed.\n *\n * @default true\n */\n openOnEnter?: boolean\n /**\n * If `true`, the combobox will be opened when space is pressed.\n *\n * @default true\n */\n openOnSpace?: boolean\n /**\n * If `true`, the combobox will be readonly.\n *\n * @default false\n */\n readOnly?: boolean\n /**\n * The `ref` of the element that should receive focus when selected.\n */\n selectFocusRef?: RefObject<HTMLElement | null>\n /**\n * If `true`, the item will be selected when space is pressed.\n *\n * @default true\n */\n selectOnSpace?: boolean\n /**\n * The callback invoked when value is selected.\n */\n onChange?: (value: string) => void\n}\n\nexport const useCombobox = (props: UseComboboxProps = {}) => {\n const [\n { matchWidth = true, ...popoverProps },\n {\n \"aria-label\": ariaLabelProp,\n \"aria-labelledby\": ariaLabelledbyProp,\n closeOnSelect: closeOnSelectProp = true,\n defaultOpen,\n disabled,\n initialFocusValue,\n open: openProp,\n openOnClick = true,\n openOnEnter = true,\n openOnSpace = true,\n readOnly,\n selectFocusRef,\n selectOnSpace = true,\n onChange: onChangeProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n },\n ] = usePopoverProps(props, [\n \"disabled\",\n \"open\",\n \"defaultOpen\",\n \"onOpen\",\n \"onClose\",\n \"openOnClick\",\n ])\n const { getWindow } = useEnvironment()\n const interactive = !(readOnly || disabled)\n const triggerRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const contentId = useId()\n const descendants = useComboboxDescendants()\n const { open, onClose, onOpen } = useDisclosure({\n defaultOpen,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const activeDescendant = useRef<ComboboxDescendant | null>(null)\n const mergedPopoverProps = useMemo<UsePopoverProps>(\n () => ({\n autoFocus: false,\n matchWidth,\n openOnClick: false,\n ...popoverProps,\n disabled: !interactive,\n open,\n onClose,\n onOpen,\n }),\n [interactive, matchWidth, onClose, onOpen, open, popoverProps],\n )\n\n const onSelect = useCallback(\n (value?: string, closeOnSelect = closeOnSelectProp) => {\n const ref = selectFocusRef ?? triggerRef\n\n ref.current?.focus()\n\n if (!interactive || isUndefined(value)) return\n\n onChangeProp?.(value)\n\n if (!closeOnSelect) return\n\n onClose()\n },\n [closeOnSelectProp, interactive, onChangeProp, onClose, selectFocusRef],\n )\n\n const onScrollIntoView = useCallback(\n (descendant?: ComboboxDescendant, block: SimpleDirection = \"start\") => {\n if (!contentRef.current || !descendant) return\n\n const style = getWindow()?.getComputedStyle(contentRef.current)\n const padding =\n block === \"start\" ? style?.paddingBlockStart : style?.paddingBlockEnd\n const value = parseInt(padding ?? \"0px\")\n\n scrollIntoView(descendant.node, {\n behavior: (actions) =>\n actions.forEach(({ el, top }) => {\n el.scrollTop = block === \"start\" ? top - value : top + value\n }),\n block,\n boundary: contentRef.current,\n inline: \"nearest\",\n scrollMode: \"if-needed\",\n })\n },\n [getWindow],\n )\n\n const onActiveDescendant = useCallback(\n (descendant?: ComboboxDescendant) => {\n if (!triggerRef.current || !descendant || disabled) return\n\n triggerRef.current.setAttribute(\"aria-activedescendant\", descendant.id)\n\n activeDescendant.current = descendant\n\n descendants.active(descendant)\n },\n [descendants, disabled],\n )\n\n const onOpenWithActiveDescendant = useCallback(\n (\n getFallbackDescendant: () => ComboboxDescendant | undefined,\n block: SimpleDirection = \"start\",\n ) => {\n onOpen()\n\n setTimeout(() => {\n if (!initialFocusValue) {\n const descendant = getFallbackDescendant()\n\n onActiveDescendant(descendant)\n onScrollIntoView(descendant, block)\n } else {\n const values = descendants.values()\n const descendant =\n values.find(({ value }) => initialFocusValue === value) ??\n getFallbackDescendant()\n\n onActiveDescendant(descendant)\n onScrollIntoView(descendant, block)\n }\n })\n },\n [\n descendants,\n initialFocusValue,\n onActiveDescendant,\n onOpen,\n onScrollIntoView,\n ],\n )\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n if (disabled) return\n\n ev.preventDefault()\n\n if (!open) {\n if (openOnClick)\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n onClose()\n }\n },\n [\n descendants,\n disabled,\n onClose,\n onOpenWithActiveDescendant,\n open,\n openOnClick,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n if (disabled || isComposing(ev)) return\n\n runKeyAction(\n ev,\n {\n ArrowDown: (ev) => {\n ev.preventDefault()\n\n if (!open) {\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else if (activeDescendant.current) {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n )\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(\n descendant,\n descendant?.recurred ? \"start\" : \"end\",\n )\n } else {\n const descendant = descendants.enabledFirstValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant)\n }\n },\n ArrowUp: (ev) => {\n ev.preventDefault()\n\n if (!open) {\n onOpenWithActiveDescendant(descendants.enabledLastValue, \"end\")\n } else if (activeDescendant.current) {\n const descendant = descendants.enabledPrevValue(\n activeDescendant.current,\n )\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(\n descendant,\n descendant?.recurred ? \"end\" : \"start\",\n )\n } else {\n const descendant = descendants.enabledLastValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant, \"end\")\n }\n },\n End: (ev) => {\n ev.preventDefault()\n\n if (!open) return\n\n const descendant = descendants.enabledLastValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant, \"end\")\n },\n Enter: (ev) => {\n if (!open) {\n if (!openOnEnter) return\n\n ev.preventDefault()\n\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n if (!activeDescendant.current) return\n\n ev.preventDefault()\n\n const { closeOnSelect, value } = activeDescendant.current\n\n onSelect(value, closeOnSelect)\n }\n },\n Home: (ev) => {\n if (!open) return\n\n ev.preventDefault()\n\n const descendant = descendants.enabledFirstValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant)\n },\n Space: (ev) => {\n if (!open) {\n if (!openOnSpace) return\n\n ev.preventDefault()\n\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n if (!activeDescendant.current || !selectOnSpace) return\n\n ev.preventDefault()\n\n const { closeOnSelect, value } = activeDescendant.current\n\n onSelect(value, closeOnSelect)\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n disabled,\n open,\n onOpenWithActiveDescendant,\n descendants,\n onActiveDescendant,\n onScrollIntoView,\n openOnEnter,\n onSelect,\n openOnSpace,\n selectOnSpace,\n ],\n )\n\n useUpdateEffect(() => {\n if (open) return\n\n activeDescendant.current = null\n }, [open])\n\n const getTriggerProps: PropGetter = useCallback(\n ({\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n ...props\n } = {}) => ({\n ...mergeProps(\n {\n ref: triggerRef,\n \"aria-controls\": open ? contentId : undefined,\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-expanded\": open,\n \"aria-haspopup\": \"listbox\",\n \"aria-label\": ariaLabel || ariaLabelProp,\n \"aria-labelledby\": cx(ariaLabelledby, ariaLabelledbyProp),\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(readOnly),\n role: \"combobox\",\n tabIndex: interactive ? 0 : -1,\n },\n rest,\n props,\n )({ mergeEvent: false }),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onKeyDown: handlerAll(props.onKeyDown, rest.onKeyDown, onKeyDown),\n }),\n [\n open,\n contentId,\n interactive,\n ariaLabelledbyProp,\n disabled,\n readOnly,\n ariaLabelProp,\n rest,\n onClick,\n onKeyDown,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) => ({\n id: contentId,\n role: \"listbox\",\n ...props,\n ref: mergeRefs(ref, contentRef),\n onKeyDown: handlerAll(props.onKeyDown),\n }),\n [contentId],\n )\n\n const getSeparatorProps: PropGetter = useCallback(\n (props) => ({ role: \"separator\", ...props }),\n [],\n )\n\n return {\n activeDescendant,\n descendants,\n interactive,\n open,\n getContentProps,\n getSeparatorProps,\n getTriggerProps,\n popoverProps: mergedPopoverProps,\n onActiveDescendant,\n onClose,\n onOpen,\n onOpenWithActiveDescendant,\n onScrollIntoView,\n onSelect,\n }\n}\n\nexport type UseComboboxReturn = ReturnType<typeof useCombobox>\n\nexport interface UseComboboxGroupProps extends HTMLProps {}\n\nexport const useComboboxGroup = ({\n \"aria-labelledby\": ariaLabelledbyProp,\n ...rest\n}: UseComboboxGroupProps = {}) => {\n const labelId = useId()\n\n const getGroupProps: PropGetter = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) =>\n mergeProps(\n {\n \"aria-labelledby\": cx(ariaLabelledbyProp, ariaLabelledby, labelId),\n role: \"group\",\n },\n rest,\n props,\n )(),\n [ariaLabelledbyProp, labelId, rest],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props) => ({ id: labelId, role: \"presentation\", ...props }),\n [labelId],\n )\n\n return { getGroupProps, getLabelProps }\n}\n\nexport type UseComboboxGroupReturn = ReturnType<typeof useComboboxGroup>\n\nexport interface UseComboboxItemProps extends HTMLProps {\n /**\n * If `true`, the item will be closed when selected.\n */\n closeOnSelect?: boolean\n /**\n * If `true`, the item will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * If `true`, the item will be selected.\n */\n selected?: boolean\n /**\n * The value of the item.\n */\n value?: string\n}\n\nexport const useComboboxItem = ({\n id,\n \"aria-disabled\": ariaDisabled,\n \"data-disabled\": dataDisabled,\n closeOnSelect,\n disabled = false,\n selected = false,\n value,\n ...rest\n}: UseComboboxItemProps = {}) => {\n const uuid = useId()\n const itemRef = useRef<HTMLDivElement>(null)\n const { onActiveDescendant, onClose, onSelect } = useComboboxContext()\n\n id ??= uuid\n\n const { descendants, register } = useComboboxDescendant({\n id,\n closeOnSelect,\n disabled,\n value,\n })\n\n const onActive = useCallback(() => {\n if (disabled) return\n\n const current = descendants.value(itemRef.current)\n\n onActiveDescendant(current)\n }, [descendants, disabled, onActiveDescendant])\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n ev.preventDefault()\n\n if (disabled) return\n\n onSelect(value, closeOnSelect)\n },\n [closeOnSelect, disabled, onSelect, value],\n )\n\n const getItemProps: PropGetter = useCallback(\n (props = {}) => ({\n ...mergeProps(\n {\n id,\n ref: itemRef,\n \"aria-disabled\": ariaDisabled ?? ariaAttr(disabled),\n \"aria-selected\": selected,\n \"data-disabled\": dataDisabled ?? dataAttr(disabled),\n \"data-selected\": dataAttr(selected),\n \"data-value\": value,\n role: \"option\",\n tabIndex: -1,\n },\n rest,\n props,\n { ref: register },\n )({ mergeEvent: false }),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onMouseMove: handlerAll(props.onMouseMove, rest.onMouseMove, onActive),\n }),\n [\n id,\n ariaDisabled,\n disabled,\n selected,\n dataDisabled,\n value,\n rest,\n register,\n onClick,\n onActive,\n ],\n )\n\n const getIndicatorProps: PropGetter = useCallback(\n (props = {}) =>\n mergeProps({ style: { opacity: selected ? 1 : 0 } }, props)(),\n [selected],\n )\n\n return {\n descendants,\n disabled,\n selected,\n getIndicatorProps,\n getItemProps,\n onActiveDescendant,\n onClose,\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("../../_virtual/_rolldown/runtime.cjs");
3
4
  const require_ref = require("../../utils/ref.cjs");
4
5
  const require_utils_index = require("../../utils/index.cjs");
5
6
  let react = require("react");
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["useCallbackRef"],"sources":["../../../../src/hooks/use-controllable-state/index.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n ChangeEventHandler,\n Dispatch,\n SetStateAction,\n} from \"react\"\nimport { useState } from \"react\"\nimport {\n isBoolean,\n isNull,\n isUndefined,\n runIfFn,\n useCallbackRef,\n} from \"../../utils\"\n\ninterface UseControllableStateMethods<Y> {\n onChange?: (value: Y) => void\n onUpdate?: (prev: Y, next: Y) => boolean\n}\n\nexport interface UseControllableStateProps<\n Y,\n> extends UseControllableStateMethods<Y> {\n defaultValue?: (() => Y) | Y\n value?: Y\n}\n\nexport function useControllableState<Y>(\n props: UseControllableStateMethods<Y> & {\n value: Y\n defaultValue?: (() => Y) | Y\n },\n): [Y, Dispatch<SetStateAction<Y>>]\n\nexport function useControllableState<Y>(\n props: UseControllableStateMethods<Y> & {\n defaultValue: (() => Y) | Y\n value?: Y\n },\n): [Y, Dispatch<SetStateAction<Y>>]\n\nexport function useControllableState<Y>(\n props: UseControllableStateProps<Y>,\n): [Y, Dispatch<SetStateAction<Y>>]\n\nexport function useControllableState<Y>({\n defaultValue: defaultValueProp,\n value,\n onChange: onChangeProp,\n onUpdate: onUpdateProp = (prev, next) => prev !== next,\n}: UseControllableStateProps<Y>) {\n const onChange = useCallbackRef(onChangeProp)\n const onUpdate = useCallbackRef(onUpdateProp)\n const [defaultValue, setDefaultValue] = useState(defaultValueProp)\n const controlled = !isUndefined(value)\n const currentValue = (controlled ? value : defaultValue) as Y\n\n const setValue = useCallbackRef(\n (next: SetStateAction<Y>) => {\n const nextValue = runIfFn(next, currentValue)\n\n if (!onUpdate(currentValue, nextValue)) return\n\n if (!controlled || isUndefined(nextValue) || isNull(nextValue))\n setDefaultValue(nextValue)\n\n onChange(nextValue)\n },\n [controlled, currentValue, onChange, onUpdate],\n )\n\n return [currentValue, setValue]\n}\n\nfunction isHTMLInputElement(el: HTMLElement): el is HTMLInputElement {\n return el instanceof HTMLInputElement\n}\n\ninterface UseControllableEventStateMethods<\n Y extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n> {\n onChange?: ChangeEventHandler<Y>\n}\n\nexport interface UseControllableEventStateProps<\n Y extends boolean | number | string,\n M extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n> extends UseControllableEventStateMethods<M> {\n defaultValue?: (() => Y) | Y\n value?: Y\n}\n\nexport function useControllableEventState<\n Y extends boolean | number | string,\n M extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n>(\n props: UseControllableEventStateMethods<M> & {\n value: Y\n defaultValue?: (() => Y) | Y\n },\n): [Y, ChangeEventHandler<M>]\n\nexport function useControllableEventState<\n Y extends boolean | number | string,\n M extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n>(\n props: UseControllableEventStateMethods<M> & {\n defaultValue: (() => Y) | Y\n value?: Y\n },\n): [Y, ChangeEventHandler<M>]\n\nexport function useControllableEventState<\n Y extends boolean | number | string,\n M extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n>(props: UseControllableEventStateProps<Y, M>): [Y, ChangeEventHandler<M>]\n\nexport function useControllableEventState<\n Y extends boolean | number | string,\n M extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n>({\n defaultValue: defaultValueProp,\n value,\n onChange: onChangeProp,\n}: UseControllableEventStateProps<Y, M>) {\n const onChange = useCallbackRef(onChangeProp)\n const [defaultValue, setDefaultValue] = useState(defaultValueProp)\n const controlled = !isUndefined(value)\n const currentValue = (controlled ? value : defaultValue) as Y\n const boolean = isBoolean(currentValue)\n\n const setValue = useCallbackRef(\n (ev: ChangeEvent<M>) => {\n const value =\n boolean && isHTMLInputElement(ev.target)\n ? (ev.target.checked as Y)\n : (ev.target.value as Y)\n\n if (!controlled || isUndefined(value) || isNull(value))\n setDefaultValue(value)\n\n onChange(ev)\n },\n [controlled, currentValue, onChange],\n )\n\n return [currentValue, setValue]\n}\n"],"mappings":";;;;;;AA+CA,SAAgB,qBAAwB,EACtC,cAAc,kBACd,OACA,UAAU,cACV,UAAU,gBAAgB,MAAM,SAAS,SAAS,QACnB;CAC/B,MAAM,WAAWA,YAAAA,eAAe,YAAY;CAC5C,MAAM,WAAWA,YAAAA,eAAe,YAAY;CAC5C,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,SAAA,CAA4B,gBAAgB;CACjE,MAAM,aAAa,EAAA,GAAA,oBAAA,cAAA,YAAA,CAAa,KAAK;CACrC,MAAM,eAAgB,aAAa,QAAQ;CAgB3C,OAAO,CAAC,cAdSA,YAAAA,gBACd,SAA4B;EAC3B,MAAM,aAAA,GAAA,oBAAA,cAAA,QAAA,CAAoB,MAAM,YAAY;EAE5C,IAAI,CAAC,SAAS,cAAc,SAAS,GAAG;EAExC,IAAI,CAAC,eAAA,GAAA,oBAAA,cAAA,YAAA,CAA0B,SAAS,MAAA,GAAA,oBAAA,cAAA,OAAA,CAAY,SAAS,GAC3D,gBAAgB,SAAS;EAE3B,SAAS,SAAS;CACpB,GACA;EAAC;EAAY;EAAc;EAAU;CAAQ,CAGlB,CAAC;AAChC;AAEA,SAAS,mBAAmB,IAAyC;CACnE,OAAO,cAAc;AACvB;AAyCA,SAAgB,0BAGd,EACA,cAAc,kBACd,OACA,UAAU,gBAC6B;CACvC,MAAM,WAAWA,YAAAA,eAAe,YAAY;CAC5C,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,SAAA,CAA4B,gBAAgB;CACjE,MAAM,aAAa,EAAA,GAAA,oBAAA,cAAA,YAAA,CAAa,KAAK;CACrC,MAAM,eAAgB,aAAa,QAAQ;CAC3C,MAAM,WAAA,GAAA,oBAAA,cAAA,UAAA,CAAoB,YAAY;CAiBtC,OAAO,CAAC,cAfSA,YAAAA,gBACd,OAAuB;EACtB,MAAM,QACJ,WAAW,mBAAmB,GAAG,MAAM,IAClC,GAAG,OAAO,UACV,GAAG,OAAO;EAEjB,IAAI,CAAC,eAAA,GAAA,oBAAA,cAAA,YAAA,CAA0B,KAAK,MAAA,GAAA,oBAAA,cAAA,OAAA,CAAY,KAAK,GACnD,gBAAgB,KAAK;EAEvB,SAAS,EAAE;CACb,GACA;EAAC;EAAY;EAAc;CAAQ,CAGR,CAAC;AAChC"}
1
+ {"version":3,"file":"index.cjs","names":["useCallbackRef","useState"],"sources":["../../../../src/hooks/use-controllable-state/index.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n ChangeEventHandler,\n Dispatch,\n SetStateAction,\n} from \"react\"\nimport { useState } from \"react\"\nimport {\n isBoolean,\n isNull,\n isUndefined,\n runIfFn,\n useCallbackRef,\n} from \"../../utils\"\n\ninterface UseControllableStateMethods<Y> {\n onChange?: (value: Y) => void\n onUpdate?: (prev: Y, next: Y) => boolean\n}\n\nexport interface UseControllableStateProps<\n Y,\n> extends UseControllableStateMethods<Y> {\n defaultValue?: (() => Y) | Y\n value?: Y\n}\n\nexport function useControllableState<Y>(\n props: UseControllableStateMethods<Y> & {\n value: Y\n defaultValue?: (() => Y) | Y\n },\n): [Y, Dispatch<SetStateAction<Y>>]\n\nexport function useControllableState<Y>(\n props: UseControllableStateMethods<Y> & {\n defaultValue: (() => Y) | Y\n value?: Y\n },\n): [Y, Dispatch<SetStateAction<Y>>]\n\nexport function useControllableState<Y>(\n props: UseControllableStateProps<Y>,\n): [Y, Dispatch<SetStateAction<Y>>]\n\nexport function useControllableState<Y>({\n defaultValue: defaultValueProp,\n value,\n onChange: onChangeProp,\n onUpdate: onUpdateProp = (prev, next) => prev !== next,\n}: UseControllableStateProps<Y>) {\n const onChange = useCallbackRef(onChangeProp)\n const onUpdate = useCallbackRef(onUpdateProp)\n const [defaultValue, setDefaultValue] = useState(defaultValueProp)\n const controlled = !isUndefined(value)\n const currentValue = (controlled ? value : defaultValue) as Y\n\n const setValue = useCallbackRef(\n (next: SetStateAction<Y>) => {\n const nextValue = runIfFn(next, currentValue)\n\n if (!onUpdate(currentValue, nextValue)) return\n\n if (!controlled || isUndefined(nextValue) || isNull(nextValue))\n setDefaultValue(nextValue)\n\n onChange(nextValue)\n },\n [controlled, currentValue, onChange, onUpdate],\n )\n\n return [currentValue, setValue]\n}\n\nfunction isHTMLInputElement(el: HTMLElement): el is HTMLInputElement {\n return el instanceof HTMLInputElement\n}\n\ninterface UseControllableEventStateMethods<\n Y extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n> {\n onChange?: ChangeEventHandler<Y>\n}\n\nexport interface UseControllableEventStateProps<\n Y extends boolean | number | string,\n M extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n> extends UseControllableEventStateMethods<M> {\n defaultValue?: (() => Y) | Y\n value?: Y\n}\n\nexport function useControllableEventState<\n Y extends boolean | number | string,\n M extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n>(\n props: UseControllableEventStateMethods<M> & {\n value: Y\n defaultValue?: (() => Y) | Y\n },\n): [Y, ChangeEventHandler<M>]\n\nexport function useControllableEventState<\n Y extends boolean | number | string,\n M extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n>(\n props: UseControllableEventStateMethods<M> & {\n defaultValue: (() => Y) | Y\n value?: Y\n },\n): [Y, ChangeEventHandler<M>]\n\nexport function useControllableEventState<\n Y extends boolean | number | string,\n M extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n>(props: UseControllableEventStateProps<Y, M>): [Y, ChangeEventHandler<M>]\n\nexport function useControllableEventState<\n Y extends boolean | number | string,\n M extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n>({\n defaultValue: defaultValueProp,\n value,\n onChange: onChangeProp,\n}: UseControllableEventStateProps<Y, M>) {\n const onChange = useCallbackRef(onChangeProp)\n const [defaultValue, setDefaultValue] = useState(defaultValueProp)\n const controlled = !isUndefined(value)\n const currentValue = (controlled ? value : defaultValue) as Y\n const boolean = isBoolean(currentValue)\n\n const setValue = useCallbackRef(\n (ev: ChangeEvent<M>) => {\n const value =\n boolean && isHTMLInputElement(ev.target)\n ? (ev.target.checked as Y)\n : (ev.target.value as Y)\n\n if (!controlled || isUndefined(value) || isNull(value))\n setDefaultValue(value)\n\n onChange(ev)\n },\n [controlled, currentValue, onChange],\n )\n\n return [currentValue, setValue]\n}\n"],"mappings":";;;;;;;AA+CA,SAAgB,qBAAwB,EACtC,cAAc,kBACd,OACA,UAAU,cACV,UAAU,gBAAgB,MAAM,SAAS,SAAS,QACnB;CAC/B,MAAM,WAAWA,YAAAA,eAAe,YAAY;CAC5C,MAAM,WAAWA,YAAAA,eAAe,YAAY;CAC5C,MAAM,CAAC,cAAc,oBAAA,GAAmBC,MAAAA,SAAAA,CAAS,gBAAgB;CACjE,MAAM,aAAa,EAAA,GAAA,oBAAA,cAAC,YAAA,CAAY,KAAK;CACrC,MAAM,eAAgB,aAAa,QAAQ;CAgB3C,OAAO,CAAC,cAdSD,YAAAA,gBACd,SAA4B;EAC3B,MAAM,aAAA,GAAA,oBAAA,cAAY,QAAA,CAAQ,MAAM,YAAY;EAE5C,IAAI,CAAC,SAAS,cAAc,SAAS,GAAG;EAExC,IAAI,CAAC,eAAA,GAAA,oBAAA,cAAc,YAAA,CAAY,SAAS,MAAA,GAAA,oBAAA,cAAK,OAAA,CAAO,SAAS,GAC3D,gBAAgB,SAAS;EAE3B,SAAS,SAAS;CACpB,GACA;EAAC;EAAY;EAAc;EAAU;CAAQ,CAGlB,CAAC;AAChC;AAEA,SAAS,mBAAmB,IAAyC;CACnE,OAAO,cAAc;AACvB;AAyCA,SAAgB,0BAGd,EACA,cAAc,kBACd,OACA,UAAU,gBAC6B;CACvC,MAAM,WAAWA,YAAAA,eAAe,YAAY;CAC5C,MAAM,CAAC,cAAc,oBAAA,GAAmBC,MAAAA,SAAAA,CAAS,gBAAgB;CACjE,MAAM,aAAa,EAAA,GAAA,oBAAA,cAAC,YAAA,CAAY,KAAK;CACrC,MAAM,eAAgB,aAAa,QAAQ;CAC3C,MAAM,WAAA,GAAA,oBAAA,cAAU,UAAA,CAAU,YAAY;CAiBtC,OAAO,CAAC,cAfSD,YAAAA,gBACd,OAAuB;EACtB,MAAM,QACJ,WAAW,mBAAmB,GAAG,MAAM,IAClC,GAAG,OAAO,UACV,GAAG,OAAO;EAEjB,IAAI,CAAC,eAAA,GAAA,oBAAA,cAAc,YAAA,CAAY,KAAK,MAAA,GAAA,oBAAA,cAAK,OAAA,CAAO,KAAK,GACnD,gBAAgB,KAAK;EAEvB,SAAS,EAAE;CACb,GACA;EAAC;EAAY;EAAc;CAAQ,CAGR,CAAC;AAChC"}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("../../_virtual/_rolldown/runtime.cjs");
3
4
  const require_ref = require("../../utils/ref.cjs");
4
5
  const require_utils_index = require("../../utils/index.cjs");
5
6
  let react = require("react");
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["useCallbackRef"],"sources":["../../../../src/hooks/use-counter/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useState } from \"react\"\nimport {\n clampNumber,\n countDecimal,\n toPrecision,\n useCallbackRef,\n} from \"../../utils\"\n\nconst parse = (value: number | string): number =>\n parseFloat(value.toString().replace(/[^\\w.-]+/g, \"\"))\n\nconst getCountDecimal = (value: number, step: number): number =>\n Math.max(countDecimal(step), countDecimal(value))\n\nconst casting = (\n value: number | string,\n step: number,\n precision?: number,\n): string | undefined => {\n value = parse(value)\n\n return !Number.isNaN(value)\n ? toPrecision(value, precision ?? getCountDecimal(value, step))\n : undefined\n}\n\nexport interface UseCounterProps {\n /**\n * The initial value of the counter.\n * Should be less than `max` and greater than `min`.\n */\n defaultValue?: number | string\n /**\n * This controls the value update behavior in general.\n *\n * - If `true` and you use the stepper or up/down arrow keys,\n * the value will not exceed the `max` or go lower than `min`.\n *\n * - If `false`, the value will be allowed to go out of range.\n *\n * @default true\n */\n keepWithinRange?: boolean\n /**\n * The maximum value of the counter\n *\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number\n /**\n * The minimum value of the counter\n *\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number\n /**\n * The number of decimal points used to round the value.\n */\n precision?: number\n /**\n * The step used to increment or decrement the value.\n *\n * @default 1\n */\n step?: number\n /**\n * The value of the counter.\n * Should be less than `max` and greater than `min`.\n */\n value?: number | string\n /**\n * The callback fired when the value changes.\n */\n onChange?: (valueAsString: string, valueAsNumber: number) => void\n}\n\n/**\n * `useCounter` is a custom hook that returns the current counter value.\n *\n * @see https://yamada-ui.com/docs/hooks/use-counter\n */\nexport const useCounter = ({\n keepWithinRange = true,\n max: maxValue = Number.MAX_SAFE_INTEGER,\n min: minValue = Number.MIN_SAFE_INTEGER,\n step: stepProp = 1,\n ...props\n}: UseCounterProps = {}) => {\n const onChange = useCallbackRef(props.onChange)\n\n const [defaultValue, setValue] = useState<number | string>(() => {\n if (props.defaultValue == null) return \"\"\n\n return casting(props.defaultValue, stepProp, props.precision) ?? \"\"\n })\n\n const isControlled = typeof props.value !== \"undefined\"\n const value = isControlled ? (props.value as number | string) : defaultValue\n\n const countDecimal = getCountDecimal(parse(value), stepProp)\n\n const precision = props.precision ?? countDecimal\n\n const update = useCallback(\n (next: number | string) => {\n if (next === value) return\n\n if (!isControlled) setValue(next.toString())\n\n onChange(next.toString(), parse(next))\n },\n [onChange, isControlled, value],\n )\n\n const clamp = useCallback(\n (value: number) => {\n let nextValue = value\n\n if (keepWithinRange)\n nextValue = clampNumber(nextValue, minValue, maxValue)\n\n return toPrecision(nextValue, precision)\n },\n [precision, keepWithinRange, maxValue, minValue],\n )\n\n const increment = useCallback(\n (step = stepProp) => {\n let next: number | string\n\n if (value === \"\") next = parse(step)\n else next = parse(value) + step\n\n next = clamp(next)\n\n update(next)\n },\n [clamp, stepProp, update, value],\n )\n\n const decrement = useCallback(\n (step = stepProp) => {\n let next: number | string\n\n if (value === \"\") next = parse(-step)\n else next = parse(value) - step\n\n next = clamp(next)\n\n update(next)\n },\n [clamp, stepProp, update, value],\n )\n\n const reset = useCallback(() => {\n let next: number | string\n\n if (props.defaultValue == null) next = \"\"\n else\n next = casting(props.defaultValue, stepProp, props.precision) ?? minValue\n\n update(next)\n }, [props.defaultValue, props.precision, stepProp, update, minValue])\n\n const cast = useCallback(\n (value: number | string) => {\n const nextValue = casting(value, stepProp, precision) ?? minValue\n\n update(nextValue)\n },\n [precision, stepProp, update, minValue],\n )\n\n const valueAsNumber = parse(value)\n\n const out = valueAsNumber < minValue || maxValue < valueAsNumber\n const max = valueAsNumber === maxValue\n const min = valueAsNumber === minValue\n\n return {\n cast,\n clamp,\n decrement,\n increment,\n max,\n min,\n out,\n precision,\n reset,\n setValue,\n step: stepProp,\n update,\n value,\n valueAsNumber,\n }\n}\n\nexport type UseCounterReturn = ReturnType<typeof useCounter>\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["useCallbackRef","useState","useCallback"],"sources":["../../../../src/hooks/use-counter/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useState } from \"react\"\nimport {\n clampNumber,\n countDecimal,\n toPrecision,\n useCallbackRef,\n} from \"../../utils\"\n\nconst parse = (value: number | string): number =>\n parseFloat(value.toString().replace(/[^\\w.-]+/g, \"\"))\n\nconst getCountDecimal = (value: number, step: number): number =>\n Math.max(countDecimal(step), countDecimal(value))\n\nconst casting = (\n value: number | string,\n step: number,\n precision?: number,\n): string | undefined => {\n value = parse(value)\n\n return !Number.isNaN(value)\n ? toPrecision(value, precision ?? getCountDecimal(value, step))\n : undefined\n}\n\nexport interface UseCounterProps {\n /**\n * The initial value of the counter.\n * Should be less than `max` and greater than `min`.\n */\n defaultValue?: number | string\n /**\n * This controls the value update behavior in general.\n *\n * - If `true` and you use the stepper or up/down arrow keys,\n * the value will not exceed the `max` or go lower than `min`.\n *\n * - If `false`, the value will be allowed to go out of range.\n *\n * @default true\n */\n keepWithinRange?: boolean\n /**\n * The maximum value of the counter\n *\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number\n /**\n * The minimum value of the counter\n *\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number\n /**\n * The number of decimal points used to round the value.\n */\n precision?: number\n /**\n * The step used to increment or decrement the value.\n *\n * @default 1\n */\n step?: number\n /**\n * The value of the counter.\n * Should be less than `max` and greater than `min`.\n */\n value?: number | string\n /**\n * The callback fired when the value changes.\n */\n onChange?: (valueAsString: string, valueAsNumber: number) => void\n}\n\n/**\n * `useCounter` is a custom hook that returns the current counter value.\n *\n * @see https://yamada-ui.com/docs/hooks/use-counter\n */\nexport const useCounter = ({\n keepWithinRange = true,\n max: maxValue = Number.MAX_SAFE_INTEGER,\n min: minValue = Number.MIN_SAFE_INTEGER,\n step: stepProp = 1,\n ...props\n}: UseCounterProps = {}) => {\n const onChange = useCallbackRef(props.onChange)\n\n const [defaultValue, setValue] = useState<number | string>(() => {\n if (props.defaultValue == null) return \"\"\n\n return casting(props.defaultValue, stepProp, props.precision) ?? \"\"\n })\n\n const isControlled = typeof props.value !== \"undefined\"\n const value = isControlled ? (props.value as number | string) : defaultValue\n\n const countDecimal = getCountDecimal(parse(value), stepProp)\n\n const precision = props.precision ?? countDecimal\n\n const update = useCallback(\n (next: number | string) => {\n if (next === value) return\n\n if (!isControlled) setValue(next.toString())\n\n onChange(next.toString(), parse(next))\n },\n [onChange, isControlled, value],\n )\n\n const clamp = useCallback(\n (value: number) => {\n let nextValue = value\n\n if (keepWithinRange)\n nextValue = clampNumber(nextValue, minValue, maxValue)\n\n return toPrecision(nextValue, precision)\n },\n [precision, keepWithinRange, maxValue, minValue],\n )\n\n const increment = useCallback(\n (step = stepProp) => {\n let next: number | string\n\n if (value === \"\") next = parse(step)\n else next = parse(value) + step\n\n next = clamp(next)\n\n update(next)\n },\n [clamp, stepProp, update, value],\n )\n\n const decrement = useCallback(\n (step = stepProp) => {\n let next: number | string\n\n if (value === \"\") next = parse(-step)\n else next = parse(value) - step\n\n next = clamp(next)\n\n update(next)\n },\n [clamp, stepProp, update, value],\n )\n\n const reset = useCallback(() => {\n let next: number | string\n\n if (props.defaultValue == null) next = \"\"\n else\n next = casting(props.defaultValue, stepProp, props.precision) ?? minValue\n\n update(next)\n }, [props.defaultValue, props.precision, stepProp, update, minValue])\n\n const cast = useCallback(\n (value: number | string) => {\n const nextValue = casting(value, stepProp, precision) ?? minValue\n\n update(nextValue)\n },\n [precision, stepProp, update, minValue],\n )\n\n const valueAsNumber = parse(value)\n\n const out = valueAsNumber < minValue || maxValue < valueAsNumber\n const max = valueAsNumber === maxValue\n const min = valueAsNumber === minValue\n\n return {\n cast,\n clamp,\n decrement,\n increment,\n max,\n min,\n out,\n precision,\n reset,\n setValue,\n step: stepProp,\n update,\n value,\n valueAsNumber,\n }\n}\n\nexport type UseCounterReturn = ReturnType<typeof useCounter>\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("../../_virtual/_rolldown/runtime.cjs");
3
4
  const require_context = require("../../utils/context.cjs");
4
5
  const require_effect = require("../../utils/effect.cjs");
5
6
  const require_ref = require("../../utils/ref.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["createContext","mergeRefs"],"sources":["../../../../src/hooks/use-descendants/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefCallback } from \"react\"\nimport { useRef } from \"react\"\nimport {\n createContext,\n isNumber,\n isTruthyDataAttr,\n mergeRefs,\n runIfFn,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nconst sortNodes = (nodes: Node[]) =>\n nodes.sort((a, b) => {\n const compare = a.compareDocumentPosition(b)\n\n if (\n compare & Node.DOCUMENT_POSITION_FOLLOWING ||\n compare & Node.DOCUMENT_POSITION_CONTAINED_BY\n )\n return -1\n\n if (\n compare & Node.DOCUMENT_POSITION_PRECEDING ||\n compare & Node.DOCUMENT_POSITION_CONTAINS\n )\n return 1\n\n if (\n compare & Node.DOCUMENT_POSITION_DISCONNECTED ||\n compare & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n ) {\n console.warn(\"Cannot sort the given nodes.\")\n return 0\n } else {\n return 0\n }\n })\n\nconst getNextIndex = (current: number, max: number, loop: boolean) => {\n let next = current + 1\n\n if (loop && next >= max) next = 0\n\n return next\n}\n\nconst getPrevIndex = (current: number, max: number, loop: boolean) => {\n let next = current - 1\n\n if (loop && next < 0) next = max\n\n return next\n}\n\nconst isMatch =\n <Y extends HTMLElement = HTMLElement, M = {}>(props?: Partial<M>) =>\n (descendant: Descendant<Y, M>) =>\n Object.entries(props ?? {}).every(\n ([key, value]) => descendant[key as keyof Descendant<Y, M>] === value,\n )\n\nexport type DescendantProps<Y extends HTMLElement = HTMLElement, M = {}> = M & {\n disabled?: ((node: Y) => boolean) | boolean\n}\n\nexport type Descendant<\n Y extends HTMLElement = HTMLElement,\n M = {},\n> = DescendantProps<Y, M> & {\n index: number\n node: Y\n recurred?: boolean\n}\n\nconst descendantManager = <Y extends HTMLElement = HTMLElement, M = {}>() => {\n const descendants = new Map<Y, Descendant<Y, M>>()\n\n const setIndexes = (next: Node[]) => {\n descendants.forEach((descendant) => {\n const index = next.indexOf(descendant.node)\n\n descendant.index = index\n descendant.node.dataset.index = descendant.index.toString()\n })\n }\n\n const set = (node: null | Y, props?: DescendantProps<Y, M>) => {\n if (!node) return\n\n if (descendants.has(node)) {\n const descendant = descendants.get(node)!\n\n descendants.set(node, {\n ...descendant,\n ...props,\n index: descendant.index,\n node: descendant.node,\n })\n } else {\n const keys = Array.from(descendants.keys()).concat(node)\n const sorted = sortNodes(keys)\n\n const descendant = { ...props, index: -1, node } as Descendant<Y, M>\n\n descendants.set(node, descendant)\n\n setIndexes(sorted)\n }\n }\n\n const destroy = () => descendants.clear()\n\n const register = (props?: DescendantProps<Y, M>): RefCallback<Y> => {\n return (node: null | Y) => set(node, props)\n }\n\n const unregister = (node?: null | Y) => {\n if (node == null) return\n\n descendants.delete(node)\n\n const sorted = sortNodes(Array.from(descendants.keys()))\n\n setIndexes(sorted)\n }\n\n const count = (props?: Partial<M>) => values(props).length\n\n const enabledCount = (props?: Partial<M>) => enabledValues(props).length\n\n const active = (\n target?: Descendant<Y, M> | null | Y,\n options?: FocusOptions,\n ) => {\n if (!target) return\n\n if (!(target instanceof Node)) target = target.node\n\n if (isTruthyDataAttr(target.dataset.activedescendant)) return\n\n const descendants = values()\n\n descendants.forEach(({ node }) => {\n delete node.dataset.activedescendant\n })\n\n target.dataset.activedescendant = \"\"\n\n if (options) target.focus(options)\n }\n\n const indexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) return descendants.get(target)?.index ?? -1\n else return descendants.get(target.node)?.index ?? -1\n }\n\n const enabledIndexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node)\n return enabledValues().findIndex(({ node }) => node.isSameNode(target))\n else\n return enabledValues().findIndex(({ node }) =>\n node.isSameNode(target.node),\n )\n }\n\n const values = (props?: Partial<M>) =>\n Array.from(descendants.values())\n .filter(isMatch(props))\n .sort((a, b) => a.index - b.index)\n\n const enabledValues = (props?: Partial<M>) =>\n values(props).filter(({ disabled, node }) => !runIfFn(disabled, node))\n\n const value = (indexOrNode: null | number | Y) => {\n if (!count() || indexOrNode == null) return undefined\n\n return isNumber(indexOrNode)\n ? values()[indexOrNode]\n : descendants.get(indexOrNode)\n }\n\n const enabledValue = (indexOrNode: null | number | Y) => {\n if (!enabledCount() || indexOrNode == null) return undefined\n\n return enabledValues()[\n isNumber(indexOrNode) ? indexOrNode : enabledIndexOf(indexOrNode)\n ]\n }\n\n const firstValue = (props?: Partial<M>) => values(props).at(0)\n\n const enabledFirstValue = (props?: Partial<M>) => enabledValues(props).at(0)\n\n const lastValue = (props?: Partial<M>) => values(props).at(-1)\n\n const enabledLastValue = (props?: Partial<M>) => enabledValues(props).at(-1)\n\n const prevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const prevIndex = getPrevIndex(currentIndex, filtered.length - 1, loop)\n\n return filtered[prevIndex]\n }\n\n const enabledPrevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index--\n\n if (index < 0) {\n if (!loop) return\n\n index = count() - 1\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n const nextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const nextIndex = getNextIndex(currentIndex, filtered.length, loop)\n\n return filtered[nextIndex]\n }\n\n const enabledNextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index++\n\n if (index >= count()) {\n if (!loop) return\n\n index = 0\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n return {\n active,\n count,\n destroy,\n enabledCount,\n enabledFirstValue,\n enabledIndexOf,\n enabledLastValue,\n enabledNextValue,\n enabledPrevValue,\n enabledValue,\n enabledValues,\n firstValue,\n indexOf,\n lastValue,\n nextValue,\n prevValue,\n register,\n unregister,\n value,\n values,\n }\n}\n\nexport type Descendants<Y extends HTMLElement, M = {}> = ReturnType<\n typeof descendantManager<Y, M>\n>\n\nexport type CreateDescendantRegister<Y extends HTMLElement, M = {}> = (\n props?: DescendantProps<Y, M>,\n) => RefCallback<Y>\n\n/**\n * `useDescendants` is a custom hook that manages descendants.\n *\n * @see https://yamada-ui.com/docs/hooks/use-descendants\n */\nexport const createDescendants = <\n Y extends HTMLElement = HTMLElement,\n M = {},\n>() => {\n const [DescendantsContext, useDescendantsContext] = createContext<\n Descendants<Y, M>\n >({\n name: \"DescendantsContext\",\n })\n\n const useDescendantRegister = (descendants?: Descendants<Y, M>) => {\n const ref = useRef<Y>(null)\n\n useSafeLayoutEffect(() => {\n return () => {\n if (ref.current) descendants?.unregister(ref.current)\n }\n }, [])\n\n return (props?: DescendantProps<Y, M>): RefCallback<Y> =>\n mergeRefs(ref, descendants?.register(props))\n }\n\n const useDescendants = () => {\n const descendants = useRef(descendantManager<Y, M>())\n\n useSafeLayoutEffect(() => {\n return () => descendants.current.destroy()\n })\n\n return descendants.current\n }\n\n const useDescendant = (props?: DescendantProps<Y, M>) => {\n const descendants = useDescendantsContext()\n const createRegister = useDescendantRegister(descendants)\n\n return {\n descendants,\n register: createRegister(props),\n }\n }\n\n return {\n DescendantsContext,\n useDescendant,\n useDescendantRegister,\n useDescendants,\n useDescendantsContext,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["createContext","useRef","mergeRefs"],"sources":["../../../../src/hooks/use-descendants/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefCallback } from \"react\"\nimport { useRef } from \"react\"\nimport {\n createContext,\n isNumber,\n isTruthyDataAttr,\n mergeRefs,\n runIfFn,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nconst sortNodes = (nodes: Node[]) =>\n nodes.sort((a, b) => {\n const compare = a.compareDocumentPosition(b)\n\n if (\n compare & Node.DOCUMENT_POSITION_FOLLOWING ||\n compare & Node.DOCUMENT_POSITION_CONTAINED_BY\n )\n return -1\n\n if (\n compare & Node.DOCUMENT_POSITION_PRECEDING ||\n compare & Node.DOCUMENT_POSITION_CONTAINS\n )\n return 1\n\n if (\n compare & Node.DOCUMENT_POSITION_DISCONNECTED ||\n compare & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n ) {\n console.warn(\"Cannot sort the given nodes.\")\n return 0\n } else {\n return 0\n }\n })\n\nconst getNextIndex = (current: number, max: number, loop: boolean) => {\n let next = current + 1\n\n if (loop && next >= max) next = 0\n\n return next\n}\n\nconst getPrevIndex = (current: number, max: number, loop: boolean) => {\n let next = current - 1\n\n if (loop && next < 0) next = max\n\n return next\n}\n\nconst isMatch =\n <Y extends HTMLElement = HTMLElement, M = {}>(props?: Partial<M>) =>\n (descendant: Descendant<Y, M>) =>\n Object.entries(props ?? {}).every(\n ([key, value]) => descendant[key as keyof Descendant<Y, M>] === value,\n )\n\nexport type DescendantProps<Y extends HTMLElement = HTMLElement, M = {}> = M & {\n disabled?: ((node: Y) => boolean) | boolean\n}\n\nexport type Descendant<\n Y extends HTMLElement = HTMLElement,\n M = {},\n> = DescendantProps<Y, M> & {\n index: number\n node: Y\n recurred?: boolean\n}\n\nconst descendantManager = <Y extends HTMLElement = HTMLElement, M = {}>() => {\n const descendants = new Map<Y, Descendant<Y, M>>()\n\n const setIndexes = (next: Node[]) => {\n descendants.forEach((descendant) => {\n const index = next.indexOf(descendant.node)\n\n descendant.index = index\n descendant.node.dataset.index = descendant.index.toString()\n })\n }\n\n const set = (node: null | Y, props?: DescendantProps<Y, M>) => {\n if (!node) return\n\n if (descendants.has(node)) {\n const descendant = descendants.get(node)!\n\n descendants.set(node, {\n ...descendant,\n ...props,\n index: descendant.index,\n node: descendant.node,\n })\n } else {\n const keys = Array.from(descendants.keys()).concat(node)\n const sorted = sortNodes(keys)\n\n const descendant = { ...props, index: -1, node } as Descendant<Y, M>\n\n descendants.set(node, descendant)\n\n setIndexes(sorted)\n }\n }\n\n const destroy = () => descendants.clear()\n\n const register = (props?: DescendantProps<Y, M>): RefCallback<Y> => {\n return (node: null | Y) => set(node, props)\n }\n\n const unregister = (node?: null | Y) => {\n if (node == null) return\n\n descendants.delete(node)\n\n const sorted = sortNodes(Array.from(descendants.keys()))\n\n setIndexes(sorted)\n }\n\n const count = (props?: Partial<M>) => values(props).length\n\n const enabledCount = (props?: Partial<M>) => enabledValues(props).length\n\n const active = (\n target?: Descendant<Y, M> | null | Y,\n options?: FocusOptions,\n ) => {\n if (!target) return\n\n if (!(target instanceof Node)) target = target.node\n\n if (isTruthyDataAttr(target.dataset.activedescendant)) return\n\n const descendants = values()\n\n descendants.forEach(({ node }) => {\n delete node.dataset.activedescendant\n })\n\n target.dataset.activedescendant = \"\"\n\n if (options) target.focus(options)\n }\n\n const indexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) return descendants.get(target)?.index ?? -1\n else return descendants.get(target.node)?.index ?? -1\n }\n\n const enabledIndexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node)\n return enabledValues().findIndex(({ node }) => node.isSameNode(target))\n else\n return enabledValues().findIndex(({ node }) =>\n node.isSameNode(target.node),\n )\n }\n\n const values = (props?: Partial<M>) =>\n Array.from(descendants.values())\n .filter(isMatch(props))\n .sort((a, b) => a.index - b.index)\n\n const enabledValues = (props?: Partial<M>) =>\n values(props).filter(({ disabled, node }) => !runIfFn(disabled, node))\n\n const value = (indexOrNode: null | number | Y) => {\n if (!count() || indexOrNode == null) return undefined\n\n return isNumber(indexOrNode)\n ? values()[indexOrNode]\n : descendants.get(indexOrNode)\n }\n\n const enabledValue = (indexOrNode: null | number | Y) => {\n if (!enabledCount() || indexOrNode == null) return undefined\n\n return enabledValues()[\n isNumber(indexOrNode) ? indexOrNode : enabledIndexOf(indexOrNode)\n ]\n }\n\n const firstValue = (props?: Partial<M>) => values(props).at(0)\n\n const enabledFirstValue = (props?: Partial<M>) => enabledValues(props).at(0)\n\n const lastValue = (props?: Partial<M>) => values(props).at(-1)\n\n const enabledLastValue = (props?: Partial<M>) => enabledValues(props).at(-1)\n\n const prevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const prevIndex = getPrevIndex(currentIndex, filtered.length - 1, loop)\n\n return filtered[prevIndex]\n }\n\n const enabledPrevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index--\n\n if (index < 0) {\n if (!loop) return\n\n index = count() - 1\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n const nextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const nextIndex = getNextIndex(currentIndex, filtered.length, loop)\n\n return filtered[nextIndex]\n }\n\n const enabledNextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index++\n\n if (index >= count()) {\n if (!loop) return\n\n index = 0\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n return {\n active,\n count,\n destroy,\n enabledCount,\n enabledFirstValue,\n enabledIndexOf,\n enabledLastValue,\n enabledNextValue,\n enabledPrevValue,\n enabledValue,\n enabledValues,\n firstValue,\n indexOf,\n lastValue,\n nextValue,\n prevValue,\n register,\n unregister,\n value,\n values,\n }\n}\n\nexport type Descendants<Y extends HTMLElement, M = {}> = ReturnType<\n typeof descendantManager<Y, M>\n>\n\nexport type CreateDescendantRegister<Y extends HTMLElement, M = {}> = (\n props?: DescendantProps<Y, M>,\n) => RefCallback<Y>\n\n/**\n * `useDescendants` is a custom hook that manages descendants.\n *\n * @see https://yamada-ui.com/docs/hooks/use-descendants\n */\nexport const createDescendants = <\n Y extends HTMLElement = HTMLElement,\n M = {},\n>() => {\n const [DescendantsContext, useDescendantsContext] = createContext<\n Descendants<Y, M>\n >({\n name: \"DescendantsContext\",\n })\n\n const useDescendantRegister = (descendants?: Descendants<Y, M>) => {\n const ref = useRef<Y>(null)\n\n useSafeLayoutEffect(() => {\n return () => {\n if (ref.current) descendants?.unregister(ref.current)\n }\n }, [])\n\n return (props?: DescendantProps<Y, M>): RefCallback<Y> =>\n mergeRefs(ref, descendants?.register(props))\n }\n\n const useDescendants = () => {\n const descendants = useRef(descendantManager<Y, M>())\n\n useSafeLayoutEffect(() => {\n return () => descendants.current.destroy()\n })\n\n return descendants.current\n }\n\n const useDescendant = (props?: DescendantProps<Y, M>) => {\n const descendants = useDescendantsContext()\n const createRegister = useDescendantRegister(descendants)\n\n return {\n descendants,\n register: createRegister(props),\n }\n }\n\n return {\n DescendantsContext,\n useDescendant,\n useDescendantRegister,\n useDescendants,\n useDescendantsContext,\n }\n}\n"],"mappings":";;;;;;;;;AAaA,MAAM,aAAa,UACjB,MAAM,MAAM,GAAG,MAAM;CACnB,MAAM,UAAU,EAAE,wBAAwB,CAAC;CAE3C,IACE,UAAU,KAAK,+BACf,UAAU,KAAK,gCAEf,OAAO;CAET,IACE,UAAU,KAAK,+BACf,UAAU,KAAK,4BAEf,OAAO;CAET,IACE,UAAU,KAAK,kCACf,UAAU,KAAK,2CACf;EACA,QAAQ,KAAK,8BAA8B;EAC3C,OAAO;CACT,OACE,OAAO;AAEX,CAAC;AAEH,MAAM,gBAAgB,SAAiB,KAAa,SAAkB;CACpE,IAAI,OAAO,UAAU;CAErB,IAAI,QAAQ,QAAQ,KAAK,OAAO;CAEhC,OAAO;AACT;AAEA,MAAM,gBAAgB,SAAiB,KAAa,SAAkB;CACpE,IAAI,OAAO,UAAU;CAErB,IAAI,QAAQ,OAAO,GAAG,OAAO;CAE7B,OAAO;AACT;AAEA,MAAM,WAC0C,WAC7C,eACC,OAAO,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,OACzB,CAAC,KAAK,WAAW,WAAW,SAAmC,KAClE;AAeJ,MAAM,0BAAuE;CAC3E,MAAM,8BAAc,IAAI,IAAyB;CAEjD,MAAM,cAAc,SAAiB;EACnC,YAAY,SAAS,eAAe;GAGlC,WAAW,QAFG,KAAK,QAAQ,WAAW,IAEf;GACvB,WAAW,KAAK,QAAQ,QAAQ,WAAW,MAAM,SAAS;EAC5D,CAAC;CACH;CAEA,MAAM,OAAO,MAAgB,UAAkC;EAC7D,IAAI,CAAC,MAAM;EAEX,IAAI,YAAY,IAAI,IAAI,GAAG;GACzB,MAAM,aAAa,YAAY,IAAI,IAAI;GAEvC,YAAY,IAAI,MAAM;IACpB,GAAG;IACH,GAAG;IACH,OAAO,WAAW;IAClB,MAAM,WAAW;GACnB,CAAC;EACH,OAAO;GACL,MAAM,OAAO,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI;GACvD,MAAM,SAAS,UAAU,IAAI;GAE7B,MAAM,aAAa;IAAE,GAAG;IAAO,OAAO;IAAI;GAAK;GAE/C,YAAY,IAAI,MAAM,UAAU;GAEhC,WAAW,MAAM;EACnB;CACF;CAEA,MAAM,gBAAgB,YAAY,MAAM;CAExC,MAAM,YAAY,UAAkD;EAClE,QAAQ,SAAmB,IAAI,MAAM,KAAK;CAC5C;CAEA,MAAM,cAAc,SAAoB;EACtC,IAAI,QAAQ,MAAM;EAElB,YAAY,OAAO,IAAI;EAEvB,MAAM,SAAS,UAAU,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC;EAEvD,WAAW,MAAM;CACnB;CAEA,MAAM,SAAS,UAAuB,OAAO,KAAK,CAAC,CAAC;CAEpD,MAAM,gBAAgB,UAAuB,cAAc,KAAK,CAAC,CAAC;CAElE,MAAM,UACJ,QACA,YACG;EACH,IAAI,CAAC,QAAQ;EAEb,IAAI,EAAE,kBAAkB,OAAO,SAAS,OAAO;EAE/C,KAAA,GAAA,oBAAA,cAAI,iBAAA,CAAiB,OAAO,QAAQ,gBAAgB,GAAG;EAIvD,OAAU,CAAC,CAAC,SAAS,EAAE,WAAW;GAChC,OAAO,KAAK,QAAQ;EACtB,CAAC;EAED,OAAO,QAAQ,mBAAmB;EAElC,IAAI,SAAS,OAAO,MAAM,OAAO;CACnC;CAEA,MAAM,WAAW,WAAyC;EACxD,IAAI,CAAC,QAAQ,OAAO;EAEpB,IAAI,kBAAkB,MAAM,OAAO,YAAY,IAAI,MAAM,CAAC,EAAE,SAAS;OAChE,OAAO,YAAY,IAAI,OAAO,IAAI,CAAC,EAAE,SAAS;CACrD;CAEA,MAAM,kBAAkB,WAAyC;EAC/D,IAAI,CAAC,QAAQ,OAAO;EAEpB,IAAI,kBAAkB,MACpB,OAAO,cAAc,CAAC,CAAC,WAAW,EAAE,WAAW,KAAK,WAAW,MAAM,CAAC;OAEtE,OAAO,cAAc,CAAC,CAAC,WAAW,EAAE,WAClC,KAAK,WAAW,OAAO,IAAI,CAC7B;CACJ;CAEA,MAAM,UAAU,UACd,MAAM,KAAK,YAAY,OAAO,CAAC,CAAC,CAC7B,OAAO,QAAQ,KAAK,CAAC,CAAC,CACtB,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;CAErC,MAAM,iBAAiB,UACrB,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,UAAU,WAAW,EAAA,GAAA,oBAAA,cAAC,QAAA,CAAQ,UAAU,IAAI,CAAC;CAEvE,MAAM,SAAS,gBAAmC;EAChD,IAAI,CAAC,MAAM,KAAK,eAAe,MAAM,OAAO,KAAA;EAE5C,QAAA,GAAA,oBAAA,cAAO,SAAA,CAAS,WAAW,IACvB,OAAO,CAAC,CAAC,eACT,YAAY,IAAI,WAAW;CACjC;CAEA,MAAM,gBAAgB,gBAAmC;EACvD,IAAI,CAAC,aAAa,KAAK,eAAe,MAAM,OAAO,KAAA;EAEnD,OAAO,cAAc,CAAC,EAAA,GAAA,oBAAA,cACpB,SAAA,CAAS,WAAW,IAAI,cAAc,eAAe,WAAW;CAEpE;CAEA,MAAM,cAAc,UAAuB,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC;CAE7D,MAAM,qBAAqB,UAAuB,cAAc,KAAK,CAAC,CAAC,GAAG,CAAC;CAE3E,MAAM,aAAa,UAAuB,OAAO,KAAK,CAAC,CAAC,GAAG,EAAE;CAE7D,MAAM,oBAAoB,UAAuB,cAAc,KAAK,CAAC,CAAC,GAAG,EAAE;CAE3E,MAAM,aACJ,aACA,OAAO,MACP,UACG;EACH,MAAM,WAAW,OAAO,KAAK;EAE7B,IAAI,CAAC,SAAS,UAAU,eAAe,MAAM,OAAO,KAAA;EAEpD,MAAM,gBAAA,GAAA,oBAAA,cAAe,SAAA,CAAS,WAAW,IACrC,SAAS,WAAW,MAAM,EAAE,UAAU,WAAW,IACjD,SAAS,WAAW,MAClB,EAAE,KAAK,WACL,uBAAuB,OAAO,cAAc,YAAY,IAC1D,CACF;EAEJ,IAAI,iBAAiB,IAAI,OAAO,KAAA;EAIhC,OAAO,SAFW,aAAa,cAAc,SAAS,SAAS,GAAG,IAE1C;CAC1B;CAEA,MAAM,oBACJ,aACA,OAAO,MACP,UACG;EACH,IAAI,CAAC,aAAa,KAAK,GAAG,OAAO,KAAA;EAEjC,IAAI,SAAA,GAAA,oBAAA,cAAQ,SAAA,CAAS,WAAW,IAAI,cAAc,QAAQ,WAAW;EACrE,IAAI,eAAe;EACnB,IAAI,WAAW;EAEf,OAAO,gBAAgB,MAAM;GAC3B;GAEA,IAAI,QAAQ,GAAG;IACb,IAAI,CAAC,MAAM;IAEX,QAAQ,MAAM,IAAI;IAClB,WAAW;GACb;GAEA,MAAM,aAAa,MAAM,KAAK;GAE9B,eACE,cACA,EAAA,GAAA,oBAAA,cAAC,QAAA,CAAQ,WAAW,UAAU,WAAW,IAAI,KAC7C,QAAc,KAAK,CAAC,CAAC,UAAU,IAC3B,aACA;EACR;EAEA,IAAI,UAAU,aAAa,WAAW;EAEtC,OAAO;CACT;CAEA,MAAM,aACJ,aACA,OAAO,MACP,UACG;EACH,MAAM,WAAW,OAAO,KAAK;EAE7B,IAAI,CAAC,SAAS,UAAU,eAAe,MAAM,OAAO,KAAA;EAEpD,MAAM,gBAAA,GAAA,oBAAA,cAAe,SAAA,CAAS,WAAW,IACrC,SAAS,WAAW,MAAM,EAAE,UAAU,WAAW,IACjD,SAAS,WAAW,MAClB,EAAE,KAAK,WACL,uBAAuB,OAAO,cAAc,YAAY,IAC1D,CACF;EAEJ,IAAI,iBAAiB,IAAI,OAAO,KAAA;EAIhC,OAAO,SAFW,aAAa,cAAc,SAAS,QAAQ,IAEtC;CAC1B;CAEA,MAAM,oBACJ,aACA,OAAO,MACP,UACG;EACH,IAAI,CAAC,aAAa,KAAK,GAAG,OAAO,KAAA;EAEjC,IAAI,SAAA,GAAA,oBAAA,cAAQ,SAAA,CAAS,WAAW,IAAI,cAAc,QAAQ,WAAW;EACrE,IAAI,eAAe;EACnB,IAAI,WAAW;EAEf,OAAO,gBAAgB,MAAM;GAC3B;GAEA,IAAI,SAAS,MAAM,GAAG;IACpB,IAAI,CAAC,MAAM;IAEX,QAAQ;IACR,WAAW;GACb;GAEA,MAAM,aAAa,MAAM,KAAK;GAE9B,eACE,cACA,EAAA,GAAA,oBAAA,cAAC,QAAA,CAAQ,WAAW,UAAU,WAAW,IAAI,KAC7C,QAAc,KAAK,CAAC,CAAC,UAAU,IAC3B,aACA;EACR;EAEA,IAAI,UAAU,aAAa,WAAW;EAEtC,OAAO;CACT;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF;;;;;;AAeA,MAAa,0BAGN;CACL,MAAM,CAAC,oBAAoB,yBAAyBA,gBAAAA,cAElD,EACA,MAAM,qBACR,CAAC;CAED,MAAM,yBAAyB,gBAAoC;EACjE,MAAM,OAAA,GAAMC,MAAAA,OAAAA,CAAU,IAAI;EAE1B,eAAA,0BAA0B;GACxB,aAAa;IACX,IAAI,IAAI,SAAS,aAAa,WAAW,IAAI,OAAO;GACtD;EACF,GAAG,CAAC,CAAC;EAEL,QAAQ,UACNC,YAAAA,UAAU,KAAK,aAAa,SAAS,KAAK,CAAC;CAC/C;CAEA,MAAM,uBAAuB;EAC3B,MAAM,eAAA,GAAcD,MAAAA,OAAAA,CAAO,kBAAwB,CAAC;EAEpD,eAAA,0BAA0B;GACxB,aAAa,YAAY,QAAQ,QAAQ;EAC3C,CAAC;EAED,OAAO,YAAY;CACrB;CAEA,MAAM,iBAAiB,UAAkC;EACvD,MAAM,cAAc,sBAAsB;EAG1C,OAAO;GACL;GACA,UAJqB,sBAAsB,WAIpB,CAAC,CAAC,KAAK;EAChC;CACF;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ require("../../_virtual/_rolldown/runtime.cjs");
2
3
  const require_ref = require("../../utils/ref.cjs");
3
4
  let react = require("react");
4
5
  //#region src/hooks/use-disclosure/use-disclosure.ts
@@ -1 +1 @@
1
- {"version":3,"file":"use-disclosure.cjs","names":["useCallbackRef"],"sources":["../../../../src/hooks/use-disclosure/use-disclosure.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useRef, useState } from \"react\"\nimport { useCallbackRef } from \"../../utils\"\n\nexport type DisclosureCallback<Y, M> = [Y] extends [never]\n ? () => M\n : undefined extends Y\n ? (value?: Y) => M\n : (value: Y) => M\n\nexport interface UseDisclosureProps<\n Y = never,\n M = never,\n D = Promise<void> | void,\n H = Promise<void> | void,\n> {\n /**\n * If `true`, the element will be initially opened.\n */\n defaultOpen?: boolean\n /**\n * If `true`, the element will be opened.\n */\n open?: boolean\n /**\n * The timing of the open and close.\n *\n * @default 'after'\n */\n timing?: \"after\" | \"before\"\n /**\n * Callback invoked to close the element.\n */\n onClose?: DisclosureCallback<M, H>\n /**\n * Callback invoked to open the element.\n */\n onOpen?: DisclosureCallback<Y, D>\n}\n\n/**\n * `useDisclosure` is a custom hook that helps handle common open/close or toggle scenarios.\n * It can be used to control components such as `Modal`, `Dialog`, `Drawer`, etc.\n *\n * @see https://yamada-ui.com/docs/hooks/use-disclosure\n */\nexport const useDisclosure = <\n Y = never,\n M = never,\n D = Promise<void> | void,\n H = Promise<void> | void,\n>({\n defaultOpen = false,\n open: controlledOpen,\n timing,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n}: UseDisclosureProps<Y, M, D, H> = {}) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState<boolean>(defaultOpen)\n\n const timingRef = useRef(timing ?? \"after\")\n const handleOpen = useCallbackRef(onOpenProp)\n const handleClose = useCallbackRef(onCloseProp)\n\n const controlled = controlledOpen !== undefined\n const open = controlledOpen !== undefined ? controlledOpen : uncontrolledOpen\n\n const onOpen = useCallback(\n async (value: Y) => {\n if (timingRef.current === \"before\") await handleOpen(value)\n\n if (!controlled) setUncontrolledOpen(true)\n\n if (timingRef.current === \"after\") await handleOpen(value)\n },\n [controlled, handleOpen, timingRef],\n ) as DisclosureCallback<Y, D>\n\n const onClose = useCallback(\n async (value: M) => {\n if (timingRef.current === \"before\") await handleClose(value)\n\n if (!controlled) setUncontrolledOpen(false)\n\n if (timingRef.current === \"after\") await handleClose(value)\n },\n [controlled, handleClose, timingRef],\n ) as DisclosureCallback<M, H>\n\n const onToggle = useCallback(\n async (value: M | Y) =>\n !open ? await onOpen(value as Y) : await onClose(value as M),\n [open, onOpen, onClose],\n ) as DisclosureCallback<M, H> | DisclosureCallback<Y, D>\n\n return {\n open,\n onClose,\n onOpen,\n onToggle,\n }\n}\n\nexport type UseDisclosureReturn<\n Y = never,\n M = never,\n D = Promise<void> | void,\n H = Promise<void> | void,\n> = ReturnType<typeof useDisclosure<Y, M, D, H>>\n"],"mappings":";;;;;;;;;;AA+CA,MAAa,iBAKX,EACA,cAAc,OACd,MAAM,gBACN,QACA,SAAS,aACT,QAAQ,eAC0B,CAAC,MAAM;CACzC,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,SAAA,CAAyC,WAAW;CAE7E,MAAM,aAAA,GAAA,MAAA,OAAA,CAAmB,UAAU,OAAO;CAC1C,MAAM,aAAaA,YAAAA,eAAe,UAAU;CAC5C,MAAM,cAAcA,YAAAA,eAAe,WAAW;CAE9C,MAAM,aAAa,mBAAmB,KAAA;CACtC,MAAM,OAAO,mBAAmB,KAAA,IAAY,iBAAiB;CAE7D,MAAM,UAAA,GAAA,MAAA,YAAA,CACJ,OAAO,UAAa;EAClB,IAAI,UAAU,YAAY,UAAU,MAAM,WAAW,KAAK;EAE1D,IAAI,CAAC,YAAY,oBAAoB,IAAI;EAEzC,IAAI,UAAU,YAAY,SAAS,MAAM,WAAW,KAAK;CAC3D,GACA;EAAC;EAAY;EAAY;CAAS,CACpC;CAEA,MAAM,WAAA,GAAA,MAAA,YAAA,CACJ,OAAO,UAAa;EAClB,IAAI,UAAU,YAAY,UAAU,MAAM,YAAY,KAAK;EAE3D,IAAI,CAAC,YAAY,oBAAoB,KAAK;EAE1C,IAAI,UAAU,YAAY,SAAS,MAAM,YAAY,KAAK;CAC5D,GACA;EAAC;EAAY;EAAa;CAAS,CACrC;CAQA,OAAO;EACL;EACA;EACA;EACA,WAAA,GAAA,MAAA,YAAA,CATA,OAAO,UACL,CAAC,OAAO,MAAM,OAAO,KAAU,IAAI,MAAM,QAAQ,KAAU,GAC7D;GAAC;GAAM;GAAQ;EAAO,CAOf;CACT;AACF"}
1
+ {"version":3,"file":"use-disclosure.cjs","names":["useState","useRef","useCallbackRef","useCallback"],"sources":["../../../../src/hooks/use-disclosure/use-disclosure.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useRef, useState } from \"react\"\nimport { useCallbackRef } from \"../../utils\"\n\nexport type DisclosureCallback<Y, M> = [Y] extends [never]\n ? () => M\n : undefined extends Y\n ? (value?: Y) => M\n : (value: Y) => M\n\nexport interface UseDisclosureProps<\n Y = never,\n M = never,\n D = Promise<void> | void,\n H = Promise<void> | void,\n> {\n /**\n * If `true`, the element will be initially opened.\n */\n defaultOpen?: boolean\n /**\n * If `true`, the element will be opened.\n */\n open?: boolean\n /**\n * The timing of the open and close.\n *\n * @default 'after'\n */\n timing?: \"after\" | \"before\"\n /**\n * Callback invoked to close the element.\n */\n onClose?: DisclosureCallback<M, H>\n /**\n * Callback invoked to open the element.\n */\n onOpen?: DisclosureCallback<Y, D>\n}\n\n/**\n * `useDisclosure` is a custom hook that helps handle common open/close or toggle scenarios.\n * It can be used to control components such as `Modal`, `Dialog`, `Drawer`, etc.\n *\n * @see https://yamada-ui.com/docs/hooks/use-disclosure\n */\nexport const useDisclosure = <\n Y = never,\n M = never,\n D = Promise<void> | void,\n H = Promise<void> | void,\n>({\n defaultOpen = false,\n open: controlledOpen,\n timing,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n}: UseDisclosureProps<Y, M, D, H> = {}) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState<boolean>(defaultOpen)\n\n const timingRef = useRef(timing ?? \"after\")\n const handleOpen = useCallbackRef(onOpenProp)\n const handleClose = useCallbackRef(onCloseProp)\n\n const controlled = controlledOpen !== undefined\n const open = controlledOpen !== undefined ? controlledOpen : uncontrolledOpen\n\n const onOpen = useCallback(\n async (value: Y) => {\n if (timingRef.current === \"before\") await handleOpen(value)\n\n if (!controlled) setUncontrolledOpen(true)\n\n if (timingRef.current === \"after\") await handleOpen(value)\n },\n [controlled, handleOpen, timingRef],\n ) as DisclosureCallback<Y, D>\n\n const onClose = useCallback(\n async (value: M) => {\n if (timingRef.current === \"before\") await handleClose(value)\n\n if (!controlled) setUncontrolledOpen(false)\n\n if (timingRef.current === \"after\") await handleClose(value)\n },\n [controlled, handleClose, timingRef],\n ) as DisclosureCallback<M, H>\n\n const onToggle = useCallback(\n async (value: M | Y) =>\n !open ? await onOpen(value as Y) : await onClose(value as M),\n [open, onOpen, onClose],\n ) as DisclosureCallback<M, H> | DisclosureCallback<Y, D>\n\n return {\n open,\n onClose,\n onOpen,\n onToggle,\n }\n}\n\nexport type UseDisclosureReturn<\n Y = never,\n M = never,\n D = Promise<void> | void,\n H = Promise<void> | void,\n> = ReturnType<typeof useDisclosure<Y, M, D, H>>\n"],"mappings":";;;;;;;;;;;AA+CA,MAAa,iBAKX,EACA,cAAc,OACd,MAAM,gBACN,QACA,SAAS,aACT,QAAQ,eAC0B,CAAC,MAAM;CACzC,MAAM,CAAC,kBAAkB,wBAAA,GAAuBA,MAAAA,SAAAA,CAAkB,WAAW;CAE7E,MAAM,aAAA,GAAYC,MAAAA,OAAAA,CAAO,UAAU,OAAO;CAC1C,MAAM,aAAaC,YAAAA,eAAe,UAAU;CAC5C,MAAM,cAAcA,YAAAA,eAAe,WAAW;CAE9C,MAAM,aAAa,mBAAmB,KAAA;CACtC,MAAM,OAAO,mBAAmB,KAAA,IAAY,iBAAiB;CAE7D,MAAM,UAAA,GAASC,MAAAA,YAAAA,CACb,OAAO,UAAa;EAClB,IAAI,UAAU,YAAY,UAAU,MAAM,WAAW,KAAK;EAE1D,IAAI,CAAC,YAAY,oBAAoB,IAAI;EAEzC,IAAI,UAAU,YAAY,SAAS,MAAM,WAAW,KAAK;CAC3D,GACA;EAAC;EAAY;EAAY;CAAS,CACpC;CAEA,MAAM,WAAA,GAAUA,MAAAA,YAAAA,CACd,OAAO,UAAa;EAClB,IAAI,UAAU,YAAY,UAAU,MAAM,YAAY,KAAK;EAE3D,IAAI,CAAC,YAAY,oBAAoB,KAAK;EAE1C,IAAI,UAAU,YAAY,SAAS,MAAM,YAAY,KAAK;CAC5D,GACA;EAAC;EAAY;EAAa;CAAS,CACrC;CAQA,OAAO;EACL;EACA;EACA;EACA,WAAA,GAVeA,MAAAA,YAAAA,CACf,OAAO,UACL,CAAC,OAAO,MAAM,OAAO,KAAU,IAAI,MAAM,QAAQ,KAAU,GAC7D;GAAC;GAAM;GAAQ;EAAO,CAOf;CACT;AACF"}
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ require("../../_virtual/_rolldown/runtime.cjs");
2
3
  const require_utils_index = require("../../utils/index.cjs");
3
4
  const require_use_disclosure = require("./use-disclosure.cjs");
4
5
  let react = require("react");