@ryuzaki13/react-foundation-ui 1.4.1 → 1.4.3

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 (509) hide show
  1. package/dist/advanced-search/index.js +12 -11
  2. package/dist/advanced-search/index.js.map +1 -1
  3. package/dist/badge/index.js +1 -1
  4. package/dist/base-table/index.js +2 -2
  5. package/dist/button/index.js +1 -1
  6. package/dist/chunks/{CalendarView-KCkhCtK-.js → CalendarView-Z_XWk7aI.js} +8 -8
  7. package/dist/chunks/{CalendarView-KCkhCtK-.js.map → CalendarView-Z_XWk7aI.js.map} +1 -1
  8. package/dist/chunks/{ImageViewerRuntime-RN49by8Y.js → ImageViewerRuntime-BMs3BBkV.js} +4 -4
  9. package/dist/chunks/{ImageViewerRuntime-RN49by8Y.js.map → ImageViewerRuntime-BMs3BBkV.js.map} +1 -1
  10. package/dist/chunks/{TextEditorLexicalClient-CVTrglWP.js → TextEditorLexicalClient-CK8j3RA4.js} +16 -18
  11. package/dist/chunks/{TextEditorLexicalClient-CVTrglWP.js.map → TextEditorLexicalClient-CK8j3RA4.js.map} +1 -1
  12. package/dist/chunks/{badge-Cri0-kVK.js → badge-DwIUjH0a.js} +2 -2
  13. package/dist/chunks/{badge-Cri0-kVK.js.map → badge-DwIUjH0a.js.map} +1 -1
  14. package/dist/chunks/{base-table-D5IqsjQD.js → base-table-BFsVwXg3.js} +13 -12
  15. package/dist/chunks/{base-table-D5IqsjQD.js.map → base-table-BFsVwXg3.js.map} +1 -1
  16. package/dist/chunks/{button-CC0Jdx1j.js → button-BU2kRzwu.js} +2 -2
  17. package/dist/chunks/button-BU2kRzwu.js.map +1 -0
  18. package/dist/chunks/check-box-Dd3YFuxd.js.map +1 -1
  19. package/dist/chunks/{context-menu-DQeR3y7M.js → context-menu-C6RO7soI.js} +7 -2
  20. package/dist/chunks/{context-menu-DQeR3y7M.js.map → context-menu-C6RO7soI.js.map} +1 -1
  21. package/dist/chunks/{date-input-DBJisPRz.js → date-input-BzExUQnc.js} +5 -5
  22. package/dist/chunks/{date-input-DBJisPRz.js.map → date-input-BzExUQnc.js.map} +1 -1
  23. package/dist/chunks/{flex-DYZ0IbU6.js → flex-C7njxZ74.js} +10 -7
  24. package/dist/chunks/{flex-DYZ0IbU6.js.map → flex-C7njxZ74.js.map} +1 -1
  25. package/dist/chunks/floating-arrow-BE-z4QkE.js.map +1 -1
  26. package/dist/chunks/{input-BCJfUdK_.js → input-Bp6_Ucgr.js} +15 -15
  27. package/dist/chunks/{input-BCJfUdK_.js.map → input-Bp6_Ucgr.js.map} +1 -1
  28. package/dist/chunks/{input-files-Dcc5K-_1.js → input-files-D1JzSw_Y.js} +2 -2
  29. package/dist/chunks/{input-files-Dcc5K-_1.js.map → input-files-D1JzSw_Y.js.map} +1 -1
  30. package/dist/chunks/{input-search-B7HmrAM7.js → input-search-Bkhcinru.js} +2 -2
  31. package/dist/chunks/{input-search-B7HmrAM7.js.map → input-search-Bkhcinru.js.map} +1 -1
  32. package/dist/chunks/{misc-DIF5h9ba.js → misc-BYxxlJz6.js} +3 -3
  33. package/dist/chunks/{misc-DIF5h9ba.js.map → misc-BYxxlJz6.js.map} +1 -1
  34. package/dist/chunks/{modal-DXHX_sA-.js → modal-paexEF0j.js} +4 -5
  35. package/dist/chunks/{modal-DXHX_sA-.js.map → modal-paexEF0j.js.map} +1 -1
  36. package/dist/chunks/{multi-select-CWx12rgb.js → multi-select-COa6-owj.js} +3 -3
  37. package/dist/chunks/{multi-select-CWx12rgb.js.map → multi-select-COa6-owj.js.map} +1 -1
  38. package/dist/chunks/{picker-BAQ9NeHe.js → picker-e6IsrMUG.js} +3 -3
  39. package/dist/chunks/{picker-BAQ9NeHe.js.map → picker-e6IsrMUG.js.map} +1 -1
  40. package/dist/chunks/{popover-xJJqy1v6.js → popover-CGU3MlsH.js} +14 -14
  41. package/dist/chunks/{popover-xJJqy1v6.js.map → popover-CGU3MlsH.js.map} +1 -1
  42. package/dist/chunks/radio-group-CM9Lg_nc.js.map +1 -1
  43. package/dist/chunks/{select-BPb-eL3O.js → select-C95db02j.js} +32 -31
  44. package/dist/chunks/{select-BPb-eL3O.js.map → select-C95db02j.js.map} +1 -1
  45. package/dist/chunks/sortable-DcTIAbjD.js.map +1 -1
  46. package/dist/chunks/{table-xMAjqtcY.js → table-Dd5BcC0k.js} +3 -3
  47. package/dist/chunks/{table-xMAjqtcY.js.map → table-Dd5BcC0k.js.map} +1 -1
  48. package/dist/chunks/{table-column-interactions-BGd5Lwy9.js → table-column-interactions-DzEvVuXe.js} +8 -5
  49. package/dist/chunks/{table-column-interactions-BGd5Lwy9.js.map → table-column-interactions-DzEvVuXe.js.map} +1 -1
  50. package/dist/chunks/useODataSelectBase-CKe1AVMI.js.map +1 -1
  51. package/dist/chunks/wheel-picker-FS58cRsQ.js.map +1 -1
  52. package/dist/context-menu/index.js +1 -1
  53. package/dist/date-input/index.js +2 -2
  54. package/dist/date-time-input/index.js +4 -4
  55. package/dist/date-time-input/index.js.map +1 -1
  56. package/dist/detail/index.js.map +1 -1
  57. package/dist/dialog/index.js.map +1 -1
  58. package/dist/disclosure/index.js +1 -1
  59. package/dist/disclosure/index.js.map +1 -1
  60. package/dist/drop-zone/index.js +1 -1
  61. package/dist/drop-zone/index.js.map +1 -1
  62. package/dist/errors/index.js +1 -1
  63. package/dist/errors/index.js.map +1 -1
  64. package/dist/expandable-action-panel/index.js +2 -2
  65. package/dist/expandable-action-panel/index.js.map +1 -1
  66. package/dist/flex/index.js +1 -1
  67. package/dist/fullscreen-portal/index.js +3 -3
  68. package/dist/fullscreen-portal/index.js.map +1 -1
  69. package/dist/image/index.js +5 -5
  70. package/dist/image/index.js.map +1 -1
  71. package/dist/input/index.js +1 -1
  72. package/dist/input-date-time/index.js +1 -1
  73. package/dist/input-date-time/index.js.map +1 -1
  74. package/dist/input-file/index.js +1 -1
  75. package/dist/input-file/index.js.map +1 -1
  76. package/dist/input-files/index.js +1 -1
  77. package/dist/input-image/index.js +1 -1
  78. package/dist/input-image/index.js.map +1 -1
  79. package/dist/input-search/index.js +1 -1
  80. package/dist/layout-picker/index.js +3 -3
  81. package/dist/layout-picker/index.js.map +1 -1
  82. package/dist/list/index.js +7 -7
  83. package/dist/list/index.js.map +1 -1
  84. package/dist/listbox/index.js.map +1 -1
  85. package/dist/misc/index.js +1 -1
  86. package/dist/modal/index.js +1 -1
  87. package/dist/multi-select/index.js +1 -1
  88. package/dist/notifications/index.js +13 -11
  89. package/dist/notifications/index.js.map +1 -1
  90. package/dist/pages/index.js.map +1 -1
  91. package/dist/panel/index.js.map +1 -1
  92. package/dist/picker/index.js +1 -1
  93. package/dist/popover/index.js +1 -1
  94. package/dist/preset-range-date-input/index.js +2 -2
  95. package/dist/preset-range-date-input/index.js.map +1 -1
  96. package/dist/preset-select/index.js +1 -1
  97. package/dist/radio-button/index.js.map +1 -1
  98. package/dist/select/index.js +1 -1
  99. package/dist/simple-table/index.js +1 -1
  100. package/dist/slider/index.js +27 -24
  101. package/dist/slider/index.js.map +1 -1
  102. package/dist/splitter/index.js.map +1 -1
  103. package/dist/state-select/index.js +12 -10
  104. package/dist/state-select/index.js.map +1 -1
  105. package/dist/styles.css +1 -1
  106. package/dist/switch/index.js +1 -1
  107. package/dist/switch/index.js.map +1 -1
  108. package/dist/table/index.js +1 -1
  109. package/dist/table-column-interactions/index.js +1 -1
  110. package/dist/table-sorting/index.js +1 -1
  111. package/dist/table-sorting/index.js.map +1 -1
  112. package/dist/tabs/index.js +6 -6
  113. package/dist/tabs/index.js.map +1 -1
  114. package/dist/tag-input/index.js +1 -1
  115. package/dist/tag-input/index.js.map +1 -1
  116. package/dist/text/index.js +10 -8
  117. package/dist/text/index.js.map +1 -1
  118. package/dist/text-editor/index.js +2 -2
  119. package/dist/textarea/index.js +1 -1
  120. package/dist/textarea/index.js.map +1 -1
  121. package/dist/toggle/index.js.map +1 -1
  122. package/dist/toolbar/index.js +1 -2
  123. package/dist/toolbar/index.js.map +1 -1
  124. package/dist/tree/index.js.map +1 -1
  125. package/dist/tree-select/index.js +83 -80
  126. package/dist/tree-select/index.js.map +1 -1
  127. package/dist/tree-table/index.js +2 -2
  128. package/dist/tree-table/index.js.map +1 -1
  129. package/package.json +51 -59
  130. package/storybook-static/assets/{Badge-DrS-PqPt.js → Badge-DHexWW92.js} +11 -11
  131. package/storybook-static/assets/Badge.stories-CeWDekpP.js +54 -0
  132. package/storybook-static/assets/Button-DtU4kGzD.css +1 -0
  133. package/storybook-static/assets/Button-VdPdxcvG.js +12 -0
  134. package/storybook-static/assets/{Button-CIC4xzqW.js → Button-kybsFNS9.js} +10 -10
  135. package/storybook-static/assets/Button.stories-DhgYDM_q.js +75 -0
  136. package/storybook-static/assets/{DateInput-BfFTwd_P.css → CalendarView-DKvrkS40.css} +1 -1
  137. package/storybook-static/assets/CalendarView-DTX0eO8t.js +1 -0
  138. package/storybook-static/assets/CheckBox-B6rTemHK.js +2 -0
  139. package/storybook-static/assets/{CheckBox-B2HRisgL.js → CheckBox-CDwboiFD.js} +11 -11
  140. package/storybook-static/assets/CheckBox.module-BBzuj5He.js +1 -0
  141. package/storybook-static/assets/CheckBox.stories-BSMihxpY.js +60 -0
  142. package/storybook-static/assets/Color-6AOWCN3U-D5F38IUU.js +1 -0
  143. package/storybook-static/assets/{ContextMenu-BH2hpaXG.js → ContextMenu-2ZQAeo_p.js} +9 -9
  144. package/storybook-static/assets/ContextMenu-CQtvL8kx.js +1 -0
  145. package/storybook-static/assets/ContextMenu.stories-Dtz2YIGk.js +90 -0
  146. package/storybook-static/assets/{DateInput-DCJw3t_Z.js → DateInput-D41aWZ7_.js} +11 -11
  147. package/storybook-static/assets/DateInput-DBwgBhFj.js +1 -0
  148. package/storybook-static/assets/DateInput-pmGiwdvw.css +1 -0
  149. package/storybook-static/assets/{DateInput.stories-BG4-DoSj.js → DateInput.stories-CMV96t-8.js} +2 -2
  150. package/storybook-static/assets/{DateRangePresetSelect-KLRkhxJb.js → DateRangePresetSelect-BLKJkg8X.js} +8 -8
  151. package/storybook-static/assets/DateRangePresetSelect-DXYYFJJn.js +3 -0
  152. package/storybook-static/assets/DateRangePresetSelect.stories-BNtFx_iG.js +11 -0
  153. package/storybook-static/assets/{Detail-3XawxFBs.js → Detail-BHcGLZok.js} +11 -11
  154. package/storybook-static/assets/Detail.stories-C4smn8Uu.js +44 -0
  155. package/storybook-static/assets/{Dialog-CnolXXtD.js → Dialog-kji1ho-G.js} +9 -9
  156. package/storybook-static/assets/Dialog.stories-DYzrVcIT.js +31 -0
  157. package/storybook-static/assets/{Disclosure-BmQa9ejy.js → Disclosure-BVLfp53o.js} +10 -10
  158. package/storybook-static/assets/Disclosure.stories-DcV1pGCt.js +41 -0
  159. package/storybook-static/assets/DocsRenderer-JROSPFPF-CCwX0YiR.js +2 -0
  160. package/storybook-static/assets/{DropZone-BLqqXnAE.js → DropZone-6iWHt6C_.js} +10 -10
  161. package/storybook-static/assets/DropZone.stories-bASZNbD5.js +44 -0
  162. package/storybook-static/assets/ExpandableActionPanel.stories-CMMbHs_d.js +20 -0
  163. package/storybook-static/assets/{Flex-B1T5p8TC.js → Flex-BJViOwhH.js} +18 -18
  164. package/storybook-static/assets/Flex.stories-CI6DdxU7.js +300 -0
  165. package/storybook-static/assets/FlexContainer-LmZIdhq2.js +1 -0
  166. package/storybook-static/assets/FlexItem-vkDYa5tA.js +3 -0
  167. package/storybook-static/assets/FloatingPopover-CPLOruAY.js +1 -0
  168. package/storybook-static/assets/FloatingPopover-DC84VrV3.css +1 -0
  169. package/storybook-static/assets/FormattedTableCell-CV4yLuxl.js +18 -0
  170. package/storybook-static/assets/FormattedTableCell-CY3E21k8.css +1 -0
  171. package/storybook-static/assets/Grid-BCzygAqy.js +52 -0
  172. package/storybook-static/assets/{Grid-BNsFGran.js → Grid-CNEn2bRE.js} +18 -18
  173. package/storybook-static/assets/{Grid.stories-BtDwT-co.js → Grid.stories-qFo5E3qE.js} +2 -2
  174. package/storybook-static/assets/{Grid-DudjnKE7.js → GridContainer-qDguE1HS.js} +2 -53
  175. package/storybook-static/assets/ImageCropper.stories-BeQI7oKQ.js +115 -0
  176. package/storybook-static/assets/ImageRenderer-DK2ibQyr.js +2 -0
  177. package/storybook-static/assets/ImageRenderer.stories-C1T4ne0G.js +22 -0
  178. package/storybook-static/assets/ImageView.stories-D_Q-ZBtQ.js +9 -0
  179. package/storybook-static/assets/{ImageViewer.stories-CA-tcnt2.js → ImageViewer.stories-boombTJI.js} +5 -5
  180. package/storybook-static/assets/ImageViewerRuntime-D8KSESgf.js +51 -0
  181. package/storybook-static/assets/{Input-B6zekikL.js → Input-CGHba0oM.js} +11 -11
  182. package/storybook-static/assets/Input-DtOsW7ur.js +3 -0
  183. package/storybook-static/assets/Input.stories-C0qWd6SH.js +38 -0
  184. package/storybook-static/assets/{InputDateTime-EYsJkV-0.js → InputDateTime-CgYkmVYu.js} +11 -11
  185. package/storybook-static/assets/InputDateTime.stories-Brxo7Chn.js +35 -0
  186. package/storybook-static/assets/{InputFile-BizeGHyb.js → InputFile-Bsxafe88.js} +10 -10
  187. package/storybook-static/assets/InputFile.stories-BzEV7ybE.js +36 -0
  188. package/storybook-static/assets/{InputFiles-9tzXfyuT.js → InputFiles-KJFUsmSS.js} +10 -10
  189. package/storybook-static/assets/InputFiles.stories-ffjxiHSh.js +33 -0
  190. package/storybook-static/assets/InputFilesList-D6B5g99M.js +1 -0
  191. package/storybook-static/assets/{InputImage-uw3SMJNy.js → InputImage-Cd39V4Vc.js} +10 -10
  192. package/storybook-static/assets/InputImage.stories-n-tpY8OO.js +51 -0
  193. package/storybook-static/assets/{LayoutPicker-CeiyAZt7.js → LayoutPicker-CGQFfQk6.js} +13 -13
  194. package/storybook-static/assets/LayoutPicker.stories-xSL2qafC.js +449 -0
  195. package/storybook-static/assets/{Listbox-C-B_og6p.js → Listbox-CxISK8c5.js} +10 -10
  196. package/storybook-static/assets/Listbox.stories-BdQBmVFI.js +47 -0
  197. package/storybook-static/assets/{Modal-CsfpIg6C.js → Modal-BiaAWMdV.js} +12 -12
  198. package/storybook-static/assets/Modal.stories-GV7fGqyd.js +180 -0
  199. package/storybook-static/assets/MultiSelect-D5XFosSU.js +2 -0
  200. package/storybook-static/assets/{MultiSelect-Dt5HCrYP.js → MultiSelect-Df2CpyNH.js} +11 -11
  201. package/storybook-static/assets/MultiSelect.stories-BEVQF6hO.js +29 -0
  202. package/storybook-static/assets/MultiSelectToken-CrVawISu.js +1 -0
  203. package/storybook-static/assets/NoData-C7KqaHUh.css +1 -0
  204. package/storybook-static/assets/NoData-Fm23iF4n.js +1 -0
  205. package/storybook-static/assets/{NotificationsHost-CDI8mQh0.js → NotificationsHost-C2vSwAjz.js} +9 -9
  206. package/storybook-static/assets/NotificationsHost.stories-IbgayDlM.js +25 -0
  207. package/storybook-static/assets/{ODataMultiSelect-Bj1NtXx4.js → ODataMultiSelect-oW3kW0nO.js} +15 -15
  208. package/storybook-static/assets/ODataMultiSelect.stories-CP6_jGSr.js +73 -0
  209. package/storybook-static/assets/{ODataSelect-CalTWDdU.js → ODataSelect-CrGF8fyC.js} +15 -15
  210. package/storybook-static/assets/ODataSelect.stories-DTv31Rkv.js +73 -0
  211. package/storybook-static/assets/ODataTreeMultiSelect-D0h8H3gw.js +19 -0
  212. package/storybook-static/assets/ODataTreeMultiSelect.stories-CM8QjG8r.js +30 -0
  213. package/storybook-static/assets/ODataTreeSelect-PWn0-hI4.js +17 -0
  214. package/storybook-static/assets/ODataTreeSelect.stories-2UkFTnbE.js +24 -0
  215. package/storybook-static/assets/OneStepScroller-CH6K7wiO.js +5 -0
  216. package/storybook-static/assets/OneStepScroller-NRYd-egY.css +1 -0
  217. package/storybook-static/assets/{PeriodSelect--wEPFluW.js → PeriodSelect-BtwJuAO6.js} +13 -13
  218. package/storybook-static/assets/PeriodSelect.stories-BH8I5Wmg.js +64 -0
  219. package/storybook-static/assets/PickerSelectionToolbar-BcL8-O6n.js +2 -0
  220. package/storybook-static/assets/PickerTriggerActions-C8Asdp5e.js +1 -0
  221. package/storybook-static/assets/{Popover-CXlXO4Om.js → Popover-Ch5btFhR.js} +11 -11
  222. package/storybook-static/assets/Popover-DGX7JNNK.css +1 -0
  223. package/storybook-static/assets/Popover-Djns7yXR.js +2 -0
  224. package/storybook-static/assets/Popover.stories-Bask2I1I.js +69 -0
  225. package/storybook-static/assets/{PresetRangeDateInput-Ek_8-9jx.js → PresetRangeDateInput-DvsTjQNP.js} +8 -8
  226. package/storybook-static/assets/PresetRangeDateInput.stories-BNfOUWgp.js +15 -0
  227. package/storybook-static/assets/PresetSelect-9zitP0-V.js +5 -0
  228. package/storybook-static/assets/{RadioButton-CFyxweTk.js → RadioButton-Yb9bQKYe.js} +10 -10
  229. package/storybook-static/assets/RadioButton.stories-FIFxXFVP.js +36 -0
  230. package/storybook-static/assets/RadioGroup-CWsVqwtm.js +1 -0
  231. package/storybook-static/assets/{RadioGroup-BzgaB3tz.js → RadioGroup-Dn0zL838.js} +10 -10
  232. package/storybook-static/assets/RadioGroup.stories-B_drop9x.js +42 -0
  233. package/storybook-static/assets/Scrollable-3Z6b5g0Z.js +1 -0
  234. package/storybook-static/assets/{Select-CJTdiLLf.js → Select-BaR8D89E.js} +13 -13
  235. package/storybook-static/assets/Select-BiOxxy0y.js +12 -0
  236. package/storybook-static/assets/Select.stories-CMlWu7vC.js +46 -0
  237. package/storybook-static/assets/SelectOptionContent-DhtCMwz6.js +1 -0
  238. package/storybook-static/assets/{SerializableSelect-CsZnvsML.js → SerializableSelect-BDiZo_-M.js} +12 -12
  239. package/storybook-static/assets/SerializableSelect.stories-DgC6oiRx.js +46 -0
  240. package/storybook-static/assets/{SingleDateTimeInput-NGciSlUN.js → SingleDateTimeInput-Dx1fvzyr.js} +12 -12
  241. package/storybook-static/assets/SingleDateTimeInput.stories-NRUE7nnA.js +78 -0
  242. package/storybook-static/assets/Slider-DJpzPo7f.js +1 -0
  243. package/storybook-static/assets/{Slider-J-URo5p1.js → Slider-aiFcrSGY.js} +15 -15
  244. package/storybook-static/assets/Slider.stories-B0YHmFf5.js +77 -0
  245. package/storybook-static/assets/{SliderInput-D2IjNhE4.js → SliderInput-sOoxvdku.js} +16 -16
  246. package/storybook-static/assets/SliderInput.stories-BYk1V19Z.js +68 -0
  247. package/storybook-static/assets/{Sortable-Dut8-sKx.js → Sortable-CuVT40f8.js} +13 -13
  248. package/storybook-static/assets/Sortable.stories-KSWGoKrN.js +141 -0
  249. package/storybook-static/assets/{Splitter-Bid56cjA.js → Splitter-EoNOj4XF.js} +11 -11
  250. package/storybook-static/assets/Splitter.stories-CuAZab2y.js +22 -0
  251. package/storybook-static/assets/{StateSelect-C0z6JyBe.js → StateSelect-B_M50HZl.js} +10 -10
  252. package/storybook-static/assets/StateSelect.stories-DQ_MzvL4.js +47 -0
  253. package/storybook-static/assets/StringToggle.stories-BbRysCKA.js +6 -0
  254. package/storybook-static/assets/{Switch-Di-v9u1A.js → Switch-DO_tyZIc.js} +10 -10
  255. package/storybook-static/assets/Switch.stories-BQakMoPp.js +26 -0
  256. package/storybook-static/assets/{Table-DrsB0gBG.js → Table-CVK5rwmT.js} +22 -22
  257. package/storybook-static/assets/Table.stories-IZaleOjp.js +122 -0
  258. package/storybook-static/assets/{Tabs-DkY_hPxX.js → Tabs-DAaWUQb4.js} +15 -15
  259. package/storybook-static/assets/Tabs.stories-BC8LwG22.js +58 -0
  260. package/storybook-static/assets/TagInput.stories-CrXD57LV.js +18 -0
  261. package/storybook-static/assets/Text-cVBcGheg.js +1 -0
  262. package/storybook-static/assets/{Textarea-CwA3jBjr.js → Textarea-9VdIC6G0.js} +10 -10
  263. package/storybook-static/assets/Textarea.stories-CEaMwEau.js +27 -0
  264. package/storybook-static/assets/TimePanel-vx1aOwT4.js +1 -0
  265. package/storybook-static/assets/TimePanel.stories-BKyiLEgy.js +25 -0
  266. package/storybook-static/assets/Toggle-CyajrRVE.js +1 -0
  267. package/storybook-static/assets/{Toggle-Bo4KR3MN.js → Toggle-DrNoVpGe.js} +10 -10
  268. package/storybook-static/assets/Toggle.stories-CT0mQbdm.js +30 -0
  269. package/storybook-static/assets/TreeMultiSelect-CtDZ1cXU.js +1 -0
  270. package/storybook-static/assets/TreeMultiSelect-ag5i_Hw_.js +19 -0
  271. package/storybook-static/assets/TreeMultiSelect.stories-BxrbKopS.js +35 -0
  272. package/storybook-static/assets/TreePickerBase-DQzUtuAm.js +22 -0
  273. package/storybook-static/assets/TreeSelect-BNuJBo9x.js +1 -0
  274. package/storybook-static/assets/TreeSelect-CL8REXC5.js +16 -0
  275. package/storybook-static/assets/TreeSelect.stories-CsWGc9X0.js +18 -0
  276. package/storybook-static/assets/{TreeTable-rbcFU6RL.js → TreeTable-DrIFC4Oh.js} +22 -22
  277. package/storybook-static/assets/TreeTable.stories-Dq5c4_qe.js +83 -0
  278. package/storybook-static/assets/WithTooltip-7X4HQR7L-Cakt_JaX.js +9 -0
  279. package/storybook-static/assets/array-BBSjoTRy-CIRmlF93.js +1 -0
  280. package/storybook-static/assets/{async-DoYCd2O1.js → async-0-Te_uje.js} +3 -3
  281. package/storybook-static/assets/axe-Bq-2xuso.js +20 -0
  282. package/storybook-static/assets/blocks-Dz3dJBcm.js +48 -0
  283. package/storybook-static/assets/browserAndReact-kZBm3nQe.js +105 -0
  284. package/storybook-static/assets/check-BMyoSD8F.js +1 -0
  285. package/storybook-static/assets/chevron-down-QDFtnGcg.js +1 -0
  286. package/storybook-static/assets/chevron-left-BoVuWD4h.js +1 -0
  287. package/storybook-static/assets/chevron-right-DS62_o_9.js +1 -0
  288. package/storybook-static/assets/chunk-242VQQM5-BMWWiybC.js +1 -0
  289. package/storybook-static/assets/chunk-DRQKCCAG-CqE-Zrl9.js +1 -0
  290. package/storybook-static/assets/chunk-IMSF75WX-yvVUwIQZ.js +6 -0
  291. package/storybook-static/assets/chunk-KJHJLCBK-D-yQfkOi.js +1 -0
  292. package/storybook-static/assets/chunk-QQBDHPVZ-B98qboss.js +1 -0
  293. package/storybook-static/assets/chunk-W22LQPXL-DDIvKskF.js +18 -0
  294. package/storybook-static/assets/circle-alert-CXg50Gb0.js +1 -0
  295. package/storybook-static/assets/circle-check-BPfYNWmz.js +1 -0
  296. package/storybook-static/assets/components-BejapTpU.js +241 -0
  297. package/storybook-static/assets/contextMenu-DtXkMNr6.js +2 -0
  298. package/storybook-static/assets/date-segments-D3HouZ37.js +1 -0
  299. package/storybook-static/assets/dom-B3G_GtJw.js +1 -0
  300. package/storybook-static/assets/download-DnZ6jhvY.js +1 -0
  301. package/storybook-static/assets/error-BZrNlEUO.js +1 -0
  302. package/storybook-static/assets/file-vPGnhPr-.js +1 -0
  303. package/storybook-static/assets/filesAndExcel-CXMXtMjq.js +122 -0
  304. package/storybook-static/assets/floating-ui.react-PN45KvBS.js +1 -0
  305. package/storybook-static/assets/formatter-L2YTDE3Q-x0raBH34.js +1 -0
  306. package/storybook-static/assets/formatters--mhLir82-v41eaI4a.js +1 -0
  307. package/storybook-static/assets/formatters-DGXR8csR.js +291 -0
  308. package/storybook-static/assets/formatters-runtime-GsS-hTg9.js +384 -0
  309. package/storybook-static/assets/foundationLib-XrLbqi3r.js +82 -0
  310. package/storybook-static/assets/hooks-Ddmw7JMF.js +5 -0
  311. package/storybook-static/assets/iframe-CrnMVMTc.js +1151 -0
  312. package/storybook-static/assets/iframe-FUHzX0Mr.js +1 -0
  313. package/storybook-static/assets/info-Dqq5QHG7.js +1 -0
  314. package/storybook-static/assets/{matchers-JIUQ3HVY-BPS-eazD.js → matchers-JIUQ3HVY-DvR2XErZ.js} +3 -3
  315. package/storybook-static/assets/media-BycWpjAl.js +1 -0
  316. package/storybook-static/assets/odata-BaxgzNGj.js +1 -0
  317. package/storybook-static/assets/odata-service-DnPlNGpU-Bpd4Zh9L.js +3 -0
  318. package/storybook-static/assets/odataAndTables-OEVW-gFK.js +126 -0
  319. package/storybook-static/assets/{odataFetchFn-DDErUu7H.js → odataFetchFn-BLWeF0ZQ.js} +3 -3
  320. package/storybook-static/assets/odataStoryFixtures-BbswaX_5.js +25 -0
  321. package/storybook-static/assets/{persisted-DphnlPy-.js → persisted-BpFojVXw.js} +3 -3
  322. package/storybook-static/assets/preload-helper-BHmFeTtP.js +1 -0
  323. package/storybook-static/assets/pureUtilities-3afQk5ld.js +69 -0
  324. package/storybook-static/assets/react-18-CgkwBzTo.js +9 -0
  325. package/storybook-static/assets/react-C21x__mS.js +1 -0
  326. package/storybook-static/assets/react-CpOcCp9T.js +9 -0
  327. package/storybook-static/assets/react-CvkUhHUq.js +1 -0
  328. package/storybook-static/assets/react-dom-2o2phaJG.js +1 -0
  329. package/storybook-static/assets/react-qN2cStNd.js +1 -0
  330. package/storybook-static/assets/refresh-cw-B2VU4UNA.js +1 -0
  331. package/storybook-static/assets/rolldown-runtime-C0FnF6B9.js +1 -0
  332. package/storybook-static/assets/runtimeAndState-BEFDbOiZ.js +117 -0
  333. package/storybook-static/assets/settings-2-CLJhjWJl.js +1 -0
  334. package/storybook-static/assets/sortable-DW_Veba0.js +1 -0
  335. package/storybook-static/assets/syntaxhighlighter-T5IQBZDB-D0RhvxXU.js +6 -0
  336. package/storybook-static/assets/theming-mTWhffkp.js +39 -0
  337. package/storybook-static/assets/trash-2-yLqdtpz8.js +1 -0
  338. package/storybook-static/assets/treeStoryFixtures-Ci7STpiz.js +1 -0
  339. package/storybook-static/assets/triangle-alert-wI8Cd8tI.js +1 -0
  340. package/storybook-static/assets/ui.module-DoMIk8Oc.js +1 -0
  341. package/storybook-static/assets/uiClasses-CO3Cdv1E.js +1 -0
  342. package/storybook-static/assets/useFlexClasses-Gn9spXEB.js +1 -0
  343. package/storybook-static/assets/useODataSelectBase-WnxdcAM4.js +1 -0
  344. package/storybook-static/assets/useODataTreeData-C7L5TOjl.js +1 -0
  345. package/storybook-static/assets/usePickerDefaultFilter-DdxyE_i8.js +1 -0
  346. package/storybook-static/assets/usePickerQuery-CAWYFpCv.js +1 -0
  347. package/storybook-static/assets/usePickerTriggerController-BRXUlggw.js +1 -0
  348. package/storybook-static/assets/utils-DUM89eIj.js +1 -0
  349. package/storybook-static/assets/x-CyFk00QC.js +1 -0
  350. package/storybook-static/iframe.html +8 -3
  351. package/storybook-static/index.html +6 -0
  352. package/storybook-static/index.json +1 -1
  353. package/storybook-static/project.json +1 -1
  354. package/storybook-static/sb-addons/a11y-3/manager-bundle.js +3 -3
  355. package/storybook-static/sb-addons/chromatic-com-storybook-1/manager-bundle.js +17 -17
  356. package/storybook-static/sb-addons/docs-2/manager-bundle.js +16 -1
  357. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +85 -83
  358. package/storybook-static/sb-addons/vitest-4/manager-bundle.js +1 -1
  359. package/storybook-static/sb-manager/globals-runtime.js +9939 -7695
  360. package/storybook-static/sb-manager/runtime.js +16128 -15326
  361. package/storybook-static/vite-inject-mocker-entry.js +2 -2
  362. package/dist/chunks/button-CC0Jdx1j.js.map +0 -1
  363. package/storybook-static/assets/Badge.stories-DwBMjWuT.js +0 -51
  364. package/storybook-static/assets/Button-Dpi111u7.js +0 -12
  365. package/storybook-static/assets/Button-nI2z0h4X.css +0 -1
  366. package/storybook-static/assets/Button.stories-DZmRqHrE.js +0 -75
  367. package/storybook-static/assets/CheckBox-DHWs_MEe.js +0 -2
  368. package/storybook-static/assets/CheckBox.module-ezWPE2pa.js +0 -1
  369. package/storybook-static/assets/CheckBox.stories-ChxWTQwY.js +0 -60
  370. package/storybook-static/assets/Color-KMSTOMOX-Ct0gfrkd.js +0 -1
  371. package/storybook-static/assets/ContextMenu.stories-D8QOi68M.js +0 -90
  372. package/storybook-static/assets/DateInput-aifcbvnl.js +0 -1
  373. package/storybook-static/assets/DateRangePresetSelect-lWDa-_zo.js +0 -3
  374. package/storybook-static/assets/DateRangePresetSelect.stories-DyxuSPt4.js +0 -11
  375. package/storybook-static/assets/Detail.stories-r0AG6eiC.js +0 -44
  376. package/storybook-static/assets/Dialog.stories-DyLAEjua.js +0 -31
  377. package/storybook-static/assets/Disclosure.stories-DHFMH6SZ.js +0 -41
  378. package/storybook-static/assets/DocsRenderer-JROSPFPF-OVZNUiiY.js +0 -2
  379. package/storybook-static/assets/DropZone.stories-C6iXDzpC.js +0 -44
  380. package/storybook-static/assets/DropdownMenu-BPIWC5Fe.js +0 -1
  381. package/storybook-static/assets/ExpandableActionPanel.stories-DeBP2SL6.js +0 -20
  382. package/storybook-static/assets/Flex-BvUI9OtR.js +0 -3
  383. package/storybook-static/assets/Flex.stories-DjHfItG6.js +0 -300
  384. package/storybook-static/assets/ImageCropper.stories-D1ZTKaL2.js +0 -115
  385. package/storybook-static/assets/ImageRenderer-C_UGYN2n.js +0 -2
  386. package/storybook-static/assets/ImageRenderer.stories-BRm7cNQQ.js +0 -22
  387. package/storybook-static/assets/ImageView.stories-DbPfP9Vk.js +0 -9
  388. package/storybook-static/assets/ImageViewerRuntime-FOJk41Ia.js +0 -51
  389. package/storybook-static/assets/Input-Cd3vgy0g.js +0 -3
  390. package/storybook-static/assets/Input.stories-DdEsalmK.js +0 -38
  391. package/storybook-static/assets/InputDateTime.stories-CWRMF1Uz.js +0 -35
  392. package/storybook-static/assets/InputFile.stories-DSMEa0Hb.js +0 -36
  393. package/storybook-static/assets/InputFiles-CL38ESTc.js +0 -1
  394. package/storybook-static/assets/InputFiles.stories-Baq4MwqA.js +0 -33
  395. package/storybook-static/assets/InputImage.stories-CosbCY9j.js +0 -51
  396. package/storybook-static/assets/LayoutPicker.stories-Dyqys3DQ.js +0 -449
  397. package/storybook-static/assets/Listbox.stories-YIJrMp0t.js +0 -47
  398. package/storybook-static/assets/Modal.stories-BFDuVpN3.js +0 -180
  399. package/storybook-static/assets/MultiSelect-DY6u4L61.js +0 -2
  400. package/storybook-static/assets/MultiSelect.stories-bYuh54Fu.js +0 -29
  401. package/storybook-static/assets/NotificationsHost.stories-DYvkJ2cU.js +0 -25
  402. package/storybook-static/assets/ODataMultiSelect-dD4o0805.js +0 -1
  403. package/storybook-static/assets/ODataMultiSelect.stories-BS2NR6_9.js +0 -73
  404. package/storybook-static/assets/ODataSelect-BggbU-2c.js +0 -1
  405. package/storybook-static/assets/ODataSelect.stories-vTrv4d9z.js +0 -73
  406. package/storybook-static/assets/ODataTreeMultiSelect-CMhyGXwM.js +0 -19
  407. package/storybook-static/assets/ODataTreeMultiSelect.stories-BZ-NN4dI.js +0 -30
  408. package/storybook-static/assets/ODataTreeSelect-mJe6gYMX.js +0 -17
  409. package/storybook-static/assets/ODataTreeSelect.stories-DhSjFMeQ.js +0 -24
  410. package/storybook-static/assets/PeriodSelect.stories-CZUB8olq.js +0 -64
  411. package/storybook-static/assets/Popover.stories-DpZzhK2O.js +0 -69
  412. package/storybook-static/assets/PresetRangeDateInput.stories-qn-B1IOD.js +0 -15
  413. package/storybook-static/assets/RadioButton.stories-DwNfCMGS.js +0 -36
  414. package/storybook-static/assets/RadioGroup-DE_bpBiS.js +0 -1
  415. package/storybook-static/assets/RadioGroup.stories-DVqgV_4W.js +0 -42
  416. package/storybook-static/assets/Select-CelCWR4u.js +0 -12
  417. package/storybook-static/assets/Select.stories-Cgw1rh4h.js +0 -46
  418. package/storybook-static/assets/SelectOptionContent-Bjy9USsA.js +0 -1
  419. package/storybook-static/assets/SerializableSelect-D8YCGkPD.js +0 -4
  420. package/storybook-static/assets/SerializableSelect.stories-R2stgrdq.js +0 -43
  421. package/storybook-static/assets/SingleDateTimeInput.stories-CBsxKb4w.js +0 -78
  422. package/storybook-static/assets/Slider.stories-BCpR-FX3.js +0 -77
  423. package/storybook-static/assets/SliderInput.stories-56IQYe6a.js +0 -67
  424. package/storybook-static/assets/Sortable.stories-DUCcvgKr.js +0 -141
  425. package/storybook-static/assets/Splitter.stories-D4odwrXg.js +0 -22
  426. package/storybook-static/assets/StateSelect.stories-DXdcVPG0.js +0 -47
  427. package/storybook-static/assets/StringToggle.stories-C8RhgIJd.js +0 -6
  428. package/storybook-static/assets/Switch.stories-Cfkb4wPd.js +0 -26
  429. package/storybook-static/assets/Table.stories-C24_nZ5H.js +0 -122
  430. package/storybook-static/assets/Tabs.stories-CicNE4cs.js +0 -58
  431. package/storybook-static/assets/TagInput.stories-C3766Yv0.js +0 -18
  432. package/storybook-static/assets/Textarea.stories-CrRB7fzB.js +0 -27
  433. package/storybook-static/assets/TimePanel-DoveAQla.js +0 -1
  434. package/storybook-static/assets/TimePanel.stories-D2vUL6s0.js +0 -25
  435. package/storybook-static/assets/Toggle-ClOUAjaj.js +0 -1
  436. package/storybook-static/assets/Toggle.stories-Dnt25rG3.js +0 -30
  437. package/storybook-static/assets/TreeMultiSelect-CPtnpliv.js +0 -19
  438. package/storybook-static/assets/TreeMultiSelect-DE3AQOZl.js +0 -1
  439. package/storybook-static/assets/TreeMultiSelect.stories-BVo2A9HK.js +0 -35
  440. package/storybook-static/assets/TreePickerBase-DiMmn5I3.js +0 -22
  441. package/storybook-static/assets/TreeSelect-Cs_tb930.js +0 -1
  442. package/storybook-static/assets/TreeSelect-JTI9tQ4C.js +0 -16
  443. package/storybook-static/assets/TreeSelect.stories-C6Gm2YfT.js +0 -18
  444. package/storybook-static/assets/TreeTable.stories-CXJMSxQu.js +0 -83
  445. package/storybook-static/assets/WithTooltip-7X4HQR7L-DVJE2Dqb.js +0 -9
  446. package/storybook-static/assets/axe-GLfyhAYL.js +0 -20
  447. package/storybook-static/assets/base-table-BNO0lnTL.css +0 -1
  448. package/storybook-static/assets/base-table-_WBb2IZM.js +0 -18
  449. package/storybook-static/assets/blocks-kCueRzKM.js +0 -285
  450. package/storybook-static/assets/button-BfP43NV5.js +0 -1
  451. package/storybook-static/assets/check-box-jgZW0_tB.js +0 -1
  452. package/storybook-static/assets/chunk-242VQQM5-Dtm7LRbQ.js +0 -1
  453. package/storybook-static/assets/chunk-3LY4VQVK-DgbtId2R.js +0 -6
  454. package/storybook-static/assets/chunk-LITCR56V-C-pEySCh.js +0 -18
  455. package/storybook-static/assets/contextMenu-BY8W9e2R.js +0 -2
  456. package/storybook-static/assets/date-CuKkMWak.js +0 -461
  457. package/storybook-static/assets/date-segments-CzU9k5bl.js +0 -1
  458. package/storybook-static/assets/error-BkkZrYYA.js +0 -1
  459. package/storybook-static/assets/file-CfhfQiKL.js +0 -291
  460. package/storybook-static/assets/file-hArYcyES.js +0 -1
  461. package/storybook-static/assets/flex-DYnuC3Jl.js +0 -1
  462. package/storybook-static/assets/floating-ui.react-fJcp4ywX.js +0 -1
  463. package/storybook-static/assets/formatter-L2YTDE3Q-CQmzS1Ku.js +0 -1
  464. package/storybook-static/assets/formatters-Bt3ef0VX.js +0 -3
  465. package/storybook-static/assets/formulas-C5ifYPhi.js +0 -2
  466. package/storybook-static/assets/grid-DLQc0tY5.js +0 -1
  467. package/storybook-static/assets/hooks-COY2kUuX.js +0 -5
  468. package/storybook-static/assets/iframe-CqfP7aF1.js +0 -1119
  469. package/storybook-static/assets/input-DNF627Va.js +0 -1
  470. package/storybook-static/assets/mdx-react-shim-4LHuzuKu.js +0 -1
  471. package/storybook-static/assets/media-CbWC9XZs.js +0 -1
  472. package/storybook-static/assets/misc-BElIqBdV.css +0 -1
  473. package/storybook-static/assets/misc-D0Mkvmw8.js +0 -5
  474. package/storybook-static/assets/notifications-CRagNLgf.js +0 -1
  475. package/storybook-static/assets/number-Da4Ulq9E.js +0 -2
  476. package/storybook-static/assets/odata-DUcjBQqp.js +0 -1
  477. package/storybook-static/assets/odata-service-Rl9UYgzA.js +0 -1
  478. package/storybook-static/assets/odataStoryFixtures-BY3DnLbL.js +0 -25
  479. package/storybook-static/assets/picker-D2lWKGk-.js +0 -2
  480. package/storybook-static/assets/popover-BiQHI7Wi.css +0 -1
  481. package/storybook-static/assets/popover-D7McA5RG.js +0 -2
  482. package/storybook-static/assets/preload-helper-B45gAKPr.js +0 -1
  483. package/storybook-static/assets/preset-select-FySDZYno.js +0 -5
  484. package/storybook-static/assets/pwa-QKsIz2U4.js +0 -640
  485. package/storybook-static/assets/queryClient-Cf_KN496.js +0 -567
  486. package/storybook-static/assets/react-18-Dyh2Pzaa.js +0 -9
  487. package/storybook-static/assets/react-BonvwE5R.js +0 -9
  488. package/storybook-static/assets/react-dom--kz57wTp.js +0 -1
  489. package/storybook-static/assets/select-DsPUjSXp.js +0 -1
  490. package/storybook-static/assets/slider-D93-bn3E.js +0 -2
  491. package/storybook-static/assets/sortable-B2Ihqi-W.js +0 -1
  492. package/storybook-static/assets/syntaxhighlighter-RTCFPKCB-Bh8qQ71X.js +0 -6
  493. package/storybook-static/assets/text-BCUxHWs4.js +0 -4
  494. package/storybook-static/assets/theming-KsQ_vHzM.js +0 -39
  495. package/storybook-static/assets/treeStoryFixtures-Y_nnjz0_.js +0 -1
  496. package/storybook-static/assets/ui-D39u6Dhv.js +0 -1
  497. package/storybook-static/assets/ui.module-wFHXkJzp.js +0 -1
  498. package/storybook-static/assets/uiClasses-CaHp0EWd.js +0 -1
  499. package/storybook-static/assets/useODataSelectBase-BWIM1yqH.js +0 -1
  500. package/storybook-static/assets/useODataTreeData-CnmOnxqb.js +0 -1
  501. package/storybook-static/assets/utils-BfYZ9Iv_.js +0 -1
  502. package/storybook-static/assets/valueState-CV4TgbM9.js +0 -277
  503. /package/storybook-static/assets/{DropdownMenu-BgzIzwzM.css → ContextMenu-BgzIzwzM.css} +0 -0
  504. /package/storybook-static/assets/{Grid-K9R_IHaw.css → GridContainer-K9R_IHaw.css} +0 -0
  505. /package/storybook-static/assets/{InputFiles-ByK52qUe.css → InputFilesList-ByK52qUe.css} +0 -0
  506. /package/storybook-static/assets/{MultiSelect-BoIwmje6.css → MultiSelectToken-BoIwmje6.css} +0 -0
  507. /package/storybook-static/assets/{slider-DMDFRH6B.css → Slider-DMDFRH6B.css} +0 -0
  508. /package/storybook-static/assets/{Flex-IXK2se1Y.css → useFlexClasses-IXK2se1Y.css} +0 -0
  509. /package/storybook-static/assets/{picker-DzBkX15M.css → usePickerTriggerController-DzBkX15M.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/tree-table/TreeTable.module.scss","../../src/tree-table/TreeTable.tsx"],"sourcesContent":[".treeColumnCell {\n\tpadding-inline-start: var(--space-sm);\n}\n\n.selectedIndicatorCell {\n\tbox-shadow: inset 0.1875rem 0 0 var(--content-accent);\n}\n\n.treeCell {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n\tmin-width: 0;\n}\n\n.treeCellContent {\n\tmin-width: 0;\n\tflex: 1 1 auto;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.expanderButton {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex: 0 0 1.5rem;\n\twidth: 1.5rem;\n\theight: 1.5rem;\n\tpadding: 0;\n\tborder: 0;\n\tborder-radius: var(--radius-xs);\n\tbackground: transparent;\n\tcolor: var(--content-0);\n\tcursor: pointer;\n\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground-color: var(--surface-2);\n\t}\n}\n\n.expanderSpacer {\n\tflex: 0 0 1.5rem;\n\twidth: 1.5rem;\n\theight: 1.5rem;\n}\n\n.sentinel {\n\theight: 1px;\n}\n","/* eslint-disable react-hooks/incompatible-library */\nimport { useEffect, useEffectEvent, useMemo, useRef, useState, type ReactNode } from \"react\";\n\nimport { formatPipelineDisplayValue } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport {\n\tresolveTableLength,\n\tTableColumnDef,\n\ttype TableColumnOrderState,\n\ttype TableColumnSizingState,\n\tTableSelectionMode,\n\tuseTableRowSelection\n} from \"@ryuzaki13/react-foundation-lib/table\";\nimport { buildTreeTableRows, type TreeTableFlatHierarchy, type TreeTableRowNode } from \"@ryuzaki13/react-foundation-lib/tree-table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport {\n\tgetCoreRowModel,\n\tgetExpandedRowModel,\n\tuseReactTable,\n\ttype ExpandedState,\n\ttype Row,\n\ttype VisibilityState\n} from \"@tanstack/react-table\";\nimport { ChevronDownIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport {\n\tBaseTable,\n\tbuildBaseTableMergedCellsLayout,\n\tbuildTableFormattingSnapshot,\n\tFormattedTableCell,\n\tgetOrderedVisibleLeafColumns,\n\tshouldUseTableFormatting,\n\tuseTableColumnOrder,\n\tuseTableColumnPinning,\n\tuseTableColumnSizing,\n\tuseTableColumnVisibility,\n\ttype BaseTableCellRenderArgs,\n\ttype BaseTableColumnState,\n\ttype BaseTableProps,\n\ttype TableColumnPinningState\n} from \"../base-table\";\n\nimport styles from \"./TreeTable.module.scss\";\n\nimport type { TableFormulaRowData } from \"@ryuzaki13/react-foundation-lib/formulas\";\n\n/**\n * Внутренний тип строки TreeTable после преобразования в иерархию.\n */\ntype TreeTableRuntimeRow<TData extends object> = TreeTableRowNode<TData>;\n\n/**\n * Пропсы компонента TreeTable.\n *\n * Компонент принимает плоский OData-список и сам строит иерархию,\n * оставляя управление раскрытием и выбором во внутреннем состоянии.\n */\nexport interface TreeTableProps<TData extends object> {\n\t/**\n\t * Необязательный заголовок над таблицей.\n\t */\n\ttitle?: string;\n\t/**\n\t * Признак первичной загрузки.\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Признак фоновой догрузки или обновления данных.\n\t */\n\tisFetching?: boolean;\n\t/**\n\t * Плоский источник строк.\n\t */\n\tdata: readonly TData[] | undefined | null;\n\t/**\n\t * Описание колонок через исходный тип строки.\n\t */\n\tcolumns: readonly TableColumnDef<TData>[];\n\t/**\n\t * Правила восстановления дерева из плоского списка.\n\t */\n\thierarchy: TreeTableFlatHierarchy<TData>;\n\t/**\n\t * Режим выбора строк.\n\t */\n\tselectionMode?: TableSelectionMode;\n\t/**\n\t * Если `true`, при первом появлении данных раскрывает корневой уровень.\n\t */\n\texpandFirstLevel?: boolean;\n\t/**\n\t * Дополнительные строки, которые должны быть раскрыты при первой инициализации.\n\t */\n\tdefaultExpandedRowIds?: readonly string[];\n\t/**\n\t * Идентификатор колонки, в которой нужно рисовать tree-toggle и отступы.\n\t *\n\t * Если не указан, используется первая видимая колонка.\n\t */\n\ttreeColumnId?: string;\n\t/**\n\t * Отступ на один уровень вложенности.\n\t *\n\t * Числовое значение трактуется как `em`.\n\t */\n\tindentSize?: string | number;\n\t/**\n\t * Дополнительный CSS-класс корневого контейнера.\n\t */\n\tclassName?: string;\n\t/**\n\t * Дополнительный CSS-класс тега `table`.\n\t */\n\ttableClassName?: string;\n\t/**\n\t * Внешнее controlled-состояние видимости колонок.\n\t */\n\tcolumnVisibility?: VisibilityState;\n\t/**\n\t * Стартовое uncontrolled-состояние видимости колонок.\n\t */\n\tdefaultColumnVisibility?: VisibilityState;\n\t/**\n\t * Внешнее controlled-состояние порядка колонок.\n\t */\n\tcolumnOrder?: readonly string[];\n\t/**\n\t * Стартовое uncontrolled-состояние порядка колонок.\n\t */\n\tdefaultColumnOrder?: readonly string[];\n\t/**\n\t * Внешнее controlled-состояние ширин колонок в px.\n\t */\n\tcolumnSizing?: TableColumnSizingState;\n\t/**\n\t * Стартовое uncontrolled-состояние ширин колонок в px.\n\t */\n\tdefaultColumnSizing?: TableColumnSizingState;\n\t/**\n\t * Внешнее controlled-состояние left-pinning для колонок.\n\t */\n\tcolumnPinning?: TableColumnPinningState;\n\t/**\n\t * Стартовое uncontrolled-состояние left-pinning для колонок.\n\t */\n\tdefaultColumnPinning?: TableColumnPinningState;\n\t/**\n\t * Включает изменение ширины колонок через header-handle.\n\t */\n\tenableColumnResizing?: boolean;\n\t/**\n\t * Включает изменение порядка колонок через drag&drop заголовков.\n\t */\n\tenableColumnReordering?: boolean;\n\t/**\n\t * Минимальная ширина колонки при resize в px.\n\t */\n\tcolumnResizeMinWidth?: number;\n\t/**\n\t * Вызывается после изменения видимости колонок.\n\t */\n\tonColumnVisibilityChange?: (state: VisibilityState) => void;\n\t/**\n\t * Вызывается после изменения порядка колонок.\n\t */\n\tonColumnOrderChange?: (state: TableColumnOrderState) => void;\n\t/**\n\t * Вызывается после изменения ширины колонок.\n\t */\n\tonColumnSizingChange?: (state: TableColumnSizingState) => void;\n\t/**\n\t * Вызывается после изменения left-pinning state.\n\t */\n\tonColumnPinningChange?: (state: TableColumnPinningState) => void;\n\t/**\n\t * Вызывается при активации строки кликом или клавиатурой.\n\t */\n\tonRowClick?: (row: TData) => void;\n\t/**\n\t * Вызывается после изменения выбранных строк.\n\t */\n\tonRowSelectionChange?: (rows: TData[]) => void;\n\t/**\n\t * Вызывается после изменения раскрытых узлов.\n\t */\n\tonExpandedRowIdsChange?: (rowIds: string[]) => void;\n\t/**\n\t * Вызывается при достижении конца таблицы внутри scroll-контейнера.\n\t */\n\tonReachEnd?: () => void;\n\t/**\n\t * Позволяет запретить выбор отдельных строк.\n\t */\n\tgetRowCanSelect?: (row: TData) => boolean;\n\t/**\n\t * Позволяет добавить CSS-класс для конкретной строки.\n\t */\n\tgetRowClassName?: (row: TData) => string | undefined;\n\t/**\n\t * Контекстное меню заголовка колонки. Получает runtime-строки дерева,\n\t * потому что BaseTable работает уже после сборки flat hierarchy.\n\t */\n\trenderHeaderContextMenu?: BaseTableProps<TreeTableRuntimeRow<TData>>[\"renderHeaderContextMenu\"];\n\t/**\n\t * Точка расширения содержимого ячейки после общего форматирования.\n\t *\n\t * Для tree-column в `defaultContent` передается только содержимое ячейки:\n\t * TreeTable сам добавит expander и отступ после выполнения слота.\n\t */\n\trenderCellContent?: BaseTableProps<TreeTableRuntimeRow<TData>>[\"renderCellContent\"];\n}\n\n/**\n * Преобразует массив идентификаторов в формат состояния раскрытия TanStack.\n */\nfunction toExpandedState(rowIds: readonly string[]): ExpandedState {\n\treturn Object.fromEntries(rowIds.map((rowId) => [rowId, true]));\n}\n\n/**\n * Извлекает из состояния раскрытия только активные идентификаторы.\n */\nfunction extractExpandedRowIds(expanded: ExpandedState): string[] {\n\tif (typeof expanded === \"boolean\") {\n\t\treturn [];\n\t}\n\n\treturn Object.keys(expanded).filter((rowId) => expanded[rowId]);\n}\n\n/**\n * Нормализует исходную строку, убирая зависимость от внутреннего поля `children`.\n */\nfunction resolveOriginalRow<TData extends object>(row: Row<TreeTableRuntimeRow<TData>>, rowById: Map<string, TData>): TData {\n\treturn rowById.get(row.id) ?? (row.original as TData);\n}\n\n/**\n * Рендерит содержимое древовидной ячейки.\n */\nfunction renderTreeCellContent<TData extends object>(\n\targs: BaseTableCellRenderArgs<TreeTableRuntimeRow<TData>>,\n\tcontent: ReactNode,\n\ttreeColumnId: string | undefined,\n\tindentSize: string | number\n): ReactNode {\n\tif (args.cell.column.id !== treeColumnId) {\n\t\treturn content;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={styles.treeCell}\n\t\t\tstyle={{\n\t\t\t\tpaddingInlineStart: `calc(${args.row.depth} * ${resolveTableLength(indentSize) ?? \"0em\"})`\n\t\t\t}}>\n\t\t\t{args.row.getCanExpand() ? (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={styles.expanderButton}\n\t\t\t\t\taria-label={args.row.getIsExpanded() ? \"Свернуть строку\" : \"Развернуть строку\"}\n\t\t\t\t\tdata-tree-table-interactive=\"true\"\n\t\t\t\t\tdata-ui=\"tree-table-expander\"\n\t\t\t\t\tdata-action={args.row.getIsExpanded() ? \"collapse-tree-table-row\" : \"expand-tree-table-row\"}\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\targs.row.toggleExpanded();\n\t\t\t\t\t}}>\n\t\t\t\t\t{args.row.getIsExpanded() ? <ChevronDownIcon size={16} /> : <ChevronRightIcon size={16} />}\n\t\t\t\t</button>\n\t\t\t) : (\n\t\t\t\t<span className={styles.expanderSpacer} aria-hidden=\"true\" />\n\t\t\t)}\n\n\t\t\t<div className={styles.treeCellContent}>{content}</div>\n\t\t</div>\n\t);\n}\n\n/**\n * Древовидная таблица на базе TanStack Table для плоских OData-данных.\n */\nexport function TreeTable<TData extends object>({\n\ttitle,\n\tisLoading,\n\tisFetching,\n\tdata,\n\tcolumns,\n\thierarchy,\n\tselectionMode = \"none\",\n\texpandFirstLevel = false,\n\tdefaultExpandedRowIds,\n\ttreeColumnId,\n\tindentSize = 1,\n\tclassName,\n\ttableClassName,\n\tcolumnVisibility,\n\tdefaultColumnVisibility,\n\tcolumnOrder,\n\tdefaultColumnOrder,\n\tcolumnSizing,\n\tdefaultColumnSizing,\n\tcolumnPinning,\n\tdefaultColumnPinning,\n\tenableColumnResizing = false,\n\tenableColumnReordering = false,\n\tcolumnResizeMinWidth,\n\tonColumnVisibilityChange,\n\tonColumnOrderChange,\n\tonColumnSizingChange,\n\tonColumnPinningChange,\n\tonRowClick,\n\tonRowSelectionChange,\n\tonExpandedRowIdsChange,\n\tonReachEnd,\n\tgetRowCanSelect,\n\tgetRowClassName,\n\trenderHeaderContextMenu,\n\trenderCellContent\n}: TreeTableProps<TData>) {\n\tconst treeData = useMemo(() => buildTreeTableRows(data ?? [], hierarchy), [data, hierarchy]);\n\tconst formattingSnapshot = useMemo(() => buildTableFormattingSnapshot(columns), [columns]);\n\tconst initialExpandedRowIds = useMemo(() => {\n\t\tconst nextExpandedRowIds = new Set(defaultExpandedRowIds ?? []);\n\n\t\tif (expandFirstLevel) {\n\t\t\tfor (const rootRowId of treeData.rootRowIds) {\n\t\t\t\tnextExpandedRowIds.add(rootRowId);\n\t\t\t}\n\t\t}\n\n\t\treturn Array.from(nextExpandedRowIds);\n\t}, [defaultExpandedRowIds, expandFirstLevel, treeData.rootRowIds]);\n\n\tconst [expanded, setExpanded] = useState<ExpandedState>({});\n\tconst hasInitializedExpansionRef = useRef(false);\n\tconst scrollableRef = useRef<HTMLDivElement | null>(null);\n\tconst sentinelRef = useRef<HTMLDivElement | null>(null);\n\n\tconst { rowSelection, activateRowSelection } = useTableRowSelection({\n\t\tavailableRowIds: treeData.allRowIds,\n\t\trowById: treeData.rowById,\n\t\tselectionMode,\n\t\tonRowSelectionChange\n\t});\n\tconst { columnVisibility: resolvedColumnVisibility, onColumnVisibilityChange: handleColumnVisibilityChange } = useTableColumnVisibility(\n\t\t{\n\t\t\tcolumnVisibility,\n\t\t\tdefaultColumnVisibility,\n\t\t\tonColumnVisibilityChange\n\t\t}\n\t);\n\tconst { columnOrder: resolvedColumnOrder, onColumnOrderChange: handleColumnOrderChange } = useTableColumnOrder({\n\t\tcolumnOrder,\n\t\tdefaultColumnOrder,\n\t\tonColumnOrderChange\n\t});\n\tconst { columnSizing: resolvedColumnSizing, onColumnSizingChange: handleColumnSizingChange } = useTableColumnSizing({\n\t\tcolumnSizing,\n\t\tdefaultColumnSizing,\n\t\tcolumnResizeMinWidth,\n\t\tonColumnSizingChange\n\t});\n\tconst { columnPinning: resolvedColumnPinning, onColumnPinningChange: handleColumnPinningChange } = useTableColumnPinning({\n\t\tcolumnPinning,\n\t\tdefaultColumnPinning,\n\t\tonColumnPinningChange\n\t});\n\n\tconst baseTableColumnState = useMemo<BaseTableColumnState>(\n\t\t() => ({\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility\n\t\t}),\n\t\t[resolvedColumnOrder, resolvedColumnPinning, resolvedColumnSizing, resolvedColumnVisibility]\n\t);\n\n\tconst syncExpandedState = useEffectEvent((availableRowIds: readonly string[], nextInitialExpandedRowIds: readonly string[]) => {\n\t\tif (availableRowIds.length === 0) {\n\t\t\thasInitializedExpansionRef.current = false;\n\t\t\tsetExpanded({});\n\t\t\treturn;\n\t\t}\n\n\t\tconst availableRowIdSet = new Set(availableRowIds);\n\n\t\tsetExpanded((currentExpanded) => {\n\t\t\tconst persistedRowIds = extractExpandedRowIds(currentExpanded).filter((rowId) => availableRowIdSet.has(rowId));\n\n\t\t\tif (!hasInitializedExpansionRef.current) {\n\t\t\t\thasInitializedExpansionRef.current = true;\n\n\t\t\t\tconst seededRowIds = Array.from(\n\t\t\t\t\tnew Set([...persistedRowIds, ...nextInitialExpandedRowIds.filter((rowId) => availableRowIdSet.has(rowId))])\n\t\t\t\t);\n\n\t\t\t\treturn toExpandedState(seededRowIds);\n\t\t\t}\n\n\t\t\treturn toExpandedState(persistedRowIds);\n\t\t});\n\t});\n\n\tconst emitExpandedRowIdsChange = useEffectEvent((currentExpanded: ExpandedState) => {\n\t\tonExpandedRowIdsChange?.(extractExpandedRowIds(currentExpanded));\n\t});\n\n\tconst emitReachEnd = useEffectEvent(() => {\n\t\tonReachEnd?.();\n\t});\n\n\tuseEffect(() => {\n\t\tsyncExpandedState(treeData.allRowIds, initialExpandedRowIds);\n\t}, [initialExpandedRowIds, treeData.allRowIds]);\n\n\tuseEffect(() => {\n\t\temitExpandedRowIdsChange(expanded);\n\t}, [expanded]);\n\n\tuseEffect(() => {\n\t\tif (!onReachEnd || !scrollableRef.current || !sentinelRef.current || isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tconst entry = entries[0];\n\n\t\t\t\tif (entry?.isIntersecting) {\n\t\t\t\t\temitReachEnd();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\troot: scrollableRef.current,\n\t\t\t\tthreshold: 0.1\n\t\t\t}\n\t\t);\n\n\t\tobserver.observe(sentinelRef.current);\n\n\t\treturn () => observer.disconnect();\n\t}, [isLoading, onReachEnd, treeData.rows.length]);\n\n\tconst table = useReactTable<TreeTableRuntimeRow<TData>>({\n\t\tdata: treeData.rows as TreeTableRuntimeRow<TData>[],\n\t\tcolumns: columns as TableColumnDef<TreeTableRuntimeRow<TData>>[],\n\t\tstate: {\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility,\n\t\t\texpanded,\n\t\t\trowSelection\n\t\t},\n\t\tgetRowId: (row) => hierarchy.getRowId(row as TData),\n\t\tgetSubRows: (row) => row.children,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tgetExpandedRowModel: getExpandedRowModel(),\n\t\tonColumnOrderChange: handleColumnOrderChange,\n\t\tonColumnPinningChange: handleColumnPinningChange,\n\t\tonColumnSizingChange: handleColumnSizingChange,\n\t\tonColumnVisibilityChange: handleColumnVisibilityChange,\n\t\tonExpandedChange: setExpanded,\n\t\tenableMultiRowSelection: selectionMode === \"multi\",\n\t\tenableRowSelection: (row) => {\n\t\t\tif (selectionMode === \"none\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\t\treturn getRowCanSelect ? getRowCanSelect(originalRow) : true;\n\t\t}\n\t});\n\n\tconst visibleLeafColumns = getOrderedVisibleLeafColumns(table, baseTableColumnState);\n\tconst resolvedTreeColumnId = treeColumnId ?? visibleLeafColumns[0]?.id;\n\tconst rowModelRows = table.getRowModel().rows;\n\tconst mergedCellLayout = useMemo(\n\t\t() =>\n\t\t\tbuildBaseTableMergedCellsLayout({\n\t\t\t\trows: rowModelRows,\n\t\t\t\tcolumns: visibleLeafColumns,\n\t\t\t\tresolveRowBoundaryKey: (row) => row.depth,\n\t\t\t\texcludeColumnIds: resolvedTreeColumnId ? new Set([resolvedTreeColumnId]) : undefined\n\t\t\t}),\n\t\t[rowModelRows, visibleLeafColumns, resolvedTreeColumnId]\n\t);\n\n\t/**\n\t * Активирует строку: обновляет выбор в соответствии с режимом и вызывает внешний callback.\n\t */\n\tconst activateRow = (row: Row<TreeTableRuntimeRow<TData>>) => {\n\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\tactivateRowSelection(row.id, row.getCanSelect());\n\t\tonRowClick?.(originalRow);\n\t};\n\n\treturn (\n\t\t<BaseTable\n\t\t\ttable={table}\n\t\t\tcolumnState={baseTableColumnState}\n\t\t\ttitle={title}\n\t\t\tisLoading={isLoading}\n\t\t\tisFetching={isFetching}\n\t\t\tclassName={className}\n\t\t\ttableClassName={tableClassName}\n\t\t\tselectionMode={selectionMode}\n\t\t\tscrollableRef={scrollableRef}\n\t\t\tinteractiveElementSelector='[data-tree-table-interactive=\"true\"]'\n\t\t\tonActivateRow={selectionMode !== \"none\" || onRowClick ? activateRow : undefined}\n\t\t\tisRowInteractive={(row) => Boolean(onRowClick || (selectionMode !== \"none\" && row.getCanSelect()))}\n\t\t\tgetRowClassName={(row) => {\n\t\t\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\t\t\treturn getRowClassName?.(originalRow);\n\t\t\t}}\n\t\t\tgetCellClassName={({ row, cell }) =>\n\t\t\t\tcn(\n\t\t\t\t\tcell.column.id === resolvedTreeColumnId && styles.treeColumnCell,\n\t\t\t\t\tcell.column.id === resolvedTreeColumnId && row.getIsSelected() && styles.selectedIndicatorCell\n\t\t\t\t)\n\t\t\t}\n\t\t\tgetCellLayout={({ cell }) => mergedCellLayout.get(cell.id)}\n\t\t\trenderHeaderContextMenu={renderHeaderContextMenu}\n\t\t\tenableColumnResizing={enableColumnResizing}\n\t\t\tenableColumnReordering={enableColumnReordering}\n\t\t\tcolumnResizeMinWidth={columnResizeMinWidth}\n\t\t\trenderCellContent={(args) => {\n\t\t\t\tconst originalRow = resolveOriginalRow(args.row, treeData.rowById);\n\t\t\t\tconst displayValue = formatPipelineDisplayValue({\n\t\t\t\t\tfield: formattingSnapshot.runtimeByColumnId[args.cell.column.id],\n\t\t\t\t\trawValue: args.cell.getValue(),\n\t\t\t\t\trowData: originalRow as TableFormulaRowData,\n\t\t\t\t\trowKind: \"tree\"\n\t\t\t\t});\n\t\t\t\tconst defaultContent = shouldUseTableFormatting({\n\t\t\t\t\tcolumnId: args.cell.column.id,\n\t\t\t\t\truntimeByColumnId: formattingSnapshot.runtimeByColumnId,\n\t\t\t\t\tcustomCellColumnIds: formattingSnapshot.customCellColumnIds\n\t\t\t\t}) ? (\n\t\t\t\t\t<FormattedTableCell displayValue={displayValue} align={args.columnMeta?.align} />\n\t\t\t\t) : (\n\t\t\t\t\targs.defaultContent\n\t\t\t\t);\n\t\t\t\tconst content = renderCellContent\n\t\t\t\t\t? renderCellContent({\n\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\tdefaultContent,\n\t\t\t\t\t\t\tdisplayValue\n\t\t\t\t\t\t})\n\t\t\t\t\t: defaultContent;\n\n\t\t\t\treturn renderTreeCellContent(args, content, resolvedTreeColumnId, indentSize);\n\t\t\t}}\n\t\t\tafterTableContent={onReachEnd ? <div ref={sentinelRef} className={styles.sentinel} aria-hidden=\"true\" /> : null}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/tree-table/TreeTable.module.scss","../../src/tree-table/TreeTable.tsx"],"sourcesContent":[".treeColumnCell {\n\tpadding-inline-start: var(--space-sm);\n}\n\n.selectedIndicatorCell {\n\tbox-shadow: inset 0.1875rem 0 0 var(--content-accent);\n}\n\n.treeCell {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n\tmin-width: 0;\n}\n\n.treeCellContent {\n\tmin-width: 0;\n\tflex: 1 1 auto;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.expanderButton {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex: 0 0 1.5rem;\n\twidth: 1.5rem;\n\theight: 1.5rem;\n\tpadding: 0;\n\tborder: 0;\n\tborder-radius: var(--radius-xs);\n\tbackground: transparent;\n\tcolor: var(--content-0);\n\tcursor: pointer;\n\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground-color: var(--surface-2);\n\t}\n}\n\n.expanderSpacer {\n\tflex: 0 0 1.5rem;\n\twidth: 1.5rem;\n\theight: 1.5rem;\n}\n\n.sentinel {\n\theight: 1px;\n}\n","/* eslint-disable react-hooks/incompatible-library */\nimport { useEffect, useEffectEvent, useMemo, useRef, useState, type ReactNode } from \"react\";\n\nimport { formatPipelineDisplayValue } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport {\n\tresolveTableLength,\n\tTableColumnDef,\n\ttype TableColumnOrderState,\n\ttype TableColumnSizingState,\n\tTableSelectionMode,\n\tuseTableRowSelection\n} from \"@ryuzaki13/react-foundation-lib/table\";\nimport { buildTreeTableRows, type TreeTableFlatHierarchy, type TreeTableRowNode } from \"@ryuzaki13/react-foundation-lib/tree-table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport {\n\tgetCoreRowModel,\n\tgetExpandedRowModel,\n\tuseReactTable,\n\ttype ExpandedState,\n\ttype Row,\n\ttype VisibilityState\n} from \"@tanstack/react-table\";\nimport { ChevronDownIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport {\n\tBaseTable,\n\tbuildBaseTableMergedCellsLayout,\n\tbuildTableFormattingSnapshot,\n\tFormattedTableCell,\n\tgetOrderedVisibleLeafColumns,\n\tshouldUseTableFormatting,\n\tuseTableColumnOrder,\n\tuseTableColumnPinning,\n\tuseTableColumnSizing,\n\tuseTableColumnVisibility,\n\ttype BaseTableCellRenderArgs,\n\ttype BaseTableColumnState,\n\ttype BaseTableProps,\n\ttype TableColumnPinningState\n} from \"../base-table\";\n\nimport styles from \"./TreeTable.module.scss\";\n\nimport type { TableFormulaRowData } from \"@ryuzaki13/react-foundation-lib/formulas\";\n\n/**\n * Внутренний тип строки TreeTable после преобразования в иерархию.\n */\ntype TreeTableRuntimeRow<TData extends object> = TreeTableRowNode<TData>;\n\n/**\n * Пропсы компонента TreeTable.\n *\n * Компонент принимает плоский OData-список и сам строит иерархию,\n * оставляя управление раскрытием и выбором во внутреннем состоянии.\n */\nexport interface TreeTableProps<TData extends object> {\n\t/**\n\t * Необязательный заголовок над таблицей.\n\t */\n\ttitle?: string;\n\t/**\n\t * Признак первичной загрузки.\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Признак фоновой догрузки или обновления данных.\n\t */\n\tisFetching?: boolean;\n\t/**\n\t * Плоский источник строк.\n\t */\n\tdata: readonly TData[] | undefined | null;\n\t/**\n\t * Описание колонок через исходный тип строки.\n\t */\n\tcolumns: readonly TableColumnDef<TData>[];\n\t/**\n\t * Правила восстановления дерева из плоского списка.\n\t */\n\thierarchy: TreeTableFlatHierarchy<TData>;\n\t/**\n\t * Режим выбора строк.\n\t */\n\tselectionMode?: TableSelectionMode;\n\t/**\n\t * Если `true`, при первом появлении данных раскрывает корневой уровень.\n\t */\n\texpandFirstLevel?: boolean;\n\t/**\n\t * Дополнительные строки, которые должны быть раскрыты при первой инициализации.\n\t */\n\tdefaultExpandedRowIds?: readonly string[];\n\t/**\n\t * Идентификатор колонки, в которой нужно рисовать tree-toggle и отступы.\n\t *\n\t * Если не указан, используется первая видимая колонка.\n\t */\n\ttreeColumnId?: string;\n\t/**\n\t * Отступ на один уровень вложенности.\n\t *\n\t * Числовое значение трактуется как `em`.\n\t */\n\tindentSize?: string | number;\n\t/**\n\t * Дополнительный CSS-класс корневого контейнера.\n\t */\n\tclassName?: string;\n\t/**\n\t * Дополнительный CSS-класс тега `table`.\n\t */\n\ttableClassName?: string;\n\t/**\n\t * Внешнее controlled-состояние видимости колонок.\n\t */\n\tcolumnVisibility?: VisibilityState;\n\t/**\n\t * Стартовое uncontrolled-состояние видимости колонок.\n\t */\n\tdefaultColumnVisibility?: VisibilityState;\n\t/**\n\t * Внешнее controlled-состояние порядка колонок.\n\t */\n\tcolumnOrder?: readonly string[];\n\t/**\n\t * Стартовое uncontrolled-состояние порядка колонок.\n\t */\n\tdefaultColumnOrder?: readonly string[];\n\t/**\n\t * Внешнее controlled-состояние ширин колонок в px.\n\t */\n\tcolumnSizing?: TableColumnSizingState;\n\t/**\n\t * Стартовое uncontrolled-состояние ширин колонок в px.\n\t */\n\tdefaultColumnSizing?: TableColumnSizingState;\n\t/**\n\t * Внешнее controlled-состояние left-pinning для колонок.\n\t */\n\tcolumnPinning?: TableColumnPinningState;\n\t/**\n\t * Стартовое uncontrolled-состояние left-pinning для колонок.\n\t */\n\tdefaultColumnPinning?: TableColumnPinningState;\n\t/**\n\t * Включает изменение ширины колонок через header-handle.\n\t */\n\tenableColumnResizing?: boolean;\n\t/**\n\t * Включает изменение порядка колонок через drag&drop заголовков.\n\t */\n\tenableColumnReordering?: boolean;\n\t/**\n\t * Минимальная ширина колонки при resize в px.\n\t */\n\tcolumnResizeMinWidth?: number;\n\t/**\n\t * Вызывается после изменения видимости колонок.\n\t */\n\tonColumnVisibilityChange?: (state: VisibilityState) => void;\n\t/**\n\t * Вызывается после изменения порядка колонок.\n\t */\n\tonColumnOrderChange?: (state: TableColumnOrderState) => void;\n\t/**\n\t * Вызывается после изменения ширины колонок.\n\t */\n\tonColumnSizingChange?: (state: TableColumnSizingState) => void;\n\t/**\n\t * Вызывается после изменения left-pinning state.\n\t */\n\tonColumnPinningChange?: (state: TableColumnPinningState) => void;\n\t/**\n\t * Вызывается при активации строки кликом или клавиатурой.\n\t */\n\tonRowClick?: (row: TData) => void;\n\t/**\n\t * Вызывается после изменения выбранных строк.\n\t */\n\tonRowSelectionChange?: (rows: TData[]) => void;\n\t/**\n\t * Вызывается после изменения раскрытых узлов.\n\t */\n\tonExpandedRowIdsChange?: (rowIds: string[]) => void;\n\t/**\n\t * Вызывается при достижении конца таблицы внутри scroll-контейнера.\n\t */\n\tonReachEnd?: () => void;\n\t/**\n\t * Позволяет запретить выбор отдельных строк.\n\t */\n\tgetRowCanSelect?: (row: TData) => boolean;\n\t/**\n\t * Позволяет добавить CSS-класс для конкретной строки.\n\t */\n\tgetRowClassName?: (row: TData) => string | undefined;\n\t/**\n\t * Контекстное меню заголовка колонки. Получает runtime-строки дерева,\n\t * потому что BaseTable работает уже после сборки flat hierarchy.\n\t */\n\trenderHeaderContextMenu?: BaseTableProps<TreeTableRuntimeRow<TData>>[\"renderHeaderContextMenu\"];\n\t/**\n\t * Точка расширения содержимого ячейки после общего форматирования.\n\t *\n\t * Для tree-column в `defaultContent` передается только содержимое ячейки:\n\t * TreeTable сам добавит expander и отступ после выполнения слота.\n\t */\n\trenderCellContent?: BaseTableProps<TreeTableRuntimeRow<TData>>[\"renderCellContent\"];\n}\n\n/**\n * Преобразует массив идентификаторов в формат состояния раскрытия TanStack.\n */\nfunction toExpandedState(rowIds: readonly string[]): ExpandedState {\n\treturn Object.fromEntries(rowIds.map((rowId) => [rowId, true]));\n}\n\n/**\n * Извлекает из состояния раскрытия только активные идентификаторы.\n */\nfunction extractExpandedRowIds(expanded: ExpandedState): string[] {\n\tif (typeof expanded === \"boolean\") {\n\t\treturn [];\n\t}\n\n\treturn Object.keys(expanded).filter((rowId) => expanded[rowId]);\n}\n\n/**\n * Нормализует исходную строку, убирая зависимость от внутреннего поля `children`.\n */\nfunction resolveOriginalRow<TData extends object>(row: Row<TreeTableRuntimeRow<TData>>, rowById: Map<string, TData>): TData {\n\treturn rowById.get(row.id) ?? (row.original as TData);\n}\n\n/**\n * Рендерит содержимое древовидной ячейки.\n */\nfunction renderTreeCellContent<TData extends object>(\n\targs: BaseTableCellRenderArgs<TreeTableRuntimeRow<TData>>,\n\tcontent: ReactNode,\n\ttreeColumnId: string | undefined,\n\tindentSize: string | number\n): ReactNode {\n\tif (args.cell.column.id !== treeColumnId) {\n\t\treturn content;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={styles.treeCell}\n\t\t\tstyle={{\n\t\t\t\tpaddingInlineStart: `calc(${args.row.depth} * ${resolveTableLength(indentSize) ?? \"0em\"})`\n\t\t\t}}>\n\t\t\t{args.row.getCanExpand() ? (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={styles.expanderButton}\n\t\t\t\t\taria-label={args.row.getIsExpanded() ? \"Свернуть строку\" : \"Развернуть строку\"}\n\t\t\t\t\tdata-tree-table-interactive=\"true\"\n\t\t\t\t\tdata-ui=\"tree-table-expander\"\n\t\t\t\t\tdata-action={args.row.getIsExpanded() ? \"collapse-tree-table-row\" : \"expand-tree-table-row\"}\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\targs.row.toggleExpanded();\n\t\t\t\t\t}}>\n\t\t\t\t\t{args.row.getIsExpanded() ? <ChevronDownIcon size={16} /> : <ChevronRightIcon size={16} />}\n\t\t\t\t</button>\n\t\t\t) : (\n\t\t\t\t<span className={styles.expanderSpacer} aria-hidden=\"true\" />\n\t\t\t)}\n\n\t\t\t<div className={styles.treeCellContent}>{content}</div>\n\t\t</div>\n\t);\n}\n\n/**\n * Древовидная таблица на базе TanStack Table для плоских OData-данных.\n */\nexport function TreeTable<TData extends object>({\n\ttitle,\n\tisLoading,\n\tisFetching,\n\tdata,\n\tcolumns,\n\thierarchy,\n\tselectionMode = \"none\",\n\texpandFirstLevel = false,\n\tdefaultExpandedRowIds,\n\ttreeColumnId,\n\tindentSize = 1,\n\tclassName,\n\ttableClassName,\n\tcolumnVisibility,\n\tdefaultColumnVisibility,\n\tcolumnOrder,\n\tdefaultColumnOrder,\n\tcolumnSizing,\n\tdefaultColumnSizing,\n\tcolumnPinning,\n\tdefaultColumnPinning,\n\tenableColumnResizing = false,\n\tenableColumnReordering = false,\n\tcolumnResizeMinWidth,\n\tonColumnVisibilityChange,\n\tonColumnOrderChange,\n\tonColumnSizingChange,\n\tonColumnPinningChange,\n\tonRowClick,\n\tonRowSelectionChange,\n\tonExpandedRowIdsChange,\n\tonReachEnd,\n\tgetRowCanSelect,\n\tgetRowClassName,\n\trenderHeaderContextMenu,\n\trenderCellContent\n}: TreeTableProps<TData>) {\n\tconst treeData = useMemo(() => buildTreeTableRows(data ?? [], hierarchy), [data, hierarchy]);\n\tconst formattingSnapshot = useMemo(() => buildTableFormattingSnapshot(columns), [columns]);\n\tconst initialExpandedRowIds = useMemo(() => {\n\t\tconst nextExpandedRowIds = new Set(defaultExpandedRowIds ?? []);\n\n\t\tif (expandFirstLevel) {\n\t\t\tfor (const rootRowId of treeData.rootRowIds) {\n\t\t\t\tnextExpandedRowIds.add(rootRowId);\n\t\t\t}\n\t\t}\n\n\t\treturn Array.from(nextExpandedRowIds);\n\t}, [defaultExpandedRowIds, expandFirstLevel, treeData.rootRowIds]);\n\n\tconst [expanded, setExpanded] = useState<ExpandedState>({});\n\tconst hasInitializedExpansionRef = useRef(false);\n\tconst scrollableRef = useRef<HTMLDivElement | null>(null);\n\tconst sentinelRef = useRef<HTMLDivElement | null>(null);\n\n\tconst { rowSelection, activateRowSelection } = useTableRowSelection({\n\t\tavailableRowIds: treeData.allRowIds,\n\t\trowById: treeData.rowById,\n\t\tselectionMode,\n\t\tonRowSelectionChange\n\t});\n\tconst { columnVisibility: resolvedColumnVisibility, onColumnVisibilityChange: handleColumnVisibilityChange } = useTableColumnVisibility(\n\t\t{\n\t\t\tcolumnVisibility,\n\t\t\tdefaultColumnVisibility,\n\t\t\tonColumnVisibilityChange\n\t\t}\n\t);\n\tconst { columnOrder: resolvedColumnOrder, onColumnOrderChange: handleColumnOrderChange } = useTableColumnOrder({\n\t\tcolumnOrder,\n\t\tdefaultColumnOrder,\n\t\tonColumnOrderChange\n\t});\n\tconst { columnSizing: resolvedColumnSizing, onColumnSizingChange: handleColumnSizingChange } = useTableColumnSizing({\n\t\tcolumnSizing,\n\t\tdefaultColumnSizing,\n\t\tcolumnResizeMinWidth,\n\t\tonColumnSizingChange\n\t});\n\tconst { columnPinning: resolvedColumnPinning, onColumnPinningChange: handleColumnPinningChange } = useTableColumnPinning({\n\t\tcolumnPinning,\n\t\tdefaultColumnPinning,\n\t\tonColumnPinningChange\n\t});\n\n\tconst baseTableColumnState = useMemo<BaseTableColumnState>(\n\t\t() => ({\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility\n\t\t}),\n\t\t[resolvedColumnOrder, resolvedColumnPinning, resolvedColumnSizing, resolvedColumnVisibility]\n\t);\n\n\tconst syncExpandedState = useEffectEvent((availableRowIds: readonly string[], nextInitialExpandedRowIds: readonly string[]) => {\n\t\tif (availableRowIds.length === 0) {\n\t\t\thasInitializedExpansionRef.current = false;\n\t\t\tsetExpanded({});\n\t\t\treturn;\n\t\t}\n\n\t\tconst availableRowIdSet = new Set(availableRowIds);\n\n\t\tsetExpanded((currentExpanded) => {\n\t\t\tconst persistedRowIds = extractExpandedRowIds(currentExpanded).filter((rowId) => availableRowIdSet.has(rowId));\n\n\t\t\tif (!hasInitializedExpansionRef.current) {\n\t\t\t\thasInitializedExpansionRef.current = true;\n\n\t\t\t\tconst seededRowIds = Array.from(\n\t\t\t\t\tnew Set([...persistedRowIds, ...nextInitialExpandedRowIds.filter((rowId) => availableRowIdSet.has(rowId))])\n\t\t\t\t);\n\n\t\t\t\treturn toExpandedState(seededRowIds);\n\t\t\t}\n\n\t\t\treturn toExpandedState(persistedRowIds);\n\t\t});\n\t});\n\n\tconst emitExpandedRowIdsChange = useEffectEvent((currentExpanded: ExpandedState) => {\n\t\tonExpandedRowIdsChange?.(extractExpandedRowIds(currentExpanded));\n\t});\n\n\tconst emitReachEnd = useEffectEvent(() => {\n\t\tonReachEnd?.();\n\t});\n\n\tuseEffect(() => {\n\t\tsyncExpandedState(treeData.allRowIds, initialExpandedRowIds);\n\t}, [initialExpandedRowIds, treeData.allRowIds]);\n\n\tuseEffect(() => {\n\t\temitExpandedRowIdsChange(expanded);\n\t}, [expanded]);\n\n\tuseEffect(() => {\n\t\tif (!onReachEnd || !scrollableRef.current || !sentinelRef.current || isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tconst entry = entries[0];\n\n\t\t\t\tif (entry?.isIntersecting) {\n\t\t\t\t\temitReachEnd();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\troot: scrollableRef.current,\n\t\t\t\tthreshold: 0.1\n\t\t\t}\n\t\t);\n\n\t\tobserver.observe(sentinelRef.current);\n\n\t\treturn () => observer.disconnect();\n\t}, [isLoading, onReachEnd, treeData.rows.length]);\n\n\tconst table = useReactTable<TreeTableRuntimeRow<TData>>({\n\t\tdata: treeData.rows as TreeTableRuntimeRow<TData>[],\n\t\tcolumns: columns as TableColumnDef<TreeTableRuntimeRow<TData>>[],\n\t\tstate: {\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility,\n\t\t\texpanded,\n\t\t\trowSelection\n\t\t},\n\t\tgetRowId: (row) => hierarchy.getRowId(row as TData),\n\t\tgetSubRows: (row) => row.children,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tgetExpandedRowModel: getExpandedRowModel(),\n\t\tonColumnOrderChange: handleColumnOrderChange,\n\t\tonColumnPinningChange: handleColumnPinningChange,\n\t\tonColumnSizingChange: handleColumnSizingChange,\n\t\tonColumnVisibilityChange: handleColumnVisibilityChange,\n\t\tonExpandedChange: setExpanded,\n\t\tenableMultiRowSelection: selectionMode === \"multi\",\n\t\tenableRowSelection: (row) => {\n\t\t\tif (selectionMode === \"none\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\t\treturn getRowCanSelect ? getRowCanSelect(originalRow) : true;\n\t\t}\n\t});\n\n\tconst visibleLeafColumns = getOrderedVisibleLeafColumns(table, baseTableColumnState);\n\tconst resolvedTreeColumnId = treeColumnId ?? visibleLeafColumns[0]?.id;\n\tconst rowModelRows = table.getRowModel().rows;\n\tconst mergedCellLayout = useMemo(\n\t\t() =>\n\t\t\tbuildBaseTableMergedCellsLayout({\n\t\t\t\trows: rowModelRows,\n\t\t\t\tcolumns: visibleLeafColumns,\n\t\t\t\tresolveRowBoundaryKey: (row) => row.depth,\n\t\t\t\texcludeColumnIds: resolvedTreeColumnId ? new Set([resolvedTreeColumnId]) : undefined\n\t\t\t}),\n\t\t[rowModelRows, visibleLeafColumns, resolvedTreeColumnId]\n\t);\n\n\t/**\n\t * Активирует строку: обновляет выбор в соответствии с режимом и вызывает внешний callback.\n\t */\n\tconst activateRow = (row: Row<TreeTableRuntimeRow<TData>>) => {\n\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\tactivateRowSelection(row.id, row.getCanSelect());\n\t\tonRowClick?.(originalRow);\n\t};\n\n\treturn (\n\t\t<BaseTable\n\t\t\ttable={table}\n\t\t\tcolumnState={baseTableColumnState}\n\t\t\ttitle={title}\n\t\t\tisLoading={isLoading}\n\t\t\tisFetching={isFetching}\n\t\t\tclassName={className}\n\t\t\ttableClassName={tableClassName}\n\t\t\tselectionMode={selectionMode}\n\t\t\tscrollableRef={scrollableRef}\n\t\t\tinteractiveElementSelector='[data-tree-table-interactive=\"true\"]'\n\t\t\tonActivateRow={selectionMode !== \"none\" || onRowClick ? activateRow : undefined}\n\t\t\tisRowInteractive={(row) => Boolean(onRowClick || (selectionMode !== \"none\" && row.getCanSelect()))}\n\t\t\tgetRowClassName={(row) => {\n\t\t\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\t\t\treturn getRowClassName?.(originalRow);\n\t\t\t}}\n\t\t\tgetCellClassName={({ row, cell }) =>\n\t\t\t\tcn(\n\t\t\t\t\tcell.column.id === resolvedTreeColumnId && styles.treeColumnCell,\n\t\t\t\t\tcell.column.id === resolvedTreeColumnId && row.getIsSelected() && styles.selectedIndicatorCell\n\t\t\t\t)\n\t\t\t}\n\t\t\tgetCellLayout={({ cell }) => mergedCellLayout.get(cell.id)}\n\t\t\trenderHeaderContextMenu={renderHeaderContextMenu}\n\t\t\tenableColumnResizing={enableColumnResizing}\n\t\t\tenableColumnReordering={enableColumnReordering}\n\t\t\tcolumnResizeMinWidth={columnResizeMinWidth}\n\t\t\trenderCellContent={(args) => {\n\t\t\t\tconst originalRow = resolveOriginalRow(args.row, treeData.rowById);\n\t\t\t\tconst displayValue = formatPipelineDisplayValue({\n\t\t\t\t\tfield: formattingSnapshot.runtimeByColumnId[args.cell.column.id],\n\t\t\t\t\trawValue: args.cell.getValue(),\n\t\t\t\t\trowData: originalRow as TableFormulaRowData,\n\t\t\t\t\trowKind: \"tree\"\n\t\t\t\t});\n\t\t\t\tconst defaultContent = shouldUseTableFormatting({\n\t\t\t\t\tcolumnId: args.cell.column.id,\n\t\t\t\t\truntimeByColumnId: formattingSnapshot.runtimeByColumnId,\n\t\t\t\t\tcustomCellColumnIds: formattingSnapshot.customCellColumnIds\n\t\t\t\t}) ? (\n\t\t\t\t\t<FormattedTableCell displayValue={displayValue} align={args.columnMeta?.align} />\n\t\t\t\t) : (\n\t\t\t\t\targs.defaultContent\n\t\t\t\t);\n\t\t\t\tconst content = renderCellContent\n\t\t\t\t\t? renderCellContent({\n\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\tdefaultContent,\n\t\t\t\t\t\t\tdisplayValue\n\t\t\t\t\t\t})\n\t\t\t\t\t: defaultContent;\n\n\t\t\t\treturn renderTreeCellContent(args, content, resolvedTreeColumnId, indentSize);\n\t\t\t}}\n\t\t\tafterTableContent={onReachEnd ? <div ref={sentinelRef} className={styles.sentinel} aria-hidden=\"true\" /> : null}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryuzaki13/react-foundation-ui",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "description": "Reusable React foundation UI primitives and Storybook stories.",
5
5
  "license": "MIT",
6
6
  "author": "Ryuzaki13",
@@ -354,11 +354,11 @@
354
354
  "registry": "https://registry.npmjs.org/"
355
355
  },
