@ryuzaki13/react-foundation-ui 3.9.0 → 3.10.0

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 (293) hide show
  1. package/dist/base-table/index.js +1 -1
  2. package/dist/base-table/ui/BaseTable.d.ts +9 -1
  3. package/dist/base-table/ui/BaseTable.d.ts.map +1 -1
  4. package/dist/chunks/{base-table-9H5YuVvB.js → base-table-CacTH3BE.js} +129 -111
  5. package/dist/chunks/base-table-CacTH3BE.js.map +1 -0
  6. package/dist/chunks/table-Cx__DvpN.js +154 -0
  7. package/dist/chunks/table-Cx__DvpN.js.map +1 -0
  8. package/dist/simple-table/index.js +1 -1
  9. package/dist/table/Table.d.ts +10 -1
  10. package/dist/table/Table.d.ts.map +1 -1
  11. package/dist/table/index.js +1 -1
  12. package/dist/tree-table/index.js +1 -1
  13. package/package.json +1 -1
  14. package/storybook-static/assets/{Badge-CL58JilM.js → Badge-DxGi2POg.js} +1 -1
  15. package/storybook-static/assets/{Badge.stories-CXFTvV3D.js → Badge.stories-D6Em1fN8.js} +1 -1
  16. package/storybook-static/assets/{BadgeList-DLssobfd.js → BadgeList-DemBuxUQ.js} +1 -1
  17. package/storybook-static/assets/{BarcodeScannerDialog.stories-CpMywpKq.js → BarcodeScannerDialog.stories-Bxnb0wH3.js} +1 -1
  18. package/storybook-static/assets/{Button-CSbLv1K7.js → Button-9vGUTM3m.js} +1 -1
  19. package/storybook-static/assets/{Button-DMAPWgMI.js → Button-dlGIhkja.js} +1 -1
  20. package/storybook-static/assets/{Button.stories-CU1kYMvA.js → Button.stories-WOE1_ovM.js} +1 -1
  21. package/storybook-static/assets/{CalendarView-DuCLo_x5.js → CalendarView-Co2EiQf9.js} +1 -1
  22. package/storybook-static/assets/{CheckBox-Bfcdvr2o.js → CheckBox-CwJshQX2.js} +1 -1
  23. package/storybook-static/assets/{CheckBox-BBPasWSk.js → CheckBox-Dpg2QsvS.js} +1 -1
  24. package/storybook-static/assets/{CheckBox.stories-sGH6EuU4.js → CheckBox.stories-K8wng7-q.js} +1 -1
  25. package/storybook-static/assets/{Color-6AOWCN3U-5NJhf8m9.js → Color-6AOWCN3U-D-64SqRn.js} +1 -1
  26. package/storybook-static/assets/{ContextMenu-z6NKmD0I.js → ContextMenu-C1zzFMni.js} +1 -1
  27. package/storybook-static/assets/{ContextMenu-CxuYkXjJ.js → ContextMenu-DbmUWR4I.js} +1 -1
  28. package/storybook-static/assets/{ContextMenu.stories-CI5IW_KX.js → ContextMenu.stories-D0tclMo1.js} +1 -1
  29. package/storybook-static/assets/{DateInput-A8NURpCX.js → DateInput-BDxg1E80.js} +1 -1
  30. package/storybook-static/assets/{DateInput-BkCbK0M5.js → DateInput-DxpENevn.js} +1 -1
  31. package/storybook-static/assets/{DateInput.stories-DnzeyBpg.js → DateInput.stories-De_AOkrK.js} +1 -1
  32. package/storybook-static/assets/{DateRangePresetSelect-Bh7qMFTr.js → DateRangePresetSelect-CD7jNInU.js} +1 -1
  33. package/storybook-static/assets/{DateRangePresetSelect-CGZkf8Ty.js → DateRangePresetSelect-CD8qu2LL.js} +1 -1
  34. package/storybook-static/assets/{DateRangePresetSelect.stories-Drm2FCnJ.js → DateRangePresetSelect.stories-phHkk3Q1.js} +1 -1
  35. package/storybook-static/assets/{DeprecatedMultiSelect-BebYsPmQ.js → DeprecatedMultiSelect-B4VEjiTj.js} +1 -1
  36. package/storybook-static/assets/{DeprecatedMultiSelect-8TWWhsLi.js → DeprecatedMultiSelect-Bdv505U3.js} +1 -1
  37. package/storybook-static/assets/{DeprecatedMultiSelect.stories-7iL6YOgh.js → DeprecatedMultiSelect.stories-DdPzDJjx.js} +1 -1
  38. package/storybook-static/assets/{Detail-BOZkPwOI.js → Detail-BoazSWw_.js} +1 -1
  39. package/storybook-static/assets/{Detail.stories-RZALoKmD.js → Detail.stories-Cc9fEkdx.js} +1 -1
  40. package/storybook-static/assets/{Dialog-CeukIYpx.js → Dialog-VJ62BLtp.js} +1 -1
  41. package/storybook-static/assets/{Dialog-BsslYClj.js → Dialog-ieE9mpAU.js} +1 -1
  42. package/storybook-static/assets/{Dialog.stories-y7MpdGQr.js → Dialog.stories-CUyAMGoD.js} +1 -1
  43. package/storybook-static/assets/{Disclosure-CiTnWx5y.js → Disclosure-BP8VhRCA.js} +1 -1
  44. package/storybook-static/assets/{Disclosure.stories-UWW9oheF.js → Disclosure.stories-DwIo-o1J.js} +1 -1
  45. package/storybook-static/assets/{DisclosureGroup-CT3BdQXr.js → DisclosureGroup-LjgDW-Z6.js} +1 -1
  46. package/storybook-static/assets/{DocsRenderer-JROSPFPF-x50rjjKP.js → DocsRenderer-JROSPFPF-BjRaiNDG.js} +1 -1
  47. package/storybook-static/assets/{DropZone-DUn9vW2w.js → DropZone-BMT4jv2L.js} +1 -1
  48. package/storybook-static/assets/{DropZone-gWSeoAx6.js → DropZone-Dg3GZxY8.js} +1 -1
  49. package/storybook-static/assets/{DropZone.stories-CmaVl9to.js → DropZone.stories-szOGIPHx.js} +1 -1
  50. package/storybook-static/assets/{DropdownMenu-DkeS8gOF.js → DropdownMenu-B0EI5ePH.js} +1 -1
  51. package/storybook-static/assets/{ExpandableActionPanel-DdqWZDe2.js → ExpandableActionPanel-D_qy2JID.js} +1 -1
  52. package/storybook-static/assets/{ExpandableActionPanel.stories-CA-dpb07.js → ExpandableActionPanel.stories-wdmlBDmK.js} +1 -1
  53. package/storybook-static/assets/{Flex-DpQpF63N.js → Flex-DYXuexPG.js} +1 -1
  54. package/storybook-static/assets/{Flex.stories-DtlKiJno.js → Flex.stories-DH1BReS-.js} +1 -1
  55. package/storybook-static/assets/{FlexContainer-C1d63I55.js → FlexContainer-DO3X5f_1.js} +1 -1
  56. package/storybook-static/assets/{FlexItem-DsoW-br3.js → FlexItem-BE_4juAd.js} +1 -1
  57. package/storybook-static/assets/{FloatingPopover-7MpESGU4.js → FloatingPopover-DHxMCBdS.js} +1 -1
  58. package/storybook-static/assets/FormattedTableCell-BfEiCYOi.js +15 -0
  59. package/storybook-static/assets/{Grid-eqZxtRIA.js → Grid-0NnWfTJ7.js} +1 -1
  60. package/storybook-static/assets/{Grid-DsCUaz46.js → Grid-ChS0GzNg.js} +1 -1
  61. package/storybook-static/assets/{Grid.stories-DAGg0GWi.js → Grid.stories-ClZzgSfZ.js} +1 -1
  62. package/storybook-static/assets/{GridContainer-B9JaLUGE.js → GridContainer-BHSfIiml.js} +1 -1
  63. package/storybook-static/assets/{ImageCropper.stories-W76XOOMv.js → ImageCropper.stories-Cf5ogf7p.js} +1 -1
  64. package/storybook-static/assets/{ImageRenderer-DYg7BkPO.js → ImageRenderer-CsN1-IP6.js} +1 -1
  65. package/storybook-static/assets/{ImageRenderer.stories-rgJV0OBp.js → ImageRenderer.stories-DIC-UR-l.js} +1 -1
  66. package/storybook-static/assets/{ImageView.stories-D9h6sg3j.js → ImageView.stories-DT6QZR-1.js} +1 -1
  67. package/storybook-static/assets/{ImageViewer.stories-Bd0WJOp1.js → ImageViewer.stories-DxpCKbpk.js} +2 -2
  68. package/storybook-static/assets/{ImageViewerRuntime-DOjvjbv0.js → ImageViewerRuntime-COhNh4_y.js} +1 -1
  69. package/storybook-static/assets/{Input-BxrxwNyD.js → Input-BJ3sPHt1.js} +1 -1
  70. package/storybook-static/assets/{Input-7N70tL0u.js → Input-D2eqioLp.js} +1 -1
  71. package/storybook-static/assets/{Input.stories-Df1j802b.js → Input.stories-MtAx6H2F.js} +1 -1
  72. package/storybook-static/assets/{InputDateTime-UdemHZXV.js → InputDateTime-CNNqhoo6.js} +1 -1
  73. package/storybook-static/assets/{InputDateTime.stories-yRwAe5_5.js → InputDateTime.stories-DT3CvxRy.js} +1 -1
  74. package/storybook-static/assets/{InputFile-DDhf7A_J.js → InputFile-DiI_0QV5.js} +1 -1
  75. package/storybook-static/assets/{InputFile-5LpFR1Fq.js → InputFile-RfdomZEH.js} +1 -1
  76. package/storybook-static/assets/{InputFile.stories-BVDT-BAx.js → InputFile.stories-CiqGBnkS.js} +1 -1
  77. package/storybook-static/assets/{InputFiles-D3CPIXiK.js → InputFiles-CBrPDNlV.js} +1 -1
  78. package/storybook-static/assets/{InputFiles-CgM2BwNO.js → InputFiles-CgyVXpI1.js} +1 -1
  79. package/storybook-static/assets/{InputFiles.stories-XMHBA9Fn.js → InputFiles.stories-QHNxJjiV.js} +1 -1
  80. package/storybook-static/assets/{InputFilesList-DSivq9iT.js → InputFilesList-BEIBTAEK.js} +1 -1
  81. package/storybook-static/assets/{InputImage-BG_QyAh3.js → InputImage-BBJr8TWl.js} +1 -1
  82. package/storybook-static/assets/{InputImage-CY0A9Xz-.js → InputImage-vXbhnE46.js} +1 -1
  83. package/storybook-static/assets/{InputImage.stories-DiGXytZU.js → InputImage.stories-VoVU0QZB.js} +1 -1
  84. package/storybook-static/assets/{InteractiveComponents-Bf9KitNR.js → InteractiveComponents-CjkX3vU6.js} +1 -1
  85. package/storybook-static/assets/{InteractiveComponents.stories-TwALUGGN.js → InteractiveComponents.stories-Gc_Ju4xJ.js} +1 -1
  86. package/storybook-static/assets/{LayoutPicker-BLrNe8g_.js → LayoutPicker-DwpDr_Is.js} +1 -1
  87. package/storybook-static/assets/{LayoutPicker-MhA9N4WI.js → LayoutPicker-ONnrtLDR.js} +1 -1
  88. package/storybook-static/assets/{LayoutPicker.stories-BCME5Ogr.js → LayoutPicker.stories-B-HIq6DD.js} +1 -1
  89. package/storybook-static/assets/{Listbox-B8F2xWvs.js → Listbox-DoF5nZIP.js} +1 -1
  90. package/storybook-static/assets/{Listbox-y_3VijHU.js → Listbox-XIi0yHgl.js} +1 -1
  91. package/storybook-static/assets/{Listbox.stories-mp0p0NpO.js → Listbox.stories-DT8FJQ3z.js} +1 -1
  92. package/storybook-static/assets/{Modal-qIsW7BkG.js → Modal-C3F4r2UA.js} +1 -1
  93. package/storybook-static/assets/{Modal-DgEV0vBs.js → Modal-Ml7EuSvu.js} +1 -1
  94. package/storybook-static/assets/{Modal.stories-CQ-Hn4GK.js → Modal.stories-DRwnYxst.js} +1 -1
  95. package/storybook-static/assets/{ModalManagerProvider-DEoq4q_O.js → ModalManagerProvider-CmqdB_ni.js} +1 -1
  96. package/storybook-static/assets/{MultiSelect-D-6XHQUG.js → MultiSelect-B1QokJ3C.js} +1 -1
  97. package/storybook-static/assets/{MultiSelect-PGooEkAK.js → MultiSelect-CAg-L0dM.js} +1 -1
  98. package/storybook-static/assets/{MultiSelect.stories-B0JzMViN.js → MultiSelect.stories-Dfh2Lp0N.js} +1 -1
  99. package/storybook-static/assets/{MultiSelectCore-B0VbnEBc.js → MultiSelectCore-GRGtCBO1.js} +1 -1
  100. package/storybook-static/assets/{NoData-DCuuvSoD.js → NoData-BZhNhaYV.js} +1 -1
  101. package/storybook-static/assets/{NotificationsHost-CWqG91Yh.js → NotificationsHost-BUPLrDM3.js} +1 -1
  102. package/storybook-static/assets/{NotificationsHost.stories-CEp-AppV.js → NotificationsHost.stories-CKbR-_nq.js} +1 -1
  103. package/storybook-static/assets/{ODataMultiSelect-CwVneYzi.js → ODataMultiSelect-CDW0B1az.js} +1 -1
  104. package/storybook-static/assets/{ODataMultiSelect.stories-BRnVOZsK.js → ODataMultiSelect.stories-BbKrxs7t.js} +1 -1
  105. package/storybook-static/assets/{ODataSelect-DyKTFqk7.js → ODataSelect-C5G0dCnn.js} +1 -1
  106. package/storybook-static/assets/{ODataSelect.stories-B-3GaeU4.js → ODataSelect.stories-DcX50cyD.js} +1 -1
  107. package/storybook-static/assets/{ODataTreeMultiSelect-16xNi9qI.js → ODataTreeMultiSelect-4mTjhnlJ.js} +1 -1
  108. package/storybook-static/assets/{ODataTreeMultiSelect.stories-DI9tH2qD.js → ODataTreeMultiSelect.stories-B-4UUg5l.js} +1 -1
  109. package/storybook-static/assets/{ODataTreeSelect-Dk262plK.js → ODataTreeSelect-D-wcx2OH.js} +1 -1
  110. package/storybook-static/assets/{ODataTreeSelect.stories-DfaL0dci.js → ODataTreeSelect.stories-uB_sG4ga.js} +1 -1
  111. package/storybook-static/assets/{OneStepScroller-DI8qlm5c.js → OneStepScroller-DQI5POnJ.js} +1 -1
  112. package/storybook-static/assets/{Option-CG3bU2cY.js → Option-CrEWqsFF.js} +1 -1
  113. package/storybook-static/assets/{OptionButton-DF0E8aU5.js → OptionButton-BEQ2oSPf.js} +1 -1
  114. package/storybook-static/assets/{OptionContent-BZ3FiJQ4.js → OptionContent-C8S7IjI3.js} +1 -1
  115. package/storybook-static/assets/{OptionContentContainer-CyI5IfqU.js → OptionContentContainer-ljQts_jY.js} +1 -1
  116. package/storybook-static/assets/{PeriodSelect-uR-Xk4vQ.js → PeriodSelect-BTdDU06N.js} +1 -1
  117. package/storybook-static/assets/{PeriodSelect-_gAbt3E6.js → PeriodSelect-DuqatGdk.js} +1 -1
  118. package/storybook-static/assets/{PeriodSelect.stories-D-Lp7QtA.js → PeriodSelect.stories-CX4DSFJG.js} +1 -1
  119. package/storybook-static/assets/{PickerField-CByAoAAO.js → PickerField-Cgcm-Y5T.js} +1 -1
  120. package/storybook-static/assets/{PickerTriggerActions-CYM-UvRz.js → PickerTriggerActions-DWe2uX0K.js} +1 -1
  121. package/storybook-static/assets/{Popover-CRcVoLur.js → Popover-0QfSvwRS.js} +1 -1
  122. package/storybook-static/assets/{Popover-CdnsB1ss.js → Popover-C55I0GTn.js} +1 -1
  123. package/storybook-static/assets/{Popover.stories-Dxdt7Jc5.js → Popover.stories-Bgjomdgb.js} +1 -1
  124. package/storybook-static/assets/{PresetRangeDateInput-BQkK3Nmd.js → PresetRangeDateInput-C-vQa5BZ.js} +1 -1
  125. package/storybook-static/assets/{PresetRangeDateInput-BmAGj8ye.js → PresetRangeDateInput-Cai5fvRb.js} +1 -1
  126. package/storybook-static/assets/{PresetRangeDateInput.stories-CUIwCB6T.js → PresetRangeDateInput.stories-CWtIukRG.js} +1 -1
  127. package/storybook-static/assets/{PresetSelect-C7HG9CjN.js → PresetSelect-HqtmoRLb.js} +1 -1
  128. package/storybook-static/assets/{README-BL0-uTlP.js → README-2lBx3R6g.js} +1 -1
  129. package/storybook-static/assets/{README-DCWk-Vga.js → README-B1IMnjhg.js} +1 -1
  130. package/storybook-static/assets/{README-BurB0dhj.js → README-B41_J33v.js} +1 -1
  131. package/storybook-static/assets/{README-VNB_Dj5F.js → README-B5Lc1yT4.js} +1 -1
  132. package/storybook-static/assets/{README-De3j71sQ.js → README-B5wBU6mA.js} +1 -1
  133. package/storybook-static/assets/{README-ByT9u_7g.js → README-B8RrtmaZ.js} +1 -1
  134. package/storybook-static/assets/{README-C8jcwgeL.js → README-BEypAdTE.js} +1 -1
  135. package/storybook-static/assets/{README-DxTRj-9a.js → README-BFjx8Jxa.js} +1 -1
  136. package/storybook-static/assets/{README-CoQeAVdv.js → README-BHrzFd3i.js} +1 -1
  137. package/storybook-static/assets/{README-DNrPuueH.js → README-BNLmyDfy.js} +1 -1
  138. package/storybook-static/assets/{README-CtZBJdo2.js → README-BRJHDPaP.js} +1 -1
  139. package/storybook-static/assets/{README-DAH3lVWd.js → README-BTk3TSh8.js} +1 -1
  140. package/storybook-static/assets/{README-CoENtXo_.js → README-BUKlvu1v.js} +1 -1
  141. package/storybook-static/assets/{README-KCmlmH_Z.js → README-BgbNoj4_.js} +1 -1
  142. package/storybook-static/assets/{README-B1GSwjas.js → README-BhvWyeL_.js} +1 -1
  143. package/storybook-static/assets/{README-CTBkJ27k.js → README-Bk6x-7we.js} +1 -1
  144. package/storybook-static/assets/{README-BEYMpavt.js → README-BkFTTVE2.js} +1 -1
  145. package/storybook-static/assets/{README-BquP2lux.js → README-Bl1rJEQE.js} +1 -1
  146. package/storybook-static/assets/{README-BUnl1FiN.js → README-BqMpFJKP.js} +1 -1
  147. package/storybook-static/assets/{README-CTGZXXVP.js → README-Brd9di5k.js} +1 -1
  148. package/storybook-static/assets/{README-9DTI05kd.js → README-BzIE9gSk.js} +1 -1
  149. package/storybook-static/assets/{README-B-ihyEBx.js → README-C1BajdmC.js} +1 -1
  150. package/storybook-static/assets/{README-_8pxMMC7.js → README-C2xdMez4.js} +1 -1
  151. package/storybook-static/assets/{README-DfRan6KR.js → README-C6ryhIOV.js} +1 -1
  152. package/storybook-static/assets/{README-DTMZk60G.js → README-C702dbsS.js} +1 -1
  153. package/storybook-static/assets/{README-CNnGqdkH.js → README-C8oftQ5c.js} +1 -1
  154. package/storybook-static/assets/{README-DyKegKG_.js → README-CM5yZ6jf.js} +1 -1
  155. package/storybook-static/assets/{README-CUghXL33.js → README-CUUPvXQd.js} +1 -1
  156. package/storybook-static/assets/{README-B0iHgO_3.js → README-CdMmAh_G.js} +1 -1
  157. package/storybook-static/assets/{README-CvP9yRMR.js → README-CdnQbIDn.js} +1 -1
  158. package/storybook-static/assets/{README-DQ1aeQ_i.js → README-ClH6EKpO.js} +1 -1
  159. package/storybook-static/assets/{README-DMZYAdN0.js → README-CxEn3Q3j.js} +1 -1
  160. package/storybook-static/assets/{README-D-urpNSn.js → README-CxMmicr4.js} +1 -1
  161. package/storybook-static/assets/{README-DevTRU4A.js → README-CxsbsDff.js} +1 -1
  162. package/storybook-static/assets/{README-Bdir2bPK.js → README-DAozVWEl.js} +1 -1
  163. package/storybook-static/assets/{README-C41zKsq6.js → README-DBpH2nf1.js} +1 -1
  164. package/storybook-static/assets/{README-C5-oc7fP.js → README-DF3qw7Jo.js} +1 -1
  165. package/storybook-static/assets/{README-j-Czw7ww.js → README-DFGUcAOx.js} +1 -1
  166. package/storybook-static/assets/{README-BR8bdUjV.js → README-DUShQLyj.js} +1 -1
  167. package/storybook-static/assets/{README-C7NhXX-n.js → README-DfVaZ9rz.js} +1 -1
  168. package/storybook-static/assets/{README-n4utUGcX.js → README-DitsKP8x.js} +1 -1
  169. package/storybook-static/assets/{README-DY7lgi4q.js → README-Dk7syFq-.js} +1 -1
  170. package/storybook-static/assets/{README-BbUo3mGT.js → README-DlBBM40-.js} +1 -1
  171. package/storybook-static/assets/{README-zlaX5PMG.js → README-DycS0KDV.js} +1 -1
  172. package/storybook-static/assets/{README-BmwSZfOQ.js → README-QWeHqOh2.js} +1 -1
  173. package/storybook-static/assets/{README-CiJ5wkhQ.js → README-QZrJnhYv.js} +1 -1
  174. package/storybook-static/assets/{README-CpJmZHQJ.js → README-RGQ7HMZR.js} +1 -1
  175. package/storybook-static/assets/{README-CQlujiXR.js → README-SafL9Bz5.js} +1 -1
  176. package/storybook-static/assets/{README-BAjs7T_d.js → README-UC0a4Wh9.js} +1 -1
  177. package/storybook-static/assets/{README-Dhptn6UE.js → README-_K214jGV.js} +1 -1
  178. package/storybook-static/assets/{README-xrMkjHIm.js → README-eRuOqnaA.js} +1 -1
  179. package/storybook-static/assets/{README-ByIhL9zr.js → README-kvlO41U2.js} +1 -1
  180. package/storybook-static/assets/{README-DaaS2c7L.js → README-mxJzt2Xo.js} +1 -1
  181. package/storybook-static/assets/{RadioButton-CDIyYuS9.js → RadioButton-BKsBk3--.js} +1 -1
  182. package/storybook-static/assets/{RadioButton-DV8K96H6.js → RadioButton-CsM-RT0A.js} +1 -1
  183. package/storybook-static/assets/{RadioButton.stories-CRNqKsyz.js → RadioButton.stories-D5PGiHj5.js} +1 -1
  184. package/storybook-static/assets/{RadioGroup-BnYFRvmn.js → RadioGroup-B3bLu8Qg.js} +1 -1
  185. package/storybook-static/assets/{RadioGroup-CIIw962S.js → RadioGroup-BZY_jeje.js} +1 -1
  186. package/storybook-static/assets/{RadioGroup.stories-K4AidbLa.js → RadioGroup.stories-DMfcZFp0.js} +1 -1
  187. package/storybook-static/assets/{Scrollable-BI1k9ogH.js → Scrollable-DLyQwImF.js} +1 -1
  188. package/storybook-static/assets/{Scrollable-DAghtYuE.js → Scrollable-DdXQmkMU.js} +1 -1
  189. package/storybook-static/assets/{Scrollable.stories-B6Doakiv.js → Scrollable.stories-Du5joHAp.js} +1 -1
  190. package/storybook-static/assets/{Select-BNHTGJqG.js → Select-8PYQeQRR.js} +1 -1
  191. package/storybook-static/assets/{Select-BlnKV8rc.js → Select-CT_wwcDN.js} +1 -1
  192. package/storybook-static/assets/{Select.stories-DZPAoL4J.js → Select.stories-DIqia2Hb.js} +1 -1
  193. package/storybook-static/assets/{Separator-CiETy9yM.js → Separator-CelBAATq.js} +1 -1
  194. package/storybook-static/assets/{Separator-BCUzEQRV.js → Separator-DJ93-Cvq.js} +1 -1
  195. package/storybook-static/assets/{Separator.stories-DTzurpM_.js → Separator.stories-DBEDpiqL.js} +1 -1
  196. package/storybook-static/assets/{SerializableSelect-CnQurr7F.js → SerializableSelect-C-00d6wC.js} +1 -1
  197. package/storybook-static/assets/{SerializableSelect.stories-qJaV_fjJ.js → SerializableSelect.stories-CP7fJBNa.js} +1 -1
  198. package/storybook-static/assets/{ShimmerText-I292TqXa.js → ShimmerText-qA7CslLE.js} +1 -1
  199. package/storybook-static/assets/{ShimmerText.stories-AKqXqp1k.js → ShimmerText.stories-CiGIbhCm.js} +1 -1
  200. package/storybook-static/assets/{SingleDateTimeInput-BrNi93tH.js → SingleDateTimeInput-B7tnYWQl.js} +1 -1
  201. package/storybook-static/assets/{SingleDateTimeInput-DSn0vaW-.js → SingleDateTimeInput-DJ2vRS9H.js} +1 -1
  202. package/storybook-static/assets/{SingleDateTimeInput.stories-C910kkYc.js → SingleDateTimeInput.stories-BK59HKLf.js} +1 -1
  203. package/storybook-static/assets/{Slider-CXA5Zwku.js → Slider-CXcIxUE3.js} +1 -1
  204. package/storybook-static/assets/{Slider-DO460-pY.js → Slider-Cm6kd77G.js} +1 -1
  205. package/storybook-static/assets/{Slider.stories-B874XxeK.js → Slider.stories-BuhFWvUX.js} +1 -1
  206. package/storybook-static/assets/{SliderInput-DTidinPI.js → SliderInput-DI2h4X8P.js} +1 -1
  207. package/storybook-static/assets/{SliderInput-DsV8o7Yy.js → SliderInput-DpmYS5Zb.js} +1 -1
  208. package/storybook-static/assets/{SliderInput.stories-CDWNO90y.js → SliderInput.stories-CLdLS0_8.js} +1 -1
  209. package/storybook-static/assets/{Sortable-CML34YIF.js → Sortable-CpjAZLxn.js} +1 -1
  210. package/storybook-static/assets/{Sortable.stories-C-_fvnHM.js → Sortable.stories-Ck2MHBoR.js} +1 -1
  211. package/storybook-static/assets/{Splitter-BcuA2qce.js → Splitter-Cpk_5dTf.js} +1 -1
  212. package/storybook-static/assets/{Splitter.stories-CA0-L_Ja.js → Splitter.stories-BIf9NNWq.js} +1 -1
  213. package/storybook-static/assets/{StateSelect-B23bb_PO.js → StateSelect-BznE9WIu.js} +1 -1
  214. package/storybook-static/assets/{StateSelect--FDEb4-v.js → StateSelect-C5tnrhWT.js} +1 -1
  215. package/storybook-static/assets/{StateSelect.stories-CEVPThtC.js → StateSelect.stories-DLvSnAcF.js} +1 -1
  216. package/storybook-static/assets/{StatusIndicator-BbTCS7Ku.js → StatusIndicator-vJAPPq2m.js} +1 -1
  217. package/storybook-static/assets/{StatusIndicator.stories-BIps_Ecm.js → StatusIndicator.stories-B7PGK2_C.js} +1 -1
  218. package/storybook-static/assets/{StringToggle.stories-vhOfzslq.js → StringToggle.stories-DBpxJZL-.js} +1 -1
  219. package/storybook-static/assets/{Switch-DibS4nSc.js → Switch-BkTvYjyQ.js} +1 -1
  220. package/storybook-static/assets/{Switch-jJgwtWFK.js → Switch-DlRrk6o7.js} +1 -1
  221. package/storybook-static/assets/{Switch.stories-Cvky3KQz.js → Switch.stories-BtctkC2W.js} +1 -1
  222. package/storybook-static/assets/Table-xOdM6spm.js +219 -0
  223. package/storybook-static/assets/Table.stories-FORIU5CX.js +184 -0
  224. package/storybook-static/assets/{TableEditor.stories-Be9nCkds.js → TableEditor.stories-GU46gl20.js} +1 -1
  225. package/storybook-static/assets/{Tabs-CTL4MnkZ.js → Tabs-Cg_IYAXs.js} +1 -1
  226. package/storybook-static/assets/{Tabs.stories-CIVbz7kW.js → Tabs.stories-2cS0B94o.js} +1 -1
  227. package/storybook-static/assets/{TabsBox-C9g1p4du.js → TabsBox-Dz3AsaoR.js} +1 -1
  228. package/storybook-static/assets/{TagInput-DuJLeiyT.js → TagInput-CCTgbRhQ.js} +1 -1
  229. package/storybook-static/assets/{TagInput.stories-BLVFWr-T.js → TagInput.stories-CevhCeXY.js} +1 -1
  230. package/storybook-static/assets/{Text-Cr_TUUgL.js → Text-CDCeYwIB.js} +1 -1
  231. package/storybook-static/assets/{Textarea-BImI6Q6v.js → Textarea-Ba4MyNoY.js} +1 -1
  232. package/storybook-static/assets/{Textarea-DGaanGLG.js → Textarea-CNsrFSip.js} +1 -1
  233. package/storybook-static/assets/{Textarea.stories-DvQ2dDNh.js → Textarea.stories-laVFWVXL.js} +1 -1
  234. package/storybook-static/assets/{TimePanel-Cg2G5Hab.js → TimePanel-Ddy67nzH.js} +1 -1
  235. package/storybook-static/assets/{TimePanel.stories-qy5mb3YN.js → TimePanel.stories-OLefy0XD.js} +1 -1
  236. package/storybook-static/assets/{Toggle-CroC7YOK.js → Toggle-BGbyfmSW.js} +1 -1
  237. package/storybook-static/assets/{Toggle-Dj8Ic_Ak.js → Toggle-BlCBtQd1.js} +1 -1
  238. package/storybook-static/assets/{Toggle.stories-CmyyubM8.js → Toggle.stories-BjeTDL90.js} +1 -1
  239. package/storybook-static/assets/{TreeMultiSelect-BHNmPW50.js → TreeMultiSelect-BJnAzsFO.js} +1 -1
  240. package/storybook-static/assets/{TreeMultiSelect-DBQYLjnA.js → TreeMultiSelect-ZVSLdnCU.js} +1 -1
  241. package/storybook-static/assets/{TreeMultiSelect.stories-BNsE1zgF.js → TreeMultiSelect.stories-BJOtdIDe.js} +1 -1
  242. package/storybook-static/assets/{TreePickerBase-ZEBy3EVT.js → TreePickerBase-BQKfhufH.js} +1 -1
  243. package/storybook-static/assets/{TreeSelect-T7G2pkyK.js → TreeSelect-BSr4FMlq.js} +1 -1
  244. package/storybook-static/assets/{TreeSelect-aiPeW2uJ.js → TreeSelect-DSHQjGD1.js} +1 -1
  245. package/storybook-static/assets/{TreeSelect.stories-E6ObkYJe.js → TreeSelect.stories-GRcEv-kN.js} +1 -1
  246. package/storybook-static/assets/{TreeTable-C0ORe5Pe.js → TreeTable-CzmxD2ee.js} +1 -1
  247. package/storybook-static/assets/{TreeTable.stories-PtGT_1X5.js → TreeTable.stories-35ufhVh1.js} +1 -1
  248. package/storybook-static/assets/{array-D-_yMMUK-DnJ_b27D.js → array-D-_yMMUK-BBmW5vUr.js} +1 -1
  249. package/storybook-static/assets/{blocks-DR4JL0hD.js → blocks-SX-KK9Lg.js} +3 -3
  250. package/storybook-static/assets/{check-PtABqMc1.js → check-BYM7OgKl.js} +1 -1
  251. package/storybook-static/assets/{chevron-down-BaujB0G_.js → chevron-down-Mu7usNfR.js} +1 -1
  252. package/storybook-static/assets/{chevron-left-C1SZ4PrE.js → chevron-left-CiOR-CGA.js} +1 -1
  253. package/storybook-static/assets/{chevron-right-CfCjHN8b.js → chevron-right-5Rrk5UhO.js} +1 -1
  254. package/storybook-static/assets/{chunk-W22LQPXL-Cis7lFT9.js → chunk-W22LQPXL-Cj8Y9DHq.js} +1 -1
  255. package/storybook-static/assets/{circle-alert-Mymt-6wl.js → circle-alert-BXB7LSDS.js} +1 -1
  256. package/storybook-static/assets/{circle-check-DzqMvzJX.js → circle-check-DrVuYn1Q.js} +1 -1
  257. package/storybook-static/assets/{components-Do91qDh3.js → components-BEDJAYMp.js} +3 -3
  258. package/storybook-static/assets/{contextMenu-8NKKgKoy.js → contextMenu-BaB_e0Tl.js} +1 -1
  259. package/storybook-static/assets/{download-Cn6H3Bnv.js → download-W-Vr_TI7.js} +1 -1
  260. package/storybook-static/assets/{floating-ui.react-BFqa49jG.js → floating-ui.react-BTEwHffF.js} +1 -1
  261. package/storybook-static/assets/{formatMultiSelectOptionCount-xGq1uM2H.js → formatMultiSelectOptionCount-BxXwE0wd.js} +1 -1
  262. package/storybook-static/assets/{formatters-DVE1YVNQ-YIdRxgw-.js → formatters-DVE1YVNQ-CJCkXjuI.js} +1 -1
  263. package/storybook-static/assets/{foundationApi-CChPwNx-.js → foundationApi-BcoJ1zeX.js} +1 -1
  264. package/storybook-static/assets/{foundationLib-ClEyfTpa.js → foundationLib-B2kQ07LT.js} +1 -1
  265. package/storybook-static/assets/{hooks-DUKyfcb_.js → hooks-BgMXxXbY.js} +1 -1
  266. package/storybook-static/assets/{iframe-1Nw_zWMi.js → iframe-CU98mtpe.js} +3 -3
  267. package/storybook-static/assets/iframe-DaZCH1M-.js +1 -0
  268. package/storybook-static/assets/{info-DMI56qGy.js → info-BhHmytIH.js} +1 -1
  269. package/storybook-static/assets/{odata-D9M3xPIL.js → odata-yWIAioh9.js} +1 -1
  270. package/storybook-static/assets/{odataStoryFixtures-eHJgW7OK.js → odataStoryFixtures-CnZ_YrUb.js} +1 -1
  271. package/storybook-static/assets/{react-DidV4ORc.js → react-C2mSveWL.js} +1 -1
  272. package/storybook-static/assets/{refresh-cw-B1ChlhvT.js → refresh-cw-D8_L8K4Y.js} +1 -1
  273. package/storybook-static/assets/{settings-2-BxwqnB9r.js → settings-2-jWGaWGT0.js} +1 -1
  274. package/storybook-static/assets/{sortable-DMBM69Jm.js → sortable-BteEe6X0.js} +1 -1
  275. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-BJZNAUo-.js → syntaxhighlighter-QEQV7K2Y-eEu1MRSg.js} +1 -1
  276. package/storybook-static/assets/{trash-2-B768_PZU.js → trash-2-CwmbYA8i.js} +1 -1
  277. package/storybook-static/assets/{triangle-alert-B8H-k2Bq.js → triangle-alert-TRLt6Woa.js} +1 -1
  278. package/storybook-static/assets/{useODataSelectBase-BKAZcf4R.js → useODataSelectBase-BxHmAh7D.js} +1 -1
  279. package/storybook-static/assets/{useODataTreeData-Bxlcmpg8.js → useODataTreeData-dSt1HJsq.js} +1 -1
  280. package/storybook-static/assets/{usePickerDefaultFilter-ien2ZY7g.js → usePickerDefaultFilter-Djn1liy6.js} +1 -1
  281. package/storybook-static/assets/{usePickerQuery-DJj2HmX9.js → usePickerQuery-ByBt1NRd.js} +1 -1
  282. package/storybook-static/assets/{usePickerTriggerController-CiD33ccS.js → usePickerTriggerController-CqdXiV2q.js} +1 -1
  283. package/storybook-static/assets/{x-Dt9SO3SL.js → x-BPRzfyys.js} +1 -1
  284. package/storybook-static/iframe.html +2 -2
  285. package/storybook-static/index.json +1 -1
  286. package/storybook-static/project.json +1 -1
  287. package/dist/chunks/base-table-9H5YuVvB.js.map +0 -1
  288. package/dist/chunks/table-BRC1OTyE.js +0 -141
  289. package/dist/chunks/table-BRC1OTyE.js.map +0 -1
  290. package/storybook-static/assets/FormattedTableCell-B4RRbSFK.js +0 -15
  291. package/storybook-static/assets/Table-DcNGLEI6.js +0 -197
  292. package/storybook-static/assets/Table.stories-DbEzudxD.js +0 -178
  293. package/storybook-static/assets/iframe-BgBwFMGW.js +0 -1
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-1Nw_zWMi.js";import{i as n,r}from"./react-Bl2r1tuC.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-DR4JL0hD.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./Splitter.stories-CA0-L_Ja.js";function b(e){let t={code:`code`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-CU98mtpe.js";import{i as n,r}from"./react-Bl2r1tuC.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-SX-KK9Lg.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./Splitter.stories-BIf9NNWq.js";function b(e){let t={code:`code`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,S.jsx)(u,{children:`Splitter`}),`
3
3
  `,(0,S.jsx)(o,{children:(0,S.jsx)(t.p,{children:`Компонент для интерактивного разделения рабочей области на две панели с поддержкой вложенности, клавиатуры и ограничений по размеру`})}),`
4
4
  `,(0,S.jsxs)(t.p,{children:[(0,S.jsx)(t.code,{children:`Splitter`}),` подходит для интерфейсов, где пользователь должен самостоятельно перераспределять пространство между соседними областями: навигацией и контентом, таблицей и деталями, превью и журналом событий.`]}),`
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-1Nw_zWMi.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{i as o,s,u as c}from"./number-scale-D2KTkjVQ.js";var l,u,d,f,p,m,h;function g(){return(g=e((()=>{l=`wAovST`,u=`QVVMwe`,d=`H43AJ8`,f=`pgo8sW`,p=`_8fCvqA`,m=`t6RFcI`,h={splitter:l,vertical:u,separator:d,horizontal:f,topLeft:p,bottomRight:m}})))()}function _(e,t,n){return Math.min(n,Math.max(t,e))}function v(e,t){return Number.isFinite(e)?_(e,0,1):t}function y(e,t){let n=v(e,k),r=v(t,A);return n<=r?[n,r]:[r,n]}function b(e,t){return e===`vertical`?t.clientX:t.clientY}function x(e,t){return e===`vertical`?t.width:t.height}function S(e,t){if(e===`vertical`){if(t===`ArrowLeft`)return-.02;if(t===`ArrowRight`)return M}if(e===`horizontal`){if(t===`ArrowUp`)return-.02;if(t===`ArrowDown`)return M}return null}function C(e,t){return t===`start`?0:t===`end`?1:e}function w({direction:e,initial:t,min:n,max:r,onChange:i,collapsedPane:a}){let[o,s]=y(n,r),c=(0,D.useRef)(null),l=(0,D.useRef)(null),u=(0,D.useRef)(null),d=(0,D.useRef)(null),f=(0,D.useRef)(null),p=(0,D.useRef)(null),m=(0,D.useRef)(0),h=(0,D.useRef)(_(v(t,j),o,s)),g=(0,D.useRef)(t),[w,T]=(0,D.useState)(()=>_(v(t,j),o,s)),E=(0,D.useRef)(w),O=(0,D.useCallback)(e=>{E.current=e,l.current?.style.setProperty(`flex-basis`,`${C(e,a)*100}%`),u.current?.setAttribute(`aria-valuenow`,`${Math.round(e*100)}`)},[a]),k=()=>{if(p.current!==null&&(cancelAnimationFrame(p.current),p.current=null),f.current===null)return E.current;let e=f.current;return f.current=null,O(e),e},A=e=>{f.current=e,p.current===null&&(p.current=requestAnimationFrame(()=>{p.current=null,f.current!==null&&O(f.current)}))},M=()=>{d.current?.(),d.current=null},N=(e,t=E.current)=>{k();let n=_(e,o,s);T(n),n!==t&&i?.(n)};return(0,D.useLayoutEffect)(()=>{O(w)},[O,w]),(0,D.useEffect)(()=>{T(e=>{let n=g.current!==t;return g.current=t,_(n?v(t,j):e,o,s)})},[t,o,s]),(0,D.useEffect)(()=>()=>{M(),p.current!==null&&cancelAnimationFrame(p.current)},[]),{containerRef:c,topLeftRef:l,separatorRef:u,ratio:w,minRatio:o,maxRatio:s,handleSeparatorPointerDown:t=>{if(t.button!==0)return;t.preventDefault();let n=c.current;if(!n)return;M();try{t.currentTarget.setPointerCapture?.(t.pointerId)}catch{}m.current=b(e,t),h.current=E.current;let r=t=>{let r=x(e,n.getBoundingClientRect());if(r<=0)return;let i=b(e,t)-m.current,a=_(h.current+i/r,o,s);A(a)},i=()=>{M(),N(k(),h.current)};d.current=()=>{document.removeEventListener(`pointermove`,r),document.removeEventListener(`pointerup`,i),document.removeEventListener(`pointercancel`,i)},document.addEventListener(`pointermove`,r),document.addEventListener(`pointerup`,i),document.addEventListener(`pointercancel`,i)},handleSeparatorKeyDown:t=>{let n=S(e,t.key);if(n!==null){t.preventDefault(),N(E.current+n);return}if(t.key===`Home`){t.preventDefault(),N(o);return}t.key===`End`&&(t.preventDefault(),N(s))}}}function T({className:e,direction:t,left:n,right:r,collapsedPane:a,logic:o}){let{containerRef:s,topLeftRef:c,separatorRef:l,ratio:u,minRatio:d,maxRatio:f,handleSeparatorPointerDown:p,handleSeparatorKeyDown:m}=o,g=C(u,a),_=a===`start`,v=a===`end`,y=a===null;return(0,O.jsxs)(`div`,{ref:s,className:i(h.splitter,h[t],e),children:[(0,O.jsx)(`div`,{ref:c,className:h.topLeft,style:{flexBasis:`${g*100}%`},hidden:_,children:n}),(0,O.jsx)(`div`,{ref:l,hidden:!y,role:`separator`,"aria-orientation":t===`vertical`?`vertical`:`horizontal`,"aria-valuemin":Math.round(d*100),"aria-valuemax":Math.round(f*100),"aria-valuenow":Math.round(u*100),tabIndex:y?0:-1,onPointerDown:p,onKeyDown:m,className:h.separator}),(0,O.jsx)(`div`,{className:h.bottomRight,hidden:v,children:r})]})}function E({direction:e=`vertical`,initial:t=j,min:n=k,max:r=A,onChange:i,className:a,collapsedPane:o=null,children:s}){let[c,l]=D.Children.toArray(s),u=w({direction:e,initial:t,min:n,max:r,onChange:i,collapsedPane:o});return l?(0,O.jsx)(T,{className:a,direction:e,left:c,right:l,collapsedPane:o,logic:u}):c}var D,O,k,A,j,M;function N(){return(N=e((()=>{D=n(),a(),g(),O=r(),k=.1,A=.9,j=.7,M=.02,E.__docgenInfo={description:``,methods:[],displayName:`Splitter`,props:{direction:{defaultValue:{value:`"vertical"`,computed:!1},required:!1},initial:{defaultValue:{value:`0.7`,computed:!1},required:!1},min:{defaultValue:{value:`0.1`,computed:!1},required:!1},max:{defaultValue:{value:`0.9`,computed:!1},required:!1},collapsedPane:{defaultValue:{value:`null`,computed:!1},required:!1}}}})))()}var ee,P,te,F;function I(){return(I=e((()=>{ee=`dN78Fa`,P=`q7Yvg9`,te=`yP9UOD`,F={container:ee,viewport:P,separator:te}})))()}function ne({height:e,defaultHeight:t,minHeight:n,maxHeight:r,heightStep:i,onHeightChange:a}){let l=s(n,r),u={...l,step:i},d=e!==void 0,[f,p]=(0,L.useState)(()=>c(t,l.min,l.max)),[m,h]=(0,L.useState)(null),g=c(e??f,l.min,l.max),_=m??g,v=(0,L.useRef)(null),y=(0,L.useRef)(null),b=(0,L.useRef)(null),x=(0,L.useRef)(_),S=(0,L.useRef)(_),C=(0,L.useRef)(0),w=()=>{if(y.current!==null&&(cancelAnimationFrame(y.current),y.current=null),b.current===null)return x.current;let e=b.current;return b.current=null,x.current=e,e},T=e=>{b.current=e,y.current===null&&(y.current=requestAnimationFrame(()=>{if(y.current=null,b.current===null)return;let e=b.current;b.current=null,x.current=e,h(e)}))},E=(e,t=x.current)=>{let n=c(e,l.min,l.max);x.current=n,h(null),n!==t&&(d||p(n),a?.(n))},D=()=>{v.current?.(),v.current=null};return(0,L.useLayoutEffect)(()=>{x.current=_},[_]),(0,L.useEffect)(()=>()=>{D(),y.current!==null&&cancelAnimationFrame(y.current)},[]),{height:_,minHeight:l.min,maxHeight:l.max,handleSeparatorPointerDown:e=>{if(e.button!==0)return;e.preventDefault(),D();try{e.currentTarget.setPointerCapture?.(e.pointerId)}catch{}C.current=e.clientY,S.current=x.current;let t=e=>{let t=e.clientY-C.current,n=c(S.current+t,l.min,l.max);T(n)},n=()=>{D(),E(w(),S.current)};v.current=()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n),document.removeEventListener(`pointercancel`,n)},document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n),document.addEventListener(`pointercancel`,n)},handleSeparatorKeyDown:e=>{let t;e.key===`ArrowUp`&&(t=o(_,-1,u)),e.key===`ArrowDown`&&(t=o(_,1,u)),e.key===`Home`&&(t=l.min),e.key===`End`&&(t=l.max),t!==void 0&&(e.preventDefault(),E(t,_))}}}var L;function R(){return(R=e((()=>{L=n()})))()}function re({height:e,defaultHeight:t=ie,minHeight:n=ae,maxHeight:r=V,heightStep:a=H,onHeightChange:o,className:s,viewportClassName:c,separatorClassName:l,separatorAriaLabel:u=`Изменить высоту рабочей области`,children:d}){let f=`${(0,z.useId)()}-viewport`,p=ne({height:e,defaultHeight:t,minHeight:n,maxHeight:r,heightStep:a,onHeightChange:o});return(0,B.jsxs)(`div`,{className:i(F.container,s),"data-ui":`splitter-height-container`,children:[(0,B.jsx)(`div`,{id:f,className:i(F.viewport,c),style:{height:p.height},"data-ui":`splitter-height-viewport`,children:d}),(0,B.jsx)(`div`,{role:`separator`,"aria-label":u,"aria-orientation":`horizontal`,"aria-controls":f,"aria-valuemin":p.minHeight,"aria-valuemax":p.maxHeight,"aria-valuenow":p.height,"aria-valuetext":`${p.height} px`,tabIndex:0,className:i(F.separator,l),onPointerDown:p.handleSeparatorPointerDown,onKeyDown:p.handleSeparatorKeyDown,"data-ui":`splitter-height-separator`})]})}var z,B,ie,ae,V,H;function U(){return(U=e((()=>{z=n(),a(),I(),R(),B=r(),ie=480,ae=240,V=1200,H=20,re.__docgenInfo={description:`Опциональная внешняя композиция для Splitter: область панелей получает
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-CU98mtpe.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{i as o,s,u as c}from"./number-scale-D2KTkjVQ.js";var l,u,d,f,p,m,h;function g(){return(g=e((()=>{l=`wAovST`,u=`QVVMwe`,d=`H43AJ8`,f=`pgo8sW`,p=`_8fCvqA`,m=`t6RFcI`,h={splitter:l,vertical:u,separator:d,horizontal:f,topLeft:p,bottomRight:m}})))()}function _(e,t,n){return Math.min(n,Math.max(t,e))}function v(e,t){return Number.isFinite(e)?_(e,0,1):t}function y(e,t){let n=v(e,k),r=v(t,A);return n<=r?[n,r]:[r,n]}function b(e,t){return e===`vertical`?t.clientX:t.clientY}function x(e,t){return e===`vertical`?t.width:t.height}function S(e,t){if(e===`vertical`){if(t===`ArrowLeft`)return-.02;if(t===`ArrowRight`)return M}if(e===`horizontal`){if(t===`ArrowUp`)return-.02;if(t===`ArrowDown`)return M}return null}function C(e,t){return t===`start`?0:t===`end`?1:e}function w({direction:e,initial:t,min:n,max:r,onChange:i,collapsedPane:a}){let[o,s]=y(n,r),c=(0,D.useRef)(null),l=(0,D.useRef)(null),u=(0,D.useRef)(null),d=(0,D.useRef)(null),f=(0,D.useRef)(null),p=(0,D.useRef)(null),m=(0,D.useRef)(0),h=(0,D.useRef)(_(v(t,j),o,s)),g=(0,D.useRef)(t),[w,T]=(0,D.useState)(()=>_(v(t,j),o,s)),E=(0,D.useRef)(w),O=(0,D.useCallback)(e=>{E.current=e,l.current?.style.setProperty(`flex-basis`,`${C(e,a)*100}%`),u.current?.setAttribute(`aria-valuenow`,`${Math.round(e*100)}`)},[a]),k=()=>{if(p.current!==null&&(cancelAnimationFrame(p.current),p.current=null),f.current===null)return E.current;let e=f.current;return f.current=null,O(e),e},A=e=>{f.current=e,p.current===null&&(p.current=requestAnimationFrame(()=>{p.current=null,f.current!==null&&O(f.current)}))},M=()=>{d.current?.(),d.current=null},N=(e,t=E.current)=>{k();let n=_(e,o,s);T(n),n!==t&&i?.(n)};return(0,D.useLayoutEffect)(()=>{O(w)},[O,w]),(0,D.useEffect)(()=>{T(e=>{let n=g.current!==t;return g.current=t,_(n?v(t,j):e,o,s)})},[t,o,s]),(0,D.useEffect)(()=>()=>{M(),p.current!==null&&cancelAnimationFrame(p.current)},[]),{containerRef:c,topLeftRef:l,separatorRef:u,ratio:w,minRatio:o,maxRatio:s,handleSeparatorPointerDown:t=>{if(t.button!==0)return;t.preventDefault();let n=c.current;if(!n)return;M();try{t.currentTarget.setPointerCapture?.(t.pointerId)}catch{}m.current=b(e,t),h.current=E.current;let r=t=>{let r=x(e,n.getBoundingClientRect());if(r<=0)return;let i=b(e,t)-m.current,a=_(h.current+i/r,o,s);A(a)},i=()=>{M(),N(k(),h.current)};d.current=()=>{document.removeEventListener(`pointermove`,r),document.removeEventListener(`pointerup`,i),document.removeEventListener(`pointercancel`,i)},document.addEventListener(`pointermove`,r),document.addEventListener(`pointerup`,i),document.addEventListener(`pointercancel`,i)},handleSeparatorKeyDown:t=>{let n=S(e,t.key);if(n!==null){t.preventDefault(),N(E.current+n);return}if(t.key===`Home`){t.preventDefault(),N(o);return}t.key===`End`&&(t.preventDefault(),N(s))}}}function T({className:e,direction:t,left:n,right:r,collapsedPane:a,logic:o}){let{containerRef:s,topLeftRef:c,separatorRef:l,ratio:u,minRatio:d,maxRatio:f,handleSeparatorPointerDown:p,handleSeparatorKeyDown:m}=o,g=C(u,a),_=a===`start`,v=a===`end`,y=a===null;return(0,O.jsxs)(`div`,{ref:s,className:i(h.splitter,h[t],e),children:[(0,O.jsx)(`div`,{ref:c,className:h.topLeft,style:{flexBasis:`${g*100}%`},hidden:_,children:n}),(0,O.jsx)(`div`,{ref:l,hidden:!y,role:`separator`,"aria-orientation":t===`vertical`?`vertical`:`horizontal`,"aria-valuemin":Math.round(d*100),"aria-valuemax":Math.round(f*100),"aria-valuenow":Math.round(u*100),tabIndex:y?0:-1,onPointerDown:p,onKeyDown:m,className:h.separator}),(0,O.jsx)(`div`,{className:h.bottomRight,hidden:v,children:r})]})}function E({direction:e=`vertical`,initial:t=j,min:n=k,max:r=A,onChange:i,className:a,collapsedPane:o=null,children:s}){let[c,l]=D.Children.toArray(s),u=w({direction:e,initial:t,min:n,max:r,onChange:i,collapsedPane:o});return l?(0,O.jsx)(T,{className:a,direction:e,left:c,right:l,collapsedPane:o,logic:u}):c}var D,O,k,A,j,M;function N(){return(N=e((()=>{D=n(),a(),g(),O=r(),k=.1,A=.9,j=.7,M=.02,E.__docgenInfo={description:``,methods:[],displayName:`Splitter`,props:{direction:{defaultValue:{value:`"vertical"`,computed:!1},required:!1},initial:{defaultValue:{value:`0.7`,computed:!1},required:!1},min:{defaultValue:{value:`0.1`,computed:!1},required:!1},max:{defaultValue:{value:`0.9`,computed:!1},required:!1},collapsedPane:{defaultValue:{value:`null`,computed:!1},required:!1}}}})))()}var ee,P,te,F;function I(){return(I=e((()=>{ee=`dN78Fa`,P=`q7Yvg9`,te=`yP9UOD`,F={container:ee,viewport:P,separator:te}})))()}function ne({height:e,defaultHeight:t,minHeight:n,maxHeight:r,heightStep:i,onHeightChange:a}){let l=s(n,r),u={...l,step:i},d=e!==void 0,[f,p]=(0,L.useState)(()=>c(t,l.min,l.max)),[m,h]=(0,L.useState)(null),g=c(e??f,l.min,l.max),_=m??g,v=(0,L.useRef)(null),y=(0,L.useRef)(null),b=(0,L.useRef)(null),x=(0,L.useRef)(_),S=(0,L.useRef)(_),C=(0,L.useRef)(0),w=()=>{if(y.current!==null&&(cancelAnimationFrame(y.current),y.current=null),b.current===null)return x.current;let e=b.current;return b.current=null,x.current=e,e},T=e=>{b.current=e,y.current===null&&(y.current=requestAnimationFrame(()=>{if(y.current=null,b.current===null)return;let e=b.current;b.current=null,x.current=e,h(e)}))},E=(e,t=x.current)=>{let n=c(e,l.min,l.max);x.current=n,h(null),n!==t&&(d||p(n),a?.(n))},D=()=>{v.current?.(),v.current=null};return(0,L.useLayoutEffect)(()=>{x.current=_},[_]),(0,L.useEffect)(()=>()=>{D(),y.current!==null&&cancelAnimationFrame(y.current)},[]),{height:_,minHeight:l.min,maxHeight:l.max,handleSeparatorPointerDown:e=>{if(e.button!==0)return;e.preventDefault(),D();try{e.currentTarget.setPointerCapture?.(e.pointerId)}catch{}C.current=e.clientY,S.current=x.current;let t=e=>{let t=e.clientY-C.current,n=c(S.current+t,l.min,l.max);T(n)},n=()=>{D(),E(w(),S.current)};v.current=()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n),document.removeEventListener(`pointercancel`,n)},document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n),document.addEventListener(`pointercancel`,n)},handleSeparatorKeyDown:e=>{let t;e.key===`ArrowUp`&&(t=o(_,-1,u)),e.key===`ArrowDown`&&(t=o(_,1,u)),e.key===`Home`&&(t=l.min),e.key===`End`&&(t=l.max),t!==void 0&&(e.preventDefault(),E(t,_))}}}var L;function R(){return(R=e((()=>{L=n()})))()}function re({height:e,defaultHeight:t=ie,minHeight:n=ae,maxHeight:r=V,heightStep:a=H,onHeightChange:o,className:s,viewportClassName:c,separatorClassName:l,separatorAriaLabel:u=`Изменить высоту рабочей области`,children:d}){let f=`${(0,z.useId)()}-viewport`,p=ne({height:e,defaultHeight:t,minHeight:n,maxHeight:r,heightStep:a,onHeightChange:o});return(0,B.jsxs)(`div`,{className:i(F.container,s),"data-ui":`splitter-height-container`,children:[(0,B.jsx)(`div`,{id:f,className:i(F.viewport,c),style:{height:p.height},"data-ui":`splitter-height-viewport`,children:d}),(0,B.jsx)(`div`,{role:`separator`,"aria-label":u,"aria-orientation":`horizontal`,"aria-controls":f,"aria-valuemin":p.minHeight,"aria-valuemax":p.maxHeight,"aria-valuenow":p.height,"aria-valuetext":`${p.height} px`,tabIndex:0,className:i(F.separator,l),onPointerDown:p.handleSeparatorPointerDown,onKeyDown:p.handleSeparatorKeyDown,"data-ui":`splitter-height-separator`})]})}var z,B,ie,ae,V,H;function U(){return(U=e((()=>{z=n(),a(),I(),R(),B=r(),ie=480,ae=240,V=1200,H=20,re.__docgenInfo={description:`Опциональная внешняя композиция для Splitter: область панелей получает
2
2
  независимую высоту, а расположенный снизу separator изменяет весь viewport.
3
3
  Внутренние Splitter при этом продолжают управлять только своими пропорциями.`,methods:[],displayName:`SplitterHeightContainer`,props:{defaultHeight:{defaultValue:{value:`480`,computed:!1},required:!1},minHeight:{defaultValue:{value:`240`,computed:!1},required:!1},maxHeight:{defaultValue:{value:`1200`,computed:!1},required:!1},heightStep:{defaultValue:{value:`20`,computed:!1},required:!1},separatorAriaLabel:{defaultValue:{value:`"Изменить высоту рабочей области"`,computed:!1},required:!1}}}})))()}var oe=t({AdjustableHeight:()=>$,Basic:()=>Y,Constrained:()=>Q,Horizontal:()=>X,NestedFourPanels:()=>Z,__namedExportsOrder:()=>ue,default:()=>le});function W({children:e}){return(0,q.jsx)(`div`,{style:{height:490},children:e})}function G({title:e,description:t,items:n=[]}){return(0,q.jsxs)(`div`,{style:{height:`100%`,padding:`var(--space-md)`,borderRadius:`var(--radius-md)`,border:`var(--border)`,display:`grid`,alignContent:`start`,gap:`var(--space-md)`},className:`scrollable`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h2`,{children:e}),(0,q.jsx)(`p`,{children:t})]}),n.length>0&&(0,q.jsx)(`div`,{style:{display:`grid`,gap:`var(--space-sm)`},children:n.map(e=>(0,q.jsx)(`div`,{style:{padding:`var(--space-sm) var(--space-md)`,borderRadius:`var(--radius-sm)`,background:`var(--surface-1)`},children:e},e))})]})}function K(e){return(0,q.jsx)(W,{children:(0,q.jsxs)(E,{...e,children:[(0,q.jsx)(G,{title:`Навигация`,description:`Левая панель подходит для фильтров, дерева разделов, списка сущностей или структуры документа.`,items:[`Раздел 1`,`Раздел 2`,`Раздел 3`,`Раздел 4`]}),(0,q.jsx)(G,{title:`Рабочая область`,description:`Правая панель обычно содержит детальный контент: таблицу, карточку объекта, форму или вкладки.`,items:[`Текущий документ`,`История изменений`,`Комментарии`,`Связанные объекты`,`Параметры отображения`]})]})})}function se(e){return(0,q.jsx)(W,{children:(0,q.jsxs)(E,{...e,children:[(0,q.jsxs)(E,{direction:`horizontal`,initial:.58,min:.25,max:.75,children:[(0,q.jsx)(G,{title:`Список`,description:`Верхняя левая панель может держать навигацию или результат поиска.`,items:[`Поиск`,`Фильтр по статусу`,`Группы`,`Быстрые действия`]}),(0,q.jsx)(G,{title:`Подробности`,description:`Нижняя левая панель подходит для связанного контента по выбранному элементу.`,items:[`Свойства`,`Ответственный`,`Теги`,`Контекст`]})]}),(0,q.jsxs)(E,{direction:`horizontal`,initial:.36,min:.2,max:.8,children:[(0,q.jsx)(G,{title:`Превью`,description:`Верхняя правая панель может содержать документ, схему, карту или live-просмотр.`,items:[`Предпросмотр файла`,`Масштаб 100%`,`Слой подсветки`]}),(0,q.jsx)(G,{title:`Журнал`,description:`Нижняя правая панель часто используется для событий, логов или вспомогательных данных.`,items:[`10:31 Импорт завершён`,`10:34 Индексация`,`10:36 Синхронизация`,`10:38 Проверка целостности`]})]})]})})}function ce(e){return(0,q.jsx)(W,{children:(0,q.jsxs)(E,{...e,children:[(0,q.jsx)(G,{title:`Фиксированные ограничения`,description:"У этой панели ужаты границы `min` и `max`, поэтому splitter нельзя увести слишком далеко.",items:[`Нажмите на разделитель`,`Используйте стрелки`,`Home = минимум`,`End = максимум`]}),(0,q.jsx)(G,{title:`Проверка доступности`,description:`Сценарий помогает проверить клавиатурное управление, устойчивость границ и отсутствие рывков при drag.`,items:[`ArrowLeft / ArrowRight`,`ArrowUp / ArrowDown`,`Перетаскивание мышью`,`Перетаскивание на тач-устройстве`]})]})})}var q,J,le,Y,X,Z,Q,$,ue;function de(){return(de=e((()=>{N(),U(),q=r(),{useArgs:J}=__STORYBOOK_MODULE_PREVIEW_API__,le={title:`UI/Splitter`,component:E,parameters:{atomicCanvas:!0,layout:`padded`},args:{direction:`vertical`,initial:.45,min:.15,max:.85},argTypes:{direction:{description:`Направление разделения: вертикальное по ширине или горизонтальное по высоте.`,control:`inline-radio`,options:[`vertical`,`horizontal`]},initial:{description:`Начальная доля первой панели в диапазоне от 0 до 1.`,control:{type:`range`,min:0,max:1,step:.01}},min:{description:`Минимальная доля первой панели. Значение автоматически нормализуется в диапазон 0..1.`,control:{type:`range`,min:0,max:1,step:.01}},max:{description:"Максимальная доля первой панели. Если `min` и `max` перепутаны местами, компонент сам исправит диапазон.",control:{type:`range`,min:0,max:1,step:.01}},onChange:{description:`Получает итоговую долю первой панели после завершения drag или клавиатурного шага.`,control:!1},collapsedPane:{description:`Сворачивает начальную или конечную панель.`,control:`inline-radio`,options:[null,`start`,`end`]},children:{description:`Splitter ожидает ровно два прямых дочерних элемента. Для большего количества областей используйте вложенные Splitter.`,control:!1}}},Y={name:`Две панели`,render:function(){let[e]=J();return(0,q.jsx)(K,{...e})}},X={name:`Горизонтальное разделение`,render:function(){let[e]=J();return(0,q.jsx)(K,{...e})},args:{direction:`horizontal`,initial:.55}},Z={name:`Четыре панели через вложенность`,render:function(){let[e]=J();return(0,q.jsx)(se,{...e})},args:{initial:.48,min:.25,max:.75}},Q={name:`Ограничения и клавиатура`,render:function(){let[e]=J();return(0,q.jsx)(ce,{...e})},args:{initial:.35,min:.25,max:.55}},$={name:`Изменяемая высота контейнера`,render:function(){let[e]=J();return(0,q.jsx)(re,{defaultHeight:360,minHeight:240,maxHeight:720,heightStep:20,children:(0,q.jsxs)(E,{...e,children:[(0,q.jsx)(G,{title:`Основная область`,description:`Separator под Splitter изменяет весь viewport, не меняя доли панелей.`,items:[`Высота хранится отдельно`,`Доли панелей остаются независимыми`]}),(0,q.jsx)(G,{title:`Дополнительная область`,description:`onHeightChange можно связать с внешними настройками пользователя.`,items:[`Минимум 240 px`,`Шаг клавиатуры 20 px`,`Максимум 720 px`]})]})})}},Y.parameters={...Y.parameters,docs:{...Y.parameters?.docs,source:{originalSource:`{
4
4
  name: "Две панели",
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-1Nw_zWMi.js";import{i as n,r}from"./react-Bl2r1tuC.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-DR4JL0hD.js";import{a as p,i as m,n as h,r as g,t as _}from"./StateSelect.stories-CEVPThtC.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-CU98mtpe.js";import{i as n,r}from"./react-Bl2r1tuC.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-SX-KK9Lg.js";import{a as p,i as m,n as h,r as g,t as _}from"./StateSelect.stories-DLvSnAcF.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,b.jsx)(u,{children:`StateSelect`}),`
3
3
  `,(0,b.jsx)(o,{children:`Специализированный select для выбора визуального статуса или семантического состояния`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`StateSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-1Nw_zWMi.js";import{a as r,i}from"./utils-tg3ibbzi.js";import{a,h as o,o as s}from"./formatters-DVE1YVNQ-YIdRxgw-.js";import{n as c,t as l}from"./Select-BlnKV8rc.js";var u,d,f,p,m,h,g,_,v,y,b,x;function S(){return(S=e((()=>{u=`p4nQdZ`,d=`_94tg5v`,f=`HyK7Zs`,p=`Mm4hrB`,m=`clxxBQ`,h=`_5pJ7o-`,g=`VV6hKN`,_=`cuQNP0`,v=`w7nIOT`,y=`ed-Afj`,b=`Lbxloe`,x={button:u,valueContainer:d,swatch:f,optionsPalette:p,optionsDetailed:m,option:h,optionPalette:g,optionDetailed:_,optionMeta:v,optionMetaIcon:y,optionMetaLabel:b}})))()}function C({state:e,className:t}){return(0,A.jsx)(`span`,{className:r(x.swatch,t),"data-empty":e===`none`?``:void 0,style:{"--state-color":s[e]}})}function w(e){return!!(e?.icon||e?.label)}function T(e,t){return typeof t?.label==`string`&&t.label.trim()?t.label:e||`empty`}function E(e){return w(e)?(0,A.jsxs)(`span`,{className:x.optionMeta,children:[e?.icon?(0,A.jsx)(`span`,{className:x.optionMetaIcon,children:e.icon}):null,e?.label?(0,A.jsx)(`span`,{className:x.optionMetaLabel,children:e.label}):null]}):null}function D(e,t){return(0,A.jsxs)(`div`,{className:x.valueContainer,children:[(0,A.jsx)(C,{state:e}),E(t)]})}function O({label:e,description:t,disabled:n,placeholder:i,size:o,value:s,onChange:c,options:u=a,stateMeta:d,className:f,clearable:p,required:m,error:h}){let g=(0,k.useMemo)(()=>Array.from(new Set(u)),[u]),_=g.some(e=>w(d?.[e])),v={getOptionKey:e=>e||`__empty_state__`,getOptionLabel:e=>d?.[e]?.label??e,getOptionAriaLabel:e=>T(e,d?.[e]),renderValue:e=>D(e,d?.[e]),renderOption:e=>(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(C,{state:e}),_?E(d?.[e]):null]}),buttonClassName:x.button,optionsContentClassName:r(_?x.optionsDetailed:x.optionsPalette),getOptionClassName:()=>r(x.option,_?x.optionDetailed:x.optionPalette)};return(0,A.jsx)(l,{label:e,description:t,disabled:n,placeholder:i,size:o,value:s,onChange:c,options:g,className:f,clearable:p,required:m,error:h,...v})}var k,A;function j(){return(j=e((()=>{k=t(),o(),i(),c(),S(),A=n(),O.__docgenInfo={description:`Специализированный селект для выбора цветового или статусного состояния. Используется там, где значению соответствует визуальный swatch.`,methods:[],displayName:`StateSelect`,props:{placeholder:{required:!1,tsType:{name:`string`},description:``},options:{required:!1,tsType:{name:`unknown`},description:``,defaultValue:{value:`DEFAULT_VALUE_STATES`,computed:!0}},stateMeta:{required:!1,tsType:{name:`Partial`,elements:[{name:`Record`,elements:[{name:`State`},{name:`signature`,type:`object`,raw:`{
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-CU98mtpe.js";import{a as r,i}from"./utils-tg3ibbzi.js";import{a,h as o,o as s}from"./formatters-DVE1YVNQ-CJCkXjuI.js";import{n as c,t as l}from"./Select-CT_wwcDN.js";var u,d,f,p,m,h,g,_,v,y,b,x;function S(){return(S=e((()=>{u=`p4nQdZ`,d=`_94tg5v`,f=`HyK7Zs`,p=`Mm4hrB`,m=`clxxBQ`,h=`_5pJ7o-`,g=`VV6hKN`,_=`cuQNP0`,v=`w7nIOT`,y=`ed-Afj`,b=`Lbxloe`,x={button:u,valueContainer:d,swatch:f,optionsPalette:p,optionsDetailed:m,option:h,optionPalette:g,optionDetailed:_,optionMeta:v,optionMetaIcon:y,optionMetaLabel:b}})))()}function C({state:e,className:t}){return(0,A.jsx)(`span`,{className:r(x.swatch,t),"data-empty":e===`none`?``:void 0,style:{"--state-color":s[e]}})}function w(e){return!!(e?.icon||e?.label)}function T(e,t){return typeof t?.label==`string`&&t.label.trim()?t.label:e||`empty`}function E(e){return w(e)?(0,A.jsxs)(`span`,{className:x.optionMeta,children:[e?.icon?(0,A.jsx)(`span`,{className:x.optionMetaIcon,children:e.icon}):null,e?.label?(0,A.jsx)(`span`,{className:x.optionMetaLabel,children:e.label}):null]}):null}function D(e,t){return(0,A.jsxs)(`div`,{className:x.valueContainer,children:[(0,A.jsx)(C,{state:e}),E(t)]})}function O({label:e,description:t,disabled:n,placeholder:i,size:o,value:s,onChange:c,options:u=a,stateMeta:d,className:f,clearable:p,required:m,error:h}){let g=(0,k.useMemo)(()=>Array.from(new Set(u)),[u]),_=g.some(e=>w(d?.[e])),v={getOptionKey:e=>e||`__empty_state__`,getOptionLabel:e=>d?.[e]?.label??e,getOptionAriaLabel:e=>T(e,d?.[e]),renderValue:e=>D(e,d?.[e]),renderOption:e=>(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(C,{state:e}),_?E(d?.[e]):null]}),buttonClassName:x.button,optionsContentClassName:r(_?x.optionsDetailed:x.optionsPalette),getOptionClassName:()=>r(x.option,_?x.optionDetailed:x.optionPalette)};return(0,A.jsx)(l,{label:e,description:t,disabled:n,placeholder:i,size:o,value:s,onChange:c,options:g,className:f,clearable:p,required:m,error:h,...v})}var k,A;function j(){return(j=e((()=>{k=t(),o(),i(),c(),S(),A=n(),O.__docgenInfo={description:`Специализированный селект для выбора цветового или статусного состояния. Используется там, где значению соответствует визуальный swatch.`,methods:[],displayName:`StateSelect`,props:{placeholder:{required:!1,tsType:{name:`string`},description:``},options:{required:!1,tsType:{name:`unknown`},description:``,defaultValue:{value:`DEFAULT_VALUE_STATES`,computed:!0}},stateMeta:{required:!1,tsType:{name:`Partial`,elements:[{name:`Record`,elements:[{name:`State`},{name:`signature`,type:`object`,raw:`{
2
2
  label?: string;
3
3
  icon?: ReactNode;
4
4
  }`,signature:{properties:[{key:`label`,value:{name:`string`,required:!1}},{key:`icon`,value:{name:`ReactNode`,required:!1}}]}}],raw:`Record<State, StateMeta>`}],raw:`Partial<Record<State, StateMeta>>`},description:``},className:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``},required:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``}},composes:[`Omit`]}})))()}export{j as n,O as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n,t as r}from"./circle-check-DzqMvzJX.js";import{i,n as a,r as o,t as s}from"./info-DMI56qGy.js";import{n as c,t as l}from"./triangle-alert-B8H-k2Bq.js";import{i as u,n as d,r as f}from"./iframe-1Nw_zWMi.js";import{n as p,t as m}from"./StateSelect--FDEb4-v.js";var h,g;function _(){return(_=e((()=>{u(),h=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}]],g=f(`circle-minus`,h)})))()}var v=t({Controlled:()=>C,PaletteOnly:()=>T,WithMeta:()=>w,__namedExportsOrder:()=>E,default:()=>S}),y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{c(),n(),a(),_(),i(),p(),y=d(),{useArgs:b}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:x}=__STORYBOOK_MODULE_TEST__,S={title:`UI/StateSelect`,component:m,args:{label:`Состояние`,description:`Выберите визуальный статус.`,placeholder:`Выберите значение`,value:`information`,onChange:x(),disabled:!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля выбора состояния.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда значение не выбрано.`,control:`text`},value:{description:`Текущее состояние.`,control:`select`,options:[``,`none`,`information`,`success`,`warning`,`error`]},onChange:{description:`Вызывается при выборе состояния.`,control:!1},options:{description:`Кастомный набор доступных состояний.`,control:!1},stateMeta:{description:`Кастомные иконки и подписи для значений.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},clearable:{description:`Показывает действие очистки выбранного состояния.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},C={render:function(e){let[,t]=b();return(0,y.jsx)(m,{...e,value:e.value??`information`,onChange:n=>{e.onChange(n),t({value:n})}})}},w={render:function(e){let[,t]=b();return(0,y.jsx)(m,{...e,value:e.value??`warning`,onChange:n=>{e.onChange(n),t({value:n})},stateMeta:{none:{label:`Без статуса`,icon:(0,y.jsx)(g,{})},information:{label:`Инфо`,icon:(0,y.jsx)(s,{})},success:{label:`Успех`,icon:(0,y.jsx)(r,{})},warning:{label:`Предупреждение`,icon:(0,y.jsx)(l,{})},error:{label:`Ошибка`,icon:(0,y.jsx)(o,{})}}})},args:{value:`warning`}},T={render:function(e){let[,t]=b();return(0,y.jsx)(m,{...e,value:e.value??`none`,onChange:n=>{e.onChange(n),t({value:n})},options:[`none`,`success`,`error`]})},args:{options:[`none`,`success`,`error`],value:`none`}},C.parameters={...C.parameters,docs:{...C.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n,t as r}from"./circle-check-DrVuYn1Q.js";import{i,n as a,r as o,t as s}from"./info-BhHmytIH.js";import{n as c,t as l}from"./triangle-alert-TRLt6Woa.js";import{i as u,n as d,r as f}from"./iframe-CU98mtpe.js";import{n as p,t as m}from"./StateSelect-C5tnrhWT.js";var h,g;function _(){return(_=e((()=>{u(),h=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}]],g=f(`circle-minus`,h)})))()}var v=t({Controlled:()=>C,PaletteOnly:()=>T,WithMeta:()=>w,__namedExportsOrder:()=>E,default:()=>S}),y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{c(),n(),a(),_(),i(),p(),y=d(),{useArgs:b}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:x}=__STORYBOOK_MODULE_TEST__,S={title:`UI/StateSelect`,component:m,args:{label:`Состояние`,description:`Выберите визуальный статус.`,placeholder:`Выберите значение`,value:`information`,onChange:x(),disabled:!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля выбора состояния.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда значение не выбрано.`,control:`text`},value:{description:`Текущее состояние.`,control:`select`,options:[``,`none`,`information`,`success`,`warning`,`error`]},onChange:{description:`Вызывается при выборе состояния.`,control:!1},options:{description:`Кастомный набор доступных состояний.`,control:!1},stateMeta:{description:`Кастомные иконки и подписи для значений.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},clearable:{description:`Показывает действие очистки выбранного состояния.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},C={render:function(e){let[,t]=b();return(0,y.jsx)(m,{...e,value:e.value??`information`,onChange:n=>{e.onChange(n),t({value:n})}})}},w={render:function(e){let[,t]=b();return(0,y.jsx)(m,{...e,value:e.value??`warning`,onChange:n=>{e.onChange(n),t({value:n})},stateMeta:{none:{label:`Без статуса`,icon:(0,y.jsx)(g,{})},information:{label:`Инфо`,icon:(0,y.jsx)(s,{})},success:{label:`Успех`,icon:(0,y.jsx)(r,{})},warning:{label:`Предупреждение`,icon:(0,y.jsx)(l,{})},error:{label:`Ошибка`,icon:(0,y.jsx)(o,{})}}})},args:{value:`warning`}},T={render:function(e){let[,t]=b();return(0,y.jsx)(m,{...e,value:e.value??`none`,onChange:n=>{e.onChange(n),t({value:n})},options:[`none`,`success`,`error`]})},args:{options:[`none`,`success`,`error`],value:`none`}},C.parameters={...C.parameters,docs:{...C.parameters?.docs,source:{originalSource:`{
2
2
  render: function Render(args) {
3
3
  const [, updateArgs] = useArgs<StateSelectProps>();
4
4
  return <StateSelect {...args} value={args.value ?? "information"} onChange={value => {
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-1Nw_zWMi.js";import{i as n,r}from"./react-Bl2r1tuC.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-DR4JL0hD.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./StatusIndicator.stories-BIps_Ecm.js";function y(e){let t={code:`code`,h2:`h2`,p:`p`,pre:`pre`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:m,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-CU98mtpe.js";import{i as n,r}from"./react-Bl2r1tuC.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-SX-KK9Lg.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./StatusIndicator.stories-B7PGK2_C.js";function y(e){let t={code:`code`,h2:`h2`,p:`p`,pre:`pre`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:m,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(u,{children:`StatusIndicator`}),`
3
3
  `,(0,x.jsx)(o,{children:`Компактный цветовой маркер состояния`}),`
4
4
  `,(0,x.jsx)(t.p,{children:`StatusIndicator помогает быстро считать состояние строки, карточки или процесса. Компонент использует семантические status-токены темы и сохраняет цветовую схему во всех host-проектах.`}),`
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-1Nw_zWMi.js";import{a as r,i}from"./utils-tg3ibbzi.js";var a,o,s,c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{a=`bJvCcD`,o=`UhVDLa`,s=`kNg89H`,c=`bRw83O`,l=`VQh7sh`,u=`zdESHk`,d=`-KLln9`,f=`Ak9M6g`,p=`_43MsRd`,m=`FpGv5-`,h=`y-1aex`,g=`_56N544`,_={statusIndicator:a,neutral:o,accent:s,info:c,success:l,warning:u,error:d,sizeSm:f,sizeMd:p,sizeLg:m,animated:h,statusIndicatorPulse:g}})))()}function y({tone:e=`neutral`,size:t=`md`,animated:n=!1,className:i,...a}){let o=a.role!==void 0||a[`aria-label`]!==void 0||a[`aria-labelledby`]!==void 0,s=a[`aria-hidden`]??(!o||void 0);return(0,b.jsx)(`span`,{...a,className:r(_.statusIndicator,x[e],S[t],n&&_.animated,i),"aria-hidden":s,"data-ui":`status-indicator`})}var b,x,S;function C(){return(C=e((()=>{i(),v(),b=n(),x={accent:_.accent,neutral:_.neutral,info:_.info,success:_.success,warning:_.warning,error:_.error},S={sm:_.sizeSm,md:_.sizeMd,lg:_.sizeLg},y.__docgenInfo={description:`Декоративный цветовой маркер статуса. Передавайте смысл состояния видимым текстом рядом с индикатором.`,methods:[],displayName:`StatusIndicator`,props:{tone:{required:!1,tsType:{name:`Exclude`,elements:[{name:`union`,raw:`"accent" | "neutral" | "brand" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"accent"`},{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},{name:`literal`,value:`"brand"`}],raw:`Exclude<UiTone, "brand">`},description:``,defaultValue:{value:`"neutral"`,computed:!1}},size:{required:!1,tsType:{name:`Extract`,elements:[{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"`}]},{name:`union`,raw:`"sm" | "md" | "lg"`,elements:[{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`}]}],raw:`Extract<UiSize, "sm" | "md" | "lg">`},description:``,defaultValue:{value:`"md"`,computed:!1}},animated:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}}},composes:[`Omit`]}})))()}var w=t({Animated:()=>P,Basic:()=>j,Sizes:()=>N,Tones:()=>M,__namedExportsOrder:()=>F,default:()=>A}),T,E,D,O,k,A,j,M,N,P,F;function I(){return(I=e((()=>{C(),T=n(),E={display:`flex`,alignItems:`center`,flexWrap:`wrap`,gap:`var(--space-lg)`},D={display:`inline-flex`,alignItems:`center`,gap:`var(--space-sm)`},O=[{tone:`accent`,label:`Текущий`},{tone:`neutral`,label:`Неизвестно`},{tone:`info`,label:`В работе`},{tone:`success`,label:`Готово`},{tone:`warning`,label:`Требует внимания`},{tone:`error`,label:`Ошибка`}],k=[{size:`sm`,label:`Small`},{size:`md`,label:`Medium`},{size:`lg`,label:`Large`}],A={title:`UI/StatusIndicator`,component:y,args:{tone:`info`,size:`md`,animated:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{tone:{description:`Семантический цвет индикатора.`,control:`inline-radio`,options:[`accent`,`neutral`,`info`,`success`,`warning`,`error`]},size:{description:`Размер индикатора.`,control:`inline-radio`,options:[`sm`,`md`,`lg`]},animated:{description:`Включает спокойную пульсацию для изменяющегося или активного состояния.`,control:`boolean`}}},j={render:e=>(0,T.jsxs)(`span`,{style:D,children:[(0,T.jsx)(y,{...e}),(0,T.jsx)(`span`,{children:`В работе`})]})},M={render:()=>(0,T.jsx)(`div`,{style:E,children:O.map(({tone:e,label:t})=>(0,T.jsxs)(`span`,{style:D,children:[(0,T.jsx)(y,{tone:e}),(0,T.jsx)(`span`,{children:t})]},e))})},N={render:()=>(0,T.jsx)(`div`,{style:E,children:k.map(({size:e,label:t})=>(0,T.jsxs)(`span`,{style:D,children:[(0,T.jsx)(y,{size:e,tone:`success`}),(0,T.jsx)(`span`,{children:t})]},e))})},P={render:()=>(0,T.jsxs)(`span`,{style:D,role:`status`,children:[(0,T.jsx)(y,{tone:`info`,animated:!0}),(0,T.jsx)(`span`,{children:`Синхронизация`})]})},j.parameters={...j.parameters,docs:{...j.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-CU98mtpe.js";import{a as r,i}from"./utils-tg3ibbzi.js";var a,o,s,c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{a=`bJvCcD`,o=`UhVDLa`,s=`kNg89H`,c=`bRw83O`,l=`VQh7sh`,u=`zdESHk`,d=`-KLln9`,f=`Ak9M6g`,p=`_43MsRd`,m=`FpGv5-`,h=`y-1aex`,g=`_56N544`,_={statusIndicator:a,neutral:o,accent:s,info:c,success:l,warning:u,error:d,sizeSm:f,sizeMd:p,sizeLg:m,animated:h,statusIndicatorPulse:g}})))()}function y({tone:e=`neutral`,size:t=`md`,animated:n=!1,className:i,...a}){let o=a.role!==void 0||a[`aria-label`]!==void 0||a[`aria-labelledby`]!==void 0,s=a[`aria-hidden`]??(!o||void 0);return(0,b.jsx)(`span`,{...a,className:r(_.statusIndicator,x[e],S[t],n&&_.animated,i),"aria-hidden":s,"data-ui":`status-indicator`})}var b,x,S;function C(){return(C=e((()=>{i(),v(),b=n(),x={accent:_.accent,neutral:_.neutral,info:_.info,success:_.success,warning:_.warning,error:_.error},S={sm:_.sizeSm,md:_.sizeMd,lg:_.sizeLg},y.__docgenInfo={description:`Декоративный цветовой маркер статуса. Передавайте смысл состояния видимым текстом рядом с индикатором.`,methods:[],displayName:`StatusIndicator`,props:{tone:{required:!1,tsType:{name:`Exclude`,elements:[{name:`union`,raw:`"accent" | "neutral" | "brand" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"accent"`},{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},{name:`literal`,value:`"brand"`}],raw:`Exclude<UiTone, "brand">`},description:``,defaultValue:{value:`"neutral"`,computed:!1}},size:{required:!1,tsType:{name:`Extract`,elements:[{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"`}]},{name:`union`,raw:`"sm" | "md" | "lg"`,elements:[{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`}]}],raw:`Extract<UiSize, "sm" | "md" | "lg">`},description:``,defaultValue:{value:`"md"`,computed:!1}},animated:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}}},composes:[`Omit`]}})))()}var w=t({Animated:()=>P,Basic:()=>j,Sizes:()=>N,Tones:()=>M,__namedExportsOrder:()=>F,default:()=>A}),T,E,D,O,k,A,j,M,N,P,F;function I(){return(I=e((()=>{C(),T=n(),E={display:`flex`,alignItems:`center`,flexWrap:`wrap`,gap:`var(--space-lg)`},D={display:`inline-flex`,alignItems:`center`,gap:`var(--space-sm)`},O=[{tone:`accent`,label:`Текущий`},{tone:`neutral`,label:`Неизвестно`},{tone:`info`,label:`В работе`},{tone:`success`,label:`Готово`},{tone:`warning`,label:`Требует внимания`},{tone:`error`,label:`Ошибка`}],k=[{size:`sm`,label:`Small`},{size:`md`,label:`Medium`},{size:`lg`,label:`Large`}],A={title:`UI/StatusIndicator`,component:y,args:{tone:`info`,size:`md`,animated:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{tone:{description:`Семантический цвет индикатора.`,control:`inline-radio`,options:[`accent`,`neutral`,`info`,`success`,`warning`,`error`]},size:{description:`Размер индикатора.`,control:`inline-radio`,options:[`sm`,`md`,`lg`]},animated:{description:`Включает спокойную пульсацию для изменяющегося или активного состояния.`,control:`boolean`}}},j={render:e=>(0,T.jsxs)(`span`,{style:D,children:[(0,T.jsx)(y,{...e}),(0,T.jsx)(`span`,{children:`В работе`})]})},M={render:()=>(0,T.jsx)(`div`,{style:E,children:O.map(({tone:e,label:t})=>(0,T.jsxs)(`span`,{style:D,children:[(0,T.jsx)(y,{tone:e}),(0,T.jsx)(`span`,{children:t})]},e))})},N={render:()=>(0,T.jsx)(`div`,{style:E,children:k.map(({size:e,label:t})=>(0,T.jsxs)(`span`,{style:D,children:[(0,T.jsx)(y,{size:e,tone:`success`}),(0,T.jsx)(`span`,{children:t})]},e))})},P={render:()=>(0,T.jsxs)(`span`,{style:D,role:`status`,children:[(0,T.jsx)(y,{tone:`info`,animated:!0}),(0,T.jsx)(`span`,{children:`Синхронизация`})]})},j.parameters={...j.parameters,docs:{...j.parameters?.docs,source:{originalSource:`{
2
2
  render: args => <span style={itemStyle}>
3
3
  <StatusIndicator {...args} />
4
4
  <span>В работе</span>
@@ -1,3 +1,3 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-1Nw_zWMi.js";import{n,t as r}from"./createControlledStoryRender-BouhvX-R.js";import{n as i,t as a}from"./Toggle-CroC7YOK.js";function o(e,t){return typeof e==`string`?e:t}var s,c;function l(){return(l=e((()=>{s=`true`,c=`false`})))()}function u({value:e,onChange:t,checkedValue:n,uncheckedValue:r,defaultChecked:i,...l}){let u=o(n,s),f=o(r,c),p=e===u;return(0,d.jsx)(a,{...l,value:p,onChange:e=>t(e?u:f)})}var d;function f(){return(f=e((()=>{l(),i(),d=t(),u.__docgenInfo={description:`Адаптирует boolean-состояние Toggle к паре настраиваемых строковых значений.`,methods:[],displayName:`StringToggle`,props:{checkedValue:{required:!1,tsType:{name:`string`},description:``},uncheckedValue:{required:!1,tsType:{name:`string`},description:``},value:{required:!0,tsType:{name:`string`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``}}}})))()}var p,m,h,g,_;function v(){return(v=e((()=>{n(),f(),p=t(),m=r((e,t)=>(0,p.jsx)(u,{...e,onChange:n=>{e.onChange(n),t({value:n})}})),h={title:`UI/Toggle/StringToggle`,component:u,args:{value:`ZBP_MANAGER`,onChange:()=>void 0,checkedText:`за клиента`,uncheckedText:`за сделку`,checkedValue:`ZM_MANAGER`,uncheckedValue:`ZBP_MANAGER`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи переключателя.`,control:`text`},description:{description:`Описание под переключателем.`,control:`text`},placeholder:{description:"Резервная подпись, если `label` не задан.",control:`text`},value:{description:`Текущее строковое значение.`,control:`text`},onChange:{description:`Возвращает строку выбранного состояния.`,control:!1},checkedValue:{description:`Значение включённого состояния.`,control:`text`},uncheckedValue:{description:`Значение выключенного состояния.`,control:`text`},checkedText:{description:`Текст включённого состояния.`,control:`text`},uncheckedText:{description:`Текст выключенного состояния.`,control:`text`},labelPosition:{description:`Положение подписи относительно переключателя.`,control:`inline-radio`,options:[`before`,`after`]},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},g={render:m},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-CU98mtpe.js";import{n,t as r}from"./createControlledStoryRender-BouhvX-R.js";import{n as i,t as a}from"./Toggle-BGbyfmSW.js";function o(e,t){return typeof e==`string`?e:t}var s,c;function l(){return(l=e((()=>{s=`true`,c=`false`})))()}function u({value:e,onChange:t,checkedValue:n,uncheckedValue:r,defaultChecked:i,...l}){let u=o(n,s),f=o(r,c),p=e===u;return(0,d.jsx)(a,{...l,value:p,onChange:e=>t(e?u:f)})}var d;function f(){return(f=e((()=>{l(),i(),d=t(),u.__docgenInfo={description:`Адаптирует boolean-состояние Toggle к паре настраиваемых строковых значений.`,methods:[],displayName:`StringToggle`,props:{checkedValue:{required:!1,tsType:{name:`string`},description:``},uncheckedValue:{required:!1,tsType:{name:`string`},description:``},value:{required:!0,tsType:{name:`string`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``}}}})))()}var p,m,h,g,_;function v(){return(v=e((()=>{n(),f(),p=t(),m=r((e,t)=>(0,p.jsx)(u,{...e,onChange:n=>{e.onChange(n),t({value:n})}})),h={title:`UI/Toggle/StringToggle`,component:u,args:{value:`ZBP_MANAGER`,onChange:()=>void 0,checkedText:`за клиента`,uncheckedText:`за сделку`,checkedValue:`ZM_MANAGER`,uncheckedValue:`ZBP_MANAGER`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи переключателя.`,control:`text`},description:{description:`Описание под переключателем.`,control:`text`},placeholder:{description:"Резервная подпись, если `label` не задан.",control:`text`},value:{description:`Текущее строковое значение.`,control:`text`},onChange:{description:`Возвращает строку выбранного состояния.`,control:!1},checkedValue:{description:`Значение включённого состояния.`,control:`text`},uncheckedValue:{description:`Значение выключенного состояния.`,control:`text`},checkedText:{description:`Текст включённого состояния.`,control:`text`},uncheckedText:{description:`Текст выключенного состояния.`,control:`text`},labelPosition:{description:`Положение подписи относительно переключателя.`,control:`inline-radio`,options:[`before`,`after`]},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},g={render:m},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
2
2
  render: renderStringToggleStory
3
3
  }`,...g.parameters?.docs?.source}}},_=[`ManagerScope`]})))()}v();export{g as ManagerScope,_ as __namedExportsOrder,h as default};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-1Nw_zWMi.js";import{i as n,r}from"./react-Bl2r1tuC.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-DR4JL0hD.js";import{a as p,i as m,n as h,r as g,t as _}from"./Switch.stories-Cvky3KQz.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-CU98mtpe.js";import{i as n,r}from"./react-Bl2r1tuC.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-SX-KK9Lg.js";import{a as p,i as m,n as h,r as g,t as _}from"./Switch.stories-BtctkC2W.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,b.jsx)(u,{children:`Switch`}),`
3
3
  `,(0,b.jsx)(o,{children:`Переключатель в виде слайдера для быстрых включений, отключений и tri-state сценариев`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`Switch уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1 +1 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./circle-check-DzqMvzJX.js";import{i as a,n as o,r as s}from"./iframe-1Nw_zWMi.js";import{a as c,i as l}from"./utils-tg3ibbzi.js";import{n as u,t as d}from"./ui.module-l7VCYIW-.js";var f,p;function m(){return(m=t((()=>{a(),f=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]],p=s(`ban`,f)})))()}var h,g,_,v,y;function b(){return(b=t((()=>{h=`Or5LYA`,g=`w0AMfA`,_=`P1x4lq`,v=`-ZVOZo`,y={switchWrapper:h,switch:`qge3io`,iconWrapper:g,auto:_,checked:v}})))()}function x(e){let{label:t,description:n,disabled:r,checkedIcon:a=(0,C.jsx)(i,{}),uncheckedIcon:o=(0,C.jsx)(p,{}),className:s,type:l,id:d,size:f,placeholder:m,onChange:h,value:g,triState:_,...v}=e,b=(0,S.useId)(),x=d??b,w=n?`${x}-description`:void 0,T=t?`${x}-label`:void 0,E=()=>{if(!e.triState){e.onChange(!e.value);return}if(e.value===void 0){e.onChange(!0);return}if(e.value===!0){e.onChange(!1);return}e.value===!1&&e.onChange(void 0)},D=typeof e.value==`boolean`&&e.value,O=e.triState&&typeof e.value!=`boolean`,k=v[`aria-label`]??(t?void 0:`Переключатель`);return(0,C.jsxs)(`div`,{className:c(u.uiElement,r&&u.disabled),"aria-disabled":r||void 0,children:[t&&(0,C.jsxs)(`div`,{id:T,className:u.uiLabel,children:[t,`:`]}),n&&(0,C.jsx)(`p`,{id:w,className:u.uiDescription,children:n}),(0,C.jsx)(`button`,{...v,id:x,type:l??`button`,role:`switch`,disabled:r,"aria-checked":D,"aria-describedby":w,"aria-labelledby":T,"aria-label":k,"aria-disabled":r,"data-ui":`switch`,"data-action":`toggle-switch`,onClick:E,className:c(u.uiInputControl,y.switchWrapper,s),children:(0,C.jsx)(`div`,{className:y.switch,"data-disabled":r||void 0,children:O?(0,C.jsx)(`div`,{className:c(y.iconWrapper,y.auto,y.checked),children:`Auto`}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`div`,{className:c(y.iconWrapper,!e.value&&y.checked),children:o}),(0,C.jsx)(`div`,{className:c(y.iconWrapper,e.value&&y.checked),children:a})]})})})]})}var S,C;function w(){return(w=t((()=>{S=e(n(),1),l(),m(),r(),d(),b(),C=o(),x.__docgenInfo={description:`Переключатель boolean-состояния в виде слайдера. Подходит для быстрых настроек и включения/отключения опций.`,methods:[],displayName:`Switch`}})))()}export{w as n,x as t};
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./circle-check-DrVuYn1Q.js";import{i as a,n as o,r as s}from"./iframe-CU98mtpe.js";import{a as c,i as l}from"./utils-tg3ibbzi.js";import{n as u,t as d}from"./ui.module-l7VCYIW-.js";var f,p;function m(){return(m=t((()=>{a(),f=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]],p=s(`ban`,f)})))()}var h,g,_,v,y;function b(){return(b=t((()=>{h=`Or5LYA`,g=`w0AMfA`,_=`P1x4lq`,v=`-ZVOZo`,y={switchWrapper:h,switch:`qge3io`,iconWrapper:g,auto:_,checked:v}})))()}function x(e){let{label:t,description:n,disabled:r,checkedIcon:a=(0,C.jsx)(i,{}),uncheckedIcon:o=(0,C.jsx)(p,{}),className:s,type:l,id:d,size:f,placeholder:m,onChange:h,value:g,triState:_,...v}=e,b=(0,S.useId)(),x=d??b,w=n?`${x}-description`:void 0,T=t?`${x}-label`:void 0,E=()=>{if(!e.triState){e.onChange(!e.value);return}if(e.value===void 0){e.onChange(!0);return}if(e.value===!0){e.onChange(!1);return}e.value===!1&&e.onChange(void 0)},D=typeof e.value==`boolean`&&e.value,O=e.triState&&typeof e.value!=`boolean`,k=v[`aria-label`]??(t?void 0:`Переключатель`);return(0,C.jsxs)(`div`,{className:c(u.uiElement,r&&u.disabled),"aria-disabled":r||void 0,children:[t&&(0,C.jsxs)(`div`,{id:T,className:u.uiLabel,children:[t,`:`]}),n&&(0,C.jsx)(`p`,{id:w,className:u.uiDescription,children:n}),(0,C.jsx)(`button`,{...v,id:x,type:l??`button`,role:`switch`,disabled:r,"aria-checked":D,"aria-describedby":w,"aria-labelledby":T,"aria-label":k,"aria-disabled":r,"data-ui":`switch`,"data-action":`toggle-switch`,onClick:E,className:c(u.uiInputControl,y.switchWrapper,s),children:(0,C.jsx)(`div`,{className:y.switch,"data-disabled":r||void 0,children:O?(0,C.jsx)(`div`,{className:c(y.iconWrapper,y.auto,y.checked),children:`Auto`}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`div`,{className:c(y.iconWrapper,!e.value&&y.checked),children:o}),(0,C.jsx)(`div`,{className:c(y.iconWrapper,e.value&&y.checked),children:a})]})})})]})}var S,C;function w(){return(w=t((()=>{S=e(n(),1),l(),m(),r(),d(),b(),C=o(),x.__docgenInfo={description:`Переключатель boolean-состояния в виде слайдера. Подходит для быстрых настроек и включения/отключения опций.`,methods:[],displayName:`Switch`}})))()}export{w as n,x as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n,t as r}from"./Switch-jJgwtWFK.js";import{n as i}from"./iframe-1Nw_zWMi.js";import{n as a,t as o}from"./createControlledStoryRender-BouhvX-R.js";var s=t({BiState:()=>f,Disabled:()=>m,TriState:()=>p,__namedExportsOrder:()=>h,default:()=>d}),c,l,u,d,f,p,m,h;function g(){return(g=e((()=>{a(),n(),c=i(),l=o((e,t)=>(0,c.jsx)(r,{...e,triState:!1,value:e.value??!1,onChange:n=>{e.onChange(n),t({value:n})}})),u=o((e,t)=>(0,c.jsxs)(`div`,{style:{display:`grid`,gap:8},children:[(0,c.jsx)(r,{...e,triState:!0,value:e.value,onChange:n=>{e.onChange(n),t({value:n})}}),(0,c.jsxs)(`div`,{children:[`Текущее значение: `,String(e.value)]})]})),d={title:`UI/Switch`,component:r,args:{label:`Режим обработки`,description:`Переключение состояния`,value:!1,onChange:()=>{},triState:!1,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок переключателя.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},value:{description:"Текущее значение (`boolean` или `undefined` в tri-state).",control:`boolean`},onChange:{description:`Вызывается при изменении состояния.`,control:!1},triState:{description:"Включает трехсостоянный режим (`undefined → true → false`).",control:`boolean`},checkedIcon:{description:"Кастомная иконка для состояния `true`.",control:!1},uncheckedIcon:{description:"Кастомная иконка для состояния `false`.",control:!1},disabled:{description:`Блокирует переключение.`,control:`boolean`}}},f={render:l},p={render:u,args:{triState:!0,value:void 0}},m={render:l,args:{disabled:!0,value:!0}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n,t as r}from"./Switch-DlRrk6o7.js";import{n as i}from"./iframe-CU98mtpe.js";import{n as a,t as o}from"./createControlledStoryRender-BouhvX-R.js";var s=t({BiState:()=>f,Disabled:()=>m,TriState:()=>p,__namedExportsOrder:()=>h,default:()=>d}),c,l,u,d,f,p,m,h;function g(){return(g=e((()=>{a(),n(),c=i(),l=o((e,t)=>(0,c.jsx)(r,{...e,triState:!1,value:e.value??!1,onChange:n=>{e.onChange(n),t({value:n})}})),u=o((e,t)=>(0,c.jsxs)(`div`,{style:{display:`grid`,gap:8},children:[(0,c.jsx)(r,{...e,triState:!0,value:e.value,onChange:n=>{e.onChange(n),t({value:n})}}),(0,c.jsxs)(`div`,{children:[`Текущее значение: `,String(e.value)]})]})),d={title:`UI/Switch`,component:r,args:{label:`Режим обработки`,description:`Переключение состояния`,value:!1,onChange:()=>{},triState:!1,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок переключателя.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},value:{description:"Текущее значение (`boolean` или `undefined` в tri-state).",control:`boolean`},onChange:{description:`Вызывается при изменении состояния.`,control:!1},triState:{description:"Включает трехсостоянный режим (`undefined → true → false`).",control:`boolean`},checkedIcon:{description:"Кастомная иконка для состояния `true`.",control:!1},uncheckedIcon:{description:"Кастомная иконка для состояния `false`.",control:!1},disabled:{description:`Блокирует переключение.`,control:`boolean`}}},f={render:l},p={render:u,args:{triState:!0,value:void 0}},m={render:l,args:{disabled:!0,value:!0}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
2
2
  render: renderBiStateSwitchStory
3
3
  }`,...f.parameters?.docs?.source}}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
4
4
  render: renderTriStateSwitchStory,
@@ -0,0 +1,219 @@
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-CU98mtpe.js";import{i as n,r}from"./react-Bl2r1tuC.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-SX-KK9Lg.js";import{_ as p,a as m,c as h,d as g,f as _,g as v,h as y,i as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k,v as A}from"./Table.stories-FORIU5CX.js";function j(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(s,{of:D,parameters:{docs:{toc:!0}}}),`
2
+ `,(0,N.jsx)(u,{children:`Table`}),`
3
+ `,(0,N.jsxs)(o,{children:[`Плоская таблица как React-альтернатива `,(0,N.jsx)(t.code,{children:`sap.m.Table`})]}),`
4
+ `,(0,N.jsxs)(t.p,{children:[(0,N.jsx)(t.code,{children:`Table`}),` предназначен для плоских данных и по поведению осознанно сближен с `,(0,N.jsx)(t.code,{children:`TreeTable`}),`.
5
+ Оба компонента используют общий табличный каркас, поэтому здесь совпадают states загрузки, визуальная структура, обработка выбора строк и клавиатурная активация.
6
+ `,(0,N.jsx)(t.code,{children:`Table`}),` также поддерживает декларативное форматирование через `,(0,N.jsx)(t.code,{children:`meta.formatting`}),`, formulas, безопасное pipeline-formatting и optional OData adapter.`]}),`
7
+ `,(0,N.jsxs)(t.p,{children:[`Для перестановки строк передайте `,(0,N.jsx)(t.code,{children:`rowReordering`}),` и разместите `,(0,N.jsx)(t.code,{children:`Sortable.DragHandle`}),` в отдельной колонке. `,(0,N.jsx)(t.code,{children:`Table`}),` сохраняет единые стили строк и подключает pointer/keyboard DnD, а потребитель владеет обновлением порядка данных.`]}),`
8
+ `,(0,N.jsx)(t.pre,{children:(0,N.jsx)(t.code,{className:`language-tsx`,children:`import { Sortable } from "@ryuzaki13/react-foundation-ui/sortable";
9
+ import { Table } from "@ryuzaki13/react-foundation-ui/table";
10
+
11
+ const columns = [
12
+ {
13
+ id: "reorder",
14
+ header: "Порядок",
15
+ cell: ({ row }) => <Sortable.DragHandle as="button" title={\`Переместить \${row.original.name}\`} />
16
+ },
17
+ { id: "name", accessorKey: "name", header: "Название" }
18
+ ];
19
+
20
+ <Table
21
+ data={rows}
22
+ columns={columns}
23
+ getRowId={(row) => row.id}
24
+ rowReordering={{ onReorder: setRows }}
25
+ />;
26
+ `})}),`
27
+ `,(0,N.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
28
+ `,(0,N.jsx)(f,{}),`
29
+ `,(0,N.jsx)(i,{of:O}),`
30
+ `,(0,N.jsx)(t.pre,{children:(0,N.jsx)(t.code,{className:`language-tsx`,children:`import { Table, type TableColumnDef } from "@ryuzaki13/react-foundation-ui";
31
+
32
+ interface DealRow {
33
+ id: string;
34
+ number: string;
35
+ client: string;
36
+ amount: string;
37
+ }
38
+
39
+ const columns: TableColumnDef<DealRow>[] = [
40
+ {
41
+ id: "number",
42
+ accessorKey: "number",
43
+ header: "Номер",
44
+ meta: { width: "9em" }
45
+ },
46
+ {
47
+ id: "client",
48
+ accessorKey: "client",
49
+ header: "Клиент",
50
+ meta: { width: "14em" }
51
+ },
52
+ {
53
+ id: "amount",
54
+ accessorKey: "amount",
55
+ header: "Сумма",
56
+ meta: { width: "10em", align: "right" }
57
+ }
58
+ ];
59
+
60
+ export function Example({ rows }: { rows: DealRow[] }) {
61
+ return <Table data={rows} columns={columns} getRowId={(row) => row.id} selectionMode="single" height="20em" />;
62
+ }
63
+ `})}),`
64
+ `,(0,N.jsx)(t.h2,{id:`форматирование-ячеек`,children:`Форматирование ячеек`}),`
65
+ `,(0,N.jsxs)(t.p,{children:[(0,N.jsx)(t.code,{children:`meta.formatting`}),` добавляет к колонке декларативный runtime-контракт:`]}),`
66
+ `,(0,N.jsxs)(t.ul,{children:[`
67
+ `,(0,N.jsxs)(t.li,{children:[`typed formatting по `,(0,N.jsx)(t.code,{children:`role/type`}),`;`]}),`
68
+ `,(0,N.jsx)(t.li,{children:`formula-based вычисление значения;`}),`
69
+ `,(0,N.jsxs)(t.li,{children:[`pipeline display-formatting (`,(0,N.jsx)(t.code,{children:`normalizeLeadingZeros`}),`, `,(0,N.jsx)(t.code,{children:`resolveValueState`}),`, `,(0,N.jsx)(t.code,{children:`typedValueFormat`}),`);`]}),`
70
+ `,(0,N.jsxs)(t.li,{children:[(0,N.jsx)(t.code,{children:`emptyWhenZero`}),` для скрытия нулевых значений;`]}),`
71
+ `,(0,N.jsxs)(t.li,{children:[(0,N.jsx)(t.code,{children:`overflowTooltip`}),` для длинного текста.`]}),`
72
+ `]}),`
73
+ `,(0,N.jsx)(t.p,{children:`Важно:`}),`
74
+ `,(0,N.jsxs)(t.ul,{children:[`
75
+ `,(0,N.jsxs)(t.li,{children:[(0,N.jsx)(t.code,{children:`meta.formatting`}),` применяется только если у колонки нет кастомного `,(0,N.jsx)(t.code,{children:`cell`}),`;`]}),`
76
+ `,(0,N.jsx)(t.li,{children:`formulas и pipeline компилируются один раз на снимок колонок;`}),`
77
+ `,(0,N.jsxs)(t.li,{children:[`ошибки formula/pipeline не роняют таблицу и не подставляют универсальный `,(0,N.jsx)(t.code,{children:`0`}),`;`]}),`
78
+ `,(0,N.jsxs)(t.li,{children:[`OData adapter остаётся внешней прослойкой, а не частью `,(0,N.jsx)(t.code,{children:`Table`}),`.`]}),`
79
+ `]}),`
80
+ `,(0,N.jsx)(t.pre,{children:(0,N.jsx)(t.code,{className:`language-tsx`,children:`const columns: TableColumnDef<Row>[] = [
81
+ {
82
+ id: "amount",
83
+ accessorKey: "amount",
84
+ header: "Сумма",
85
+ meta: {
86
+ align: "right",
87
+ formatting: {
88
+ role: "measure",
89
+ type: "decimal",
90
+ emptyWhenZero: true
91
+ }
92
+ }
93
+ }
94
+ ];
95
+ `})}),`
96
+ `,(0,N.jsxs)(t.p,{children:[`Для OData-сценариев можно не прописывать `,(0,N.jsx)(t.code,{children:`role/type`}),` вручную, а обогатить колонки через adapter:`]}),`
97
+ `,(0,N.jsx)(t.pre,{children:(0,N.jsx)(t.code,{className:`language-tsx`,children:`import { enrichTableColumnsWithODataFormatting } from "@ryuzaki13/react-foundation-lib/table";
98
+
99
+ const columns = enrichTableColumnsWithODataFormatting(manualColumns, metadata.columns);
100
+ `})}),`
101
+ `,(0,N.jsx)(t.h2,{id:`слияние-дубликатов`,children:`Слияние дубликатов`}),`
102
+ `,(0,N.jsxs)(t.p,{children:[(0,N.jsx)(t.code,{children:`meta.mergeDuplicates`}),` включает display-only слияние подряд идущих одинаковых raw-значений без изменения структуры строк.`]}),`
103
+ `,(0,N.jsx)(t.p,{children:`Важно:`}),`
104
+ `,(0,N.jsxs)(t.ul,{children:[`
105
+ `,(0,N.jsxs)(t.li,{children:[`сравнение идёт по `,(0,N.jsx)(t.code,{children:`cell.getValue()`}),`, а не по formatted display;`]}),`
106
+ `,(0,N.jsx)(t.li,{children:`объединяются только подряд идущие строки;`}),`
107
+ `,(0,N.jsxs)(t.li,{children:[(0,N.jsx)(t.code,{children:`null`}),`, `,(0,N.jsx)(t.code,{children:`undefined`}),` и пустая строка `,(0,N.jsx)(t.code,{children:`""`}),` не объединяются;`]}),`
108
+ `,(0,N.jsx)(t.li,{children:`повторяющееся значение остаётся только в первой строке группы, а ниже рендерятся пустые ячейки;`}),`
109
+ `,(0,N.jsx)(t.li,{children:`если сервер не отсортировал данные так, чтобы дубликаты шли подряд, слияния не будет.`}),`
110
+ `]}),`
111
+ `,(0,N.jsx)(t.pre,{children:(0,N.jsx)(t.code,{className:`language-tsx`,children:`const columns: TableColumnDef<Row>[] = [
112
+ {
113
+ id: "division",
114
+ accessorKey: "division",
115
+ header: "Дивизион",
116
+ meta: {
117
+ mergeDuplicates: true
118
+ }
119
+ }
120
+ ];
121
+ `})}),`
122
+ `,(0,N.jsxs)(t.h2,{id:`хук-useodatatablecolumns`,children:[`Хук `,(0,N.jsx)(t.code,{children:`useODataTableColumns`})]}),`
123
+ `,(0,N.jsxs)(t.p,{children:[`Наиболее частый кейс - работать не с pure-helper напрямую, а с hook-слоем `,(0,N.jsx)(t.code,{children:`useODataTableColumns(...)`}),`.`]}),`
124
+ `,(0,N.jsxs)(t.p,{children:[(0,N.jsx)(t.code,{children:`build`}),` стоит выбирать, когда колонки можно полностью собрать из `,(0,N.jsx)(t.code,{children:`metadata.columns`}),`:`]}),`
125
+ `,(0,N.jsx)(t.pre,{children:(0,N.jsx)(t.code,{className:`language-tsx`,children:`import { useODataTableColumns } from "@ryuzaki13/react-foundation-api/odata";
126
+ import { Table } from "@ryuzaki13/react-foundation-ui";
127
+
128
+ function DealsTable({ rows }: { rows: DealRow[] }) {
129
+ const { columns, metadata, isLoading } = useODataTableColumns<DealRow>({
130
+ service: "ZSD_SALES_SRV",
131
+ entity: "DealSet",
132
+ mode: "build"
133
+ });
134
+
135
+ return (
136
+ <Table
137
+ title={metadata?.title ?? "Сделки"}
138
+ data={rows}
139
+ columns={columns}
140
+ isLoading={isLoading}
141
+ getRowId={(row) => row.id}
142
+ selectionMode="single"
143
+ />
144
+ );
145
+ }
146
+ `})}),`
147
+ `,(0,N.jsxs)(t.p,{children:[(0,N.jsx)(t.code,{children:`enrich`}),` подходит, когда колонки уже описаны вручную и нужно только дозаполнить `,(0,N.jsx)(t.code,{children:`meta.formatting.role/type`}),`:`]}),`
148
+ `,(0,N.jsx)(t.pre,{children:(0,N.jsx)(t.code,{className:`language-tsx`,children:`import { useODataTableColumns } from "@ryuzaki13/react-foundation-api/odata";
149
+ import { Table } from "@ryuzaki13/react-foundation-ui";
150
+
151
+ const manualColumns: TableColumnDef<DealRow>[] = [
152
+ { id: "product", accessorKey: "product", header: "Позиция" },
153
+ { id: "createdAt", accessorKey: "createdAt", header: "Создано" },
154
+ { id: "totalAmount", accessorKey: "totalAmount", header: "Итог", meta: { align: "right" } }
155
+ ];
156
+
157
+ function DealsTable({ rows }: { rows: DealRow[] }) {
158
+ const { columns, isLoading } = useODataTableColumns<DealRow>({
159
+ service: "ZSD_SALES_SRV",
160
+ entity: "DealSet",
161
+ mode: "enrich",
162
+ columns: manualColumns
163
+ });
164
+
165
+ return <Table data={rows} columns={columns} isLoading={isLoading} getRowId={(row) => row.id} selectionMode="single" />;
166
+ }
167
+ `})}),`
168
+ `,(0,N.jsx)(t.p,{children:`Практическая семантика хука:`}),`
169
+ `,(0,N.jsxs)(t.ul,{children:[`
170
+ `,(0,N.jsxs)(t.li,{children:[(0,N.jsx)(t.code,{children:`columns`}),` уже готовы для прямой передачи в `,(0,N.jsx)(t.code,{children:`Table`}),`;`]}),`
171
+ `,(0,N.jsxs)(t.li,{children:[(0,N.jsx)(t.code,{children:`metadata`}),` можно использовать для заголовка, пустых состояний или дополнительной UI-подписи;`]}),`
172
+ `,(0,N.jsxs)(t.li,{children:[(0,N.jsx)(t.code,{children:`isLoading`}),` нужно прокидывать в `,(0,N.jsx)(t.code,{children:`Table`}),`, чтобы сохранить единое табличное состояние загрузки;`]}),`
173
+ `,(0,N.jsxs)(t.li,{children:[`сам `,(0,N.jsx)(t.code,{children:`Table`}),` остаётся OData-независимым и получает только готовые `,(0,N.jsx)(t.code,{children:`columns`}),`.`]}),`
174
+ `]}),`
175
+ `,(0,N.jsx)(t.h2,{id:`что-важно-знать`,children:`Что важно знать`}),`
176
+ `,(0,N.jsxs)(t.ul,{children:[`
177
+ `,(0,N.jsx)(t.li,{children:`Компонент принимает именно плоский массив строк и не содержит древовидной логики.`}),`
178
+ `,(0,N.jsxs)(t.li,{children:[`Поведение `,(0,N.jsx)(t.code,{children:`selectionMode`}),` идентично `,(0,N.jsx)(t.code,{children:`TreeTable`}),`: `,(0,N.jsx)(t.code,{children:`single`}),` не снимает выбор повторным кликом по уже выбранной строке.`]}),`
179
+ `,(0,N.jsxs)(t.li,{children:[(0,N.jsx)(t.code,{children:`height`}),` и ширины колонок можно задавать строками в `,(0,N.jsx)(t.code,{children:`em`}),`, `,(0,N.jsx)(t.code,{children:`rem`}),`, `,(0,N.jsx)(t.code,{children:`%`}),` и других CSS-единицах; числовые значения трактуются как `,(0,N.jsx)(t.code,{children:`em`}),`.`]}),`
180
+ `,(0,N.jsxs)(t.li,{children:[(0,N.jsx)(t.code,{children:`onReachEnd`}),` срабатывает внутри scroll-контейнера и подходит для постепенной догрузки длинного списка.`]}),`
181
+ `,(0,N.jsxs)(t.li,{children:[(0,N.jsx)(t.code,{children:`Table`}),` не зависит от OData напрямую и продолжает работать на plain local data без metadata.`]}),`
182
+ `]}),`
183
+ `,(0,N.jsx)(t.h2,{id:`сценарии`,children:`Сценарии`}),`
184
+ `,(0,N.jsx)(t.h3,{id:`базовый-режим`,children:`Базовый режим`}),`
185
+ `,(0,N.jsx)(d,{of:O}),`
186
+ `,(0,N.jsx)(t.h3,{id:`перестановка-строк`,children:`Перестановка строк`}),`
187
+ `,(0,N.jsx)(d,{of:y}),`
188
+ `,(0,N.jsx)(t.h3,{id:`left-pinning-столбцов`,children:`Left-pinning столбцов`}),`
189
+ `,(0,N.jsx)(d,{of:h}),`
190
+ `,(0,N.jsx)(t.h3,{id:`множественный-выбор`,children:`Множественный выбор`}),`
191
+ `,(0,N.jsx)(d,{of:m}),`
192
+ `,(0,N.jsx)(t.h3,{id:`строки-с-ограничением-выбора`,children:`Строки с ограничением выбора`}),`
193
+ `,(0,N.jsx)(d,{of:x}),`
194
+ `,(0,N.jsx)(t.h3,{id:`фоновое-обновление-данных`,children:`Фоновое обновление данных`}),`
195
+ `,(0,N.jsx)(d,{of:E}),`
196
+ `,(0,N.jsx)(t.h3,{id:`пустая-таблица`,children:`Пустая таблица`}),`
197
+ `,(0,N.jsx)(d,{of:C}),`
198
+ `,(0,N.jsx)(t.h3,{id:`достижение-конца-списка`,children:`Достижение конца списка`}),`
199
+ `,(0,N.jsx)(d,{of:w}),`
200
+ `,(0,N.jsx)(t.h3,{id:`первичная-загрузка`,children:`Первичная загрузка`}),`
201
+ `,(0,N.jsx)(d,{of:b}),`
202
+ `,(0,N.jsx)(t.h3,{id:`formula-based-колонка`,children:`Formula-based колонка`}),`
203
+ `,(0,N.jsx)(d,{of:g}),`
204
+ `,(0,N.jsx)(t.h3,{id:`pipeline-display-formatting`,children:`Pipeline display-formatting`}),`
205
+ `,(0,N.jsx)(d,{of:k}),`
206
+ `,(0,N.jsx)(t.h3,{id:`скрытие-нулевых-значений`,children:`Скрытие нулевых значений`}),`
207
+ `,(0,N.jsx)(d,{of:_}),`
208
+ `,(0,N.jsx)(t.h3,{id:`слияние-дубликатов-1`,children:`Слияние дубликатов`}),`
209
+ `,(0,N.jsx)(d,{of:T}),`
210
+ `,(0,N.jsx)(t.h3,{id:`odata-metadata-adapter`,children:`OData metadata adapter`}),`
211
+ `,(0,N.jsx)(d,{of:S}),`
212
+ `,(0,N.jsx)(t.h3,{id:`useodatatablecolumns-build`,children:`useODataTableColumns: build`}),`
213
+ `,(0,N.jsx)(d,{of:v}),`
214
+ `,(0,N.jsx)(t.h3,{id:`useodatatablecolumns-enrich`,children:`useODataTableColumns: enrich`}),`
215
+ `,(0,N.jsx)(d,{of:p}),`
216
+ `,(0,N.jsx)(t.h2,{id:`api`,children:`API`}),`
217
+ `,(0,N.jsx)(l,{of:D}),`
218
+ `,(0,N.jsx)(t.h2,{id:`все-stories`,children:`Все stories`}),`
219
+ `,(0,N.jsx)(a,{includePrimary:!1})]})}function M(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,N.jsx)(t,{...e,children:(0,N.jsx)(j,{...e})}):j(e)}var N;function P(){return(P=e((()=>{N=t(),r(),c(),A()})))()}P();export{M as default};