@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
@@ -92,57 +92,58 @@ const Table = withContext(({ className, colorScheme, size, variant, columnFilter
92
92
  value: columnFiltersProp,
93
93
  onChange: onColumnFiltersChangeProp
94
94
  });
95
+ const columns = useMemo(() => {
96
+ if (!enableRowSelection || !withCheckbox) return columnsProp;
97
+ const clonedColumns = [...columnsProp];
98
+ const header = ({ header, table }) => {
99
+ return /* @__PURE__ */ jsx(Checkbox, { ...mergeProps({
100
+ checked: table.getIsAllRowsSelected(),
101
+ indeterminate: table.getIsSomeRowsSelected(),
102
+ indicatorProps: { outline: "none" },
103
+ inputProps: {
104
+ "aria-label": t("Select all rows"),
105
+ "data-focusable": "",
106
+ tabIndex: -1
107
+ },
108
+ onChange: table.getToggleAllRowsSelectedHandler()
109
+ }, checkboxProps ?? {}, (0, utils_exports.runIfFn)(headerCheckboxProps, header) ?? {})() });
110
+ };
111
+ const cell = ({ row }) => {
112
+ return /* @__PURE__ */ jsx(Checkbox, { ...mergeProps({
113
+ checked: row.getIsSelected(),
114
+ disabled: !row.getCanSelect(),
115
+ indeterminate: row.getIsSomeSelected(),
116
+ indicatorProps: { outline: "none" },
117
+ inputProps: {
118
+ "aria-label": t("Select row"),
119
+ "data-focusable": "",
120
+ tabIndex: -1
121
+ },
122
+ onChange: row.getToggleSelectedHandler()
123
+ }, checkboxProps ?? {}, (0, utils_exports.runIfFn)(rowCheckboxProps, row) ?? {})() });
124
+ };
125
+ clonedColumns.unshift({
126
+ id: "select",
127
+ cell,
128
+ header,
129
+ ...withFooterCheckbox ? { footer: header } : { footerProps: { "aria-hidden": "true" } },
130
+ cellProps: { verticalAlign: "middle" },
131
+ headerProps: { w: "calc({spaces.4} + {space-x} * 2)" }
132
+ });
133
+ return clonedColumns;
134
+ }, [
135
+ checkboxProps,
136
+ columnsProp,
137
+ enableRowSelection,
138
+ headerCheckboxProps,
139
+ rowCheckboxProps,
140
+ t,
141
+ withCheckbox,
142
+ withFooterCheckbox
143
+ ]);
95
144
  const table = useReactTable({
96
145
  columnResizeMode,
97
- columns: useMemo(() => {
98
- if (!enableRowSelection || !withCheckbox) return columnsProp;
99
- const clonedColumns = [...columnsProp];
100
- const header = ({ header, table }) => {
101
- return /* @__PURE__ */ jsx(Checkbox, { ...mergeProps({
102
- checked: table.getIsAllRowsSelected(),
103
- indeterminate: table.getIsSomeRowsSelected(),
104
- indicatorProps: { outline: "none" },
105
- inputProps: {
106
- "aria-label": t("Select all rows"),
107
- "data-focusable": "",
108
- tabIndex: -1
109
- },
110
- onChange: table.getToggleAllRowsSelectedHandler()
111
- }, checkboxProps ?? {}, (0, utils_exports.runIfFn)(headerCheckboxProps, header) ?? {})() });
112
- };
113
- const cell = ({ row }) => {
114
- return /* @__PURE__ */ jsx(Checkbox, { ...mergeProps({
115
- checked: row.getIsSelected(),
116
- disabled: !row.getCanSelect(),
117
- indeterminate: row.getIsSomeSelected(),
118
- indicatorProps: { outline: "none" },
119
- inputProps: {
120
- "aria-label": t("Select row"),
121
- "data-focusable": "",
122
- tabIndex: -1
123
- },
124
- onChange: row.getToggleSelectedHandler()
125
- }, checkboxProps ?? {}, (0, utils_exports.runIfFn)(rowCheckboxProps, row) ?? {})() });
126
- };
127
- clonedColumns.unshift({
128
- id: "select",
129
- cell,
130
- header,
131
- ...withFooterCheckbox ? { footer: header } : { footerProps: { "aria-hidden": "true" } },
132
- cellProps: { verticalAlign: "middle" },
133
- headerProps: { w: "calc({spaces.4} + {space-x} * 2)" }
134
- });
135
- return clonedColumns;
136
- }, [
137
- checkboxProps,
138
- columnsProp,
139
- enableRowSelection,
140
- headerCheckboxProps,
141
- rowCheckboxProps,
142
- t,
143
- withCheckbox,
144
- withFooterCheckbox
145
- ]),
146
+ columns,
146
147
  data,
147
148
  enableColumnResizing,
148
149
  enableRowSelection,
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","names":["NativeTable.Root","NativeTable.Thead","NativeTable.Tr","NativeTable.Th","NativeTable.Tbody","NativeTable.Td","NativeTable.Tfoot"],"sources":["../../../../src/components/table/table.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n AccessorFn,\n Cell,\n CellContext,\n ColumnDef,\n ColumnDefTemplate,\n ColumnFiltersColumnDef,\n ColumnFiltersState,\n ColumnMeta,\n ColumnPinningColumnDef,\n ColumnSizingColumnDef,\n GlobalFilterColumnDef,\n GroupingColumnDef,\n Header,\n HeaderContext,\n HeaderGroup,\n OnChangeFn,\n SortingState as OriginalSortingState,\n PaginationState,\n Table as ReactTable,\n Row,\n RowData,\n RowSelectionState,\n SortDirection,\n SortingColumnDef,\n TableOptions,\n VisibilityColumnDef,\n} from \"@tanstack/react-table\"\nimport type { FC, FocusEvent, KeyboardEvent, ReactElement } from \"react\"\nimport type { CSSProps, GenericsComponent, HTMLStyledProps } from \"../../core\"\nimport type { ReactNodeOrFunction, TransformProps } from \"../../utils\"\nimport type { CheckboxProps } from \"../checkbox\"\nimport {\n createColumnHelper,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport { useMemo, useRef } from \"react\"\nimport { createComponent, focusRingStyle, mergeProps, styled } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n dataAttr,\n isFunction,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\nimport { Checkbox } from \"../checkbox\"\nimport { ChevronsUpDownIcon, ChevronUpIcon } from \"../icon\"\nimport { NativeTable } from \"../native-table\"\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnDefExtensions<TData extends RowData, TValue = unknown>\n extends\n VisibilityColumnDef,\n ColumnPinningColumnDef,\n ColumnFiltersColumnDef<TData>,\n GlobalFilterColumnDef,\n SortingColumnDef<TData>,\n GroupingColumnDef<TData, TValue>,\n ColumnSizingColumnDef {}\n\n interface ColumnDefBase<TData extends RowData, TValue = unknown>\n extends\n ColumnDefExtensions<TData, TValue>,\n Pick<CSSProps, \"lineClamp\" | \"truncated\">,\n Pick<NativeTable.TdProps, \"numeric\"> {\n cell?: ColumnDefTemplate<CellContext<TData, TValue>>\n footer?: ColumnDefTemplate<HeaderContext<TData, TValue>>\n getUniqueValues?: AccessorFn<TData, unknown[]>\n meta?: ColumnMeta<TData, TValue>\n cellProps?: NativeTable.TdProps\n footerProps?: NativeTable.ThProps\n headerProps?: NativeTable.ThProps\n }\n}\n\nexport { createColumnHelper }\nexport type {\n ColumnDef,\n ColumnFiltersState,\n PaginationState,\n RowSelectionState,\n SortDirection,\n}\n\nfunction getMergeHeaderGroups(\n headerGroups: HeaderGroup<any>[],\n): HeaderGroup<any>[] {\n if (headerGroups.length <= 1) return headerGroups\n\n const columnsIds = new Set()\n\n return headerGroups.map((headerGroup, depth, { length: fullDepth }) => {\n return {\n ...headerGroup,\n headers: headerGroup.headers\n .filter((header) => !columnsIds.has(header.column.id))\n .map((header) => {\n columnsIds.add(header.column.id)\n\n return header.isPlaceholder\n ? { ...header, isPlaceholder: false, rowSpan: fullDepth - depth }\n : { ...header, rowSpan: 1 }\n }),\n }\n })\n}\n\nfunction getMergeFooterGroups(\n headerGroups: HeaderGroup<any>[],\n): HeaderGroup<any>[] {\n if (headerGroups.length <= 1) return headerGroups\n\n return headerGroups.map((headerGroup, depth) => {\n const nextHeaderGroups = headerGroups.slice(depth + 1)\n\n return {\n ...headerGroup,\n headers: headerGroup.headers\n .filter((header) => !header.isPlaceholder)\n .map((header) => {\n if (nextHeaderGroups.length === 0) return header\n\n const rowSpan = nextHeaderGroups.reduce((acc, nextHeaderGroup) => {\n const hasNextHeader = nextHeaderGroup.headers.some(\n (nextHeader) => nextHeader.column.id === header.column.id,\n )\n\n return acc + (hasNextHeader ? 1 : 0)\n }, 1)\n\n return { ...header, rowSpan }\n }),\n }\n })\n}\n\nexport interface ColumnSort<Y extends RowData> {\n desc: boolean\n id: keyof Y\n}\nexport type SortingState<Y extends RowData> = ColumnSort<Y>[]\n\ninterface ComponentContext extends Pick<\n TableProps<any>,\n | \"columnResizeMode\"\n | \"resizableTriggerProps\"\n | \"sortingIcon\"\n | \"sortingIconProps\"\n> {\n table: ReactTable<any>\n}\n\ninterface OmittedTableOptions<Y extends RowData> extends Omit<\n TableOptions<Y>,\n | \"getCoreRowModel\"\n | \"onColumnFiltersChange\"\n | \"onPaginationChange\"\n | \"onSortingChange\"\n> {}\n\ninterface PickedNativeTableProps extends Pick<\n NativeTable.RootProps,\n | \"className\"\n | \"highlightOnHover\"\n | \"highlightOnSelected\"\n | \"layout\"\n | \"scrollAreaProps\"\n | \"size\"\n | \"stickyFooter\"\n | \"stickyHeader\"\n | \"striped\"\n | \"variant\"\n | \"withBorder\"\n | \"withColumnBorders\"\n | \"withScrollArea\"\n> {}\n\nexport interface TableProps<Y extends RowData>\n extends\n OmittedTableOptions<Y>,\n PickedNativeTableProps,\n Pick<CSSProps, \"colorScheme\" | \"lineClamp\" | \"truncated\"> {\n /**\n * The column filters state of the table.\n */\n columnFilters?: ColumnFiltersState\n /**\n * The default column filters state of the table.\n */\n defaultColumnFilters?: ColumnFiltersState\n /**\n * The default pagination state of the table.\n */\n defaultPagination?: PaginationState\n /**\n * The default row selection state of the table.\n */\n defaultRowSelection?: RowSelectionState\n /**\n * The default sorting state of the table.\n */\n defaultSorting?: SortingState<Y>\n /**\n * If `true`, the table width will be automatically resized to the content.\n *\n * @default false\n */\n enableAutoResizeTableWidth?: boolean\n /**\n * If `true`, the keyboard navigation will be enabled.\n *\n * @default true\n */\n enableKeyboardNavigation?: boolean\n /**\n * If `true`, the pagination will be enabled.\n *\n * @default false\n */\n enablePagination?: boolean\n /**\n * The footer of the table.\n */\n footer?: ReactNodeOrFunction<ReactTable<Y>>\n /**\n * The header of the table.\n */\n header?: ReactNodeOrFunction<ReactTable<Y>>\n /**\n * The initial focusable cell of the table.\n *\n * @default {rowIndex: 0, colIndex: 0}\n */\n initialFocusableCell?: { colIndex: number; rowIndex: number }\n /**\n * The pagination state of the table.\n */\n pagination?: PaginationState\n /**\n * The row selection state of the table.\n */\n rowSelection?: RowSelectionState\n /**\n * If `true`, the row will be selected when the row is clicked.\n *\n * @default false\n */\n selectOnClickRow?: boolean\n /**\n * The sorting state of the table.\n */\n sorting?: SortingState<Y>\n /**\n * The sorting icon of the table.\n */\n sortingIcon?: ReactNodeOrFunction<false | SortDirection>\n /**\n * If `true`, the table will have a checkbox column.\n *\n * @default true\n */\n withCheckbox?: boolean\n /**\n * If `true`, the table will have a checkbox in the footer.\n *\n * @default false\n */\n withFooterCheckbox?: boolean\n /**\n * If `true`, the table will have footer groups.\n *\n * @default false\n */\n withFooterGroups?: boolean\n /**\n * The props for the table cell.\n */\n cellProps?: TransformProps<NativeTable.TdProps, Cell<Y, unknown>>\n /**\n * The props for the checkbox.\n */\n checkboxProps?: CheckboxProps\n /**\n * The props for the table footer group.\n */\n footerGroupProps?: TransformProps<NativeTable.TrProps, HeaderGroup<Y>>\n /**\n * The props for the table footer.\n */\n footerProps?: TransformProps<NativeTable.ThProps, Header<Y, unknown>>\n /**\n * The props for the table header checkbox.\n */\n headerCheckboxProps?: TransformProps<CheckboxProps, Header<Y, unknown>>\n /**\n * The props for the table header group.\n */\n headerGroupProps?: TransformProps<NativeTable.TrProps, HeaderGroup<Y>>\n /**\n * The props for the table header.\n */\n headerProps?: TransformProps<NativeTable.ThProps, Header<Y, unknown>>\n /**\n * The props for the resizable trigger.\n */\n resizableTriggerProps?: TransformProps<\n Omit<ResizableTriggerProps, \"resizing\">,\n Header<Y, unknown>\n >\n /**\n * The props for the table row checkbox.\n */\n rowCheckboxProps?: TransformProps<CheckboxProps, Row<Y>>\n /**\n * The props for the table row.\n */\n rowProps?: TransformProps<NativeTable.TrProps, Row<Y>>\n /**\n * The props for the sorting icon.\n */\n sortingIconProps?: TransformProps<\n Omit<SortingIconProps, \"sorted\">,\n Header<Y, unknown>\n >\n /**\n * The props for the table.\n */\n tableProps?: NativeTable.RootProps\n /**\n * The props for the table tbody.\n */\n tbodyProps?: NativeTable.TbodyProps\n /**\n * The props for the table tfoot.\n */\n tfootProps?: NativeTable.TfootProps\n /**\n * The props for the table thead.\n */\n theadProps?: NativeTable.TheadProps\n /**\n * The callback invoked when the column filters state changes.\n */\n onColumnFiltersChange?: (columnFilters: ColumnFiltersState) => void\n /**\n * The callback invoked when the pagination state changes.\n */\n onPaginationChange?: (pagination: PaginationState) => void\n /**\n * The callback invoked when the row is clicked.\n */\n onRowClick?: (row: Row<Y>) => void\n /**\n * The callback invoked when the row is double clicked.\n */\n onRowDoubleClick?: (row: Row<Y>) => void\n /**\n * The callback invoked when the sorting state changes.\n */\n onSortingChange?: (sorting: SortingState<Y>) => void\n}\n\nconst {\n ComponentContext,\n PropsContext: TablePropsContext,\n useComponentContext,\n usePropsContext: useTablePropsContext,\n withContext,\n} = createComponent<TableProps<any>, any, ComponentContext>(\"table\")\n\nexport { TablePropsContext, useTablePropsContext }\n\n/**\n * `Table` is a table component equipped with column sorting, row selection, and click event features.\n *\n * @see https://yamada-ui.com/docs/components/table\n */\nexport const Table = withContext(\n <Y extends RowData>({\n className,\n colorScheme,\n size,\n variant,\n columnFilters: columnFiltersProp,\n columnResizeMode = \"onChange\",\n columns: columnsProp,\n data,\n defaultColumnFilters,\n defaultPagination = { pageIndex: 0, pageSize: 20 },\n defaultRowSelection = {},\n defaultSorting,\n enableAutoResizeTableWidth = false,\n enableColumnResizing = false,\n enableKeyboardNavigation = true,\n enablePagination = false,\n enableRowSelection = false,\n footer,\n header,\n highlightOnHover = !!enableRowSelection,\n highlightOnSelected = !!enableRowSelection,\n initialFocusableCell = { colIndex: 0, rowIndex: 0 },\n layout,\n lineClamp,\n manualPagination,\n pagination: paginationProp,\n rowCount: totalRowCount,\n rowSelection: rowSelectionProp,\n selectOnClickRow = false,\n sortDescFirst = false,\n sorting: sortingProp,\n sortingIcon,\n state,\n stickyFooter,\n stickyHeader,\n striped,\n truncated,\n withBorder,\n withCheckbox = true,\n withColumnBorders,\n withFooterCheckbox = false,\n withFooterGroups = false,\n withScrollArea,\n cellProps,\n checkboxProps,\n footerGroupProps,\n footerProps,\n headerCheckboxProps,\n headerGroupProps,\n headerProps,\n resizableTriggerProps,\n rowCheckboxProps,\n rowProps,\n scrollAreaProps,\n sortingIconProps,\n tableProps,\n tbodyProps,\n tfootProps,\n theadProps,\n onColumnFiltersChange: onColumnFiltersChangeProp,\n onPaginationChange: onPaginationChangeProp,\n onRowClick,\n onRowDoubleClick,\n onRowSelectionChange: onRowSelectionChangeProp,\n onSortingChange: onSortingChangeProp,\n ...rest\n }: TableProps<Y>) => {\n const { t } = useI18n(\"table\")\n const initialFocus = useRef<boolean>(false)\n const ref = useRef<HTMLTableElement>(null)\n const focusedCell = useRef<null | { colIndex: number; rowIndex: number }>(\n null,\n )\n const [rowSelection, onRowSelectionChange] = useControllableState({\n defaultValue: defaultRowSelection,\n value: rowSelectionProp,\n onChange: onRowSelectionChangeProp,\n })\n const [sorting, onSortingChange] = useControllableState({\n defaultValue: defaultSorting,\n value: sortingProp,\n onChange: onSortingChangeProp,\n })\n const [pagination, onPaginationChange] = useControllableState({\n defaultValue: defaultPagination,\n value: paginationProp,\n onChange: onPaginationChangeProp,\n })\n const [columnFilters, onColumnFiltersChange] = useControllableState({\n defaultValue: defaultColumnFilters,\n value: columnFiltersProp,\n onChange: onColumnFiltersChangeProp,\n })\n const columns = useMemo(() => {\n if (!enableRowSelection || !withCheckbox) return columnsProp\n\n const clonedColumns = [...columnsProp]\n\n const header = ({ header, table }: HeaderContext<Y, any>) => {\n return (\n <Checkbox\n {...mergeProps(\n {\n checked: table.getIsAllRowsSelected(),\n indeterminate: table.getIsSomeRowsSelected(),\n indicatorProps: { outline: \"none\" },\n inputProps: {\n \"aria-label\": t(\"Select all rows\"),\n \"data-focusable\": \"\",\n tabIndex: -1,\n },\n onChange: table.getToggleAllRowsSelectedHandler(),\n },\n checkboxProps ?? {},\n runIfFn(headerCheckboxProps, header) ?? {},\n )()}\n />\n )\n }\n\n const cell = ({ row }: CellContext<Y, any>) => {\n return (\n <Checkbox\n {...mergeProps(\n {\n checked: row.getIsSelected(),\n disabled: !row.getCanSelect(),\n indeterminate: row.getIsSomeSelected(),\n indicatorProps: { outline: \"none\" },\n inputProps: {\n \"aria-label\": t(\"Select row\"),\n \"data-focusable\": \"\",\n tabIndex: -1,\n },\n onChange: row.getToggleSelectedHandler(),\n },\n checkboxProps ?? {},\n runIfFn(rowCheckboxProps, row) ?? {},\n )()}\n />\n )\n }\n\n clonedColumns.unshift({\n id: \"select\",\n cell,\n header,\n ...(withFooterCheckbox\n ? { footer: header }\n : { footerProps: { \"aria-hidden\": \"true\" } }),\n cellProps: { verticalAlign: \"middle\" },\n headerProps: { w: \"calc({spaces.4} + {space-x} * 2)\" },\n })\n\n return clonedColumns\n }, [\n checkboxProps,\n columnsProp,\n enableRowSelection,\n headerCheckboxProps,\n rowCheckboxProps,\n t,\n withCheckbox,\n withFooterCheckbox,\n ])\n const table = useReactTable<Y>({\n columnResizeMode,\n columns,\n data,\n enableColumnResizing,\n enableRowSelection,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualPagination,\n rowCount: totalRowCount,\n sortDescFirst,\n state: {\n columnFilters,\n pagination: enablePagination ? pagination : undefined,\n rowSelection,\n sorting: sorting as OriginalSortingState,\n ...state,\n },\n onColumnFiltersChange,\n onPaginationChange,\n onRowSelectionChange,\n onSortingChange: onSortingChange as OnChangeFn<OriginalSortingState>,\n ...(enablePagination\n ? { getPaginationRowModel: getPaginationRowModel() }\n : {}),\n ...rest,\n })\n const headerGroups = table.getHeaderGroups()\n const mergedHeaderGroups = getMergeHeaderGroups(headerGroups)\n const rows = table.getRowModel().rows\n const footerGroups = table.getFooterGroups()\n const mergedFooterGroups = getMergeFooterGroups(\n withFooterGroups ? footerGroups : [],\n )\n const headerGroupCount = headerGroups.length\n const rowCount = rows.length\n const colCount = table.getAllLeafColumns().length\n const maxColIndex = colCount - 1\n const pageIndex = enablePagination\n ? table.getState().pagination.pageIndex\n : 0\n const cellMap = useMemo(() => {\n const cellMap = new Map<string, string>()\n\n if (!enableKeyboardNavigation) return cellMap\n\n const insertCellMap = (\n id: string,\n colSpan: number,\n rowSpan: number,\n colIndex: number,\n rowIndex: number,\n ) => {\n for (let i = 0; i < colSpan; i++)\n cellMap.set(`${colIndex + i}-${rowIndex}`, `${colIndex}-${rowIndex}`)\n\n for (let i = 1; i < rowSpan; i++)\n cellMap.set(`${colIndex}-${rowIndex + i}`, `${colIndex}-${rowIndex}`)\n }\n\n const insertCellMapByHeaderGroup = (\n headerGroup: HeaderGroup<Y>,\n rowIndex: number,\n ) => {\n let placeholderCount = 0\n\n headerGroup.headers.forEach((header) => {\n const colSpan = header.colSpan || 1\n const rowSpan = header.rowSpan || 1\n const colIndex = header.index + placeholderCount\n\n placeholderCount += colSpan - 1\n\n insertCellMap(header.id, colSpan, rowSpan, colIndex, rowIndex)\n })\n }\n\n mergedHeaderGroups.forEach((headerGroup, rowIndex) => {\n insertCellMapByHeaderGroup(headerGroup, rowIndex)\n })\n\n rows.forEach((row, rowIndex) => {\n rowIndex += headerGroupCount\n\n row.getVisibleCells().forEach((cell) => {\n const colIndex = cell.column.getIndex()\n\n insertCellMap(cell.id, 1, 1, colIndex, rowIndex)\n })\n })\n\n mergedFooterGroups.forEach((footerGroup, rowIndex) => {\n rowIndex += headerGroupCount + rowCount\n\n insertCellMapByHeaderGroup(footerGroup, rowIndex)\n })\n\n return cellMap\n }, [\n enableKeyboardNavigation,\n headerGroupCount,\n mergedFooterGroups,\n mergedHeaderGroups,\n rows,\n rowCount,\n ])\n const context = useMemo(\n () => ({\n columnResizeMode,\n sortingIcon,\n table,\n resizableTriggerProps,\n sortingIconProps,\n }),\n [\n columnResizeMode,\n sortingIcon,\n sortingIconProps,\n resizableTriggerProps,\n table,\n ],\n )\n const getCell = (\n evOrEl:\n | Element\n | FocusEvent<HTMLTableElement>\n | KeyboardEvent<HTMLTableElement>\n | null\n | undefined,\n ) => {\n if (!evOrEl) return\n\n const el =\n evOrEl instanceof HTMLElement\n ? evOrEl.closest(\"th, td\")\n : \"target\" in evOrEl && evOrEl.target instanceof HTMLElement\n ? evOrEl.target.closest(\"th, td\")\n : null\n\n if (!(el instanceof HTMLTableCellElement)) return\n\n const { colindex, rowindex } = el.dataset\n const { colSpan, rowSpan } = el\n\n if (!colindex || !rowindex) return\n\n const colIndex = parseInt(colindex)\n const rowIndex = parseInt(rowindex)\n\n return { colIndex, colSpan, el, rowIndex, rowSpan }\n }\n const getShouldFocusCell = (colIndex: number, rowIndex: number) => {\n const [trulyColIndex, trulyRowIndex] =\n cellMap.get(`${colIndex}-${rowIndex}`)?.split(\"-\") ?? []\n\n if (!trulyColIndex || !trulyRowIndex) return\n\n const targetEl = ref.current?.querySelector(\n `[data-colindex=\"${trulyColIndex}\"][data-rowindex=\"${trulyRowIndex}\"]`,\n )\n\n if (!targetEl || !(targetEl instanceof HTMLTableCellElement)) return\n\n return targetEl\n }\n const removeTabIndex = (el: Element | null | undefined) => {\n if (!el || !(el instanceof HTMLElement)) return\n\n el.tabIndex = -1\n el.querySelectorAll(\"[data-focusable]\").forEach((el) => {\n if (el instanceof HTMLElement) el.tabIndex = -1\n })\n }\n const onCellFocus = (\n el: HTMLTableCellElement | null | undefined,\n colIndex: number,\n rowIndex: number,\n ) => {\n const targetEl = getShouldFocusCell(colIndex, rowIndex)\n\n if (!targetEl) return\n\n focusedCell.current = { colIndex, rowIndex }\n\n removeTabIndex(el)\n\n const shouldFocusEl =\n targetEl.querySelector(\"[data-focusable]\") ?? targetEl\n\n if (shouldFocusEl instanceof HTMLElement) {\n shouldFocusEl.tabIndex = 0\n shouldFocusEl.focus()\n }\n }\n const onFocus = (ev: FocusEvent<HTMLTableElement>) => {\n if (initialFocus.current) return\n\n initialFocus.current = true\n\n const cell = getCell(ev)\n\n if (!cell) return\n\n onCellFocus(cell.el, cell.colIndex, cell.rowIndex)\n }\n const onKeyDown = (ev: KeyboardEvent<HTMLTableElement>) => {\n if (!enableKeyboardNavigation) return\n\n const cell = getCell(ev)\n\n if (!cell) return\n\n runKeyAction(ev, {\n ArrowDown: () =>\n onCellFocus(cell.el, cell.colIndex, cell.rowIndex + cell.rowSpan),\n ArrowLeft: () => onCellFocus(cell.el, cell.colIndex - 1, cell.rowIndex),\n ArrowRight: () =>\n onCellFocus(cell.el, cell.colIndex + cell.colSpan, cell.rowIndex),\n ArrowUp: () => onCellFocus(cell.el, cell.colIndex, cell.rowIndex - 1),\n End: () => onCellFocus(cell.el, maxColIndex, cell.rowIndex),\n Home: () => onCellFocus(cell.el, 0, cell.rowIndex),\n ...(enablePagination\n ? {\n PageDown: () => {\n if (!table.getCanNextPage()) return\n\n table.setPageIndex(pageIndex + 1)\n },\n PageUp: () => {\n if (!table.getCanPreviousPage()) return\n\n table.setPageIndex(pageIndex - 1)\n },\n }\n : {}),\n })\n }\n const getTabIndex = (colIndex: number, rowIndex: number) => {\n if (!enableKeyboardNavigation) return undefined\n\n return colIndex === initialFocusableCell.colIndex &&\n rowIndex === initialFocusableCell.rowIndex\n ? 0\n : undefined\n }\n\n useUpdateEffect(() => {\n if (!enableKeyboardNavigation) return\n\n const { colIndex, rowIndex } = focusedCell.current ?? initialFocusableCell\n const targetEl = getShouldFocusCell(colIndex, rowIndex)\n\n if (targetEl) targetEl.tabIndex = 0\n }, [pageIndex, enableKeyboardNavigation])\n\n return (\n <ComponentContext value={context}>\n {header ? runIfFn(header, table) : null}\n\n <NativeTable.Root\n {...mergeProps(\n {\n ref,\n className,\n style:\n enableColumnResizing && enableAutoResizeTableWidth\n ? { width: table.getCenterTotalSize() }\n : {},\n colorScheme,\n size,\n variant,\n \"aria-colcount\": colCount,\n \"aria-multiselectable\": enableRowSelection ? \"true\" : undefined,\n \"aria-rowcount\": totalRowCount || data.length,\n highlightOnHover,\n highlightOnSelected,\n layout,\n role: \"grid\",\n stickyFooter,\n stickyHeader,\n striped,\n withBorder,\n withColumnBorders,\n withScrollArea,\n scrollAreaProps,\n onFocus,\n onKeyDown,\n },\n tableProps ?? {},\n )()}\n >\n <NativeTable.Thead {...theadProps}>\n {mergedHeaderGroups.map((headerGroup, rowIndex) => {\n let placeholderCount = 0\n\n return (\n <NativeTable.Tr\n key={headerGroup.id}\n aria-rowindex={rowIndex + 1}\n role=\"row\"\n {...runIfFn(headerGroupProps, headerGroup)}\n >\n {headerGroup.headers.map((header) => {\n const { columnDef } = header.column\n const colIndex = header.index + placeholderCount\n const tabIndex = getTabIndex(colIndex, rowIndex)\n const canSort = header.column.getCanSort()\n const sorted = header.column.getIsSorted()\n const canResize = header.column.getCanResize()\n const resizing = header.column.getIsResizing()\n const children = header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )\n\n placeholderCount += (header.colSpan || 1) - 1\n\n return (\n <NativeTable.Th\n key={header.id}\n aria-colindex={colIndex + 1}\n aria-rowindex={rowIndex + 1}\n aria-sort={\n sorted\n ? sorted === \"asc\"\n ? \"ascending\"\n : \"descending\"\n : \"none\"\n }\n data-colindex={colIndex}\n data-rowindex={rowIndex}\n colSpan={header.colSpan || undefined}\n numeric={columnDef.numeric}\n pe={\n canSort\n ? \"calc((1rem * {lineHeights.moderate}) + {space-x})\"\n : undefined\n }\n position=\"relative\"\n role=\"columnheader\"\n rowSpan={header.rowSpan || undefined}\n tabIndex={tabIndex}\n {...mergeProps(\n {\n css: {\n \"&:has([data-focusable]:focus-visible)\":\n focusRingStyle.outline,\n },\n style: enableColumnResizing\n ? { width: header.getSize() }\n : {},\n },\n runIfFn(headerProps, header) ?? {},\n columnDef.headerProps ?? {},\n )()}\n >\n <TruncatedText\n lineClamp={columnDef.lineClamp ?? lineClamp}\n truncated={columnDef.truncated ?? truncated}\n >\n {children}\n </TruncatedText>\n\n {canSort ? (\n <SortingIcon\n sorted={sorted}\n onClick={header.column.getToggleSortingHandler()}\n />\n ) : null}\n\n {canResize ? (\n <ResizableTrigger\n resizing={resizing}\n onDoubleClick={header.column.resetSize}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n />\n ) : null}\n </NativeTable.Th>\n )\n })}\n </NativeTable.Tr>\n )\n })}\n </NativeTable.Thead>\n\n <NativeTable.Tbody {...tbodyProps}>\n {rows.map((row, rowIndex) => {\n rowIndex += headerGroupCount\n\n const selected = !!rowSelection[row.id]\n const disabled =\n isFunction(enableRowSelection) && !enableRowSelection(row)\n\n return (\n <NativeTable.Tr\n id={row.id}\n key={row.id}\n aria-disabled={ariaAttr(disabled)}\n aria-rowindex={rowIndex + 1}\n aria-selected={ariaAttr(selected)}\n data-disabled={dataAttr(disabled)}\n data-selected={dataAttr(selected)}\n role=\"row\"\n {...mergeProps(\n {\n onClick:\n !disabled && selectOnClickRow\n ? () => row.toggleSelected(!selected)\n : undefined,\n },\n {\n onClick: !disabled ? () => onRowClick?.(row) : undefined,\n onDoubleClick: !disabled\n ? () => onRowDoubleClick?.(row)\n : undefined,\n },\n runIfFn(rowProps, row) ?? {},\n )()}\n >\n {row.getVisibleCells().map((cell) => {\n const { columnDef } = cell.column\n const colIndex = cell.column.getIndex()\n const tabIndex = getTabIndex(colIndex, rowIndex)\n const children = flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )\n\n return (\n <NativeTable.Td\n key={cell.id}\n aria-colindex={colIndex + 1}\n aria-rowindex={rowIndex + 1}\n data-colindex={colIndex}\n data-rowindex={rowIndex}\n numeric={columnDef.numeric}\n role=\"gridcell\"\n tabIndex={tabIndex}\n {...mergeProps(\n {\n css: {\n \"&:has([data-focusable]:focus-visible)\":\n focusRingStyle.outline,\n },\n },\n runIfFn(cellProps, cell) ?? {},\n columnDef.cellProps ?? {},\n )()}\n >\n <TruncatedText\n lineClamp={columnDef.lineClamp ?? lineClamp}\n truncated={columnDef.truncated ?? truncated}\n >\n {children}\n </TruncatedText>\n </NativeTable.Td>\n )\n })}\n </NativeTable.Tr>\n )\n })}\n </NativeTable.Tbody>\n\n {withFooterGroups ? (\n <NativeTable.Tfoot {...tfootProps}>\n {mergedFooterGroups.map((footerGroup, rowIndex) => {\n rowIndex += headerGroupCount + rowCount\n\n let placeholderCount = 0\n\n return (\n <NativeTable.Tr\n key={footerGroup.id}\n aria-rowindex={rowIndex + 1}\n role=\"row\"\n {...runIfFn(footerGroupProps, footerGroup)}\n >\n {footerGroup.headers.map((header) => {\n const { columnDef } = header.column\n const colIndex = header.index + placeholderCount\n const tabIndex = getTabIndex(colIndex, rowIndex)\n const children = header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.footer,\n header.getContext(),\n )\n\n placeholderCount += (header.colSpan || 1) - 1\n\n return (\n <NativeTable.Td\n key={header.id}\n aria-colindex={colIndex + 1}\n aria-rowindex={rowIndex + 1}\n data-colindex={colIndex}\n data-rowindex={rowIndex}\n colSpan={header.colSpan || undefined}\n numeric={columnDef.numeric}\n role=\"gridcell\"\n rowSpan={header.rowSpan || undefined}\n tabIndex={tabIndex}\n {...mergeProps(\n {\n css: {\n \"&:has([data-focusable]:focus-visible)\":\n focusRingStyle.outline,\n },\n },\n runIfFn(footerProps, header) ?? {},\n columnDef.footerProps ?? {},\n )()}\n >\n <TruncatedText\n lineClamp={columnDef.lineClamp ?? lineClamp}\n truncated={columnDef.truncated ?? truncated}\n >\n {children}\n </TruncatedText>\n </NativeTable.Td>\n )\n })}\n </NativeTable.Tr>\n )\n })}\n </NativeTable.Tfoot>\n ) : null}\n </NativeTable.Root>\n\n {footer ? runIfFn(footer, table) : null}\n </ComponentContext>\n )\n },\n)() as GenericsComponent<{\n <Y extends RowData>(props: TableProps<Y>): ReactElement\n}>\n\ninterface SortingIconProps extends HTMLStyledProps<\"button\"> {\n sorted: false | SortDirection\n}\n\nconst SortingIcon: FC<SortingIconProps> = ({ sorted, ...rest }) => {\n const { t } = useI18n(\"table\")\n const { sortingIcon, sortingIconProps = {} } = useComponentContext()\n const Icon = sorted ? ChevronUpIcon : ChevronsUpDownIcon\n\n return (\n <styled.button\n type=\"button\"\n layerStyle=\"ghost\"\n colorScheme=\"mono\"\n aria-label={t(\n sorted\n ? sorted === \"desc\"\n ? \"Sort descending\"\n : \"Sort ascending\"\n : \"Clear sorting\",\n )}\n data-focusable\n aspectRatio=\"1\"\n cursor=\"pointer\"\n display=\"center\"\n focusVisibleRing=\"none\"\n h=\"calc(1em * {lineHeights.moderate})\"\n position=\"absolute\"\n right=\"{space-x}\"\n rounded=\"l1\"\n tabIndex={-1}\n top=\"50%\"\n transform=\"translateY(-50%)\"\n transitionDuration=\"moderate\"\n transitionProperty=\"common\"\n _hover={{ layerStyle: \"ghost.hover\" }}\n {...mergeProps(rest, sortingIconProps)()}\n >\n {runIfFn(sortingIcon, sorted) ?? (\n <Icon transform={`rotate(${sorted === \"desc\" ? 180 : 0}deg)`} />\n )}\n </styled.button>\n )\n}\n\ninterface ResizableTriggerProps extends HTMLStyledProps {\n resizing: boolean\n}\n\nconst ResizableTrigger: FC<ResizableTriggerProps> = ({ resizing, ...rest }) => {\n const {\n columnResizeMode,\n table,\n resizableTriggerProps = {},\n } = useComponentContext()\n const offset = table.getState().columnSizingInfo.deltaOffset\n\n return (\n <styled.div\n data-active={dataAttr(resizing)}\n bg=\"colorScheme.solid\"\n cursor=\"col-resize\"\n insetY=\"0\"\n opacity={{ base: \"0\", _hover: \"1\", _active: \"1\" }}\n position=\"absolute\"\n right=\"0\"\n touchAction=\"none\"\n transform={`translateX(${columnResizeMode === \"onEnd\" && resizing && offset ? `${offset}px` : \"50%\"})`}\n userSelect=\"none\"\n w=\"1\"\n {...mergeProps(rest, resizableTriggerProps)()}\n />\n )\n}\n\ninterface TruncatedTextProps extends HTMLStyledProps<\"span\"> {}\n\nconst TruncatedText: FC<TruncatedTextProps> = ({\n children,\n lineClamp,\n truncated,\n ...rest\n}) => {\n if (lineClamp || truncated)\n return (\n <styled.span\n lineClamp={lineClamp}\n truncated={truncated}\n wordBreak=\"break-all\"\n {...rest}\n >\n {children}\n </styled.span>\n )\n else return children\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA8FA,SAAS,qBACP,cACoB;CACpB,IAAI,aAAa,UAAU,GAAG,OAAO;CAErC,MAAM,6BAAa,IAAI,IAAI;CAE3B,OAAO,aAAa,KAAK,aAAa,OAAO,EAAE,QAAQ,gBAAgB;EACrE,OAAO;GACL,GAAG;GACH,SAAS,YAAY,QAClB,QAAQ,WAAW,CAAC,WAAW,IAAI,OAAO,OAAO,EAAE,CAAC,CAAC,CACrD,KAAK,WAAW;IACf,WAAW,IAAI,OAAO,OAAO,EAAE;IAE/B,OAAO,OAAO,gBACV;KAAE,GAAG;KAAQ,eAAe;KAAO,SAAS,YAAY;IAAM,IAC9D;KAAE,GAAG;KAAQ,SAAS;IAAE;GAC9B,CAAC;EACL;CACF,CAAC;AACH;AAEA,SAAS,qBACP,cACoB;CACpB,IAAI,aAAa,UAAU,GAAG,OAAO;CAErC,OAAO,aAAa,KAAK,aAAa,UAAU;EAC9C,MAAM,mBAAmB,aAAa,MAAM,QAAQ,CAAC;EAErD,OAAO;GACL,GAAG;GACH,SAAS,YAAY,QAClB,QAAQ,WAAW,CAAC,OAAO,aAAa,CAAC,CACzC,KAAK,WAAW;IACf,IAAI,iBAAiB,WAAW,GAAG,OAAO;IAE1C,MAAM,UAAU,iBAAiB,QAAQ,KAAK,oBAAoB;KAKhE,OAAO,OAJe,gBAAgB,QAAQ,MAC3C,eAAe,WAAW,OAAO,OAAO,OAAO,OAAO,EAG/B,IAAI,IAAI;IACpC,GAAG,CAAC;IAEJ,OAAO;KAAE,GAAG;KAAQ;IAAQ;GAC9B,CAAC;EACL;CACF,CAAC;AACH;AAoOA,MAAM,EACJ,kBACA,cAAc,mBACd,qBACA,iBAAiB,sBACjB,gBACE,gBAAwD,OAAO;;;;;;AASnE,MAAa,QAAQ,aACC,EAClB,WACA,aACA,MACA,SACA,eAAe,mBACf,mBAAmB,YACnB,SAAS,aACT,MACA,sBACA,oBAAoB;CAAE,WAAW;CAAG,UAAU;AAAG,GACjD,sBAAsB,CAAC,GACvB,gBACA,6BAA6B,OAC7B,uBAAuB,OACvB,2BAA2B,MAC3B,mBAAmB,OACnB,qBAAqB,OACrB,QACA,QACA,mBAAmB,CAAC,CAAC,oBACrB,sBAAsB,CAAC,CAAC,oBACxB,uBAAuB;CAAE,UAAU;CAAG,UAAU;AAAE,GAClD,QACA,WACA,kBACA,YAAY,gBACZ,UAAU,eACV,cAAc,kBACd,mBAAmB,OACnB,gBAAgB,OAChB,SAAS,aACT,aACA,OACA,cACA,cACA,SACA,WACA,YACA,eAAe,MACf,mBACA,qBAAqB,OACrB,mBAAmB,OACnB,gBACA,WACA,eACA,kBACA,aACA,qBACA,kBACA,aACA,uBACA,kBACA,UACA,iBACA,kBACA,YACA,YACA,YACA,YACA,uBAAuB,2BACvB,oBAAoB,wBACpB,YACA,kBACA,sBAAsB,0BACtB,iBAAiB,qBACjB,GAAG,WACgB;CACnB,MAAM,EAAE,MAAM,QAAQ,OAAO;CAC7B,MAAM,eAAe,OAAgB,KAAK;CAC1C,MAAM,MAAM,OAAyB,IAAI;CACzC,MAAM,cAAc,OAClB,IACF;CACA,MAAM,CAAC,cAAc,wBAAwB,qBAAqB;EAChE,cAAc;EACd,OAAO;EACP,UAAU;CACZ,CAAC;CACD,MAAM,CAAC,SAAS,mBAAmB,qBAAqB;EACtD,cAAc;EACd,OAAO;EACP,UAAU;CACZ,CAAC;CACD,MAAM,CAAC,YAAY,sBAAsB,qBAAqB;EAC5D,cAAc;EACd,OAAO;EACP,UAAU;CACZ,CAAC;CACD,MAAM,CAAC,eAAe,yBAAyB,qBAAqB;EAClE,cAAc;EACd,OAAO;EACP,UAAU;CACZ,CAAC;CAyED,MAAM,QAAQ,cAAiB;EAC7B;EACA,SA1Ec,cAAc;GAC5B,IAAI,CAAC,sBAAsB,CAAC,cAAc,OAAO;GAEjD,MAAM,gBAAgB,CAAC,GAAG,WAAW;GAErC,MAAM,UAAU,EAAE,QAAQ,YAAmC;IAC3D,OACE,oBAAC,UAAD,EACE,GAAI,WACF;KACE,SAAS,MAAM,qBAAqB;KACpC,eAAe,MAAM,sBAAsB;KAC3C,gBAAgB,EAAE,SAAS,OAAO;KAClC,YAAY;MACV,cAAc,EAAE,iBAAiB;MACjC,kBAAkB;MAClB,UAAU;KACZ;KACA,UAAU,MAAM,gCAAgC;IAClD,GACA,iBAAiB,CAAC,IAAA,GAAA,cAAA,QAAA,CACV,qBAAqB,MAAM,KAAK,CAAC,CAC3C,CAAC,CAAC,EACH,CAAA;GAEL;GAEA,MAAM,QAAQ,EAAE,UAA+B;IAC7C,OACE,oBAAC,UAAD,EACE,GAAI,WACF;KACE,SAAS,IAAI,cAAc;KAC3B,UAAU,CAAC,IAAI,aAAa;KAC5B,eAAe,IAAI,kBAAkB;KACrC,gBAAgB,EAAE,SAAS,OAAO;KAClC,YAAY;MACV,cAAc,EAAE,YAAY;MAC5B,kBAAkB;MAClB,UAAU;KACZ;KACA,UAAU,IAAI,yBAAyB;IACzC,GACA,iBAAiB,CAAC,IAAA,GAAA,cAAA,QAAA,CACV,kBAAkB,GAAG,KAAK,CAAC,CACrC,CAAC,CAAC,EACH,CAAA;GAEL;GAEA,cAAc,QAAQ;IACpB,IAAI;IACJ;IACA;IACA,GAAI,qBACA,EAAE,QAAQ,OAAO,IACjB,EAAE,aAAa,EAAE,eAAe,OAAO,EAAE;IAC7C,WAAW,EAAE,eAAe,SAAS;IACrC,aAAa,EAAE,GAAG,mCAAmC;GACvD,CAAC;GAED,OAAO;EACT,GAAG;GACD;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAGQ;EACN;EACA;EACA;EACA,iBAAiB,gBAAgB;EACjC,qBAAqB,oBAAoB;EACzC,mBAAmB,kBAAkB;EACrC;EACA,UAAU;EACV;EACA,OAAO;GACL;GACA,YAAY,mBAAmB,aAAa,KAAA;GAC5C;GACS;GACT,GAAG;EACL;EACA;EACA;EACA;EACiB;EACjB,GAAI,mBACA,EAAE,uBAAuB,sBAAsB,EAAE,IACjD,CAAC;EACL,GAAG;CACL,CAAC;CACD,MAAM,eAAe,MAAM,gBAAgB;CAC3C,MAAM,qBAAqB,qBAAqB,YAAY;CAC5D,MAAM,OAAO,MAAM,YAAY,CAAC,CAAC;CACjC,MAAM,eAAe,MAAM,gBAAgB;CAC3C,MAAM,qBAAqB,qBACzB,mBAAmB,eAAe,CAAC,CACrC;CACA,MAAM,mBAAmB,aAAa;CACtC,MAAM,WAAW,KAAK;CACtB,MAAM,WAAW,MAAM,kBAAkB,CAAC,CAAC;CAC3C,MAAM,cAAc,WAAW;CAC/B,MAAM,YAAY,mBACd,MAAM,SAAS,CAAC,CAAC,WAAW,YAC5B;CACJ,MAAM,UAAU,cAAc;EAC5B,MAAM,0BAAU,IAAI,IAAoB;EAExC,IAAI,CAAC,0BAA0B,OAAO;EAEtC,MAAM,iBACJ,IACA,SACA,SACA,UACA,aACG;GACH,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,KAC3B,QAAQ,IAAI,GAAG,WAAW,EAAE,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU;GAEtE,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,KAC3B,QAAQ,IAAI,GAAG,SAAS,GAAG,WAAW,KAAK,GAAG,SAAS,GAAG,UAAU;EACxE;EAEA,MAAM,8BACJ,aACA,aACG;GACH,IAAI,mBAAmB;GAEvB,YAAY,QAAQ,SAAS,WAAW;IACtC,MAAM,UAAU,OAAO,WAAW;IAClC,MAAM,UAAU,OAAO,WAAW;IAClC,MAAM,WAAW,OAAO,QAAQ;IAEhC,oBAAoB,UAAU;IAE9B,cAAc,OAAO,IAAI,SAAS,SAAS,UAAU,QAAQ;GAC/D,CAAC;EACH;EAEA,mBAAmB,SAAS,aAAa,aAAa;GACpD,2BAA2B,aAAa,QAAQ;EAClD,CAAC;EAED,KAAK,SAAS,KAAK,aAAa;GAC9B,YAAY;GAEZ,IAAI,gBAAgB,CAAC,CAAC,SAAS,SAAS;IACtC,MAAM,WAAW,KAAK,OAAO,SAAS;IAEtC,cAAc,KAAK,IAAI,GAAG,GAAG,UAAU,QAAQ;GACjD,CAAC;EACH,CAAC;EAED,mBAAmB,SAAS,aAAa,aAAa;GACpD,YAAY,mBAAmB;GAE/B,2BAA2B,aAAa,QAAQ;EAClD,CAAC;EAED,OAAO;CACT,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CACD,MAAM,UAAU,eACP;EACL;EACA;EACA;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;CACF,CACF;CACA,MAAM,WACJ,WAMG;EACH,IAAI,CAAC,QAAQ;EAEb,MAAM,KACJ,kBAAkB,cACd,OAAO,QAAQ,QAAQ,IACvB,YAAY,UAAU,OAAO,kBAAkB,cAC7C,OAAO,OAAO,QAAQ,QAAQ,IAC9B;EAER,IAAI,EAAE,cAAc,uBAAuB;EAE3C,MAAM,EAAE,UAAU,aAAa,GAAG;EAClC,MAAM,EAAE,SAAS,YAAY;EAE7B,IAAI,CAAC,YAAY,CAAC,UAAU;EAK5B,OAAO;GAAE,UAHQ,SAAS,QAGV;GAAG;GAAS;GAAI,UAFf,SAAS,QAEa;GAAG;EAAQ;CACpD;CACA,MAAM,sBAAsB,UAAkB,aAAqB;EACjE,MAAM,CAAC,eAAe,iBACpB,QAAQ,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;EAEzD,IAAI,CAAC,iBAAiB,CAAC,eAAe;EAEtC,MAAM,WAAW,IAAI,SAAS,cAC5B,mBAAmB,cAAc,oBAAoB,cAAc,GACrE;EAEA,IAAI,CAAC,YAAY,EAAE,oBAAoB,uBAAuB;EAE9D,OAAO;CACT;CACA,MAAM,kBAAkB,OAAmC;EACzD,IAAI,CAAC,MAAM,EAAE,cAAc,cAAc;EAEzC,GAAG,WAAW;EACd,GAAG,iBAAiB,kBAAkB,CAAC,CAAC,SAAS,OAAO;GACtD,IAAI,cAAc,aAAa,GAAG,WAAW;EAC/C,CAAC;CACH;CACA,MAAM,eACJ,IACA,UACA,aACG;EACH,MAAM,WAAW,mBAAmB,UAAU,QAAQ;EAEtD,IAAI,CAAC,UAAU;EAEf,YAAY,UAAU;GAAE;GAAU;EAAS;EAE3C,eAAe,EAAE;EAEjB,MAAM,gBACJ,SAAS,cAAc,kBAAkB,KAAK;EAEhD,IAAI,yBAAyB,aAAa;GACxC,cAAc,WAAW;GACzB,cAAc,MAAM;EACtB;CACF;CACA,MAAM,WAAW,OAAqC;EACpD,IAAI,aAAa,SAAS;EAE1B,aAAa,UAAU;EAEvB,MAAM,OAAO,QAAQ,EAAE;EAEvB,IAAI,CAAC,MAAM;EAEX,YAAY,KAAK,IAAI,KAAK,UAAU,KAAK,QAAQ;CACnD;CACA,MAAM,aAAa,OAAwC;EACzD,IAAI,CAAC,0BAA0B;EAE/B,MAAM,OAAO,QAAQ,EAAE;EAEvB,IAAI,CAAC,MAAM;EAEX,aAAa,IAAI;GACf,iBACE,YAAY,KAAK,IAAI,KAAK,UAAU,KAAK,WAAW,KAAK,OAAO;GAClE,iBAAiB,YAAY,KAAK,IAAI,KAAK,WAAW,GAAG,KAAK,QAAQ;GACtE,kBACE,YAAY,KAAK,IAAI,KAAK,WAAW,KAAK,SAAS,KAAK,QAAQ;GAClE,eAAe,YAAY,KAAK,IAAI,KAAK,UAAU,KAAK,WAAW,CAAC;GACpE,WAAW,YAAY,KAAK,IAAI,aAAa,KAAK,QAAQ;GAC1D,YAAY,YAAY,KAAK,IAAI,GAAG,KAAK,QAAQ;GACjD,GAAI,mBACA;IACE,gBAAgB;KACd,IAAI,CAAC,MAAM,eAAe,GAAG;KAE7B,MAAM,aAAa,YAAY,CAAC;IAClC;IACA,cAAc;KACZ,IAAI,CAAC,MAAM,mBAAmB,GAAG;KAEjC,MAAM,aAAa,YAAY,CAAC;IAClC;GACF,IACA,CAAC;EACP,CAAC;CACH;CACA,MAAM,eAAe,UAAkB,aAAqB;EAC1D,IAAI,CAAC,0BAA0B,OAAO,KAAA;EAEtC,OAAO,aAAa,qBAAqB,YACvC,aAAa,qBAAqB,WAChC,IACA,KAAA;CACN;CAEA,sBAAsB;EACpB,IAAI,CAAC,0BAA0B;EAE/B,MAAM,EAAE,UAAU,aAAa,YAAY,WAAW;EACtD,MAAM,WAAW,mBAAmB,UAAU,QAAQ;EAEtD,IAAI,UAAU,SAAS,WAAW;CACpC,GAAG,CAAC,WAAW,wBAAwB,CAAC;CAExC,OACE,qBAAC,kBAAD;EAAkB,OAAO;EAAzB,UAAA;GACG,UAAA,GAAA,cAAA,QAAA,CAAiB,QAAQ,KAAK,IAAI;GAEnC,qBAACA,iBAAD;IACE,GAAI,WACF;KACE;KACA;KACA,OACE,wBAAwB,6BACpB,EAAE,OAAO,MAAM,mBAAmB,EAAE,IACpC,CAAC;KACP;KACA;KACA;KACA,iBAAiB;KACjB,wBAAwB,qBAAqB,SAAS,KAAA;KACtD,iBAAiB,iBAAiB,KAAK;KACvC;KACA;KACA;KACA,MAAM;KACN;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACF,GACA,cAAc,CAAC,CACjB,CAAC,CAAC;IA9BJ,UAAA;KAgCE,oBAACC,OAAD;MAAmB,GAAI;MACpB,UAAA,mBAAmB,KAAK,aAAa,aAAa;OACjD,IAAI,mBAAmB;OAEvB,OACE,oBAACC,IAAD;QAEE,iBAAe,WAAW;QAC1B,MAAK;QACL,IAAA,GAAA,cAAA,QAAA,CAAY,kBAAkB,WAAW;QAExC,UAAA,YAAY,QAAQ,KAAK,WAAW;SACnC,MAAM,EAAE,cAAc,OAAO;SAC7B,MAAM,WAAW,OAAO,QAAQ;SAChC,MAAM,WAAW,YAAY,UAAU,QAAQ;SAC/C,MAAM,UAAU,OAAO,OAAO,WAAW;SACzC,MAAM,SAAS,OAAO,OAAO,YAAY;SACzC,MAAM,YAAY,OAAO,OAAO,aAAa;SAC7C,MAAM,WAAW,OAAO,OAAO,cAAc;SAC7C,MAAM,WAAW,OAAO,gBACpB,OACA,WACE,OAAO,OAAO,UAAU,QACxB,OAAO,WAAW,CACpB;SAEJ,qBAAqB,OAAO,WAAW,KAAK;SAE5C,OACE,qBAACC,IAAD;UAEE,iBAAe,WAAW;UAC1B,iBAAe,WAAW;UAC1B,aACE,SACI,WAAW,QACT,cACA,eACF;UAEN,iBAAe;UACf,iBAAe;UACf,SAAS,OAAO,WAAW,KAAA;UAC3B,SAAS,UAAU;UACnB,IACE,UACI,sDACA,KAAA;UAEN,UAAS;UACT,MAAK;UACL,SAAS,OAAO,WAAW,KAAA;UACjB;UACV,GAAI,WACF;WACE,KAAK,EACH,yCACE,eAAe,QACnB;WACA,OAAO,uBACH,EAAE,OAAO,OAAO,QAAQ,EAAE,IAC1B,CAAC;UACP,IAAA,GAAA,cAAA,QAAA,CACQ,aAAa,MAAM,KAAK,CAAC,GACjC,UAAU,eAAe,CAAC,CAC5B,CAAC,CAAC;UApCJ,UAAA;WAsCE,oBAAC,eAAD;YACE,WAAW,UAAU,aAAa;YAClC,WAAW,UAAU,aAAa;YAEjC;WACY,CAAA;WAEd,UACC,oBAAC,aAAD;YACU;YACR,SAAS,OAAO,OAAO,wBAAwB;WAChD,CAAA,IACC;WAEH,YACC,oBAAC,kBAAD;YACY;YACV,eAAe,OAAO,OAAO;YAC7B,aAAa,OAAO,iBAAiB;YACrC,cAAc,OAAO,iBAAiB;WACvC,CAAA,IACC;UACU;SA3DT,GAAA,OAAO,EA2DE;QAEpB,CAAC;OACa,GAtFT,YAAY,EAsFH;MAEpB,CAAC;KACgB,CAAA;KAEnB,oBAACC,OAAD;MAAmB,GAAI;MACpB,UAAA,KAAK,KAAK,KAAK,aAAa;OAC3B,YAAY;OAEZ,MAAM,WAAW,CAAC,CAAC,aAAa,IAAI;OACpC,MAAM,YAAA,GAAA,cAAA,WAAA,CACO,kBAAkB,KAAK,CAAC,mBAAmB,GAAG;OAE3D,OACE,oBAACF,IAAD;QACE,IAAI,IAAI;QAER,kBAAA,GAAA,cAAA,SAAA,CAAwB,QAAQ;QAChC,iBAAe,WAAW;QAC1B,kBAAA,GAAA,cAAA,SAAA,CAAwB,QAAQ;QAChC,kBAAA,GAAA,cAAA,SAAA,CAAwB,QAAQ;QAChC,kBAAA,GAAA,cAAA,SAAA,CAAwB,QAAQ;QAChC,MAAK;QACL,GAAI,WACF,EACE,SACE,CAAC,YAAY,yBACH,IAAI,eAAe,CAAC,QAAQ,IAClC,KAAA,EACR,GACA;SACE,SAAS,CAAC,iBAAiB,aAAa,GAAG,IAAI,KAAA;SAC/C,eAAe,CAAC,iBACN,mBAAmB,GAAG,IAC5B,KAAA;QACN,IAAA,GAAA,cAAA,QAAA,CACQ,UAAU,GAAG,KAAK,CAAC,CAC7B,CAAC,CAAC;QAED,UAAA,IAAI,gBAAgB,CAAC,CAAC,KAAK,SAAS;SACnC,MAAM,EAAE,cAAc,KAAK;SAC3B,MAAM,WAAW,KAAK,OAAO,SAAS;SACtC,MAAM,WAAW,YAAY,UAAU,QAAQ;SAC/C,MAAM,WAAW,WACf,KAAK,OAAO,UAAU,MACtB,KAAK,WAAW,CAClB;SAEA,OACE,oBAACG,IAAD;UAEE,iBAAe,WAAW;UAC1B,iBAAe,WAAW;UAC1B,iBAAe;UACf,iBAAe;UACf,SAAS,UAAU;UACnB,MAAK;UACK;UACV,GAAI,WACF,EACE,KAAK,EACH,yCACE,eAAe,QACnB,EACF,IAAA,GAAA,cAAA,QAAA,CACQ,WAAW,IAAI,KAAK,CAAC,GAC7B,UAAU,aAAa,CAAC,CAC1B,CAAC,CAAC;UAEF,UAAA,oBAAC,eAAD;WACE,WAAW,UAAU,aAAa;WAClC,WAAW,UAAU,aAAa;WAEjC;UACY,CAAA;SACD,GAzBT,KAAK,EAyBI;QAEpB,CAAC;OACa,GA9DT,IAAI,EA8DK;MAEpB,CAAC;KACgB,CAAA;KAElB,mBACC,oBAACC,OAAD;MAAmB,GAAI;MACpB,UAAA,mBAAmB,KAAK,aAAa,aAAa;OACjD,YAAY,mBAAmB;OAE/B,IAAI,mBAAmB;OAEvB,OACE,oBAACJ,IAAD;QAEE,iBAAe,WAAW;QAC1B,MAAK;QACL,IAAA,GAAA,cAAA,QAAA,CAAY,kBAAkB,WAAW;QAExC,UAAA,YAAY,QAAQ,KAAK,WAAW;SACnC,MAAM,EAAE,cAAc,OAAO;SAC7B,MAAM,WAAW,OAAO,QAAQ;SAChC,MAAM,WAAW,YAAY,UAAU,QAAQ;SAC/C,MAAM,WAAW,OAAO,gBACpB,OACA,WACE,OAAO,OAAO,UAAU,QACxB,OAAO,WAAW,CACpB;SAEJ,qBAAqB,OAAO,WAAW,KAAK;SAE5C,OACE,oBAACG,IAAD;UAEE,iBAAe,WAAW;UAC1B,iBAAe,WAAW;UAC1B,iBAAe;UACf,iBAAe;UACf,SAAS,OAAO,WAAW,KAAA;UAC3B,SAAS,UAAU;UACnB,MAAK;UACL,SAAS,OAAO,WAAW,KAAA;UACjB;UACV,GAAI,WACF,EACE,KAAK,EACH,yCACE,eAAe,QACnB,EACF,IAAA,GAAA,cAAA,QAAA,CACQ,aAAa,MAAM,KAAK,CAAC,GACjC,UAAU,eAAe,CAAC,CAC5B,CAAC,CAAC;UAEF,UAAA,oBAAC,eAAD;WACE,WAAW,UAAU,aAAa;WAClC,WAAW,UAAU,aAAa;WAEjC;UACY,CAAA;SACD,GA3BT,OAAO,EA2BE;QAEpB,CAAC;OACa,GAlDT,YAAY,EAkDH;MAEpB,CAAC;KACgB,CAAA,IACjB;IACY;;GAEjB,UAAA,GAAA,cAAA,QAAA,CAAiB,QAAQ,KAAK,IAAI;EACnB;;AAEtB,CACF,CAAC,CAAC;AAQF,MAAM,eAAqC,EAAE,QAAQ,GAAG,WAAW;CACjE,MAAM,EAAE,MAAM,QAAQ,OAAO;CAC7B,MAAM,EAAE,aAAa,mBAAmB,CAAC,MAAM,oBAAoB;CACnE,MAAM,OAAO,SAAS,gBAAgB;CAEtC,OACE,oBAAC,OAAO,QAAR;EACE,MAAK;EACL,YAAW;EACX,aAAY;EACZ,cAAY,EACV,SACI,WAAW,SACT,oBACA,mBACF,eACN;EACA,kBAAA;EACA,aAAY;EACZ,QAAO;EACP,SAAQ;EACR,kBAAiB;EACjB,GAAE;EACF,UAAS;EACT,OAAM;EACN,SAAQ;EACR,UAAU;EACV,KAAI;EACJ,WAAU;EACV,oBAAmB;EACnB,oBAAmB;EACnB,QAAQ,EAAE,YAAY,cAAc;EACpC,GAAI,WAAW,MAAM,gBAAgB,CAAC,CAAC;EAE9B,WAAA,GAAA,cAAA,QAAA,CAAA,aAAa,MAAM,KAC1B,oBAAC,MAAD,EAAM,WAAW,UAAU,WAAW,SAAS,MAAM,EAAE,MAAQ,CAAA;CAEpD,CAAA;AAEnB;AAMA,MAAM,oBAA+C,EAAE,UAAU,GAAG,WAAW;CAC7E,MAAM,EACJ,kBACA,OACA,wBAAwB,CAAC,MACvB,oBAAoB;CACxB,MAAM,SAAS,MAAM,SAAS,CAAC,CAAC,iBAAiB;CAEjD,OACE,oBAAC,OAAO,KAAR;EACE,gBAAA,GAAA,cAAA,SAAA,CAAsB,QAAQ;EAC9B,IAAG;EACH,QAAO;EACP,QAAO;EACP,SAAS;GAAE,MAAM;GAAK,QAAQ;GAAK,SAAS;EAAI;EAChD,UAAS;EACT,OAAM;EACN,aAAY;EACZ,WAAW,cAAc,qBAAqB,WAAW,YAAY,SAAS,GAAG,OAAO,MAAM,MAAM;EACpG,YAAW;EACX,GAAE;EACF,GAAI,WAAW,MAAM,qBAAqB,CAAC,CAAC;CAC7C,CAAA;AAEL;AAIA,MAAM,iBAAyC,EAC7C,UACA,WACA,WACA,GAAG,WACC;CACJ,IAAI,aAAa,WACf,OACE,oBAAC,OAAO,MAAR;EACa;EACA;EACX,WAAU;EACV,GAAI;EAEH;CACU,CAAA;MAEZ,OAAO;AACd"}
1
+ {"version":3,"file":"table.js","names":["runIfFn","NativeTable.Root","NativeTable.Thead","NativeTable.Tr","NativeTable.Th","NativeTable.Tbody","isFunction","ariaAttr","dataAttr","NativeTable.Td","NativeTable.Tfoot"],"sources":["../../../../src/components/table/table.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n AccessorFn,\n Cell,\n CellContext,\n ColumnDef,\n ColumnDefTemplate,\n ColumnFiltersColumnDef,\n ColumnFiltersState,\n ColumnMeta,\n ColumnPinningColumnDef,\n ColumnSizingColumnDef,\n GlobalFilterColumnDef,\n GroupingColumnDef,\n Header,\n HeaderContext,\n HeaderGroup,\n OnChangeFn,\n SortingState as OriginalSortingState,\n PaginationState,\n Table as ReactTable,\n Row,\n RowData,\n RowSelectionState,\n SortDirection,\n SortingColumnDef,\n TableOptions,\n VisibilityColumnDef,\n} from \"@tanstack/react-table\"\nimport type { FC, FocusEvent, KeyboardEvent, ReactElement } from \"react\"\nimport type { CSSProps, GenericsComponent, HTMLStyledProps } from \"../../core\"\nimport type { ReactNodeOrFunction, TransformProps } from \"../../utils\"\nimport type { CheckboxProps } from \"../checkbox\"\nimport {\n createColumnHelper,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport { useMemo, useRef } from \"react\"\nimport { createComponent, focusRingStyle, mergeProps, styled } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n dataAttr,\n isFunction,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\nimport { Checkbox } from \"../checkbox\"\nimport { ChevronsUpDownIcon, ChevronUpIcon } from \"../icon\"\nimport { NativeTable } from \"../native-table\"\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnDefExtensions<TData extends RowData, TValue = unknown>\n extends\n VisibilityColumnDef,\n ColumnPinningColumnDef,\n ColumnFiltersColumnDef<TData>,\n GlobalFilterColumnDef,\n SortingColumnDef<TData>,\n GroupingColumnDef<TData, TValue>,\n ColumnSizingColumnDef {}\n\n interface ColumnDefBase<TData extends RowData, TValue = unknown>\n extends\n ColumnDefExtensions<TData, TValue>,\n Pick<CSSProps, \"lineClamp\" | \"truncated\">,\n Pick<NativeTable.TdProps, \"numeric\"> {\n cell?: ColumnDefTemplate<CellContext<TData, TValue>>\n footer?: ColumnDefTemplate<HeaderContext<TData, TValue>>\n getUniqueValues?: AccessorFn<TData, unknown[]>\n meta?: ColumnMeta<TData, TValue>\n cellProps?: NativeTable.TdProps\n footerProps?: NativeTable.ThProps\n headerProps?: NativeTable.ThProps\n }\n}\n\nexport { createColumnHelper }\nexport type {\n ColumnDef,\n ColumnFiltersState,\n PaginationState,\n RowSelectionState,\n SortDirection,\n}\n\nfunction getMergeHeaderGroups(\n headerGroups: HeaderGroup<any>[],\n): HeaderGroup<any>[] {\n if (headerGroups.length <= 1) return headerGroups\n\n const columnsIds = new Set()\n\n return headerGroups.map((headerGroup, depth, { length: fullDepth }) => {\n return {\n ...headerGroup,\n headers: headerGroup.headers\n .filter((header) => !columnsIds.has(header.column.id))\n .map((header) => {\n columnsIds.add(header.column.id)\n\n return header.isPlaceholder\n ? { ...header, isPlaceholder: false, rowSpan: fullDepth - depth }\n : { ...header, rowSpan: 1 }\n }),\n }\n })\n}\n\nfunction getMergeFooterGroups(\n headerGroups: HeaderGroup<any>[],\n): HeaderGroup<any>[] {\n if (headerGroups.length <= 1) return headerGroups\n\n return headerGroups.map((headerGroup, depth) => {\n const nextHeaderGroups = headerGroups.slice(depth + 1)\n\n return {\n ...headerGroup,\n headers: headerGroup.headers\n .filter((header) => !header.isPlaceholder)\n .map((header) => {\n if (nextHeaderGroups.length === 0) return header\n\n const rowSpan = nextHeaderGroups.reduce((acc, nextHeaderGroup) => {\n const hasNextHeader = nextHeaderGroup.headers.some(\n (nextHeader) => nextHeader.column.id === header.column.id,\n )\n\n return acc + (hasNextHeader ? 1 : 0)\n }, 1)\n\n return { ...header, rowSpan }\n }),\n }\n })\n}\n\nexport interface ColumnSort<Y extends RowData> {\n desc: boolean\n id: keyof Y\n}\nexport type SortingState<Y extends RowData> = ColumnSort<Y>[]\n\ninterface ComponentContext extends Pick<\n TableProps<any>,\n | \"columnResizeMode\"\n | \"resizableTriggerProps\"\n | \"sortingIcon\"\n | \"sortingIconProps\"\n> {\n table: ReactTable<any>\n}\n\ninterface OmittedTableOptions<Y extends RowData> extends Omit<\n TableOptions<Y>,\n | \"getCoreRowModel\"\n | \"onColumnFiltersChange\"\n | \"onPaginationChange\"\n | \"onSortingChange\"\n> {}\n\ninterface PickedNativeTableProps extends Pick<\n NativeTable.RootProps,\n | \"className\"\n | \"highlightOnHover\"\n | \"highlightOnSelected\"\n | \"layout\"\n | \"scrollAreaProps\"\n | \"size\"\n | \"stickyFooter\"\n | \"stickyHeader\"\n | \"striped\"\n | \"variant\"\n | \"withBorder\"\n | \"withColumnBorders\"\n | \"withScrollArea\"\n> {}\n\nexport interface TableProps<Y extends RowData>\n extends\n OmittedTableOptions<Y>,\n PickedNativeTableProps,\n Pick<CSSProps, \"colorScheme\" | \"lineClamp\" | \"truncated\"> {\n /**\n * The column filters state of the table.\n */\n columnFilters?: ColumnFiltersState\n /**\n * The default column filters state of the table.\n */\n defaultColumnFilters?: ColumnFiltersState\n /**\n * The default pagination state of the table.\n */\n defaultPagination?: PaginationState\n /**\n * The default row selection state of the table.\n */\n defaultRowSelection?: RowSelectionState\n /**\n * The default sorting state of the table.\n */\n defaultSorting?: SortingState<Y>\n /**\n * If `true`, the table width will be automatically resized to the content.\n *\n * @default false\n */\n enableAutoResizeTableWidth?: boolean\n /**\n * If `true`, the keyboard navigation will be enabled.\n *\n * @default true\n */\n enableKeyboardNavigation?: boolean\n /**\n * If `true`, the pagination will be enabled.\n *\n * @default false\n */\n enablePagination?: boolean\n /**\n * The footer of the table.\n */\n footer?: ReactNodeOrFunction<ReactTable<Y>>\n /**\n * The header of the table.\n */\n header?: ReactNodeOrFunction<ReactTable<Y>>\n /**\n * The initial focusable cell of the table.\n *\n * @default {rowIndex: 0, colIndex: 0}\n */\n initialFocusableCell?: { colIndex: number; rowIndex: number }\n /**\n * The pagination state of the table.\n */\n pagination?: PaginationState\n /**\n * The row selection state of the table.\n */\n rowSelection?: RowSelectionState\n /**\n * If `true`, the row will be selected when the row is clicked.\n *\n * @default false\n */\n selectOnClickRow?: boolean\n /**\n * The sorting state of the table.\n */\n sorting?: SortingState<Y>\n /**\n * The sorting icon of the table.\n */\n sortingIcon?: ReactNodeOrFunction<false | SortDirection>\n /**\n * If `true`, the table will have a checkbox column.\n *\n * @default true\n */\n withCheckbox?: boolean\n /**\n * If `true`, the table will have a checkbox in the footer.\n *\n * @default false\n */\n withFooterCheckbox?: boolean\n /**\n * If `true`, the table will have footer groups.\n *\n * @default false\n */\n withFooterGroups?: boolean\n /**\n * The props for the table cell.\n */\n cellProps?: TransformProps<NativeTable.TdProps, Cell<Y, unknown>>\n /**\n * The props for the checkbox.\n */\n checkboxProps?: CheckboxProps\n /**\n * The props for the table footer group.\n */\n footerGroupProps?: TransformProps<NativeTable.TrProps, HeaderGroup<Y>>\n /**\n * The props for the table footer.\n */\n footerProps?: TransformProps<NativeTable.ThProps, Header<Y, unknown>>\n /**\n * The props for the table header checkbox.\n */\n headerCheckboxProps?: TransformProps<CheckboxProps, Header<Y, unknown>>\n /**\n * The props for the table header group.\n */\n headerGroupProps?: TransformProps<NativeTable.TrProps, HeaderGroup<Y>>\n /**\n * The props for the table header.\n */\n headerProps?: TransformProps<NativeTable.ThProps, Header<Y, unknown>>\n /**\n * The props for the resizable trigger.\n */\n resizableTriggerProps?: TransformProps<\n Omit<ResizableTriggerProps, \"resizing\">,\n Header<Y, unknown>\n >\n /**\n * The props for the table row checkbox.\n */\n rowCheckboxProps?: TransformProps<CheckboxProps, Row<Y>>\n /**\n * The props for the table row.\n */\n rowProps?: TransformProps<NativeTable.TrProps, Row<Y>>\n /**\n * The props for the sorting icon.\n */\n sortingIconProps?: TransformProps<\n Omit<SortingIconProps, \"sorted\">,\n Header<Y, unknown>\n >\n /**\n * The props for the table.\n */\n tableProps?: NativeTable.RootProps\n /**\n * The props for the table tbody.\n */\n tbodyProps?: NativeTable.TbodyProps\n /**\n * The props for the table tfoot.\n */\n tfootProps?: NativeTable.TfootProps\n /**\n * The props for the table thead.\n */\n theadProps?: NativeTable.TheadProps\n /**\n * The callback invoked when the column filters state changes.\n */\n onColumnFiltersChange?: (columnFilters: ColumnFiltersState) => void\n /**\n * The callback invoked when the pagination state changes.\n */\n onPaginationChange?: (pagination: PaginationState) => void\n /**\n * The callback invoked when the row is clicked.\n */\n onRowClick?: (row: Row<Y>) => void\n /**\n * The callback invoked when the row is double clicked.\n */\n onRowDoubleClick?: (row: Row<Y>) => void\n /**\n * The callback invoked when the sorting state changes.\n */\n onSortingChange?: (sorting: SortingState<Y>) => void\n}\n\nconst {\n ComponentContext,\n PropsContext: TablePropsContext,\n useComponentContext,\n usePropsContext: useTablePropsContext,\n withContext,\n} = createComponent<TableProps<any>, any, ComponentContext>(\"table\")\n\nexport { TablePropsContext, useTablePropsContext }\n\n/**\n * `Table` is a table component equipped with column sorting, row selection, and click event features.\n *\n * @see https://yamada-ui.com/docs/components/table\n */\nexport const Table = withContext(\n <Y extends RowData>({\n className,\n colorScheme,\n size,\n variant,\n columnFilters: columnFiltersProp,\n columnResizeMode = \"onChange\",\n columns: columnsProp,\n data,\n defaultColumnFilters,\n defaultPagination = { pageIndex: 0, pageSize: 20 },\n defaultRowSelection = {},\n defaultSorting,\n enableAutoResizeTableWidth = false,\n enableColumnResizing = false,\n enableKeyboardNavigation = true,\n enablePagination = false,\n enableRowSelection = false,\n footer,\n header,\n highlightOnHover = !!enableRowSelection,\n highlightOnSelected = !!enableRowSelection,\n initialFocusableCell = { colIndex: 0, rowIndex: 0 },\n layout,\n lineClamp,\n manualPagination,\n pagination: paginationProp,\n rowCount: totalRowCount,\n rowSelection: rowSelectionProp,\n selectOnClickRow = false,\n sortDescFirst = false,\n sorting: sortingProp,\n sortingIcon,\n state,\n stickyFooter,\n stickyHeader,\n striped,\n truncated,\n withBorder,\n withCheckbox = true,\n withColumnBorders,\n withFooterCheckbox = false,\n withFooterGroups = false,\n withScrollArea,\n cellProps,\n checkboxProps,\n footerGroupProps,\n footerProps,\n headerCheckboxProps,\n headerGroupProps,\n headerProps,\n resizableTriggerProps,\n rowCheckboxProps,\n rowProps,\n scrollAreaProps,\n sortingIconProps,\n tableProps,\n tbodyProps,\n tfootProps,\n theadProps,\n onColumnFiltersChange: onColumnFiltersChangeProp,\n onPaginationChange: onPaginationChangeProp,\n onRowClick,\n onRowDoubleClick,\n onRowSelectionChange: onRowSelectionChangeProp,\n onSortingChange: onSortingChangeProp,\n ...rest\n }: TableProps<Y>) => {\n const { t } = useI18n(\"table\")\n const initialFocus = useRef<boolean>(false)\n const ref = useRef<HTMLTableElement>(null)\n const focusedCell = useRef<null | { colIndex: number; rowIndex: number }>(\n null,\n )\n const [rowSelection, onRowSelectionChange] = useControllableState({\n defaultValue: defaultRowSelection,\n value: rowSelectionProp,\n onChange: onRowSelectionChangeProp,\n })\n const [sorting, onSortingChange] = useControllableState({\n defaultValue: defaultSorting,\n value: sortingProp,\n onChange: onSortingChangeProp,\n })\n const [pagination, onPaginationChange] = useControllableState({\n defaultValue: defaultPagination,\n value: paginationProp,\n onChange: onPaginationChangeProp,\n })\n const [columnFilters, onColumnFiltersChange] = useControllableState({\n defaultValue: defaultColumnFilters,\n value: columnFiltersProp,\n onChange: onColumnFiltersChangeProp,\n })\n const columns = useMemo(() => {\n if (!enableRowSelection || !withCheckbox) return columnsProp\n\n const clonedColumns = [...columnsProp]\n\n const header = ({ header, table }: HeaderContext<Y, any>) => {\n return (\n <Checkbox\n {...mergeProps(\n {\n checked: table.getIsAllRowsSelected(),\n indeterminate: table.getIsSomeRowsSelected(),\n indicatorProps: { outline: \"none\" },\n inputProps: {\n \"aria-label\": t(\"Select all rows\"),\n \"data-focusable\": \"\",\n tabIndex: -1,\n },\n onChange: table.getToggleAllRowsSelectedHandler(),\n },\n checkboxProps ?? {},\n runIfFn(headerCheckboxProps, header) ?? {},\n )()}\n />\n )\n }\n\n const cell = ({ row }: CellContext<Y, any>) => {\n return (\n <Checkbox\n {...mergeProps(\n {\n checked: row.getIsSelected(),\n disabled: !row.getCanSelect(),\n indeterminate: row.getIsSomeSelected(),\n indicatorProps: { outline: \"none\" },\n inputProps: {\n \"aria-label\": t(\"Select row\"),\n \"data-focusable\": \"\",\n tabIndex: -1,\n },\n onChange: row.getToggleSelectedHandler(),\n },\n checkboxProps ?? {},\n runIfFn(rowCheckboxProps, row) ?? {},\n )()}\n />\n )\n }\n\n clonedColumns.unshift({\n id: \"select\",\n cell,\n header,\n ...(withFooterCheckbox\n ? { footer: header }\n : { footerProps: { \"aria-hidden\": \"true\" } }),\n cellProps: { verticalAlign: \"middle\" },\n headerProps: { w: \"calc({spaces.4} + {space-x} * 2)\" },\n })\n\n return clonedColumns\n }, [\n checkboxProps,\n columnsProp,\n enableRowSelection,\n headerCheckboxProps,\n rowCheckboxProps,\n t,\n withCheckbox,\n withFooterCheckbox,\n ])\n const table = useReactTable<Y>({\n columnResizeMode,\n columns,\n data,\n enableColumnResizing,\n enableRowSelection,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualPagination,\n rowCount: totalRowCount,\n sortDescFirst,\n state: {\n columnFilters,\n pagination: enablePagination ? pagination : undefined,\n rowSelection,\n sorting: sorting as OriginalSortingState,\n ...state,\n },\n onColumnFiltersChange,\n onPaginationChange,\n onRowSelectionChange,\n onSortingChange: onSortingChange as OnChangeFn<OriginalSortingState>,\n ...(enablePagination\n ? { getPaginationRowModel: getPaginationRowModel() }\n : {}),\n ...rest,\n })\n const headerGroups = table.getHeaderGroups()\n const mergedHeaderGroups = getMergeHeaderGroups(headerGroups)\n const rows = table.getRowModel().rows\n const footerGroups = table.getFooterGroups()\n const mergedFooterGroups = getMergeFooterGroups(\n withFooterGroups ? footerGroups : [],\n )\n const headerGroupCount = headerGroups.length\n const rowCount = rows.length\n const colCount = table.getAllLeafColumns().length\n const maxColIndex = colCount - 1\n const pageIndex = enablePagination\n ? table.getState().pagination.pageIndex\n : 0\n const cellMap = useMemo(() => {\n const cellMap = new Map<string, string>()\n\n if (!enableKeyboardNavigation) return cellMap\n\n const insertCellMap = (\n id: string,\n colSpan: number,\n rowSpan: number,\n colIndex: number,\n rowIndex: number,\n ) => {\n for (let i = 0; i < colSpan; i++)\n cellMap.set(`${colIndex + i}-${rowIndex}`, `${colIndex}-${rowIndex}`)\n\n for (let i = 1; i < rowSpan; i++)\n cellMap.set(`${colIndex}-${rowIndex + i}`, `${colIndex}-${rowIndex}`)\n }\n\n const insertCellMapByHeaderGroup = (\n headerGroup: HeaderGroup<Y>,\n rowIndex: number,\n ) => {\n let placeholderCount = 0\n\n headerGroup.headers.forEach((header) => {\n const colSpan = header.colSpan || 1\n const rowSpan = header.rowSpan || 1\n const colIndex = header.index + placeholderCount\n\n placeholderCount += colSpan - 1\n\n insertCellMap(header.id, colSpan, rowSpan, colIndex, rowIndex)\n })\n }\n\n mergedHeaderGroups.forEach((headerGroup, rowIndex) => {\n insertCellMapByHeaderGroup(headerGroup, rowIndex)\n })\n\n rows.forEach((row, rowIndex) => {\n rowIndex += headerGroupCount\n\n row.getVisibleCells().forEach((cell) => {\n const colIndex = cell.column.getIndex()\n\n insertCellMap(cell.id, 1, 1, colIndex, rowIndex)\n })\n })\n\n mergedFooterGroups.forEach((footerGroup, rowIndex) => {\n rowIndex += headerGroupCount + rowCount\n\n insertCellMapByHeaderGroup(footerGroup, rowIndex)\n })\n\n return cellMap\n }, [\n enableKeyboardNavigation,\n headerGroupCount,\n mergedFooterGroups,\n mergedHeaderGroups,\n rows,\n rowCount,\n ])\n const context = useMemo(\n () => ({\n columnResizeMode,\n sortingIcon,\n table,\n resizableTriggerProps,\n sortingIconProps,\n }),\n [\n columnResizeMode,\n sortingIcon,\n sortingIconProps,\n resizableTriggerProps,\n table,\n ],\n )\n const getCell = (\n evOrEl:\n | Element\n | FocusEvent<HTMLTableElement>\n | KeyboardEvent<HTMLTableElement>\n | null\n | undefined,\n ) => {\n if (!evOrEl) return\n\n const el =\n evOrEl instanceof HTMLElement\n ? evOrEl.closest(\"th, td\")\n : \"target\" in evOrEl && evOrEl.target instanceof HTMLElement\n ? evOrEl.target.closest(\"th, td\")\n : null\n\n if (!(el instanceof HTMLTableCellElement)) return\n\n const { colindex, rowindex } = el.dataset\n const { colSpan, rowSpan } = el\n\n if (!colindex || !rowindex) return\n\n const colIndex = parseInt(colindex)\n const rowIndex = parseInt(rowindex)\n\n return { colIndex, colSpan, el, rowIndex, rowSpan }\n }\n const getShouldFocusCell = (colIndex: number, rowIndex: number) => {\n const [trulyColIndex, trulyRowIndex] =\n cellMap.get(`${colIndex}-${rowIndex}`)?.split(\"-\") ?? []\n\n if (!trulyColIndex || !trulyRowIndex) return\n\n const targetEl = ref.current?.querySelector(\n `[data-colindex=\"${trulyColIndex}\"][data-rowindex=\"${trulyRowIndex}\"]`,\n )\n\n if (!targetEl || !(targetEl instanceof HTMLTableCellElement)) return\n\n return targetEl\n }\n const removeTabIndex = (el: Element | null | undefined) => {\n if (!el || !(el instanceof HTMLElement)) return\n\n el.tabIndex = -1\n el.querySelectorAll(\"[data-focusable]\").forEach((el) => {\n if (el instanceof HTMLElement) el.tabIndex = -1\n })\n }\n const onCellFocus = (\n el: HTMLTableCellElement | null | undefined,\n colIndex: number,\n rowIndex: number,\n ) => {\n const targetEl = getShouldFocusCell(colIndex, rowIndex)\n\n if (!targetEl) return\n\n focusedCell.current = { colIndex, rowIndex }\n\n removeTabIndex(el)\n\n const shouldFocusEl =\n targetEl.querySelector(\"[data-focusable]\") ?? targetEl\n\n if (shouldFocusEl instanceof HTMLElement) {\n shouldFocusEl.tabIndex = 0\n shouldFocusEl.focus()\n }\n }\n const onFocus = (ev: FocusEvent<HTMLTableElement>) => {\n if (initialFocus.current) return\n\n initialFocus.current = true\n\n const cell = getCell(ev)\n\n if (!cell) return\n\n onCellFocus(cell.el, cell.colIndex, cell.rowIndex)\n }\n const onKeyDown = (ev: KeyboardEvent<HTMLTableElement>) => {\n if (!enableKeyboardNavigation) return\n\n const cell = getCell(ev)\n\n if (!cell) return\n\n runKeyAction(ev, {\n ArrowDown: () =>\n onCellFocus(cell.el, cell.colIndex, cell.rowIndex + cell.rowSpan),\n ArrowLeft: () => onCellFocus(cell.el, cell.colIndex - 1, cell.rowIndex),\n ArrowRight: () =>\n onCellFocus(cell.el, cell.colIndex + cell.colSpan, cell.rowIndex),\n ArrowUp: () => onCellFocus(cell.el, cell.colIndex, cell.rowIndex - 1),\n End: () => onCellFocus(cell.el, maxColIndex, cell.rowIndex),\n Home: () => onCellFocus(cell.el, 0, cell.rowIndex),\n ...(enablePagination\n ? {\n PageDown: () => {\n if (!table.getCanNextPage()) return\n\n table.setPageIndex(pageIndex + 1)\n },\n PageUp: () => {\n if (!table.getCanPreviousPage()) return\n\n table.setPageIndex(pageIndex - 1)\n },\n }\n : {}),\n })\n }\n const getTabIndex = (colIndex: number, rowIndex: number) => {\n if (!enableKeyboardNavigation) return undefined\n\n return colIndex === initialFocusableCell.colIndex &&\n rowIndex === initialFocusableCell.rowIndex\n ? 0\n : undefined\n }\n\n useUpdateEffect(() => {\n if (!enableKeyboardNavigation) return\n\n const { colIndex, rowIndex } = focusedCell.current ?? initialFocusableCell\n const targetEl = getShouldFocusCell(colIndex, rowIndex)\n\n if (targetEl) targetEl.tabIndex = 0\n }, [pageIndex, enableKeyboardNavigation])\n\n return (\n <ComponentContext value={context}>\n {header ? runIfFn(header, table) : null}\n\n <NativeTable.Root\n {...mergeProps(\n {\n ref,\n className,\n style:\n enableColumnResizing && enableAutoResizeTableWidth\n ? { width: table.getCenterTotalSize() }\n : {},\n colorScheme,\n size,\n variant,\n \"aria-colcount\": colCount,\n \"aria-multiselectable\": enableRowSelection ? \"true\" : undefined,\n \"aria-rowcount\": totalRowCount || data.length,\n highlightOnHover,\n highlightOnSelected,\n layout,\n role: \"grid\",\n stickyFooter,\n stickyHeader,\n striped,\n withBorder,\n withColumnBorders,\n withScrollArea,\n scrollAreaProps,\n onFocus,\n onKeyDown,\n },\n tableProps ?? {},\n )()}\n >\n <NativeTable.Thead {...theadProps}>\n {mergedHeaderGroups.map((headerGroup, rowIndex) => {\n let placeholderCount = 0\n\n return (\n <NativeTable.Tr\n key={headerGroup.id}\n aria-rowindex={rowIndex + 1}\n role=\"row\"\n {...runIfFn(headerGroupProps, headerGroup)}\n >\n {headerGroup.headers.map((header) => {\n const { columnDef } = header.column\n const colIndex = header.index + placeholderCount\n const tabIndex = getTabIndex(colIndex, rowIndex)\n const canSort = header.column.getCanSort()\n const sorted = header.column.getIsSorted()\n const canResize = header.column.getCanResize()\n const resizing = header.column.getIsResizing()\n const children = header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )\n\n placeholderCount += (header.colSpan || 1) - 1\n\n return (\n <NativeTable.Th\n key={header.id}\n aria-colindex={colIndex + 1}\n aria-rowindex={rowIndex + 1}\n aria-sort={\n sorted\n ? sorted === \"asc\"\n ? \"ascending\"\n : \"descending\"\n : \"none\"\n }\n data-colindex={colIndex}\n data-rowindex={rowIndex}\n colSpan={header.colSpan || undefined}\n numeric={columnDef.numeric}\n pe={\n canSort\n ? \"calc((1rem * {lineHeights.moderate}) + {space-x})\"\n : undefined\n }\n position=\"relative\"\n role=\"columnheader\"\n rowSpan={header.rowSpan || undefined}\n tabIndex={tabIndex}\n {...mergeProps(\n {\n css: {\n \"&:has([data-focusable]:focus-visible)\":\n focusRingStyle.outline,\n },\n style: enableColumnResizing\n ? { width: header.getSize() }\n : {},\n },\n runIfFn(headerProps, header) ?? {},\n columnDef.headerProps ?? {},\n )()}\n >\n <TruncatedText\n lineClamp={columnDef.lineClamp ?? lineClamp}\n truncated={columnDef.truncated ?? truncated}\n >\n {children}\n </TruncatedText>\n\n {canSort ? (\n <SortingIcon\n sorted={sorted}\n onClick={header.column.getToggleSortingHandler()}\n />\n ) : null}\n\n {canResize ? (\n <ResizableTrigger\n resizing={resizing}\n onDoubleClick={header.column.resetSize}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n />\n ) : null}\n </NativeTable.Th>\n )\n })}\n </NativeTable.Tr>\n )\n })}\n </NativeTable.Thead>\n\n <NativeTable.Tbody {...tbodyProps}>\n {rows.map((row, rowIndex) => {\n rowIndex += headerGroupCount\n\n const selected = !!rowSelection[row.id]\n const disabled =\n isFunction(enableRowSelection) && !enableRowSelection(row)\n\n return (\n <NativeTable.Tr\n id={row.id}\n key={row.id}\n aria-disabled={ariaAttr(disabled)}\n aria-rowindex={rowIndex + 1}\n aria-selected={ariaAttr(selected)}\n data-disabled={dataAttr(disabled)}\n data-selected={dataAttr(selected)}\n role=\"row\"\n {...mergeProps(\n {\n onClick:\n !disabled && selectOnClickRow\n ? () => row.toggleSelected(!selected)\n : undefined,\n },\n {\n onClick: !disabled ? () => onRowClick?.(row) : undefined,\n onDoubleClick: !disabled\n ? () => onRowDoubleClick?.(row)\n : undefined,\n },\n runIfFn(rowProps, row) ?? {},\n )()}\n >\n {row.getVisibleCells().map((cell) => {\n const { columnDef } = cell.column\n const colIndex = cell.column.getIndex()\n const tabIndex = getTabIndex(colIndex, rowIndex)\n const children = flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )\n\n return (\n <NativeTable.Td\n key={cell.id}\n aria-colindex={colIndex + 1}\n aria-rowindex={rowIndex + 1}\n data-colindex={colIndex}\n data-rowindex={rowIndex}\n numeric={columnDef.numeric}\n role=\"gridcell\"\n tabIndex={tabIndex}\n {...mergeProps(\n {\n css: {\n \"&:has([data-focusable]:focus-visible)\":\n focusRingStyle.outline,\n },\n },\n runIfFn(cellProps, cell) ?? {},\n columnDef.cellProps ?? {},\n )()}\n >\n <TruncatedText\n lineClamp={columnDef.lineClamp ?? lineClamp}\n truncated={columnDef.truncated ?? truncated}\n >\n {children}\n </TruncatedText>\n </NativeTable.Td>\n )\n })}\n </NativeTable.Tr>\n )\n })}\n </NativeTable.Tbody>\n\n {withFooterGroups ? (\n <NativeTable.Tfoot {...tfootProps}>\n {mergedFooterGroups.map((footerGroup, rowIndex) => {\n rowIndex += headerGroupCount + rowCount\n\n let placeholderCount = 0\n\n return (\n <NativeTable.Tr\n key={footerGroup.id}\n aria-rowindex={rowIndex + 1}\n role=\"row\"\n {...runIfFn(footerGroupProps, footerGroup)}\n >\n {footerGroup.headers.map((header) => {\n const { columnDef } = header.column\n const colIndex = header.index + placeholderCount\n const tabIndex = getTabIndex(colIndex, rowIndex)\n const children = header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.footer,\n header.getContext(),\n )\n\n placeholderCount += (header.colSpan || 1) - 1\n\n return (\n <NativeTable.Td\n key={header.id}\n aria-colindex={colIndex + 1}\n aria-rowindex={rowIndex + 1}\n data-colindex={colIndex}\n data-rowindex={rowIndex}\n colSpan={header.colSpan || undefined}\n numeric={columnDef.numeric}\n role=\"gridcell\"\n rowSpan={header.rowSpan || undefined}\n tabIndex={tabIndex}\n {...mergeProps(\n {\n css: {\n \"&:has([data-focusable]:focus-visible)\":\n focusRingStyle.outline,\n },\n },\n runIfFn(footerProps, header) ?? {},\n columnDef.footerProps ?? {},\n )()}\n >\n <TruncatedText\n lineClamp={columnDef.lineClamp ?? lineClamp}\n truncated={columnDef.truncated ?? truncated}\n >\n {children}\n </TruncatedText>\n </NativeTable.Td>\n )\n })}\n </NativeTable.Tr>\n )\n })}\n </NativeTable.Tfoot>\n ) : null}\n </NativeTable.Root>\n\n {footer ? runIfFn(footer, table) : null}\n </ComponentContext>\n )\n },\n)() as GenericsComponent<{\n <Y extends RowData>(props: TableProps<Y>): ReactElement\n}>\n\ninterface SortingIconProps extends HTMLStyledProps<\"button\"> {\n sorted: false | SortDirection\n}\n\nconst SortingIcon: FC<SortingIconProps> = ({ sorted, ...rest }) => {\n const { t } = useI18n(\"table\")\n const { sortingIcon, sortingIconProps = {} } = useComponentContext()\n const Icon = sorted ? ChevronUpIcon : ChevronsUpDownIcon\n\n return (\n <styled.button\n type=\"button\"\n layerStyle=\"ghost\"\n colorScheme=\"mono\"\n aria-label={t(\n sorted\n ? sorted === \"desc\"\n ? \"Sort descending\"\n : \"Sort ascending\"\n : \"Clear sorting\",\n )}\n data-focusable\n aspectRatio=\"1\"\n cursor=\"pointer\"\n display=\"center\"\n focusVisibleRing=\"none\"\n h=\"calc(1em * {lineHeights.moderate})\"\n position=\"absolute\"\n right=\"{space-x}\"\n rounded=\"l1\"\n tabIndex={-1}\n top=\"50%\"\n transform=\"translateY(-50%)\"\n transitionDuration=\"moderate\"\n transitionProperty=\"common\"\n _hover={{ layerStyle: \"ghost.hover\" }}\n {...mergeProps(rest, sortingIconProps)()}\n >\n {runIfFn(sortingIcon, sorted) ?? (\n <Icon transform={`rotate(${sorted === \"desc\" ? 180 : 0}deg)`} />\n )}\n </styled.button>\n )\n}\n\ninterface ResizableTriggerProps extends HTMLStyledProps {\n resizing: boolean\n}\n\nconst ResizableTrigger: FC<ResizableTriggerProps> = ({ resizing, ...rest }) => {\n const {\n columnResizeMode,\n table,\n resizableTriggerProps = {},\n } = useComponentContext()\n const offset = table.getState().columnSizingInfo.deltaOffset\n\n return (\n <styled.div\n data-active={dataAttr(resizing)}\n bg=\"colorScheme.solid\"\n cursor=\"col-resize\"\n insetY=\"0\"\n opacity={{ base: \"0\", _hover: \"1\", _active: \"1\" }}\n position=\"absolute\"\n right=\"0\"\n touchAction=\"none\"\n transform={`translateX(${columnResizeMode === \"onEnd\" && resizing && offset ? `${offset}px` : \"50%\"})`}\n userSelect=\"none\"\n w=\"1\"\n {...mergeProps(rest, resizableTriggerProps)()}\n />\n )\n}\n\ninterface TruncatedTextProps extends HTMLStyledProps<\"span\"> {}\n\nconst TruncatedText: FC<TruncatedTextProps> = ({\n children,\n lineClamp,\n truncated,\n ...rest\n}) => {\n if (lineClamp || truncated)\n return (\n <styled.span\n lineClamp={lineClamp}\n truncated={truncated}\n wordBreak=\"break-all\"\n {...rest}\n >\n {children}\n </styled.span>\n )\n else return children\n}\n"],"mappings":"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"}
@@ -16,8 +16,9 @@ const { ComponentContext, PropsContext: TabsPropsContext, useComponentContext, u
16
16
  * @see https://yamada-ui.com/docs/components/tabs
17
17
  */
18
18
  const TabsRoot = withProvider(({ children, items, lazy, lazyBehavior, orientation: orientationProp, ...rest }) => {
19
+ const computedOrientation = useValue(orientationProp);
19
20
  const { id, focusedIndex, index, manual, orientation, setFocusedIndex, setIndex, tabDescendants, tabPanelDescendants, getListProps, getRootProps } = useTabs({
20
- orientation: useValue(orientationProp),
21
+ orientation: computedOrientation,
21
22
  ...rest
22
23
  });
23
24
  const componentContext = useMemo(() => ({
@@ -29,30 +30,31 @@ const TabsRoot = withProvider(({ children, items, lazy, lazyBehavior, orientatio
29
30
  lazy,
30
31
  lazyBehavior
31
32
  ]);
33
+ const tabsContext = useMemo(() => ({
34
+ id,
35
+ focusedIndex,
36
+ index,
37
+ manual,
38
+ orientation,
39
+ setFocusedIndex,
40
+ setIndex,
41
+ getListProps
42
+ }), [
43
+ id,
44
+ manual,
45
+ focusedIndex,
46
+ index,
47
+ orientation,
48
+ setFocusedIndex,
49
+ setIndex,
50
+ getListProps
51
+ ]);
32
52
  return /* @__PURE__ */ jsx(TabDescendantsContext, {
33
53
  value: tabDescendants,
34
54
  children: /* @__PURE__ */ jsx(TabPanelDescendantsContext, {
35
55
  value: tabPanelDescendants,
36
56
  children: /* @__PURE__ */ jsx(TabsContext, {
37
- value: useMemo(() => ({
38
- id,
39
- focusedIndex,
40
- index,
41
- manual,
42
- orientation,
43
- setFocusedIndex,
44
- setIndex,
45
- getListProps
46
- }), [
47
- id,
48
- manual,
49
- focusedIndex,
50
- index,
51
- orientation,
52
- setFocusedIndex,
53
- setIndex,
54
- getListProps
55
- ]),
57
+ value: tabsContext,
56
58
  children: /* @__PURE__ */ jsx(ComponentContext, {
57
59
  value: componentContext,
58
60
  children: /* @__PURE__ */ jsx(styled.div, {
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","names":[],"sources":["../../../../src/components/tabs/tabs.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, PropsWithChildren, ReactNode } from \"react\"\nimport type { HTMLStyledProps, ThemeProps } from \"../../core\"\nimport type { UseLazyMountProps } from \"../../hooks/use-lazy-mount\"\nimport type { TabsStyle } from \"./tabs.style\"\nimport type { UseTabPanelProps, UseTabProps, UseTabsProps } from \"./use-tabs\"\nimport { useMemo } from \"react\"\nimport { createSlotComponent, styled } from \"../../core\"\nimport { useLazyMount } from \"../../hooks/use-lazy-mount\"\nimport { useValue } from \"../../hooks/use-value\"\nimport { isNull, isUndefined } from \"../../utils\"\nimport { tabsStyle } from \"./tabs.style\"\nimport {\n TabDescendantsContext,\n TabPanelDescendantsContext,\n TabsContext,\n useTab,\n useTabPanel,\n useTabs,\n useTabsContext,\n} from \"./use-tabs\"\n\ninterface ComponentContext extends Pick<\n TabsRootProps,\n \"items\" | \"lazy\" | \"lazyBehavior\"\n> {}\n\nexport interface TabsItem extends Omit<TabsTabProps, \"index\"> {\n /**\n * The content for panel element.\n */\n panel: ReactNode\n /**\n * The content for tab element.\n */\n tab: ReactNode\n /**\n * Props for panel element.\n */\n panelProps?: TabsPanelProps\n}\n\nexport interface TabsRootProps\n extends\n Omit<HTMLStyledProps, \"onChange\">,\n Omit<UseTabsProps, \"orientation\">,\n Pick<UseLazyMountProps, \"lazy\" | \"lazyBehavior\">,\n ThemeProps<TabsStyle> {\n /**\n * If provided, generate tab and panel components based on tabs.\n */\n items?: TabsItem[]\n}\n\nconst {\n ComponentContext,\n PropsContext: TabsPropsContext,\n useComponentContext,\n usePropsContext: useTabsPropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<TabsRootProps, TabsStyle, ComponentContext>(\n \"tabs\",\n tabsStyle,\n)\n\nexport { TabsPropsContext, useTabsPropsContext }\n\n/**\n * `Tabs` is a component for switching between different display areas.\n *\n * @see https://yamada-ui.com/docs/components/tabs\n */\nexport const TabsRoot = withProvider<\"div\", TabsRootProps, \"orientation\">(\n ({\n children,\n items,\n lazy,\n lazyBehavior,\n orientation: orientationProp,\n ...rest\n }) => {\n const computedOrientation = useValue(orientationProp)\n const {\n id,\n focusedIndex,\n index,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n tabDescendants,\n tabPanelDescendants,\n getListProps,\n getRootProps,\n } = useTabs({ orientation: computedOrientation, ...rest })\n const componentContext = useMemo(\n () => ({ items, lazy, lazyBehavior }),\n [items, lazy, lazyBehavior],\n )\n const tabsContext = useMemo(\n () => ({\n id,\n focusedIndex,\n index,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n getListProps,\n }),\n [\n id,\n manual,\n focusedIndex,\n index,\n orientation,\n setFocusedIndex,\n setIndex,\n getListProps,\n ],\n )\n\n return (\n <TabDescendantsContext value={tabDescendants}>\n <TabPanelDescendantsContext value={tabPanelDescendants}>\n <TabsContext value={tabsContext}>\n <ComponentContext value={componentContext}>\n <styled.div {...getRootProps()}>{children}</styled.div>\n </ComponentContext>\n </TabsContext>\n </TabPanelDescendantsContext>\n </TabDescendantsContext>\n )\n },\n \"root\",\n { transferProps: [\"orientation\"] },\n)()\n\nexport interface TabsListProps extends HTMLStyledProps {}\n\nexport const TabsList = withContext<\"div\", TabsListProps>(\n ({ children, ...rest }) => {\n const { items } = useComponentContext()\n const { getListProps } = useTabsContext()\n const computedChildren = useMemo(() => {\n if (children) return children\n else\n return items?.map(\n (\n { id, panel: _panel, tab, panelProps: _panelProps, ...rest },\n index,\n ) =>\n isUndefined(tab) || isNull(tab) ? null : (\n <TabsTab id={id} key={id ?? index} index={index} {...rest}>\n {tab}\n </TabsTab>\n ),\n )\n }, [children, items])\n\n return <styled.div {...getListProps(rest)}>{computedChildren}</styled.div>\n },\n \"list\",\n)()\n\nexport interface TabsTabProps extends HTMLStyledProps<\"button\">, UseTabProps {}\n\nexport const TabsTab = withContext<\"button\", TabsTabProps>(\"button\", \"tab\")(\n undefined,\n (props) => {\n const { getRootProps } = useTab(props)\n\n return getRootProps()\n },\n)\n\nexport interface TabsPanelsProps extends PropsWithChildren {}\n\nexport const TabsPanels: FC<TabsPanelsProps> = ({ children }) => {\n const { items } = useComponentContext()\n\n return useMemo(() => {\n if (children) return children\n else\n return items?.map(({ id, panel, panelProps }, index) =>\n isUndefined(panel) || isNull(panel) ? null : (\n <TabsPanel key={id ?? index} index={index} {...panelProps}>\n {panel}\n </TabsPanel>\n ),\n )\n }, [children, items])\n}\n\nexport interface TabsPanelProps extends HTMLStyledProps, UseTabPanelProps {}\n\nexport const TabsPanel = withContext<\"div\", TabsPanelProps>(\"div\", \"panel\")(\n undefined,\n (props) => {\n const { lazy, lazyBehavior } = useComponentContext()\n const { selected: mounted, getRootProps } = useTabPanel(props)\n const children = useLazyMount({ lazy, lazyBehavior, mounted, ...props })\n\n return { ...getRootProps(), children }\n },\n)\n"],"mappings":";;;;;;;;;;;AAuDA,MAAM,EACJ,kBACA,cAAc,kBACd,qBACA,iBAAiB,qBACjB,aACA,iBACE,oBACF,QACA,SACF;;;;;;AASA,MAAa,WAAW,cACrB,EACC,UACA,OACA,MACA,cACA,aAAa,iBACb,GAAG,WACC;CAEJ,MAAM,EACJ,IACA,cACA,OACA,QACA,aACA,iBACA,UACA,gBACA,qBACA,cACA,iBACE,QAAQ;EAAE,aAbc,SAAS,eAaQ;EAAG,GAAG;CAAK,CAAC;CACzD,MAAM,mBAAmB,eAChB;EAAE;EAAO;EAAM;CAAa,IACnC;EAAC;EAAO;EAAM;CAAY,CAC5B;CAwBA,OACE,oBAAC,uBAAD;EAAuB,OAAO;EAC5B,UAAA,oBAAC,4BAAD;GAA4B,OAAO;GACjC,UAAA,oBAAC,aAAD;IAAa,OA1BC,eACX;KACL;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACF,IACA;KACE;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACF,CAMkC;IAC5B,UAAA,oBAAC,kBAAD;KAAkB,OAAO;KACvB,UAAA,oBAAC,OAAO,KAAR;MAAY,GAAI,aAAa;MAAI;KAAqB,CAAA;IACtC,CAAA;GACP,CAAA;EACa,CAAA;CACP,CAAA;AAE3B,GACA,QACA,EAAE,eAAe,CAAC,aAAa,EAAE,CACnC,CAAC,CAAC;AAIF,MAAa,WAAW,aACrB,EAAE,UAAU,GAAG,WAAW;CACzB,MAAM,EAAE,UAAU,oBAAoB;CACtC,MAAM,EAAE,iBAAiB,eAAe;CACxC,MAAM,mBAAmB,cAAc;EACrC,IAAI,UAAU,OAAO;OAEnB,OAAO,OAAO,KAEV,EAAE,IAAI,OAAO,QAAQ,KAAK,YAAY,aAAa,GAAG,QACtD,WAAA,GAAA,cAAA,YAAA,CAEY,GAAG,MAAA,GAAA,cAAA,OAAA,CAAY,GAAG,IAAI,OAChC,oBAAC,SAAD;GAAa;GAA6B;GAAO,GAAI;GAClD,UAAA;EACM,GAFa,MAAM,KAEnB,CAEf;CACJ,GAAG,CAAC,UAAU,KAAK,CAAC;CAEpB,OAAO,oBAAC,OAAO,KAAR;EAAY,GAAI,aAAa,IAAI;EAAI,UAAA;CAA6B,CAAA;AAC3E,GACA,MACF,CAAC,CAAC;AAIF,MAAa,UAAU,YAAoC,UAAU,KAAK,CAAC,CACzE,KAAA,IACC,UAAU;CACT,MAAM,EAAE,iBAAiB,OAAO,KAAK;CAErC,OAAO,aAAa;AACtB,CACF;AAIA,MAAa,cAAmC,EAAE,eAAe;CAC/D,MAAM,EAAE,UAAU,oBAAoB;CAEtC,OAAO,cAAc;EACnB,IAAI,UAAU,OAAO;OAEnB,OAAO,OAAO,KAAK,EAAE,IAAI,OAAO,cAAc,WAAA,GAAA,cAAA,YAAA,CAChC,KAAK,MAAA,GAAA,cAAA,OAAA,CAAY,KAAK,IAAI,OACpC,oBAAC,WAAD;GAAoC;GAAO,GAAI;GAC5C,UAAA;EACQ,GAFK,MAAM,KAEX,CAEf;CACJ,GAAG,CAAC,UAAU,KAAK,CAAC;AACtB;AAIA,MAAa,YAAY,YAAmC,OAAO,OAAO,CAAC,CACzE,KAAA,IACC,UAAU;CACT,MAAM,EAAE,MAAM,iBAAiB,oBAAoB;CACnD,MAAM,EAAE,UAAU,SAAS,iBAAiB,YAAY,KAAK;CAC7D,MAAM,WAAW,aAAa;EAAE;EAAM;EAAc;EAAS,GAAG;CAAM,CAAC;CAEvE,OAAO;EAAE,GAAG,aAAa;EAAG;CAAS;AACvC,CACF"}
1
+ {"version":3,"file":"tabs.js","names":["isUndefined","isNull"],"sources":["../../../../src/components/tabs/tabs.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, PropsWithChildren, ReactNode } from \"react\"\nimport type { HTMLStyledProps, ThemeProps } from \"../../core\"\nimport type { UseLazyMountProps } from \"../../hooks/use-lazy-mount\"\nimport type { TabsStyle } from \"./tabs.style\"\nimport type { UseTabPanelProps, UseTabProps, UseTabsProps } from \"./use-tabs\"\nimport { useMemo } from \"react\"\nimport { createSlotComponent, styled } from \"../../core\"\nimport { useLazyMount } from \"../../hooks/use-lazy-mount\"\nimport { useValue } from \"../../hooks/use-value\"\nimport { isNull, isUndefined } from \"../../utils\"\nimport { tabsStyle } from \"./tabs.style\"\nimport {\n TabDescendantsContext,\n TabPanelDescendantsContext,\n TabsContext,\n useTab,\n useTabPanel,\n useTabs,\n useTabsContext,\n} from \"./use-tabs\"\n\ninterface ComponentContext extends Pick<\n TabsRootProps,\n \"items\" | \"lazy\" | \"lazyBehavior\"\n> {}\n\nexport interface TabsItem extends Omit<TabsTabProps, \"index\"> {\n /**\n * The content for panel element.\n */\n panel: ReactNode\n /**\n * The content for tab element.\n */\n tab: ReactNode\n /**\n * Props for panel element.\n */\n panelProps?: TabsPanelProps\n}\n\nexport interface TabsRootProps\n extends\n Omit<HTMLStyledProps, \"onChange\">,\n Omit<UseTabsProps, \"orientation\">,\n Pick<UseLazyMountProps, \"lazy\" | \"lazyBehavior\">,\n ThemeProps<TabsStyle> {\n /**\n * If provided, generate tab and panel components based on tabs.\n */\n items?: TabsItem[]\n}\n\nconst {\n ComponentContext,\n PropsContext: TabsPropsContext,\n useComponentContext,\n usePropsContext: useTabsPropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<TabsRootProps, TabsStyle, ComponentContext>(\n \"tabs\",\n tabsStyle,\n)\n\nexport { TabsPropsContext, useTabsPropsContext }\n\n/**\n * `Tabs` is a component for switching between different display areas.\n *\n * @see https://yamada-ui.com/docs/components/tabs\n */\nexport const TabsRoot = withProvider<\"div\", TabsRootProps, \"orientation\">(\n ({\n children,\n items,\n lazy,\n lazyBehavior,\n orientation: orientationProp,\n ...rest\n }) => {\n const computedOrientation = useValue(orientationProp)\n const {\n id,\n focusedIndex,\n index,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n tabDescendants,\n tabPanelDescendants,\n getListProps,\n getRootProps,\n } = useTabs({ orientation: computedOrientation, ...rest })\n const componentContext = useMemo(\n () => ({ items, lazy, lazyBehavior }),\n [items, lazy, lazyBehavior],\n )\n const tabsContext = useMemo(\n () => ({\n id,\n focusedIndex,\n index,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n getListProps,\n }),\n [\n id,\n manual,\n focusedIndex,\n index,\n orientation,\n setFocusedIndex,\n setIndex,\n getListProps,\n ],\n )\n\n return (\n <TabDescendantsContext value={tabDescendants}>\n <TabPanelDescendantsContext value={tabPanelDescendants}>\n <TabsContext value={tabsContext}>\n <ComponentContext value={componentContext}>\n <styled.div {...getRootProps()}>{children}</styled.div>\n </ComponentContext>\n </TabsContext>\n </TabPanelDescendantsContext>\n </TabDescendantsContext>\n )\n },\n \"root\",\n { transferProps: [\"orientation\"] },\n)()\n\nexport interface TabsListProps extends HTMLStyledProps {}\n\nexport const TabsList = withContext<\"div\", TabsListProps>(\n ({ children, ...rest }) => {\n const { items } = useComponentContext()\n const { getListProps } = useTabsContext()\n const computedChildren = useMemo(() => {\n if (children) return children\n else\n return items?.map(\n (\n { id, panel: _panel, tab, panelProps: _panelProps, ...rest },\n index,\n ) =>\n isUndefined(tab) || isNull(tab) ? null : (\n <TabsTab id={id} key={id ?? index} index={index} {...rest}>\n {tab}\n </TabsTab>\n ),\n )\n }, [children, items])\n\n return <styled.div {...getListProps(rest)}>{computedChildren}</styled.div>\n },\n \"list\",\n)()\n\nexport interface TabsTabProps extends HTMLStyledProps<\"button\">, UseTabProps {}\n\nexport const TabsTab = withContext<\"button\", TabsTabProps>(\"button\", \"tab\")(\n undefined,\n (props) => {\n const { getRootProps } = useTab(props)\n\n return getRootProps()\n },\n)\n\nexport interface TabsPanelsProps extends PropsWithChildren {}\n\nexport const TabsPanels: FC<TabsPanelsProps> = ({ children }) => {\n const { items } = useComponentContext()\n\n return useMemo(() => {\n if (children) return children\n else\n return items?.map(({ id, panel, panelProps }, index) =>\n isUndefined(panel) || isNull(panel) ? null : (\n <TabsPanel key={id ?? index} index={index} {...panelProps}>\n {panel}\n </TabsPanel>\n ),\n )\n }, [children, items])\n}\n\nexport interface TabsPanelProps extends HTMLStyledProps, UseTabPanelProps {}\n\nexport const TabsPanel = withContext<\"div\", TabsPanelProps>(\"div\", \"panel\")(\n undefined,\n (props) => {\n const { lazy, lazyBehavior } = useComponentContext()\n const { selected: mounted, getRootProps } = useTabPanel(props)\n const children = useLazyMount({ lazy, lazyBehavior, mounted, ...props })\n\n return { ...getRootProps(), children }\n },\n)\n"],"mappings":";;;;;;;;;;;AAuDA,MAAM,EACJ,kBACA,cAAc,kBACd,qBACA,iBAAiB,qBACjB,aACA,iBACE,oBACF,QACA,SACF;;;;;;AASA,MAAa,WAAW,cACrB,EACC,UACA,OACA,MACA,cACA,aAAa,iBACb,GAAG,WACC;CACJ,MAAM,sBAAsB,SAAS,eAAe;CACpD,MAAM,EACJ,IACA,cACA,OACA,QACA,aACA,iBACA,UACA,gBACA,qBACA,cACA,iBACE,QAAQ;EAAE,aAAa;EAAqB,GAAG;CAAK,CAAC;CACzD,MAAM,mBAAmB,eAChB;EAAE;EAAO;EAAM;CAAa,IACnC;EAAC;EAAO;EAAM;CAAY,CAC5B;CACA,MAAM,cAAc,eACX;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,OACE,oBAAC,uBAAD;EAAuB,OAAO;EAC5B,UAAA,oBAAC,4BAAD;GAA4B,OAAO;GACjC,UAAA,oBAAC,aAAD;IAAa,OAAO;IAClB,UAAA,oBAAC,kBAAD;KAAkB,OAAO;KACvB,UAAA,oBAAC,OAAO,KAAR;MAAY,GAAI,aAAa;MAAI;KAAqB,CAAA;IACtC,CAAA;GACP,CAAA;EACa,CAAA;CACP,CAAA;AAE3B,GACA,QACA,EAAE,eAAe,CAAC,aAAa,EAAE,CACnC,CAAC,CAAC;AAIF,MAAa,WAAW,aACrB,EAAE,UAAU,GAAG,WAAW;CACzB,MAAM,EAAE,UAAU,oBAAoB;CACtC,MAAM,EAAE,iBAAiB,eAAe;CACxC,MAAM,mBAAmB,cAAc;EACrC,IAAI,UAAU,OAAO;OAEnB,OAAO,OAAO,KAEV,EAAE,IAAI,OAAO,QAAQ,KAAK,YAAY,aAAa,GAAG,QACtD,WAAA,GAEAA,cAAAA,YAAAA,CAAY,GAAG,MAAA,GAAKC,cAAAA,OAAAA,CAAO,GAAG,IAAI,OAChC,oBAAC,SAAD;GAAa;GAA6B;GAAO,GAAI;GAClD,UAAA;EACM,GAFa,MAAM,KAEnB,CAEf;CACJ,GAAG,CAAC,UAAU,KAAK,CAAC;CAEpB,OAAO,oBAAC,OAAO,KAAR;EAAY,GAAI,aAAa,IAAI;EAAI,UAAA;CAA6B,CAAA;AAC3E,GACA,MACF,CAAC,CAAC;AAIF,MAAa,UAAU,YAAoC,UAAU,KAAK,CAAC,CACzE,KAAA,IACC,UAAU;CACT,MAAM,EAAE,iBAAiB,OAAO,KAAK;CAErC,OAAO,aAAa;AACtB,CACF;AAIA,MAAa,cAAmC,EAAE,eAAe;CAC/D,MAAM,EAAE,UAAU,oBAAoB;CAEtC,OAAO,cAAc;EACnB,IAAI,UAAU,OAAO;OAEnB,OAAO,OAAO,KAAK,EAAE,IAAI,OAAO,cAAc,WAAA,GAC5CD,cAAAA,YAAAA,CAAY,KAAK,MAAA,GAAKC,cAAAA,OAAAA,CAAO,KAAK,IAAI,OACpC,oBAAC,WAAD;GAAoC;GAAO,GAAI;GAC5C,UAAA;EACQ,GAFK,MAAM,KAEX,CAEf;CACJ,GAAG,CAAC,UAAU,KAAK,CAAC;AACtB;AAIA,MAAa,YAAY,YAAmC,OAAO,OAAO,CAAC,CACzE,KAAA,IACC,UAAU;CACT,MAAM,EAAE,MAAM,iBAAiB,oBAAoB;CACnD,MAAM,EAAE,UAAU,SAAS,iBAAiB,YAAY,KAAK;CAC7D,MAAM,WAAW,aAAa;EAAE;EAAM;EAAc;EAAS,GAAG;CAAM,CAAC;CAEvE,OAAO;EAAE,GAAG,aAAa;EAAG;CAAS;AACvC,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-tabs.js","names":["createContext"],"sources":["../../../../src/components/tabs/use-tabs.ts"],"sourcesContent":["\"use client\"\n\nimport type { KeyboardEvent } from \"react\"\nimport type { HTMLProps, Orientation, PropGetter } from \"../../core\"\nimport { useCallback, useId, useState } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport {\n createContext,\n cx,\n handlerAll,\n isUndefined,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\n\nconst {\n DescendantsContext: TabDescendantsContext,\n useDescendant: useTabDescendant,\n useDescendants: useTabDescendants,\n} = createDescendants<HTMLButtonElement>()\n\nexport { TabDescendantsContext, useTabDescendant, useTabDescendants }\n\nconst {\n DescendantsContext: TabPanelDescendantsContext,\n useDescendant: useTabPanelDescendant,\n useDescendants: useTabPanelDescendants,\n} = createDescendants<HTMLDivElement>()\n\nexport {\n TabPanelDescendantsContext,\n useTabPanelDescendant,\n useTabPanelDescendants,\n}\n\ninterface TabsContext extends Omit<\n UseTabsReturn,\n \"getRootProps\" | \"tabDescendants\" | \"tabPanelDescendants\"\n> {}\n\nconst [TabsContext, useTabsContext] = createContext<TabsContext>({\n name: \"TabsContext\",\n})\n\nexport { TabsContext, useTabsContext }\n\nexport interface UseTabsProps extends Omit<HTMLProps, \"onChange\"> {\n /**\n * The index of the selected tab.\n */\n defaultIndex?: number\n /**\n * The index of the selected tab.\n */\n index?: number\n /**\n * If `true`, the tabs will be manually activated and display its panel by pressing Space or Enter.\n *\n * If `false`, the tabs will be automatically activated and their panel is displayed when they receive focus.\n *\n * @default false\n */\n manual?: boolean\n /**\n * The orientation of the tabs.\n *\n * @default 'horizontal'\n */\n orientation?: Orientation\n /**\n * The callback invoked when the index changes.\n */\n onChange?: (index: number) => void\n}\n\nexport const useTabs = ({\n id,\n defaultIndex = 0,\n index: indexProp,\n manual = false,\n orientation = \"horizontal\",\n onChange,\n ...rest\n}: UseTabsProps = {}) => {\n const uuid = useId()\n const tabDescendants = useTabDescendants()\n const tabPanelDescendants = useTabPanelDescendants()\n const [index, setIndex] = useControllableState({\n defaultValue: defaultIndex,\n value: indexProp,\n onChange,\n })\n const [focusedIndex, setFocusedIndex] = useState<number>(index)\n const horizontal = orientation === \"horizontal\"\n\n id ??= uuid\n\n const onFocusFirstTab = useCallback(() => {\n const first = tabDescendants.enabledFirstValue()\n\n if (first) first.node.focus()\n }, [tabDescendants])\n\n const onFocusLastTab = useCallback(() => {\n const last = tabDescendants.enabledLastValue()\n\n if (last) last.node.focus()\n }, [tabDescendants])\n\n const onFocusNextTab = useCallback(() => {\n const next = tabDescendants.enabledNextValue(focusedIndex)\n\n if (next) next.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onFocusPrevTab = useCallback(() => {\n const prev = tabDescendants.enabledPrevValue(focusedIndex)\n\n if (prev) prev.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n runKeyAction(ev, {\n ArrowDown: !horizontal ? onFocusNextTab : undefined,\n ArrowLeft: horizontal ? onFocusPrevTab : undefined,\n ArrowRight: horizontal ? onFocusNextTab : undefined,\n ArrowUp: !horizontal ? onFocusPrevTab : undefined,\n End: onFocusLastTab,\n Home: onFocusFirstTab,\n })\n },\n [\n horizontal,\n onFocusNextTab,\n onFocusPrevTab,\n onFocusLastTab,\n onFocusFirstTab,\n ],\n )\n\n useUpdateEffect(() => {\n if (isUndefined(indexProp)) return\n\n setIndex(indexProp)\n setFocusedIndex(indexProp)\n }, [indexProp])\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n mergeProps({ \"data-orientation\": orientation }, rest, props, { ref })(),\n [orientation, rest],\n )\n\n const getListProps: PropGetter = useCallback(\n (props = {}) => ({\n \"aria-orientation\": orientation,\n role: \"tablist\",\n ...props,\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [orientation, onKeyDown],\n )\n\n return {\n id,\n focusedIndex,\n index,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n tabDescendants,\n tabPanelDescendants,\n getListProps,\n getRootProps,\n }\n}\n\nexport type UseTabsReturn = ReturnType<typeof useTabs>\n\nexport interface UseTabProps extends HTMLProps<\"button\"> {\n /**\n * The index of the tab.\n */\n index: number\n}\n\nexport const useTab = ({ id, disabled, index, ...rest }: UseTabProps) => {\n const {\n id: rootId,\n index: selectedIndex,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n } = useTabsContext()\n const { register } = useTabDescendant({ disabled })\n const tabPanelId = `${rootId}-panel-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-tab-${index}`\n\n const onClick = useCallback(() => {\n if (!disabled) setIndex(index)\n }, [index, setIndex, disabled])\n\n const onFocus = useCallback(() => {\n if (disabled) return\n\n setFocusedIndex(index)\n\n if (!manual) setIndex(index)\n }, [setFocusedIndex, index, manual, disabled, setIndex])\n\n const getRootProps: PropGetter<\"button\"> = useCallback(\n ({ ref, ...props } = {}) =>\n mergeProps(\n {\n id,\n type: \"button\",\n \"aria-controls\": tabPanelId,\n \"aria-selected\": selected,\n \"data-orientation\": orientation,\n disabled,\n role: \"tab\",\n tabIndex: selected ? 0 : -1,\n },\n rest,\n props,\n { ref: mergeRefs(ref, register) },\n {\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onFocus: handlerAll(props.onFocus, rest.onFocus, onFocus),\n },\n )({ mergeEvent: false }),\n [\n disabled,\n id,\n onClick,\n onFocus,\n orientation,\n register,\n rest,\n selected,\n tabPanelId,\n ],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabReturn = ReturnType<typeof useTab>\n\nexport interface UseTabPanelProps extends HTMLProps {\n /**\n * The index of the tab panel.\n */\n index: number\n}\n\nexport const useTabPanel = ({\n id,\n \"aria-labelledby\": ariaLabelledbyProp,\n index,\n ...rest\n}: UseTabPanelProps) => {\n const { id: rootId, index: selectedIndex, orientation } = useTabsContext()\n const { register } = useTabPanelDescendant()\n const tabId = `${rootId}-tab-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-panel-${index}`\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) =>\n mergeProps(\n {\n id,\n \"aria-labelledby\": cx(ariaLabelledbyProp, ariaLabelledby, tabId),\n \"data-orientation\": orientation,\n hidden: !selected,\n role: \"tabpanel\",\n tabIndex: selected ? 0 : -1,\n },\n rest,\n props,\n { ref: mergeRefs(ref, register) },\n )(),\n [id, ariaLabelledbyProp, orientation, register, rest, selected, tabId],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabPanelReturn = ReturnType<typeof useTabPanel>\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-tabs.js","names":["createContext","isUndefined","handlerAll","cx"],"sources":["../../../../src/components/tabs/use-tabs.ts"],"sourcesContent":["\"use client\"\n\nimport type { KeyboardEvent } from \"react\"\nimport type { HTMLProps, Orientation, PropGetter } from \"../../core\"\nimport { useCallback, useId, useState } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport {\n createContext,\n cx,\n handlerAll,\n isUndefined,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\n\nconst {\n DescendantsContext: TabDescendantsContext,\n useDescendant: useTabDescendant,\n useDescendants: useTabDescendants,\n} = createDescendants<HTMLButtonElement>()\n\nexport { TabDescendantsContext, useTabDescendant, useTabDescendants }\n\nconst {\n DescendantsContext: TabPanelDescendantsContext,\n useDescendant: useTabPanelDescendant,\n useDescendants: useTabPanelDescendants,\n} = createDescendants<HTMLDivElement>()\n\nexport {\n TabPanelDescendantsContext,\n useTabPanelDescendant,\n useTabPanelDescendants,\n}\n\ninterface TabsContext extends Omit<\n UseTabsReturn,\n \"getRootProps\" | \"tabDescendants\" | \"tabPanelDescendants\"\n> {}\n\nconst [TabsContext, useTabsContext] = createContext<TabsContext>({\n name: \"TabsContext\",\n})\n\nexport { TabsContext, useTabsContext }\n\nexport interface UseTabsProps extends Omit<HTMLProps, \"onChange\"> {\n /**\n * The index of the selected tab.\n */\n defaultIndex?: number\n /**\n * The index of the selected tab.\n */\n index?: number\n /**\n * If `true`, the tabs will be manually activated and display its panel by pressing Space or Enter.\n *\n * If `false`, the tabs will be automatically activated and their panel is displayed when they receive focus.\n *\n * @default false\n */\n manual?: boolean\n /**\n * The orientation of the tabs.\n *\n * @default 'horizontal'\n */\n orientation?: Orientation\n /**\n * The callback invoked when the index changes.\n */\n onChange?: (index: number) => void\n}\n\nexport const useTabs = ({\n id,\n defaultIndex = 0,\n index: indexProp,\n manual = false,\n orientation = \"horizontal\",\n onChange,\n ...rest\n}: UseTabsProps = {}) => {\n const uuid = useId()\n const tabDescendants = useTabDescendants()\n const tabPanelDescendants = useTabPanelDescendants()\n const [index, setIndex] = useControllableState({\n defaultValue: defaultIndex,\n value: indexProp,\n onChange,\n })\n const [focusedIndex, setFocusedIndex] = useState<number>(index)\n const horizontal = orientation === \"horizontal\"\n\n id ??= uuid\n\n const onFocusFirstTab = useCallback(() => {\n const first = tabDescendants.enabledFirstValue()\n\n if (first) first.node.focus()\n }, [tabDescendants])\n\n const onFocusLastTab = useCallback(() => {\n const last = tabDescendants.enabledLastValue()\n\n if (last) last.node.focus()\n }, [tabDescendants])\n\n const onFocusNextTab = useCallback(() => {\n const next = tabDescendants.enabledNextValue(focusedIndex)\n\n if (next) next.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onFocusPrevTab = useCallback(() => {\n const prev = tabDescendants.enabledPrevValue(focusedIndex)\n\n if (prev) prev.node.focus()\n }, [tabDescendants, focusedIndex])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n runKeyAction(ev, {\n ArrowDown: !horizontal ? onFocusNextTab : undefined,\n ArrowLeft: horizontal ? onFocusPrevTab : undefined,\n ArrowRight: horizontal ? onFocusNextTab : undefined,\n ArrowUp: !horizontal ? onFocusPrevTab : undefined,\n End: onFocusLastTab,\n Home: onFocusFirstTab,\n })\n },\n [\n horizontal,\n onFocusNextTab,\n onFocusPrevTab,\n onFocusLastTab,\n onFocusFirstTab,\n ],\n )\n\n useUpdateEffect(() => {\n if (isUndefined(indexProp)) return\n\n setIndex(indexProp)\n setFocusedIndex(indexProp)\n }, [indexProp])\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n mergeProps({ \"data-orientation\": orientation }, rest, props, { ref })(),\n [orientation, rest],\n )\n\n const getListProps: PropGetter = useCallback(\n (props = {}) => ({\n \"aria-orientation\": orientation,\n role: \"tablist\",\n ...props,\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [orientation, onKeyDown],\n )\n\n return {\n id,\n focusedIndex,\n index,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n tabDescendants,\n tabPanelDescendants,\n getListProps,\n getRootProps,\n }\n}\n\nexport type UseTabsReturn = ReturnType<typeof useTabs>\n\nexport interface UseTabProps extends HTMLProps<\"button\"> {\n /**\n * The index of the tab.\n */\n index: number\n}\n\nexport const useTab = ({ id, disabled, index, ...rest }: UseTabProps) => {\n const {\n id: rootId,\n index: selectedIndex,\n manual,\n orientation,\n setFocusedIndex,\n setIndex,\n } = useTabsContext()\n const { register } = useTabDescendant({ disabled })\n const tabPanelId = `${rootId}-panel-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-tab-${index}`\n\n const onClick = useCallback(() => {\n if (!disabled) setIndex(index)\n }, [index, setIndex, disabled])\n\n const onFocus = useCallback(() => {\n if (disabled) return\n\n setFocusedIndex(index)\n\n if (!manual) setIndex(index)\n }, [setFocusedIndex, index, manual, disabled, setIndex])\n\n const getRootProps: PropGetter<\"button\"> = useCallback(\n ({ ref, ...props } = {}) =>\n mergeProps(\n {\n id,\n type: \"button\",\n \"aria-controls\": tabPanelId,\n \"aria-selected\": selected,\n \"data-orientation\": orientation,\n disabled,\n role: \"tab\",\n tabIndex: selected ? 0 : -1,\n },\n rest,\n props,\n { ref: mergeRefs(ref, register) },\n {\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onFocus: handlerAll(props.onFocus, rest.onFocus, onFocus),\n },\n )({ mergeEvent: false }),\n [\n disabled,\n id,\n onClick,\n onFocus,\n orientation,\n register,\n rest,\n selected,\n tabPanelId,\n ],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabReturn = ReturnType<typeof useTab>\n\nexport interface UseTabPanelProps extends HTMLProps {\n /**\n * The index of the tab panel.\n */\n index: number\n}\n\nexport const useTabPanel = ({\n id,\n \"aria-labelledby\": ariaLabelledbyProp,\n index,\n ...rest\n}: UseTabPanelProps) => {\n const { id: rootId, index: selectedIndex, orientation } = useTabsContext()\n const { register } = useTabPanelDescendant()\n const tabId = `${rootId}-tab-${index}`\n const selected = index === selectedIndex\n\n id ??= `${rootId}-panel-${index}`\n\n const getRootProps: PropGetter = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) =>\n mergeProps(\n {\n id,\n \"aria-labelledby\": cx(ariaLabelledbyProp, ariaLabelledby, tabId),\n \"data-orientation\": orientation,\n hidden: !selected,\n role: \"tabpanel\",\n tabIndex: selected ? 0 : -1,\n },\n rest,\n props,\n { ref: mergeRefs(ref, register) },\n )(),\n [id, ariaLabelledbyProp, orientation, register, rest, selected, tabId],\n )\n\n return { index, selected, getRootProps }\n}\n\nexport type UseTabPanelReturn = ReturnType<typeof useTabPanel>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","names":[],"sources":["../../../../src/components/tag/tag.tsx"],"sourcesContent":["\"use client\"\n\nimport type { MouseEventHandler, ReactNode } from \"react\"\nimport type { HTMLStyledProps, ThemeProps } from \"../../core\"\nimport type { TagStyle } from \"./tag.style\"\nimport { useMemo, useRef } from \"react\"\nimport { createSlotComponent, styled } from \"../../core\"\nimport { useClickable } from \"../../hooks/use-clickable\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport { dataAttr } from \"../../utils\"\nimport { XIcon } from \"../icon\"\nimport { tagStyle } from \"./tag.style\"\n\ninterface ComponentContext extends Pick<TagProps, \"disabled\"> {}\n\nexport interface TagProps\n extends HTMLStyledProps<\"span\">, ThemeProps<TagStyle> {\n /**\n * If `true`, the tag is disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * Icon to be displayed to the end of the tag.\n */\n endIcon?: ReactNode\n /**\n * Icon to be displayed to the start of the tag.\n */\n startIcon?: ReactNode\n /**\n * Props for tag close button element.\n */\n closeButtonProps?: TagCloseButtonProps\n /**\n * Props for content element.\n */\n contentProps?: TagContentProps\n /**\n * Props for icon element.\n */\n iconProps?: HTMLStyledProps<\"span\">\n /**\n * Function to be executed when the close button is clicked.\n */\n onClose?: MouseEventHandler<HTMLElement>\n}\n\nconst {\n ComponentContext,\n PropsContext: TagPropsContext,\n useComponentContext,\n usePropsContext: useTagPropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<TagProps, TagStyle, ComponentContext>(\"tag\", tagStyle)\n\nexport { TagPropsContext, useTagPropsContext }\n\n/**\n * `Tag` is a component used to categorize or organize items using keywords that describe them.\n *\n * @see https://yamada-ui.com/docs/components/tag\n */\nexport const Tag = withProvider<\"span\", TagProps, \"disabled\">(\n ({\n children,\n disabled,\n endIcon,\n startIcon,\n closeButtonProps,\n contentProps,\n iconProps,\n onClose,\n ...rest\n }) => {\n const context = useMemo(() => ({ disabled }), [disabled])\n\n return (\n <ComponentContext value={context}>\n <styled.span data-disabled={dataAttr(disabled)} {...rest}>\n {startIcon ? (\n <TagStartIcon {...iconProps}>{startIcon}</TagStartIcon>\n ) : null}\n\n {children ? (\n <TagContent {...contentProps}>{children}</TagContent>\n ) : null}\n\n {endIcon ? <TagEndIcon {...iconProps}>{endIcon}</TagEndIcon> : null}\n\n {onClose ? (\n <TagCloseButton onClick={onClose} {...closeButtonProps} />\n ) : null}\n </styled.span>\n </ComponentContext>\n )\n },\n \"root\",\n { transferProps: [\"disabled\"] },\n)()\n\ninterface TagContentProps extends HTMLStyledProps<\"span\"> {}\n\nconst TagContent = withContext<\"span\", TagContentProps>(\"span\", \"content\")(\n undefined,\n (props) => {\n const { disabled } = useComponentContext()\n\n return { \"data-disabled\": dataAttr(disabled), ...props }\n },\n)\n\ninterface TagStartIconProps extends HTMLStyledProps<\"span\"> {}\n\nconst TagStartIcon = withContext<\"span\", TagStartIconProps>(\"span\", [\n \"icon\",\n \"start\",\n])(undefined, (props) => {\n const { disabled } = useComponentContext()\n\n return { \"data-disabled\": dataAttr(disabled), ...props }\n})\n\ninterface TagEndIconProps extends HTMLStyledProps<\"span\"> {}\n\nconst TagEndIcon = withContext<\"span\", TagEndIconProps>(\"span\", [\n \"icon\",\n \"end\",\n])(undefined, (props) => {\n const { disabled } = useComponentContext()\n\n return { \"data-disabled\": dataAttr(disabled), ...props }\n})\n\ninterface TagCloseButtonProps extends HTMLStyledProps<\"span\"> {}\n\nconst TagCloseButton = withContext<\"span\", TagCloseButtonProps>(\"span\", [\n \"icon\",\n \"closeButton\",\n])(undefined, ({ children, ...props }) => {\n const ref = useRef<HTMLSpanElement>(null)\n const { disabled } = useComponentContext()\n const rest = useClickable<HTMLSpanElement>({ ref, disabled, ...props })\n const { t } = useI18n(\"tag\")\n\n return {\n \"aria-label\": t(\"Close tag\"),\n \"data-disabled\": dataAttr(disabled),\n children: children || <XIcon />,\n ...rest,\n }\n})\n"],"mappings":";;;;;;;;;;;AAiDA,MAAM,EACJ,kBACA,cAAc,iBACd,qBACA,iBAAiB,oBACjB,aACA,iBACE,oBAA0D,OAAO,QAAQ;;;;;;AAS7E,MAAa,MAAM,cAChB,EACC,UACA,UACA,SACA,WACA,kBACA,cACA,WACA,SACA,GAAG,WACC;CACJ,MAAM,UAAU,eAAe,EAAE,SAAS,IAAI,CAAC,QAAQ,CAAC;CAExD,OACE,oBAAC,kBAAD;EAAkB,OAAO;EACvB,UAAA,qBAAC,OAAO,MAAR;GAAa,kBAAA,GAAA,cAAA,SAAA,CAAwB,QAAQ;GAAG,GAAI;GAApD,UAAA;IACG,YACC,oBAAC,cAAD;KAAc,GAAI;KAAY,UAAA;IAAwB,CAAA,IACpD;IAEH,WACC,oBAAC,YAAD;KAAY,GAAI;KAAe;IAAqB,CAAA,IAClD;IAEH,UAAU,oBAAC,YAAD;KAAY,GAAI;KAAY,UAAA;IAAoB,CAAA,IAAI;IAE9D,UACC,oBAAC,gBAAD;KAAgB,SAAS;KAAS,GAAI;IAAmB,CAAA,IACvD;GACO;;CACG,CAAA;AAEtB,GACA,QACA,EAAE,eAAe,CAAC,UAAU,EAAE,CAChC,CAAC,CAAC;AAIF,MAAM,aAAa,YAAqC,QAAQ,SAAS,CAAC,CACxE,KAAA,IACC,UAAU;CACT,MAAM,EAAE,aAAa,oBAAoB;CAEzC,OAAO;EAAE,kBAAA,GAAA,cAAA,SAAA,CAA0B,QAAQ;EAAG,GAAG;CAAM;AACzD,CACF;AAIA,MAAM,eAAe,YAAuC,QAAQ,CAClE,QACA,OACF,CAAC,CAAC,CAAC,KAAA,IAAY,UAAU;CACvB,MAAM,EAAE,aAAa,oBAAoB;CAEzC,OAAO;EAAE,kBAAA,GAAA,cAAA,SAAA,CAA0B,QAAQ;EAAG,GAAG;CAAM;AACzD,CAAC;AAID,MAAM,aAAa,YAAqC,QAAQ,CAC9D,QACA,KACF,CAAC,CAAC,CAAC,KAAA,IAAY,UAAU;CACvB,MAAM,EAAE,aAAa,oBAAoB;CAEzC,OAAO;EAAE,kBAAA,GAAA,cAAA,SAAA,CAA0B,QAAQ;EAAG,GAAG;CAAM;AACzD,CAAC;AAID,MAAM,iBAAiB,YAAyC,QAAQ,CACtE,QACA,aACF,CAAC,CAAC,CAAC,KAAA,IAAY,EAAE,UAAU,GAAG,YAAY;CACxC,MAAM,MAAM,OAAwB,IAAI;CACxC,MAAM,EAAE,aAAa,oBAAoB;CACzC,MAAM,OAAO,aAA8B;EAAE;EAAK;EAAU,GAAG;CAAM,CAAC;CACtE,MAAM,EAAE,MAAM,QAAQ,KAAK;CAE3B,OAAO;EACL,cAAc,EAAE,WAAW;EAC3B,kBAAA,GAAA,cAAA,SAAA,CAA0B,QAAQ;EAClC,UAAU,YAAY,oBAAC,OAAD,CAAQ,CAAA;EAC9B,GAAG;CACL;AACF,CAAC"}
1
+ {"version":3,"file":"tag.js","names":["dataAttr"],"sources":["../../../../src/components/tag/tag.tsx"],"sourcesContent":["\"use client\"\n\nimport type { MouseEventHandler, ReactNode } from \"react\"\nimport type { HTMLStyledProps, ThemeProps } from \"../../core\"\nimport type { TagStyle } from \"./tag.style\"\nimport { useMemo, useRef } from \"react\"\nimport { createSlotComponent, styled } from \"../../core\"\nimport { useClickable } from \"../../hooks/use-clickable\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport { dataAttr } from \"../../utils\"\nimport { XIcon } from \"../icon\"\nimport { tagStyle } from \"./tag.style\"\n\ninterface ComponentContext extends Pick<TagProps, \"disabled\"> {}\n\nexport interface TagProps\n extends HTMLStyledProps<\"span\">, ThemeProps<TagStyle> {\n /**\n * If `true`, the tag is disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * Icon to be displayed to the end of the tag.\n */\n endIcon?: ReactNode\n /**\n * Icon to be displayed to the start of the tag.\n */\n startIcon?: ReactNode\n /**\n * Props for tag close button element.\n */\n closeButtonProps?: TagCloseButtonProps\n /**\n * Props for content element.\n */\n contentProps?: TagContentProps\n /**\n * Props for icon element.\n */\n iconProps?: HTMLStyledProps<\"span\">\n /**\n * Function to be executed when the close button is clicked.\n */\n onClose?: MouseEventHandler<HTMLElement>\n}\n\nconst {\n ComponentContext,\n PropsContext: TagPropsContext,\n useComponentContext,\n usePropsContext: useTagPropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<TagProps, TagStyle, ComponentContext>(\"tag\", tagStyle)\n\nexport { TagPropsContext, useTagPropsContext }\n\n/**\n * `Tag` is a component used to categorize or organize items using keywords that describe them.\n *\n * @see https://yamada-ui.com/docs/components/tag\n */\nexport const Tag = withProvider<\"span\", TagProps, \"disabled\">(\n ({\n children,\n disabled,\n endIcon,\n startIcon,\n closeButtonProps,\n contentProps,\n iconProps,\n onClose,\n ...rest\n }) => {\n const context = useMemo(() => ({ disabled }), [disabled])\n\n return (\n <ComponentContext value={context}>\n <styled.span data-disabled={dataAttr(disabled)} {...rest}>\n {startIcon ? (\n <TagStartIcon {...iconProps}>{startIcon}</TagStartIcon>\n ) : null}\n\n {children ? (\n <TagContent {...contentProps}>{children}</TagContent>\n ) : null}\n\n {endIcon ? <TagEndIcon {...iconProps}>{endIcon}</TagEndIcon> : null}\n\n {onClose ? (\n <TagCloseButton onClick={onClose} {...closeButtonProps} />\n ) : null}\n </styled.span>\n </ComponentContext>\n )\n },\n \"root\",\n { transferProps: [\"disabled\"] },\n)()\n\ninterface TagContentProps extends HTMLStyledProps<\"span\"> {}\n\nconst TagContent = withContext<\"span\", TagContentProps>(\"span\", \"content\")(\n undefined,\n (props) => {\n const { disabled } = useComponentContext()\n\n return { \"data-disabled\": dataAttr(disabled), ...props }\n },\n)\n\ninterface TagStartIconProps extends HTMLStyledProps<\"span\"> {}\n\nconst TagStartIcon = withContext<\"span\", TagStartIconProps>(\"span\", [\n \"icon\",\n \"start\",\n])(undefined, (props) => {\n const { disabled } = useComponentContext()\n\n return { \"data-disabled\": dataAttr(disabled), ...props }\n})\n\ninterface TagEndIconProps extends HTMLStyledProps<\"span\"> {}\n\nconst TagEndIcon = withContext<\"span\", TagEndIconProps>(\"span\", [\n \"icon\",\n \"end\",\n])(undefined, (props) => {\n const { disabled } = useComponentContext()\n\n return { \"data-disabled\": dataAttr(disabled), ...props }\n})\n\ninterface TagCloseButtonProps extends HTMLStyledProps<\"span\"> {}\n\nconst TagCloseButton = withContext<\"span\", TagCloseButtonProps>(\"span\", [\n \"icon\",\n \"closeButton\",\n])(undefined, ({ children, ...props }) => {\n const ref = useRef<HTMLSpanElement>(null)\n const { disabled } = useComponentContext()\n const rest = useClickable<HTMLSpanElement>({ ref, disabled, ...props })\n const { t } = useI18n(\"tag\")\n\n return {\n \"aria-label\": t(\"Close tag\"),\n \"data-disabled\": dataAttr(disabled),\n children: children || <XIcon />,\n ...rest,\n }\n})\n"],"mappings":";;;;;;;;;;;AAiDA,MAAM,EACJ,kBACA,cAAc,iBACd,qBACA,iBAAiB,oBACjB,aACA,iBACE,oBAA0D,OAAO,QAAQ;;;;;;AAS7E,MAAa,MAAM,cAChB,EACC,UACA,UACA,SACA,WACA,kBACA,cACA,WACA,SACA,GAAG,WACC;CACJ,MAAM,UAAU,eAAe,EAAE,SAAS,IAAI,CAAC,QAAQ,CAAC;CAExD,OACE,oBAAC,kBAAD;EAAkB,OAAO;EACvB,UAAA,qBAAC,OAAO,MAAR;GAAa,kBAAA,GAAeA,cAAAA,SAAAA,CAAS,QAAQ;GAAG,GAAI;GAApD,UAAA;IACG,YACC,oBAAC,cAAD;KAAc,GAAI;KAAY,UAAA;IAAwB,CAAA,IACpD;IAEH,WACC,oBAAC,YAAD;KAAY,GAAI;KAAe;IAAqB,CAAA,IAClD;IAEH,UAAU,oBAAC,YAAD;KAAY,GAAI;KAAY,UAAA;IAAoB,CAAA,IAAI;IAE9D,UACC,oBAAC,gBAAD;KAAgB,SAAS;KAAS,GAAI;IAAmB,CAAA,IACvD;GACO;;CACG,CAAA;AAEtB,GACA,QACA,EAAE,eAAe,CAAC,UAAU,EAAE,CAChC,CAAC,CAAC;AAIF,MAAM,aAAa,YAAqC,QAAQ,SAAS,CAAC,CACxE,KAAA,IACC,UAAU;CACT,MAAM,EAAE,aAAa,oBAAoB;CAEzC,OAAO;EAAE,kBAAA,GAAiBA,cAAAA,SAAAA,CAAS,QAAQ;EAAG,GAAG;CAAM;AACzD,CACF;AAIA,MAAM,eAAe,YAAuC,QAAQ,CAClE,QACA,OACF,CAAC,CAAC,CAAC,KAAA,IAAY,UAAU;CACvB,MAAM,EAAE,aAAa,oBAAoB;CAEzC,OAAO;EAAE,kBAAA,GAAiBA,cAAAA,SAAAA,CAAS,QAAQ;EAAG,GAAG;CAAM;AACzD,CAAC;AAID,MAAM,aAAa,YAAqC,QAAQ,CAC9D,QACA,KACF,CAAC,CAAC,CAAC,KAAA,IAAY,UAAU;CACvB,MAAM,EAAE,aAAa,oBAAoB;CAEzC,OAAO;EAAE,kBAAA,GAAiBA,cAAAA,SAAAA,CAAS,QAAQ;EAAG,GAAG;CAAM;AACzD,CAAC;AAID,MAAM,iBAAiB,YAAyC,QAAQ,CACtE,QACA,aACF,CAAC,CAAC,CAAC,KAAA,IAAY,EAAE,UAAU,GAAG,YAAY;CACxC,MAAM,MAAM,OAAwB,IAAI;CACxC,MAAM,EAAE,aAAa,oBAAoB;CACzC,MAAM,OAAO,aAA8B;EAAE;EAAK;EAAU,GAAG;CAAM,CAAC;CACtE,MAAM,EAAE,MAAM,QAAQ,KAAK;CAE3B,OAAO;EACL,cAAc,EAAE,WAAW;EAC3B,kBAAA,GAAiBA,cAAAA,SAAAA,CAAS,QAAQ;EAClC,UAAU,YAAY,oBAAC,OAAD,CAAQ,CAAA;EAC9B,GAAG;CACL;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-autosize.js","names":["noop"],"sources":["../../../../src/components/textarea/use-autosize.ts"],"sourcesContent":["\"use client\"\n\nimport type { PropGetter } from \"../../core\"\nimport { useCallback, useRef } from \"react\"\nimport {\n addDomEvent,\n createdDom,\n handlerAll,\n isShadowRoot,\n mergeRefs,\n noop,\n pickObject,\n useSafeLayoutEffect,\n useUpdateEffect,\n} from \"../../utils\"\n\nconst SIZING_STYLE_PROPERTIES = [\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderRightWidth\",\n \"borderTopWidth\",\n \"boxSizing\",\n \"fontFamily\",\n \"fontSize\",\n \"fontStyle\",\n \"fontWeight\",\n \"letterSpacing\",\n \"lineHeight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingTop\",\n // non-standard\n \"tabSize\",\n \"textIndent\",\n // non-standard\n \"textRendering\",\n \"textTransform\",\n \"width\",\n \"wordBreak\",\n] as const\n\nconst HIDDEN_STYLE = {\n height: \"0\",\n \"max-height\": \"none\",\n \"min-height\": \"0\",\n overflow: \"hidden\",\n position: \"absolute\",\n right: \"0\",\n top: \"0\",\n visibility: \"hidden\",\n \"z-index\": \"-1000\",\n} as const\n\ntype SizingProperties = Extract<\n (typeof SIZING_STYLE_PROPERTIES)[number],\n keyof CSSStyleDeclaration\n>\n\ninterface SizingStyle {\n border: number\n padding: number\n rowHeight: number\n style: Pick<CSSStyleDeclaration, SizingProperties>\n}\n\nconst getSizingStyle = (el: HTMLElement): null | SizingStyle => {\n const style = window.getComputedStyle(el) as CSSStyleDeclaration | undefined\n\n if (style == null) return null\n\n const computedStyle = pickObject(style, SIZING_STYLE_PROPERTIES)\n\n if (computedStyle.boxSizing === \"\") return null\n\n const padding =\n parseFloat(computedStyle.paddingBottom) +\n parseFloat(computedStyle.paddingTop)\n\n const border =\n parseFloat(computedStyle.borderBottomWidth) +\n parseFloat(computedStyle.borderTopWidth)\n\n const rowHeight = parseFloat(computedStyle.lineHeight)\n\n return {\n style: computedStyle,\n border,\n padding,\n rowHeight,\n }\n}\n\nconst setHiddenStyle = (el: HTMLElement) => {\n Object.keys(HIDDEN_STYLE).forEach((key) => {\n el.style.setProperty(\n key,\n HIDDEN_STYLE[key as keyof typeof HIDDEN_STYLE],\n \"important\",\n )\n })\n}\n\nconst calcRows = (\n el: HTMLTextAreaElement,\n sizingStyle: SizingStyle,\n value: string,\n maxRows: number,\n minRows: number,\n) => {\n const cloneEl = el.cloneNode() as HTMLTextAreaElement\n\n Object.assign(cloneEl.style, sizingStyle.style)\n\n setHiddenStyle(cloneEl)\n\n cloneEl.value = value\n\n const rootNode = el.getRootNode()\n const container = isShadowRoot(rootNode) ? rootNode : el.ownerDocument.body\n\n container.appendChild(cloneEl)\n\n let rows: number\n\n if (cloneEl.scrollHeight) {\n const rowHeight = sizingStyle.rowHeight\n\n rows = Math.min(\n maxRows,\n Math.max(minRows, Math.floor(cloneEl.scrollHeight / rowHeight)),\n )\n } else {\n const lineBreaks = (value.match(/\\n/g) || []).length\n\n rows = Math.min(maxRows, Math.max(minRows, lineBreaks + 1))\n }\n\n container.removeChild(cloneEl)\n\n return rows\n}\n\nexport interface UseAutosizeProps {\n /**\n * If `true`, the Textarea height will not be adjusted.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * Autosize up to maxRows rows.\n *\n * @default Infinity\n */\n maxRows?: number\n /**\n * Autosize up to minRows rows.\n *\n * @default 2\n */\n minRows?: number\n}\n\nexport const useAutosize = ({\n disabled = false,\n maxRows = Infinity,\n minRows = 2,\n}: UseAutosizeProps = {}) => {\n const ref = useRef<HTMLTextAreaElement>(null)\n const beforeValueRef = useRef<string>(null)\n const value = ref.current?.value ?? \"\"\n\n const onResizeTextarea = useCallback(() => {\n const el = ref.current\n\n if (!el) return\n\n let { placeholder, value } = el\n\n if (value === beforeValueRef.current) return\n\n beforeValueRef.current = value\n\n value ||= placeholder || \"x\"\n\n const sizingStyle = getSizingStyle(el)\n\n if (!sizingStyle) return\n\n const rows = calcRows(el, sizingStyle, value, maxRows, minRows)\n\n el.rows = rows\n }, [ref, maxRows, minRows])\n\n const getTextareaProps: PropGetter<\"textarea\"> = useCallback(\n (props = {}) => ({\n ...props,\n ref: mergeRefs(props.ref, ref),\n style: { resize: !disabled ? \"none\" : undefined, ...props.style },\n onChange: handlerAll(props.onChange, !disabled ? onResizeTextarea : noop),\n }),\n [ref, onResizeTextarea, disabled],\n )\n\n useSafeLayoutEffect(() => {\n if (!createdDom() || disabled) return\n\n onResizeTextarea()\n\n const unsubscribeResize = addDomEvent(window, \"resize\", onResizeTextarea)\n const unsubscribeLoadingdone = addDomEvent(\n document.fonts,\n \"loadingdone\",\n onResizeTextarea,\n )\n\n return () => {\n unsubscribeResize()\n unsubscribeLoadingdone()\n }\n }, [])\n\n useUpdateEffect(() => {\n if (disabled) return\n\n onResizeTextarea()\n }, [value])\n\n return { ref, getTextareaProps, onResizeTextarea }\n}\n\nexport type UseAutosizeReturn = ReturnType<typeof useAutosize>\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-autosize.js","names":["pickObject","isShadowRoot","handlerAll","noop","createdDom","addDomEvent"],"sources":["../../../../src/components/textarea/use-autosize.ts"],"sourcesContent":["\"use client\"\n\nimport type { PropGetter } from \"../../core\"\nimport { useCallback, useRef } from \"react\"\nimport {\n addDomEvent,\n createdDom,\n handlerAll,\n isShadowRoot,\n mergeRefs,\n noop,\n pickObject,\n useSafeLayoutEffect,\n useUpdateEffect,\n} from \"../../utils\"\n\nconst SIZING_STYLE_PROPERTIES = [\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderRightWidth\",\n \"borderTopWidth\",\n \"boxSizing\",\n \"fontFamily\",\n \"fontSize\",\n \"fontStyle\",\n \"fontWeight\",\n \"letterSpacing\",\n \"lineHeight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingTop\",\n // non-standard\n \"tabSize\",\n \"textIndent\",\n // non-standard\n \"textRendering\",\n \"textTransform\",\n \"width\",\n \"wordBreak\",\n] as const\n\nconst HIDDEN_STYLE = {\n height: \"0\",\n \"max-height\": \"none\",\n \"min-height\": \"0\",\n overflow: \"hidden\",\n position: \"absolute\",\n right: \"0\",\n top: \"0\",\n visibility: \"hidden\",\n \"z-index\": \"-1000\",\n} as const\n\ntype SizingProperties = Extract<\n (typeof SIZING_STYLE_PROPERTIES)[number],\n keyof CSSStyleDeclaration\n>\n\ninterface SizingStyle {\n border: number\n padding: number\n rowHeight: number\n style: Pick<CSSStyleDeclaration, SizingProperties>\n}\n\nconst getSizingStyle = (el: HTMLElement): null | SizingStyle => {\n const style = window.getComputedStyle(el) as CSSStyleDeclaration | undefined\n\n if (style == null) return null\n\n const computedStyle = pickObject(style, SIZING_STYLE_PROPERTIES)\n\n if (computedStyle.boxSizing === \"\") return null\n\n const padding =\n parseFloat(computedStyle.paddingBottom) +\n parseFloat(computedStyle.paddingTop)\n\n const border =\n parseFloat(computedStyle.borderBottomWidth) +\n parseFloat(computedStyle.borderTopWidth)\n\n const rowHeight = parseFloat(computedStyle.lineHeight)\n\n return {\n style: computedStyle,\n border,\n padding,\n rowHeight,\n }\n}\n\nconst setHiddenStyle = (el: HTMLElement) => {\n Object.keys(HIDDEN_STYLE).forEach((key) => {\n el.style.setProperty(\n key,\n HIDDEN_STYLE[key as keyof typeof HIDDEN_STYLE],\n \"important\",\n )\n })\n}\n\nconst calcRows = (\n el: HTMLTextAreaElement,\n sizingStyle: SizingStyle,\n value: string,\n maxRows: number,\n minRows: number,\n) => {\n const cloneEl = el.cloneNode() as HTMLTextAreaElement\n\n Object.assign(cloneEl.style, sizingStyle.style)\n\n setHiddenStyle(cloneEl)\n\n cloneEl.value = value\n\n const rootNode = el.getRootNode()\n const container = isShadowRoot(rootNode) ? rootNode : el.ownerDocument.body\n\n container.appendChild(cloneEl)\n\n let rows: number\n\n if (cloneEl.scrollHeight) {\n const rowHeight = sizingStyle.rowHeight\n\n rows = Math.min(\n maxRows,\n Math.max(minRows, Math.floor(cloneEl.scrollHeight / rowHeight)),\n )\n } else {\n const lineBreaks = (value.match(/\\n/g) || []).length\n\n rows = Math.min(maxRows, Math.max(minRows, lineBreaks + 1))\n }\n\n container.removeChild(cloneEl)\n\n return rows\n}\n\nexport interface UseAutosizeProps {\n /**\n * If `true`, the Textarea height will not be adjusted.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * Autosize up to maxRows rows.\n *\n * @default Infinity\n */\n maxRows?: number\n /**\n * Autosize up to minRows rows.\n *\n * @default 2\n */\n minRows?: number\n}\n\nexport const useAutosize = ({\n disabled = false,\n maxRows = Infinity,\n minRows = 2,\n}: UseAutosizeProps = {}) => {\n const ref = useRef<HTMLTextAreaElement>(null)\n const beforeValueRef = useRef<string>(null)\n const value = ref.current?.value ?? \"\"\n\n const onResizeTextarea = useCallback(() => {\n const el = ref.current\n\n if (!el) return\n\n let { placeholder, value } = el\n\n if (value === beforeValueRef.current) return\n\n beforeValueRef.current = value\n\n value ||= placeholder || \"x\"\n\n const sizingStyle = getSizingStyle(el)\n\n if (!sizingStyle) return\n\n const rows = calcRows(el, sizingStyle, value, maxRows, minRows)\n\n el.rows = rows\n }, [ref, maxRows, minRows])\n\n const getTextareaProps: PropGetter<\"textarea\"> = useCallback(\n (props = {}) => ({\n ...props,\n ref: mergeRefs(props.ref, ref),\n style: { resize: !disabled ? \"none\" : undefined, ...props.style },\n onChange: handlerAll(props.onChange, !disabled ? onResizeTextarea : noop),\n }),\n [ref, onResizeTextarea, disabled],\n )\n\n useSafeLayoutEffect(() => {\n if (!createdDom() || disabled) return\n\n onResizeTextarea()\n\n const unsubscribeResize = addDomEvent(window, \"resize\", onResizeTextarea)\n const unsubscribeLoadingdone = addDomEvent(\n document.fonts,\n \"loadingdone\",\n onResizeTextarea,\n )\n\n return () => {\n unsubscribeResize()\n unsubscribeLoadingdone()\n }\n }, [])\n\n useUpdateEffect(() => {\n if (disabled) return\n\n onResizeTextarea()\n }, [value])\n\n return { ref, getTextareaProps, onResizeTextarea }\n}\n\nexport type UseAutosizeReturn = ReturnType<typeof useAutosize>\n"],"mappings":"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"}