356
356
  "peerDependencies": {
357
- "@dnd-kit/core": "^6.3.1",
358
- "@dnd-kit/modifiers": "^9.0.0",
359
- "@dnd-kit/sortable": "^10.0.0",
360
- "@dnd-kit/utilities": "^3.2.2",
361
- "@floating-ui/react": "^0.27.19",
357
+ "@dnd-kit/core": ">=6.3.0 <7.0.0",
358
+ "@dnd-kit/modifiers": ">=9.0.0 <10.0.0",
359
+ "@dnd-kit/sortable": ">=10.0.0 <11.0.0",
360
+ "@dnd-kit/utilities": ">=3.0.0 <4.0.0",
361
+ "@floating-ui/react": ">=0.27.0 <0.28.0",
362
362
  "@lexical/html": "^0.46.0",
363
363
  "@lexical/link": "^0.46.0",
364
364
  "@lexical/list": "^0.46.0",
@@ -368,20 +368,18 @@
368
368
  "@lexical/utils": "^0.46.0",
369
369
  "@ryuzaki13/react-foundation-api": ">=0.1.0 <2.0.0",
370
370
  "@ryuzaki13/react-foundation-lib": ">=0.1.0 <2.0.0",
371
- "@storybook/react-vite": "^10.4.6",
372
- "@tanstack/react-query": "^5.101.1",
373
- "@tanstack/react-router": "^1.170.16",
374
- "@tanstack/react-table": "^8.21.3",
375
- "@tanstack/react-virtual": "^3.14.4",
371
+ "@tanstack/react-query": ">=5.101.1 <6.0.0",
372
+ "@tanstack/react-router": ">=1.170.0 <2.0.0",
373
+ "@tanstack/react-table": ">=8.21.0 <9.0.0",
374
+ "@tanstack/react-virtual": ">=3.14.0 <4.0.0",
376
375
  "lexical": "^0.46.0",
377
- "lucide-react": "^1.21.0",
378
- "motion": "^12.42.0",
379
- "react": "^19.2.7",
380
- "react-dom": "^19.2.7",
381
- "react-easy-crop": "^6.0.2",
382
- "storybook": "^10.4.6",
383
- "yet-another-react-lightbox": "^3.32.1",
384
- "zustand": "^5.0.14"
376
+ "lucide-react": ">=1.21.0 <2.0.0",
377
+ "motion": ">=12.42.0 <13.0.0",
378
+ "react": ">=19.2.0 <20.0.0",
379
+ "react-dom": ">=19.2.0 <20.0.0",
380
+ "react-easy-crop": ">=6.0.0 <7.0.0",
381
+ "yet-another-react-lightbox": ">=3.32.0 <4.0.0",
382
+ "zustand": ">=5.0.0 <6.0.0"
385
383
  },
386
384
  "peerDependenciesMeta": {
387
385
  "@dnd-kit/core": {
@@ -423,6 +421,9 @@
423
421
  "@tanstack/react-query": {
424
422
  "optional": true
425
423
  },
424
+ "@tanstack/react-router": {
425
+ "optional": true
426
+ },
426
427
  "@tanstack/react-table": {
427
428
  "optional": true
428
429
  },
@@ -441,19 +442,10 @@
441
442
  "react-easy-crop": {
442
443
  "optional": true
443
444
  },
444
- "zustand": {
445
- "optional": true
446
- },
447
- "@tanstack/react-router": {
448
- "optional": true
449
- },
450
- "storybook": {
451
- "optional": true
452
- },
453
445
  "yet-another-react-lightbox": {
454
446
  "optional": true
455
447
  },
456
- "@storybook/react-vite": {
448
+ "zustand": {
457
449
  "optional": true
458
450
  }
459
451
  },
@@ -463,7 +455,7 @@
463
455
  "@dnd-kit/modifiers": "^9.0.0",
464
456
  "@dnd-kit/sortable": "^10.0.0",
465
457
  "@dnd-kit/utilities": "^3.2.2",
466
- "@floating-ui/react": "^0.27.19",
458
+ "@floating-ui/react": "^0.27.20",
467
459
  "@lexical/html": "^0.46.0",
468
460
  "@lexical/link": "^0.46.0",
469
461
  "@lexical/list": "^0.46.0",
@@ -471,50 +463,50 @@
471
463
  "@lexical/rich-text": "^0.46.0",
472
464
  "@lexical/selection": "^0.46.0",
473
465
  "@lexical/utils": "^0.46.0",
474
- "@ryuzaki13/react-foundation-api": "^1.1.10",
475
- "@ryuzaki13/react-foundation-lib": "^1.2.2",
476
- "@storybook/addon-a11y": "^10.4.6",
477
- "@storybook/addon-docs": "^10.4.6",
478
- "@storybook/addon-vitest": "^10.4.6",
479
- "@storybook/react-vite": "^10.4.6",
480
- "@tanstack/query-broadcast-client-experimental": "^5.101.2",
481
- "@tanstack/query-persist-client-core": "^5.101.2",
482
- "@tanstack/react-query": "^5.101.1",
483
- "@tanstack/react-router": "^1.170.17",
466
+ "@ryuzaki13/react-foundation-api": "^1.1.13",
467
+ "@ryuzaki13/react-foundation-lib": "^1.2.6",
468
+ "@storybook/addon-a11y": "^10.5.5",
469
+ "@storybook/addon-docs": "^10.5.5",
470
+ "@storybook/addon-vitest": "^10.5.5",
471
+ "@storybook/react-vite": "^10.5.5",
472
+ "@tanstack/query-broadcast-client-experimental": "^5.101.4",
473
+ "@tanstack/query-persist-client-core": "^5.101.4",
474
+ "@tanstack/react-query": "^5.101.4",
475
+ "@tanstack/react-router": "^1.170.18",
484
476
  "@tanstack/react-table": "^8.21.3",
485
- "@tanstack/react-virtual": "^3.14.4",
477
+ "@tanstack/react-virtual": "^3.14.9",
486
478
  "@testing-library/dom": "^10.4.1",
487
479
  "@testing-library/react": "^16.3.2",
488
480
  "@testing-library/user-event": "^14.6.1",
489
- "@types/node": "^22.0.0",
490
- "@types/react": "^19.2.17",
491
- "@types/react-dom": "^19.2.3",
492
- "@vitejs/plugin-react": "^6.0.3",
481
+ "@types/node": "^22.20.1",
482
+ "@types/react": "^19.2.18",
483
+ "@types/react-dom": "^19.2.4",
484
+ "@vitejs/plugin-react": "^6.0.5",
493
485
  "@vitest/browser": "^4.1.10",
494
- "eslint": "^10.6.0",
486
+ "eslint": "^10.8.0",
495
487
  "eslint-import-resolver-typescript": "^4.4.5",
496
488
  "eslint-plugin-import-x": "^4.17.1",
497
489
  "eslint-plugin-prettier": "^5.5.6",
498
490
  "eslint-plugin-react-hooks": "^7.1.1",
499
491
  "eslint-plugin-react-refresh": "^0.5.3",
500
- "globals": "^17.7.0",
501
- "immer": "^11.1.11",
492
+ "globals": "^17.8.0",
493
+ "immer": "^11.1.15",
502
494
  "jiti": "^2.7.0",
503
495
  "jsdom": "^29.1.1",
504
496
  "lexical": "^0.46.0",
505
- "lucide-react": "^1.21.0",
506
- "motion": "^12.42.0",
507
- "playwright": "^1.61.1",
508
- "react": "^19.2.7",
509
- "react-dom": "^19.2.7",
510
- "react-easy-crop": "^6.0.2",
497
+ "lucide-react": "^1.28.0",
498
+ "motion": "^12.43.0",
499
+ "playwright": "^1.62.1",
500
+ "react": "^19.2.8",
501
+ "react-dom": "^19.2.8",
502
+ "react-easy-crop": "^6.2.3",
511
503
  "sass-embedded": "^1.100.0",
512
- "storybook": "^10.4.6",
504
+ "storybook": "^10.5.5",
513
505
  "typescript": "^6.0.3",
514
- "typescript-eslint": "^8.63.0",
515
- "vite": "^8.1.0",
516
- "vitest": "^4.1.9",
517
- "yet-another-react-lightbox": "^3.32.1",
506
+ "typescript-eslint": "^8.65.0",
507
+ "vite": "^8.2.0",
508
+ "vitest": "^4.1.10",
509
+ "yet-another-react-lightbox": "^3.32.2",
518
510
  "zustand": "^5.0.14"
519
511
  },
520
512
  "engines": {
@@ -1,6 +1,6 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-kCueRzKM.js";import{t as f}from"./mdx-react-shim-4LHuzuKu.js";import{Appearances as p,Basic as m,RemovableList as h,Sizes as g,Tones as _,n as v,t as y}from"./Badge.stories-DwBMjWuT.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(o,{of:y,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
2
- `,(0,S.jsx)(l,{children:`Badge`}),`
3
- `,(0,S.jsx)(a,{children:`Компактная текстовая метка для статусов, категорий, фильтров и коротких служебных пометок`}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CrnMVMTc.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-Dz3dJBcm.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./Badge.stories-CeWDekpP.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:h,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
2
+ `,(0,S.jsx)(u,{children:`Badge`}),`
3
+ `,(0,S.jsx)(o,{children:`Компактная текстовая метка для статусов, категорий, фильтров и коротких служебных пометок`}),`
4
4
  `,(0,S.jsx)(t.p,{children:`Badge подходит для коротких подписей, которые должны быстро читаться и не перегружать интерфейс:`}),`
5
5
  `,(0,S.jsxs)(t.ul,{children:[`
6
6
  `,(0,S.jsx)(t.li,{children:`статусы и состояния записи;`}),`
@@ -10,7 +10,7 @@ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1
10
10
  `]}),`
11
11
  `,(0,S.jsxs)(t.p,{children:[`Компонент принимает только строковый `,(0,S.jsx)(t.code,{children:`children`}),`. Длинный текст автоматически ограничивается по ширине и сокращается через `,(0,S.jsx)(t.code,{children:`TextOverflow`}),`, поэтому Badge лучше использовать для коротких и однозначных формулировок.`]}),`
12
12
  `,(0,S.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
13
- `,(0,S.jsx)(d,{}),`
13
+ `,(0,S.jsx)(f,{}),`
14
14
  `,(0,S.jsx)(t.pre,{children:(0,S.jsx)(t.code,{className:`language-tsx`,children:`import { Badge } from "@/shared/ui";
15
15
 
16
16
  export function Example() {
@@ -21,7 +21,7 @@ export function Example() {
21
21
  );
22
22
  }
23
23
  `})}),`
24
- `,(0,S.jsx)(r,{of:m}),`
24
+ `,(0,S.jsx)(i,{of:_}),`
25
25
  `,(0,S.jsx)(t.h2,{id:`визуальная-схема`,children:`Визуальная схема`}),`
26
26
  `,(0,S.jsx)(t.p,{children:`В компоненте есть два уровня настройки:`}),`
27
27
  `,(0,S.jsxs)(t.ul,{children:[`
@@ -35,7 +35,7 @@ export function Example() {
35
35
  `,(0,S.jsxs)(t.li,{children:[`проп `,(0,S.jsx)(t.code,{children:`color`}),` поддерживается только для обратной совместимости и считается устаревшим.`]}),`
36
36
  `]}),`
37
37
  `,(0,S.jsx)(t.h3,{id:`тоны`,children:`Тоны`}),`
38
- `,(0,S.jsx)(u,{of:_}),`
38
+ `,(0,S.jsx)(d,{of:g}),`
39
39
  `,(0,S.jsx)(t.pre,{children:(0,S.jsx)(t.code,{className:`language-tsx`,children:`import { Badge, BadgeList } from "@/shared/ui";
40
40
 
41
41
  export function StatusBadges() {
@@ -61,7 +61,7 @@ export function StatusBadges() {
61
61
  }
62
62
  `})}),`
63
63
  `,(0,S.jsx)(t.h3,{id:`варианты-отображения`,children:`Варианты отображения`}),`
64
- `,(0,S.jsx)(u,{of:p}),`
64
+ `,(0,S.jsx)(d,{of:y}),`
65
65
  `,(0,S.jsx)(t.pre,{children:(0,S.jsx)(t.code,{className:`language-tsx`,children:`import { Badge, BadgeList } from "@/shared/ui";
66
66
 
67
67
  export function AppearanceBadges() {
@@ -85,7 +85,7 @@ export function AppearanceBadges() {
85
85
  `})}),`
86
86
  `,(0,S.jsx)(t.h2,{id:`размеры`,children:`Размеры`}),`
87
87
  `,(0,S.jsxs)(t.p,{children:[`Badge поддерживает размеры от `,(0,S.jsx)(t.code,{children:`xs`}),` до `,(0,S.jsx)(t.code,{children:`xl`}),`. На практике чаще всего используются `,(0,S.jsx)(t.code,{children:`sm`}),` и `,(0,S.jsx)(t.code,{children:`md`}),`: они лучше всего подходят для строк таблиц, панелей фильтрации и карточек.`]}),`
88
- `,(0,S.jsx)(u,{of:g}),`
88
+ `,(0,S.jsx)(d,{of:p}),`
89
89
  `,(0,S.jsx)(t.pre,{children:(0,S.jsx)(t.code,{className:`language-tsx`,children:`import { Badge, BadgeList } from "@/shared/ui";
90
90
 
91
91
  export function SizeBadges() {
@@ -102,7 +102,7 @@ export function SizeBadges() {
102
102
  `})}),`
103
103
  `,(0,S.jsx)(t.h2,{id:`списки-фильтров-и-выбранных-значений`,children:`Списки фильтров и выбранных значений`}),`
104
104
  `,(0,S.jsxs)(t.p,{children:[`Для набора бейджей в одну строку или в несколько переносимых строк есть вспомогательный контейнер `,(0,S.jsx)(t.code,{children:`BadgeList`}),`. Это самый частый сценарий в проекте: выбранные фильтры, категории, теги и активные параметры поиска.`]}),`
105
- `,(0,S.jsx)(u,{of:h}),`
105
+ `,(0,S.jsx)(d,{of:m}),`
106
106
  `,(0,S.jsx)(t.pre,{children:(0,S.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
107
107
 
108
108
  import { Badge, BadgeList } from "@/shared/ui";
@@ -134,6 +134,6 @@ export function SelectedFilters() {
134
134
  `,(0,S.jsxs)(t.li,{children:[`Для новых сценариев рекомендуется использовать `,(0,S.jsx)(t.code,{children:`tone`}),` и `,(0,S.jsx)(t.code,{children:`appearance`}),`, а не `,(0,S.jsx)(t.code,{children:`color`}),`.`]}),`
135
135
  `]}),`
136
136
  `,(0,S.jsx)(t.h2,{id:`api`,children:`API`}),`
137
- `,(0,S.jsx)(c,{of:y}),`
137
+ `,(0,S.jsx)(l,{of:h}),`
138
138
  `,(0,S.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
139
- `,(0,S.jsx)(i,{includePrimary:!1})]})}function x(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,S.jsx)(t,{...e,children:(0,S.jsx)(b,{...e})}):b(e)}var S;e((()=>{S=t(),f(),s(),v()}))();export{x as default};
139
+ `,(0,S.jsx)(a,{includePrimary:!1})]})}function x(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,S.jsx)(t,{...e,children:(0,S.jsx)(b,{...e})}):b(e)}var S;function C(){return(C=e((()=>{S=t(),r(),c(),v()})))()}C();export{x as default};
@@ -0,0 +1,54 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./x-CyFk00QC.js";import{n as a}from"./iframe-CrnMVMTc.js";import{a as o,i as s}from"./utils-DUM89eIj.js";import{a as c,l}from"./array-BBSjoTRy-CIRmlF93.js";import{n as u,t as d}from"./FloatingPopover-CPLOruAY.js";import{i as f,n as p,r as m,t as h}from"./uiClasses-CO3Cdv1E.js";import{n as g,t as _}from"./FlexContainer-LmZIdhq2.js";function v({maxChar:e,placement:t=`left`,closeDelay:n=0,maxWidth:r,children:i,block:a,state:o,textWrap:s,textWrapProps:c}){let u=l(i);if(!u.length||e&&u.length<e)return(0,y.jsx)(`span`,{children:u});let f=s??`div`,p={style:{display:a?`block`:`inline-block`,width:e?`${e-3}ch`:`auto`},className:`textOverflow`},m={...c,...p,style:{...c?.style,...p.style},className:[c?.className,p.className].filter(Boolean).join(` `)};return(0,y.jsx)(d,{state:o,placement:t,openOnHover:!0,content:u,closeDelay:n,maxWidth:r,children:(0,y.jsx)(f,{...m,children:u})})}var y;function b(){return(b=e((()=>{c(),u(),y=a(),v.__docgenInfo={description:``,methods:[],displayName:`TextOverflow`,props:{children:{required:!0,tsType:{name:`string`},description:``},maxChar:{required:!1,tsType:{name:`number`},description:``},maxWidth:{required:!1,tsType:{name:`number`},description:`Максимальная ширина тултипа в em.`},placement:{required:!1,tsType:{name:`Placement`},description:``,defaultValue:{value:`"left"`,computed:!1}},closeDelay:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`0`,computed:!1}},block:{required:!1,tsType:{name:`literal`,value:`true`},description:`Для работы text-overflow элемент обязан быть блочным или inline-block.
2
+ Если в качестве обёртки передается инлайновый компонент, то он будет
3
+ перезаписан через стили на display: block или inline-block в зависимости
4
+ от установки данного пропса.`},state:{required:!1,tsType:{name:`union`,raw:`"information" | "error" | "warning" | "success" | "negative"`,elements:[{name:`literal`,value:`"information"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"negative"`}]},description:``},textWrap:{required:!1,tsType:{name:`T`},description:``},textWrapProps:{required:!1,tsType:{name:`Omit`,elements:[{name:`ComponentProps`,elements:[{name:`T`}],raw:`ComponentProps<T>`},{name:`literal`,value:`"children"`}],raw:`Omit<ComponentProps<T>, "children">`},description:``}}}})))()}var x,S,C,w,T,E,D,O,k,A;function j(){return(j=e((()=>{x=`qBtmnH`,S=`p-HsHY`,C=`u9tQAE`,w=`FRScRz`,T=`W13uQO`,E=`_3IRcM9`,D=`R3ybI7`,O=`DdWAaC`,k=`_5cXBQF`,A={badge:x,passive:S,sizeXs:C,sizeSm:w,sizeMd:T,sizeLg:E,sizeXl:D,content:O,removeButton:k}})))()}function M({children:e,size:t=`sm`,tone:n,appearance:r,className:a,onRemove:s}){let c=n??`neutral`,l=f({tone:n,appearance:r,fallbackTone:c,fallbackAppearance:c===`neutral`?`outline`:`solid`});return(0,N.jsxs)(`div`,{className:o(A.badge,P[t],p(l.tone),h(l.appearance),!s&&A.passive,a),children:[(0,N.jsx)(v,{maxChar:25,placement:`top`,block:!0,textWrapProps:{className:A.content},children:String(e)}),s&&(0,N.jsx)(`button`,{type:`button`,onClick:s,className:A.removeButton,"aria-label":`Удалить бейдж`,"data-ui":`badge-remove-button`,"data-action":`remove-badge`,children:(0,N.jsx)(i,{})})]})}var N,P;function F(){return(F=e((()=>{s(),r(),b(),m(),j(),N=a(),P={xs:A.sizeXs,sm:A.sizeSm,md:A.sizeMd,lg:A.sizeLg,xl:A.sizeXl},M.__docgenInfo={description:`Компактный индикатор для статусов, категорий и коротких служебных меток.`,methods:[],displayName:`Badge`,props:{children:{required:!0,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``,defaultValue:{value:`"sm"`,computed:!1}},tone:{required:!1,tsType:{name:`union`,raw:`"neutral" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``},appearance:{required:!1,tsType:{name:`union`,raw:`"solid" | "outline" | "ghost" | "transparent"`,elements:[{name:`literal`,value:`"solid"`},{name:`literal`,value:`"outline"`},{name:`literal`,value:`"ghost"`},{name:`literal`,value:`"transparent"`}]},description:``},className:{required:!1,tsType:{name:`string`},description:``},onRemove:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}}}})))()}function I({children:e}){return(0,R.jsx)(_,{inline:!0,wrap:!0,gap:`sm`,align:`baseline`,children:L.Children.map(e,(e,t)=>(0,R.jsx)(L.Fragment,{children:e},t))})}var L,R;function z(){return(z=e((()=>{L=n(),g(),R=a(),I.__docgenInfo={description:"Контейнер для группы `Badge`, который выстраивает элементы в единый список с предсказуемыми отступами. Используется для компактного вывода набора меток или фильтров.",methods:[],displayName:`BadgeList`,props:{children:{required:!0,tsType:{name:`Array`,elements:[{name:`ReactElement`,elements:[{name:`union`,raw:`typeof Badge | null | undefined | false`,elements:[{name:`Badge`},{name:`null`},{name:`undefined`},{name:`literal`,value:`false`}]}],raw:`ReactElement<typeof Badge | null | undefined | false>`}],raw:`ReactElement<typeof Badge | null | undefined | false>[]`},description:``}}}})))()}var B=t({Appearances:()=>K,Basic:()=>W,RemovableList:()=>J,Sizes:()=>q,Tones:()=>G,__namedExportsOrder:()=>Y,default:()=>U}),V,H,U,W,G,K,q,J,Y;function X(){return(X=e((()=>{V=n(),F(),z(),H=a(),U={title:`Shared/UI/Badge`,component:M,args:{children:`Новый`,size:`md`,tone:`info`,appearance:`solid`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{children:{description:`Текст внутри бейджа.`,control:`text`},size:{description:`Размер бейджа.`,control:`inline-radio`,options:[`sm`,`md`,`lg`]},tone:{description:`Семантический тон бейджа.`,control:`inline-radio`,options:[`neutral`,`success`,`warning`,`error`,`info`]},appearance:{description:`Форма бейджа.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},onRemove:{description:`Показывает кнопку удаления и вызывает обработчик по клику.`,control:!1},className:{description:`Дополнительный CSS-класс контейнера.`,control:`text`}}},W={},G={render:()=>(0,H.jsxs)(I,{children:[(0,H.jsx)(M,{tone:`neutral`,appearance:`outline`,children:`Neutral`}),(0,H.jsx)(M,{tone:`success`,appearance:`solid`,children:`Успешно`}),(0,H.jsx)(M,{tone:`warning`,appearance:`solid`,children:`Внимание`}),(0,H.jsx)(M,{tone:`error`,appearance:`solid`,children:`Ошибка`}),(0,H.jsx)(M,{tone:`info`,appearance:`solid`,children:`Информация`})]})},K={render:()=>(0,H.jsxs)(I,{children:[(0,H.jsx)(M,{tone:`neutral`,appearance:`solid`,children:`Solid`}),(0,H.jsx)(M,{tone:`neutral`,appearance:`outline`,children:`Outline`}),(0,H.jsx)(M,{tone:`info`,appearance:`ghost`,children:`Ghost`}),(0,H.jsx)(M,{tone:`warning`,appearance:`transparent`,children:`Transparent`})]})},q={render:()=>(0,H.jsxs)(I,{children:[(0,H.jsx)(M,{size:`xs`,children:`Extra Small`}),(0,H.jsx)(M,{size:`sm`,children:`Small`}),(0,H.jsx)(M,{size:`md`,children:`Medium`}),(0,H.jsx)(M,{size:`lg`,children:`Large`}),(0,H.jsx)(M,{size:`xl`,children:`Extra Large`})]})},J={render:()=>{let[e,t]=(0,V.useState)([`Фильтр A`,`Фильтр B`,`Фильтр C`]);return(0,H.jsx)(I,{children:e.map(e=>(0,H.jsx)(M,{tone:`info`,appearance:`outline`,onRemove:()=>t(t=>t.filter(t=>t!==e)),children:e},e))})}},W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`{}`,...W.parameters?.docs?.source}}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
5
+ render: () => <BadgeList>
6
+ <Badge tone="neutral" appearance="outline">
7
+ Neutral
8
+ </Badge>
9
+ <Badge tone="success" appearance="solid">
10
+ Успешно
11
+ </Badge>
12
+ <Badge tone="warning" appearance="solid">
13
+ Внимание
14
+ </Badge>
15
+ <Badge tone="error" appearance="solid">
16
+ Ошибка
17
+ </Badge>
18
+ <Badge tone="info" appearance="solid">
19
+ Информация
20
+ </Badge>
21
+ </BadgeList>
22
+ }`,...G.parameters?.docs?.source}}},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`{
23
+ render: () => <BadgeList>
24
+ <Badge tone="neutral" appearance="solid">
25
+ Solid
26
+ </Badge>
27
+ <Badge tone="neutral" appearance="outline">
28
+ Outline
29
+ </Badge>
30
+ <Badge tone="info" appearance="ghost">
31
+ Ghost
32
+ </Badge>
33
+ <Badge tone="warning" appearance="transparent">
34
+ Transparent
35
+ </Badge>
36
+ </BadgeList>
37
+ }`,...K.parameters?.docs?.source}}},q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`{
38
+ render: () => <BadgeList>
39
+ <Badge size="xs">Extra Small</Badge>
40
+ <Badge size="sm">Small</Badge>
41
+ <Badge size="md">Medium</Badge>
42
+ <Badge size="lg">Large</Badge>
43
+ <Badge size="xl">Extra Large</Badge>
44
+ </BadgeList>
45
+ }`,...q.parameters?.docs?.source}}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`{
46
+ render: () => {
47
+ const [items, setItems] = useState(["Фильтр A", "Фильтр B", "Фильтр C"]);
48
+ return <BadgeList>
49
+ {items.map(item => <Badge key={item} tone="info" appearance="outline" onRemove={() => setItems(prev => prev.filter(v => v !== item))}>
50
+ {item}
51
+ </Badge>)}
52
+ </BadgeList>;
53
+ }
54
+ }`,...J.parameters?.docs?.source}}},Y=[`Basic`,`Tones`,`Appearances`,`Sizes`,`RemovableList`]})))()}export{q as a,J as i,B as n,G as o,W as r,X as s,K as t};
@@ -0,0 +1 @@
1
+ .wLOHwj{isolation:isolate;padding:0 var(--space-md);-webkit-user-select:none;user-select:none;position:relative}.wLOHwj.lFsM-Y{aspect-ratio:1;padding:0}.wLOHwj:after{content:"";z-index:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity var(--transition-fast) ease;background-color:currentColor;position:absolute;inset:0}.wLOHwj:not(:disabled):active:after{opacity:.12;transition-duration:70ms;transition-timing-function:ease-out}@media (prefers-reduced-motion:reduce){.wLOHwj:after{transition-duration:.01ms}}.LPob63{z-index:1;justify-content:center;align-items:center;gap:var(--space-sm);width:100%;height:100%;display:flex;position:relative}.tsaGtv{width:1.25em;height:1.25em}
@@ -0,0 +1,12 @@
1
+ import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CrnMVMTc.js";import{a as i,i as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./FloatingPopover-CPLOruAY.js";import{n as c,t as l}from"./ui.module-DoMIk8Oc.js";import{i as u,n as d,r as f,t as p}from"./uiClasses-CO3Cdv1E.js";var m,h,g,_,v;function y(){return(y=e((()=>{m=`wLOHwj`,h=`lFsM-Y`,g=`LPob63`,_=`tsaGtv`,v={button:m,iconOnly:h,buttonInner:g,buttonIcon:_}})))()}var b,x,S;function C(){return(C=e((()=>{b=t(n(),1),a(),o(),l(),f(),y(),x=r(),S=(0,b.forwardRef)(function({children:e,disabled:t,className:n,icon:r,iconEnd:a,title:o,variant:l,tone:f,appearance:m,type:h=`button`,"aria-label":g,..._},y){let S=b.Children.count(e)>0,C=!!r&&!S,w=u({variant:l,tone:f,appearance:m,fallbackAppearance:f&&f!==`neutral`?`solid`:`outline`}),T=C?g??o:g,E=(0,x.jsx)(`button`,{..._,ref:y,type:h,disabled:t,"aria-label":T,className:i(c.uiElement,c.uiInputControl,v.button,d(w.tone),p(w.appearance),C?v.iconOnly:``,`textNoWrap`,n??``),children:(0,x.jsxs)(`span`,{className:v.buttonInner,children:[r&&!a&&(0,x.jsx)(`span`,{"aria-hidden":`true`,className:v.buttonIcon,children:r}),S&&(0,x.jsx)(`span`,{className:`flexEllipsis`,children:e}),r&&a&&(0,x.jsx)(`span`,{"aria-hidden":`true`,className:v.buttonIcon,children:r})]})});return o?(0,x.jsx)(s,{placement:`bottom`,tooltip:!0,content:(0,x.jsx)(x.Fragment,{children:o}),children:E}):E}),S.__docgenInfo={description:'Базовая кнопка дизайн-системы для пользовательских действий.\nПоддерживает состояния, tone + appearance, иконки и безопасный `type="button"` по умолчанию.',methods:[],displayName:`Button`,props:{variant:{required:!1,tsType:{name:`union`,raw:`| "transparent"
2
+ | "ghost"
3
+ | "neutral"
4
+ | "error"
5
+ | "warning"
6
+ | "success"
7
+ | "info"
8
+ | "neutralOutline"
9
+ | "errorOutline"
10
+ | "warningOutline"
11
+ | "successOutline"
12
+ | "infoOutline"`,elements:[{name:`literal`,value:`"transparent"`},{name:`literal`,value:`"ghost"`},{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`},{name:`literal`,value:`"neutralOutline"`},{name:`literal`,value:`"errorOutline"`},{name:`literal`,value:`"warningOutline"`},{name:`literal`,value:`"successOutline"`},{name:`literal`,value:`"infoOutline"`}]},description:``},tone:{required:!1,tsType:{name:`union`,raw:`"neutral" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``},appearance:{required:!1,tsType:{name:`union`,raw:`"solid" | "outline" | "ghost" | "transparent"`,elements:[{name:`literal`,value:`"solid"`},{name:`literal`,value:`"outline"`},{name:`literal`,value:`"ghost"`},{name:`literal`,value:`"transparent"`}]},description:``},icon:{required:!1,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},iconEnd:{required:!1,tsType:{name:`boolean`},description:``},type:{required:!1,tsType:{name:`union`,raw:`"button" | "submit" | "reset"`,elements:[{name:`literal`,value:`"button"`},{name:`literal`,value:`"submit"`},{name:`literal`,value:`"reset"`}]},description:`По умолчанию делаем безопасное поведение в формах.`,defaultValue:{value:`"button"`,computed:!1}}},composes:[`Omit`]}})))()}export{C as n,S as t};
@@ -1,6 +1,6 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-kCueRzKM.js";import{t as f}from"./mdx-react-shim-4LHuzuKu.js";import{Basic as p,ComposableScheme as m,Variants as h,WithIcons as g,n as _,t as v}from"./Button.stories-DZmRqHrE.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(o,{of:v,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
2
- `,(0,x.jsx)(l,{children:`Button`}),`
3
- `,(0,x.jsx)(a,{children:`Базовая action-кнопка дизайн-системы для пользовательских действий, подтверждений и быстрых операций`}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CrnMVMTc.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-Dz3dJBcm.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Button.stories-DhgYDM_q.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:h,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
2
+ `,(0,x.jsx)(u,{children:`Button`}),`
3
+ `,(0,x.jsx)(o,{children:`Базовая action-кнопка дизайн-системы для пользовательских действий, подтверждений и быстрых операций`}),`
4
4
  `,(0,x.jsxs)(t.p,{children:[(0,x.jsx)(t.code,{children:`Button`}),` используется как универсальная кнопка интерфейса: в формах, тулбарах, модальных окнах, карточках, таблицах и компактных icon-only сценариях.`]}),`
5
5
  `,(0,x.jsx)(t.p,{children:`Ключевые особенности компонента:`}),`
6
6
  `,(0,x.jsxs)(t.ul,{children:[`
@@ -12,19 +12,19 @@ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1
12
12
  `,(0,x.jsxs)(t.li,{children:[`всплывающая подсказка через `,(0,x.jsx)(t.code,{children:`title`}),`.`]}),`
13
13
  `]}),`
14
14
  `,(0,x.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
15
- `,(0,x.jsx)(d,{}),`
15
+ `,(0,x.jsx)(f,{}),`
16
16
  `,(0,x.jsx)(t.pre,{children:(0,x.jsx)(t.code,{className:`language-tsx`,children:`import { Button } from "@/shared/ui";
17
17
 
18
18
  export function Example() {
19
19
  return <Button>Сохранить</Button>;
20
20
  }
21
21
  `})}),`
22
- `,(0,x.jsx)(r,{of:p}),`
22
+ `,(0,x.jsx)(i,{of:v}),`
23
23
  `,(0,x.jsx)(t.h2,{id:`как-выбирать-схему-оформления`,children:`Как выбирать схему оформления`}),`
24
24
  `,(0,x.jsxs)(t.p,{children:[`Для большинства сценариев достаточно `,(0,x.jsx)(t.code,{children:`variant`}),`: это готовые, согласованные значения дизайн-системы.`]}),`
25
25
  `,(0,x.jsxs)(t.p,{children:[`Если нужна более гибкая настройка, можно передать `,(0,x.jsx)(t.code,{children:`tone`}),` и `,(0,x.jsx)(t.code,{children:`appearance`}),`. У них приоритет выше, чем у `,(0,x.jsx)(t.code,{children:`variant`}),`, поэтому они подходят для точной донастройки без создания нового варианта.`]}),`
26
26
  `,(0,x.jsx)(t.h3,{id:`готовые-варианты`,children:`Готовые варианты`}),`
27
- `,(0,x.jsx)(u,{of:h}),`
27
+ `,(0,x.jsx)(d,{of:m}),`
28
28
  `,(0,x.jsx)(t.pre,{children:(0,x.jsx)(t.code,{className:`language-tsx`,children:`import { Button } from "@/shared/ui";
29
29
 
30
30
  export function ActionVariants() {
@@ -41,7 +41,7 @@ export function ActionVariants() {
41
41
  }
42
42
  `})}),`
43
43
  `,(0,x.jsxs)(t.h3,{id:`составная-схема-через-tone-и-appearance`,children:[`Составная схема через `,(0,x.jsx)(t.code,{children:`tone`}),` и `,(0,x.jsx)(t.code,{children:`appearance`})]}),`
44
- `,(0,x.jsx)(u,{of:m}),`
44
+ `,(0,x.jsx)(d,{of:_}),`
45
45
  `,(0,x.jsx)(t.pre,{children:(0,x.jsx)(t.code,{className:`language-tsx`,children:`import { Button } from "@/shared/ui";
46
46
 
47
47
  export function CustomScheme() {
@@ -73,7 +73,7 @@ export function CustomScheme() {
73
73
  `,(0,x.jsx)(t.li,{children:`кнопка только с иконкой.`}),`
74
74
  `]}),`
75
75
  `,(0,x.jsxs)(t.p,{children:[`Если в кнопке есть только `,(0,x.jsx)(t.code,{children:`icon`}),`, обязательно нужно передать `,(0,x.jsx)(t.code,{children:`title`}),` или `,(0,x.jsx)(t.code,{children:`aria-label`}),`, чтобы управление было доступным для скринридеров. В текущей реализации `,(0,x.jsx)(t.code,{children:`title`}),` также используется как содержимое всплывающей подсказки.`]}),`
76
- `,(0,x.jsx)(u,{of:g}),`
76
+ `,(0,x.jsx)(d,{of:p}),`
77
77
  `,(0,x.jsx)(t.pre,{children:(0,x.jsx)(t.code,{className:`language-tsx`,children:`import { BellIcon, CheckIcon, DownloadIcon, PlusIcon } from "lucide-react";
78
78
 
79
79
  import { Button } from "@/shared/ui";
@@ -119,6 +119,6 @@ export function FormActions() {
119
119
  `,(0,x.jsxs)(t.li,{children:[(0,x.jsx)(t.code,{children:`disabled`}),` блокирует нажатие, но не должен заменять явное объяснение пользователю, почему действие недоступно.`]}),`
120
120
  `]}),`
121
121
  `,(0,x.jsx)(t.h2,{id:`api`,children:`API`}),`
122
- `,(0,x.jsx)(c,{of:v}),`
122
+ `,(0,x.jsx)(l,{of:h}),`
123
123
  `,(0,x.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
124
- `,(0,x.jsx)(i,{includePrimary:!1})]})}function b(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,x.jsx)(t,{...e,children:(0,x.jsx)(y,{...e})}):y(e)}var x;e((()=>{x=t(),f(),s(),_()}))();export{b as default};
124
+ `,(0,x.jsx)(a,{includePrimary:!1})]})}function b(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,x.jsx)(t,{...e,children:(0,x.jsx)(y,{...e})}):y(e)}var x;function S(){return(S=e((()=>{x=t(),r(),c(),g()})))()}S();export{b as default};