@ryuzaki13/react-foundation-ui 1.5.4 → 1.5.5

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 (209) hide show
  1. package/dist/chunks/picker-TYLwgl1c.js.map +1 -1
  2. package/dist/chunks/ui.module-BfaIVBba.js.map +1 -1
  3. package/dist/styles.css +1 -1
  4. package/package.json +1 -1
  5. package/storybook-static/assets/{Badge-Ca25nduW.js → Badge-Cy0HXIr5.js} +1 -1
  6. package/storybook-static/assets/{Badge.stories-DikvfaY2.js → Badge.stories-CmzQahZl.js} +1 -1
  7. package/storybook-static/assets/{Button-CeLeq7MM.js → Button-BYDec2zN.js} +1 -1
  8. package/storybook-static/assets/{Button-2-1lrrp0.js → Button-G_ZnGyXY.js} +1 -1
  9. package/storybook-static/assets/{Button.stories-B1fVv9qq.js → Button.stories-DKtOUA8L.js} +1 -1
  10. package/storybook-static/assets/{CalendarView-CLSJCqD5.js → CalendarView-D4HgymQc.js} +1 -1
  11. package/storybook-static/assets/{CheckBox-BXgijhji.js → CheckBox-C99Hl-lm.js} +1 -1
  12. package/storybook-static/assets/{CheckBox-DDxhhLj6.js → CheckBox-DdyYpHip.js} +1 -1
  13. package/storybook-static/assets/{CheckBox.stories-p6vAtxwI.js → CheckBox.stories-CEKyfP3d.js} +1 -1
  14. package/storybook-static/assets/{Color-6AOWCN3U-LMLu57eB.js → Color-6AOWCN3U-lPm5uN2n.js} +1 -1
  15. package/storybook-static/assets/{ContextMenu-RmJEzv9e.js → ContextMenu-BMqXGc8f.js} +1 -1
  16. package/storybook-static/assets/{ContextMenu-CaQlZt-v.js → ContextMenu-DQv1v1zy.js} +1 -1
  17. package/storybook-static/assets/{ContextMenu.stories-DP6GcoCb.js → ContextMenu.stories-Dv0PbUYq.js} +1 -1
  18. package/storybook-static/assets/{DateInput-C4kPIiEw.js → DateInput-Bv6Hhu6A.js} +1 -1
  19. package/storybook-static/assets/{DateInput-BuCyQJPb.js → DateInput-DakqiSFb.js} +1 -1
  20. package/storybook-static/assets/{DateInput.stories-ChNl-afC.js → DateInput.stories-Cba_7cj5.js} +1 -1
  21. package/storybook-static/assets/{DateRangePresetSelect-CWk1QygX.js → DateRangePresetSelect-BmEPKVFD.js} +1 -1
  22. package/storybook-static/assets/{DateRangePresetSelect-C9ZhGO09.js → DateRangePresetSelect-R8gpZJUt.js} +1 -1
  23. package/storybook-static/assets/{DateRangePresetSelect.stories-CGRrUct8.js → DateRangePresetSelect.stories-BugmuzbR.js} +1 -1
  24. package/storybook-static/assets/{Detail-CEkse7HD.js → Detail-BBic5raN.js} +1 -1
  25. package/storybook-static/assets/{Detail.stories-Bs-2bZex.js → Detail.stories-Dcvx2XeS.js} +1 -1
  26. package/storybook-static/assets/{Dialog-E_-_KwBe.js → Dialog-NVtu2Lfd.js} +1 -1
  27. package/storybook-static/assets/{Dialog-B9lYwQct.js → Dialog-aECS25qq.js} +1 -1
  28. package/storybook-static/assets/{Dialog.stories-BzWr_tEG.js → Dialog.stories-BlE8KyqF.js} +1 -1
  29. package/storybook-static/assets/{Disclosure-DhmCAOqI.js → Disclosure-CMtpfiPs.js} +1 -1
  30. package/storybook-static/assets/{Disclosure.stories-BtIUbxfa.js → Disclosure.stories-CQtDJC0Y.js} +1 -1
  31. package/storybook-static/assets/{DisclosureGroup-CXOF5bww.js → DisclosureGroup-C7kadoVD.js} +1 -1
  32. package/storybook-static/assets/{DocsRenderer-JROSPFPF-CLOBXXVf.js → DocsRenderer-JROSPFPF-CpcMEXZo.js} +1 -1
  33. package/storybook-static/assets/{DropZone-sMjEir0f.js → DropZone-CGk3TQs_.js} +1 -1
  34. package/storybook-static/assets/{DropZone-BUSFKNkC.js → DropZone-DSkgQNJy.js} +1 -1
  35. package/storybook-static/assets/{DropZone.stories-BqZH37UD.js → DropZone.stories-gbnC2zmJ.js} +1 -1
  36. package/storybook-static/assets/{DropdownMenu-bAQ5wKRG.js → DropdownMenu-CIwvcBv7.js} +1 -1
  37. package/storybook-static/assets/{ExpandableActionPanel-aHZGT5B4.js → ExpandableActionPanel-C-xRvGLK.js} +1 -1
  38. package/storybook-static/assets/{ExpandableActionPanel.stories-chZL1EHm.js → ExpandableActionPanel.stories-DLM9Ngrq.js} +1 -1
  39. package/storybook-static/assets/{Flex-PrMA6Yym.js → Flex-BZPZFjuo.js} +1 -1
  40. package/storybook-static/assets/{Flex.stories-CCBIBnic.js → Flex.stories-C-GWEtfM.js} +1 -1
  41. package/storybook-static/assets/{FloatingPopover-C3FcvRMt.js → FloatingPopover-DPYP9R5G.js} +1 -1
  42. package/storybook-static/assets/{FormattedTableCell-Dtz4pIL3.js → FormattedTableCell-DAa1fbw9.js} +1 -1
  43. package/storybook-static/assets/{Grid-DrDkoSUc.js → Grid-CouPzQim.js} +1 -1
  44. package/storybook-static/assets/{Grid.stories-BYHTyDvo.js → Grid.stories-DRy5MjMl.js} +1 -1
  45. package/storybook-static/assets/{ImageCropper.stories-CUhEXFgU.js → ImageCropper.stories-UkAS9yEp.js} +1 -1
  46. package/storybook-static/assets/{ImageRenderer-DJIigrqW.js → ImageRenderer-DG9JMH12.js} +1 -1
  47. package/storybook-static/assets/{ImageRenderer.stories-FS9uVX-x.js → ImageRenderer.stories-BTTGZ1gl.js} +1 -1
  48. package/storybook-static/assets/{ImageView.stories-DLumKJF4.js → ImageView.stories-kHf-FdmO.js} +1 -1
  49. package/storybook-static/assets/{ImageViewer.stories-D5MFaKgj.js → ImageViewer.stories-D09Y8qy7.js} +2 -2
  50. package/storybook-static/assets/{ImageViewerRuntime-BVRC2t7U.js → ImageViewerRuntime-Bj8A9MgR.js} +1 -1
  51. package/storybook-static/assets/{Input-skLAGDK6.js → Input-CLXuEb2-.js} +1 -1
  52. package/storybook-static/assets/{Input-TNrA13az.js → Input-g2XrzU2e.js} +1 -1
  53. package/storybook-static/assets/{Input.stories-kdWp9-vA.js → Input.stories-ia7ttPQv.js} +1 -1
  54. package/storybook-static/assets/{InputDateTime-CvtehdH_.js → InputDateTime-9jtVktvp.js} +1 -1
  55. package/storybook-static/assets/{InputDateTime.stories-D-VZboXS.js → InputDateTime.stories-QMtC2jN7.js} +1 -1
  56. package/storybook-static/assets/{InputFile-D0kivEqF.js → InputFile-CniSRV0z.js} +1 -1
  57. package/storybook-static/assets/{InputFile-yeMXHX2g.js → InputFile-Dv5BpleO.js} +1 -1
  58. package/storybook-static/assets/{InputFile.stories-DVIMOJFA.js → InputFile.stories-CM1CpvyA.js} +1 -1
  59. package/storybook-static/assets/{InputFiles-D9QDOmYY.js → InputFiles-BTOdLOY4.js} +1 -1
  60. package/storybook-static/assets/{InputFiles-WM3NWy8f.js → InputFiles-CsbUWxMN.js} +1 -1
  61. package/storybook-static/assets/{InputFiles.stories-Wnoxpg4C.js → InputFiles.stories-CSGb3Fg6.js} +1 -1
  62. package/storybook-static/assets/{InputFilesList-CwgPtddv.js → InputFilesList-YZLWgLqU.js} +1 -1
  63. package/storybook-static/assets/{InputImage-C1ZemGke.js → InputImage-CoqzaT5z.js} +1 -1
  64. package/storybook-static/assets/{InputImage-CPbXR06w.js → InputImage-Ct2PIHnB.js} +1 -1
  65. package/storybook-static/assets/{InputImage.stories-DmyG1SBq.js → InputImage.stories-48QPNNvb.js} +1 -1
  66. package/storybook-static/assets/{InteractiveComponents.stories-OjaPrjbC.js → InteractiveComponents.stories-DKpEH8Wn.js} +1 -1
  67. package/storybook-static/assets/{LayoutPicker-BBcQR4eE.js → LayoutPicker-C14HuoJT.js} +1 -1
  68. package/storybook-static/assets/{LayoutPicker-BM3JQW6-.js → LayoutPicker-CBKIOA6m.js} +1 -1
  69. package/storybook-static/assets/{LayoutPicker.stories-DzOns37u.js → LayoutPicker.stories-Cbdev2zd.js} +1 -1
  70. package/storybook-static/assets/{Listbox-Db9xJM_x.js → Listbox-DGdrVenc.js} +1 -1
  71. package/storybook-static/assets/{Listbox-xBsSzB7c.js → Listbox-Mqn7EoPt.js} +1 -1
  72. package/storybook-static/assets/{Listbox.stories-B95lW5nW.js → Listbox.stories-hZtjBKIX.js} +1 -1
  73. package/storybook-static/assets/{Modal-B5mZhN_w.js → Modal-DZgFrzRQ.js} +1 -1
  74. package/storybook-static/assets/{Modal.stories-DXQpo-2P.js → Modal.stories-W1kjdQpw.js} +1 -1
  75. package/storybook-static/assets/{ModalManagerProvider-CygTKozo.js → ModalManagerProvider-CDpI_bMR.js} +1 -1
  76. package/storybook-static/assets/{MultiSelect-C9bI4WfW.js → MultiSelect-CYLKB_VV.js} +1 -1
  77. package/storybook-static/assets/{MultiSelect-BZKxCQ9J.js → MultiSelect-Cujmvoxp.js} +1 -1
  78. package/storybook-static/assets/{MultiSelect.stories-DhF6adqK.js → MultiSelect.stories-BnmOPMcq.js} +1 -1
  79. package/storybook-static/assets/{NoData-DIx6Xhy8.js → NoData-B4H6VMN9.js} +1 -1
  80. package/storybook-static/assets/{NotificationsHost-BxuA7Hrr.js → NotificationsHost-DGolEXP8.js} +1 -1
  81. package/storybook-static/assets/{NotificationsHost.stories-B65ogFlZ.js → NotificationsHost.stories-DOZprbOB.js} +1 -1
  82. package/storybook-static/assets/{ODataMultiSelect-BOwgJ_-D.js → ODataMultiSelect-zz9GzQ4E.js} +1 -1
  83. package/storybook-static/assets/{ODataMultiSelect.stories-Dvzj-vEu.js → ODataMultiSelect.stories-DDakF7DF.js} +1 -1
  84. package/storybook-static/assets/{ODataSelect-D-3qFFy5.js → ODataSelect-Dh1wVGqr.js} +1 -1
  85. package/storybook-static/assets/{ODataSelect.stories-DxS4IELn.js → ODataSelect.stories-Bd7IqAJz.js} +1 -1
  86. package/storybook-static/assets/{ODataTreeMultiSelect-DAr606Rn.js → ODataTreeMultiSelect-CcSYG9z8.js} +1 -1
  87. package/storybook-static/assets/{ODataTreeMultiSelect.stories-Cjspkpmy.js → ODataTreeMultiSelect.stories-DzgVS2uv.js} +1 -1
  88. package/storybook-static/assets/{ODataTreeSelect-C0EZg1pY.js → ODataTreeSelect-DJIwvxiv.js} +1 -1
  89. package/storybook-static/assets/{ODataTreeSelect.stories-Bm6lHlR1.js → ODataTreeSelect.stories-DjUg9PpL.js} +1 -1
  90. package/storybook-static/assets/{OneStepScroller-BBvYn_e2.js → OneStepScroller-Dtw3XxR_.js} +1 -1
  91. package/storybook-static/assets/{PeriodSelect-Dxy-Udif.js → PeriodSelect-BFLetGco.js} +1 -1
  92. package/storybook-static/assets/{PeriodSelect-BWrhMQt1.js → PeriodSelect-BlHfE2Sb.js} +1 -1
  93. package/storybook-static/assets/{PeriodSelect.stories-6voDDnhV.js → PeriodSelect.stories-DhVcKcfE.js} +1 -1
  94. package/storybook-static/assets/{PickerSelectionToolbar-Bgz5a4gK.js → PickerSelectionToolbar-DzMAzpep.js} +1 -1
  95. package/storybook-static/assets/{PickerTriggerActions-DfajdlA-.js → PickerTriggerActions-BKQ28AXr.js} +1 -1
  96. package/storybook-static/assets/{Popover-BaNd4KC-.js → Popover-3iAlzyR9.js} +1 -1
  97. package/storybook-static/assets/{Popover-CL1-w2Po.js → Popover-BrEAV6tC.js} +1 -1
  98. package/storybook-static/assets/{Popover.stories-D3kquryU.js → Popover.stories-EbIGa6Xz.js} +1 -1
  99. package/storybook-static/assets/{PresetRangeDateInput-Kn0jZ58w.js → PresetRangeDateInput-BxBcwRrC.js} +1 -1
  100. package/storybook-static/assets/{PresetRangeDateInput-BgCkUEAq.js → PresetRangeDateInput-Cmyn-fEA.js} +1 -1
  101. package/storybook-static/assets/{PresetRangeDateInput.stories-Dwr5XQZc.js → PresetRangeDateInput.stories-BEiKgo4b.js} +1 -1
  102. package/storybook-static/assets/{PresetSelect-BB875dDE.js → PresetSelect-DzafFdIZ.js} +1 -1
  103. package/storybook-static/assets/{RadioButton-B02A58Qr.js → RadioButton-BelOYlsv.js} +1 -1
  104. package/storybook-static/assets/{RadioButton-CKbmaXdk.js → RadioButton-CP2MTHNG.js} +1 -1
  105. package/storybook-static/assets/{RadioButton.stories-Dt9HjR8q.js → RadioButton.stories-C2At3zOQ.js} +1 -1
  106. package/storybook-static/assets/{RadioGroup-D5sQH9R3.js → RadioGroup-CMerSWPc.js} +1 -1
  107. package/storybook-static/assets/{RadioGroup-Cbuy7LfH.js → RadioGroup-zJ6x863B.js} +1 -1
  108. package/storybook-static/assets/{RadioGroup.stories-DSjK5djt.js → RadioGroup.stories-DP0Rb8kU.js} +1 -1
  109. package/storybook-static/assets/{Scrollable-D3aXHtrY.js → Scrollable-bLa141TT.js} +1 -1
  110. package/storybook-static/assets/{Select-BCAG7pr7.js → Select-BuBKmTxm.js} +1 -1
  111. package/storybook-static/assets/{Select-BXAaQy9V.js → Select-iRRHKOR9.js} +1 -1
  112. package/storybook-static/assets/{Select.stories-DN4dV7yi.js → Select.stories-DsK2KAnc.js} +1 -1
  113. package/storybook-static/assets/{SelectOptionContent-B4SEPdOb.js → SelectOptionContent-C5EAnQ_6.js} +1 -1
  114. package/storybook-static/assets/{SerializableSelect-ILpc54MV.js → SerializableSelect-D8W_hXze.js} +1 -1
  115. package/storybook-static/assets/{SerializableSelect.stories-39INaLuZ.js → SerializableSelect.stories-DwSCbcn8.js} +1 -1
  116. package/storybook-static/assets/{SingleDateTimeInput-B4A_9baT.js → SingleDateTimeInput-CuTy_t_1.js} +1 -1
  117. package/storybook-static/assets/{SingleDateTimeInput-Wj_T1lBu.js → SingleDateTimeInput-qTqbSGck.js} +1 -1
  118. package/storybook-static/assets/{SingleDateTimeInput.stories-ixznenUc.js → SingleDateTimeInput.stories-C_KdNabz.js} +1 -1
  119. package/storybook-static/assets/{Slider-D_fu_5jT.js → Slider-D2-xtMN2.js} +1 -1
  120. package/storybook-static/assets/{Slider-DhcQ-HpF.js → Slider-Zza_tIz2.js} +1 -1
  121. package/storybook-static/assets/{Slider.stories-DJ6up3Xr.js → Slider.stories-Bbgt-EWg.js} +1 -1
  122. package/storybook-static/assets/{SliderInput-Dzln6u1B.js → SliderInput-BT-DMyS-.js} +1 -1
  123. package/storybook-static/assets/{SliderInput-CF2Ze83S.js → SliderInput-C8OO6jI-.js} +1 -1
  124. package/storybook-static/assets/{SliderInput.stories-BHMiGG3v.js → SliderInput.stories-BZxKunf6.js} +1 -1
  125. package/storybook-static/assets/{Sortable-SND-zBFN.js → Sortable-BC2UlTFz.js} +1 -1
  126. package/storybook-static/assets/{Sortable.stories-CygFptcG.js → Sortable.stories-i35oL30b.js} +1 -1
  127. package/storybook-static/assets/{Splitter-ka4Y_Utp.js → Splitter-BOMgf1Rr.js} +1 -1
  128. package/storybook-static/assets/{Splitter.stories-DT_HUx9d.js → Splitter.stories-DayYmTEb.js} +1 -1
  129. package/storybook-static/assets/{StateSelect-aZvleWHV.js → StateSelect-CjBaZyCH.js} +1 -1
  130. package/storybook-static/assets/{StateSelect-C_3pLhBP.js → StateSelect-DRHlFj9s.js} +1 -1
  131. package/storybook-static/assets/{StateSelect.stories-wAgivDC6.js → StateSelect.stories-CapA4Oy1.js} +1 -1
  132. package/storybook-static/assets/{StringToggle.stories-CTkeaRdq.js → StringToggle.stories-B9p8YjZk.js} +1 -1
  133. package/storybook-static/assets/{Switch-CndShiDg.js → Switch-Bs4yhyjR.js} +1 -1
  134. package/storybook-static/assets/{Switch-lkwmdlzy.js → Switch-D3OypknC.js} +1 -1
  135. package/storybook-static/assets/{Switch.stories-LeYJbZbp.js → Switch.stories-Eli-Nxhy.js} +1 -1
  136. package/storybook-static/assets/{Table-CdEQzjrK.js → Table-B4yXrSY8.js} +1 -1
  137. package/storybook-static/assets/{Table.stories-BupokYzH.js → Table.stories-DKbzDmyV.js} +1 -1
  138. package/storybook-static/assets/{Tabs-BGMLmjPE.js → Tabs-WGjWEgV9.js} +1 -1
  139. package/storybook-static/assets/{Tabs.stories-BffAgcfh.js → Tabs.stories-u3YDpejg.js} +1 -1
  140. package/storybook-static/assets/{TabsBox-rDhSlrdo.js → TabsBox-B37Xpp9P.js} +1 -1
  141. package/storybook-static/assets/{TagInput-DjNOYO1Z.js → TagInput-Blo36mAx.js} +1 -1
  142. package/storybook-static/assets/{TagInput.stories-CDyr8BNh.js → TagInput.stories-BanBYkO8.js} +1 -1
  143. package/storybook-static/assets/{Text-CqOk_yW2.js → Text-C1at2dMq.js} +1 -1
  144. package/storybook-static/assets/{Textarea-HkRYNZSt.js → Textarea-B02c6Ggv.js} +1 -1
  145. package/storybook-static/assets/{Textarea-Bt1H7Gn6.js → Textarea-S7xMlxUP.js} +1 -1
  146. package/storybook-static/assets/{Textarea.stories-B1zVrf9T.js → Textarea.stories-CFLZGItr.js} +1 -1
  147. package/storybook-static/assets/{TimePanel-BihIX0hh.js → TimePanel-CZ2CNXd5.js} +1 -1
  148. package/storybook-static/assets/{TimePanel.stories-Bu5T9YMk.js → TimePanel.stories-DbgZ63KX.js} +1 -1
  149. package/storybook-static/assets/{Toggle-COxGcMq3.js → Toggle-BZsOOBwn.js} +1 -1
  150. package/storybook-static/assets/{Toggle-zpuNtBpW.js → Toggle-BjyGbAMN.js} +1 -1
  151. package/storybook-static/assets/{Toggle.stories-Dq3RkU5L.js → Toggle.stories-Cb3o7efj.js} +1 -1
  152. package/storybook-static/assets/{TreeMultiSelect-COx_tG1G.js → TreeMultiSelect-Bp9Ypu3w.js} +1 -1
  153. package/storybook-static/assets/{TreeMultiSelect-CnB02Va9.js → TreeMultiSelect-CFNKXcU5.js} +1 -1
  154. package/storybook-static/assets/{TreeMultiSelect.stories-CN-P1qhr.js → TreeMultiSelect.stories-39QVC3ju.js} +1 -1
  155. package/storybook-static/assets/{TreePickerBase-CkzGEdab.js → TreePickerBase-B4nW8V67.js} +1 -1
  156. package/storybook-static/assets/{TreeSelect-CTIgz4OY.js → TreeSelect-6lILMCzp.js} +1 -1
  157. package/storybook-static/assets/{TreeSelect-CjGiZrPi.js → TreeSelect-DHjzbXxe.js} +1 -1
  158. package/storybook-static/assets/{TreeSelect.stories-eCmLnrwX.js → TreeSelect.stories-D7olQgJr.js} +1 -1
  159. package/storybook-static/assets/{TreeTable-DbO9bLwE.js → TreeTable-Dw2YFyUT.js} +1 -1
  160. package/storybook-static/assets/{TreeTable.stories-CLyKRCRw.js → TreeTable.stories-DdrbXMIl.js} +1 -1
  161. package/storybook-static/assets/{async-AJXObkk8.js → async-CbzeGif1.js} +1 -1
  162. package/storybook-static/assets/{blocks-S8USJ7mc.js → blocks-DQl3eTFV.js} +3 -3
  163. package/storybook-static/assets/{browserAndReact-ByX1-6Mk.js → browserAndReact-CC7HF1qC.js} +1 -1
  164. package/storybook-static/assets/{check-Cceu88S-.js → check-D-psTYia.js} +1 -1
  165. package/storybook-static/assets/{chevron-down-Bv0OkOLP.js → chevron-down-Das8TW8b.js} +1 -1
  166. package/storybook-static/assets/{chevron-left-Bez2FiAQ.js → chevron-left-Dq0qJ7av.js} +1 -1
  167. package/storybook-static/assets/{chevron-right-RK8P2lCp.js → chevron-right-Ctnpw34b.js} +1 -1
  168. package/storybook-static/assets/{chunk-W22LQPXL-DMsqimWd.js → chunk-W22LQPXL-D-HehNH1.js} +1 -1
  169. package/storybook-static/assets/{circle-alert-Z1a6ryvr.js → circle-alert-25c5aKIP.js} +1 -1
  170. package/storybook-static/assets/{circle-check-CGxX-ikz.js → circle-check-DXXEdCIE.js} +1 -1
  171. package/storybook-static/assets/{components-DigsnlCp.js → components-Dg-CCU90.js} +3 -3
  172. package/storybook-static/assets/{contextMenu-BizVJ2kJ.js → contextMenu-DTmHIVHM.js} +1 -1
  173. package/storybook-static/assets/{defaultRenderers-CYvY-_uC.js → defaultRenderers-IYkjKXvR.js} +1 -1
  174. package/storybook-static/assets/{download-BNW2gFpz.js → download-D5fSxET6.js} +1 -1
  175. package/storybook-static/assets/{filesAndExcel-C3cUVT6g.js → filesAndExcel-CHPqG7k9.js} +1 -1
  176. package/storybook-static/assets/{floating-ui.react-CRcGGmKm.js → floating-ui.react-Z3F8qO7F.js} +1 -1
  177. package/storybook-static/assets/{formatters-CF-jRopB.js → formatters-BH5xiyRy.js} +1 -1
  178. package/storybook-static/assets/{formatters-runtime-BptIp4jD.js → formatters-runtime-D9WhzCIX.js} +1 -1
  179. package/storybook-static/assets/{foundationLib-CrwiKDTD.js → foundationLib-BMiwtR-Z.js} +1 -1
  180. package/storybook-static/assets/{hooks-DOz4JYQm.js → hooks-Ck7lIgxa.js} +1 -1
  181. package/storybook-static/assets/iframe-Ba8ub8fM.js +1 -0
  182. package/storybook-static/assets/{iframe-DaJPX7QV.js → iframe-CYobheWD.js} +3 -3
  183. package/storybook-static/assets/{info-D9yLM4SV.js → info-YO6kz7oI.js} +1 -1
  184. package/storybook-static/assets/{odata-CJRvocvl.js → odata-DY-n4qXl.js} +1 -1
  185. package/storybook-static/assets/{odataAndTables-BacaIRQo.js → odataAndTables-CEDAX_B4.js} +1 -1
  186. package/storybook-static/assets/{odataFetchFn-BN6G0MmO.js → odataFetchFn-OTPWXX4r.js} +1 -1
  187. package/storybook-static/assets/{odataStoryFixtures-CRxia982.js → odataStoryFixtures-BtTotZS_.js} +1 -1
  188. package/storybook-static/assets/{persisted-8yiU0lN6.js → persisted-XkVJ2BSX.js} +1 -1
  189. package/storybook-static/assets/{pureUtilities-BWFw6hv9.js → pureUtilities-CXYqAXzu.js} +1 -1
  190. package/storybook-static/assets/{react-B7DFunao.js → react-CNEBWIpL.js} +1 -1
  191. package/storybook-static/assets/{refresh-cw-Bqxte4Jl.js → refresh-cw-tPAOjIhX.js} +1 -1
  192. package/storybook-static/assets/{runtimeAndState-B8ahqJFX.js → runtimeAndState-4rwCbfx1.js} +1 -1
  193. package/storybook-static/assets/{settings-2-BSQQ4rDm.js → settings-2-Aj50ai8G.js} +1 -1
  194. package/storybook-static/assets/{sortable-Cl1OSO7j.js → sortable-CzYI9YKz.js} +1 -1
  195. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-D27QWwvd.js → syntaxhighlighter-T5IQBZDB-IJFHSaoq.js} +1 -1
  196. package/storybook-static/assets/{trash-2-C7n9T7wV.js → trash-2-C0LHJG3P.js} +1 -1
  197. package/storybook-static/assets/{triangle-alert-DTEFPKA6.js → triangle-alert-D1MS3de_.js} +1 -1
  198. package/storybook-static/assets/{ui-BHYElZUt.css → ui-4LkYZ0Er.css} +1 -1
  199. package/storybook-static/assets/{uiClasses-DS_Gz-HQ.js → uiClasses-Bme9Qqv6.js} +1 -1
  200. package/storybook-static/assets/{useODataSelectBase-C7akxSM3.js → useODataSelectBase-ComGcCMU.js} +1 -1
  201. package/storybook-static/assets/{useODataTreeData-C_E7UDtN.js → useODataTreeData-zmGHo0kF.js} +1 -1
  202. package/storybook-static/assets/{usePickerQuery-D01d0TZO.js → usePickerQuery-C1tepQnh.js} +1 -1
  203. package/storybook-static/assets/{usePickerTriggerController-B-AurKCR.js → usePickerTriggerController-Cxo7izm1.js} +1 -1
  204. package/storybook-static/assets/{usePickerTriggerController-Q-ULIoGr.css → usePickerTriggerController-DzBkX15M.css} +1 -1
  205. package/storybook-static/assets/{x-BUr2A9Su.js → x-Dzd3S4ku.js} +1 -1
  206. package/storybook-static/iframe.html +2 -2
  207. package/storybook-static/project.json +1 -1
  208. package/storybook-static/assets/iframe-Lygnuvz9.js +0 -1
  209. /package/storybook-static/assets/{ui.module-B48csOVs.js → ui.module-CHEKb9Cb.js} +0 -0
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-DaJPX7QV.js";import{n as i,t as a}from"./InputFiles-D9QDOmYY.js";var o=t({Controlled:()=>d,LimitReached:()=>p,WithInitialFiles:()=>f,__namedExportsOrder:()=>m,default:()=>u}),s,c,l,u,d,f,p,m;function h(){return(h=e((()=>{s=n(),i(),c=r(),l=(e,t=`application/pdf`)=>{let n=new File([`demo-file`],e,{type:t,lastModified:17040672e5});return{mode:`data-url`,meta:{name:n.name,mime:n.type,size:n.size,lastModified:n.lastModified},dataUrl:`data:${t};base64,ZGVtby1maWxl`,file:n}},u={title:`Shared/UI/InputFiles`,component:a,args:{value:[],onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля множественной загрузки.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст в поле, пока список файлов пуст.`,control:`text`},value:{description:`Массив результатов чтения выбранных файлов.`,control:!1},onChange:{description:`Вызывается с новым массивом файлов после добавления/удаления.`,control:!1},onReadError:{description:`Вызывается при ошибке чтения отдельного файла.`,control:!1},accept:{description:"HTML `accept` для диалога выбора файлов.",control:`text`},allowedMime:{description:`Список допустимых MIME-типов при валидации.`,control:!1},maxBytes:{description:`Максимальный размер одного файла в байтах.`,control:`number`},readMode:{description:`Режим чтения: data-url или array-buffer.`,control:`inline-radio`,options:[`data-url`,`array-buffer`]},maxFiles:{description:`Лимит количества файлов в списке.`,control:`number`},error:{description:`Текст ошибки под полем.`,control:`text`},onClearError:{description:`Вызывается при выборе новых файлов для сброса ошибки.`,control:!1},disabled:{description:`Полностью блокирует выбор файлов.`,control:`boolean`},size:{description:`Размер визуального контрола.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={render:e=>{let[t,n]=(0,s.useState)([]);return(0,c.jsx)(a,{...e,readMode:`data-url`,value:t,onChange:n})},args:{label:`Вложения`,description:`Можно выбрать несколько файлов.`,placeholder:`Выберите файлы`,accept:[`.pdf`,`.png`,`.jpg`],maxFiles:5,value:[]}},f={render:e=>{let[t,n]=(0,s.useState)([l(`contract.pdf`),l(`diagram.png`,`image/png`)]);return(0,c.jsx)(a,{...e,readMode:`data-url`,value:t,onChange:n})},args:{label:`Предзаполненный список`,description:`Иллюстрация удаления файлов из уже заполненного значения.`}},p={render:e=>{let[t,n]=(0,s.useState)([l(`first.pdf`),l(`second.pdf`)]);return(0,c.jsx)(a,{...e,readMode:`data-url`,value:t,onChange:n})},args:{label:`Лимит файлов`,description:`После достижения лимита поле выбора блокируется.`,maxFiles:2}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CYobheWD.js";import{n as i,t as a}from"./InputFiles-BTOdLOY4.js";var o=t({Controlled:()=>d,LimitReached:()=>p,WithInitialFiles:()=>f,__namedExportsOrder:()=>m,default:()=>u}),s,c,l,u,d,f,p,m;function h(){return(h=e((()=>{s=n(),i(),c=r(),l=(e,t=`application/pdf`)=>{let n=new File([`demo-file`],e,{type:t,lastModified:17040672e5});return{mode:`data-url`,meta:{name:n.name,mime:n.type,size:n.size,lastModified:n.lastModified},dataUrl:`data:${t};base64,ZGVtby1maWxl`,file:n}},u={title:`Shared/UI/InputFiles`,component:a,args:{value:[],onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля множественной загрузки.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст в поле, пока список файлов пуст.`,control:`text`},value:{description:`Массив результатов чтения выбранных файлов.`,control:!1},onChange:{description:`Вызывается с новым массивом файлов после добавления/удаления.`,control:!1},onReadError:{description:`Вызывается при ошибке чтения отдельного файла.`,control:!1},accept:{description:"HTML `accept` для диалога выбора файлов.",control:`text`},allowedMime:{description:`Список допустимых MIME-типов при валидации.`,control:!1},maxBytes:{description:`Максимальный размер одного файла в байтах.`,control:`number`},readMode:{description:`Режим чтения: data-url или array-buffer.`,control:`inline-radio`,options:[`data-url`,`array-buffer`]},maxFiles:{description:`Лимит количества файлов в списке.`,control:`number`},error:{description:`Текст ошибки под полем.`,control:`text`},onClearError:{description:`Вызывается при выборе новых файлов для сброса ошибки.`,control:!1},disabled:{description:`Полностью блокирует выбор файлов.`,control:`boolean`},size:{description:`Размер визуального контрола.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={render:e=>{let[t,n]=(0,s.useState)([]);return(0,c.jsx)(a,{...e,readMode:`data-url`,value:t,onChange:n})},args:{label:`Вложения`,description:`Можно выбрать несколько файлов.`,placeholder:`Выберите файлы`,accept:[`.pdf`,`.png`,`.jpg`],maxFiles:5,value:[]}},f={render:e=>{let[t,n]=(0,s.useState)([l(`contract.pdf`),l(`diagram.png`,`image/png`)]);return(0,c.jsx)(a,{...e,readMode:`data-url`,value:t,onChange:n})},args:{label:`Предзаполненный список`,description:`Иллюстрация удаления файлов из уже заполненного значения.`}},p={render:e=>{let[t,n]=(0,s.useState)([l(`first.pdf`),l(`second.pdf`)]);return(0,c.jsx)(a,{...e,readMode:`data-url`,value:t,onChange:n})},args:{label:`Лимит файлов`,description:`После достижения лимита поле выбора блокируется.`,maxFiles:2}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
2
2
  render: args => {
3
3
  const [value, setValue] = useState<ReadFileAsDataUrlResult[]>([]);
4
4
  return <InputFiles {...args} readMode="data-url" value={value} onChange={setValue} />;
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./x-BUr2A9Su.js";import{n as i}from"./iframe-DaJPX7QV.js";import{a,i as o}from"./utils-DUM89eIj.js";var s,c,l,u,d,f,p;function m(){return(m=e((()=>{s=`h9SMea`,c=`rUyh0y`,l=`Q0CY1r`,u=`AJuYXd`,d=`CKKkOD`,f=`UgxhS1`,p={control:s,hiddenInput:c,fileList:l,fileItem:u,fileItemName:d,removeButton:f}})))()}function h({files:e,onChange:t}){let n=(0,g.useCallback)(n=>{t(e.filter((e,t)=>t!==n))},[e,t]);return!e||!e.length?null:(0,_.jsx)(`ul`,{className:p.fileList,children:e.map((e,t)=>(0,_.jsxs)(`li`,{className:p.fileItem,children:[(0,_.jsx)(`span`,{className:p.fileItemName,children:e.meta.name}),(0,_.jsx)(`button`,{type:`button`,className:a(p.removeButton,`flexCenter`),onClick:()=>n(t),"aria-label":`Удалить ${e.meta.name}`,children:(0,_.jsx)(r,{})})]},`${e.meta.name}-${e.meta.lastModified}`))})}var g,_;function v(){return(v=e((()=>{g=t(),o(),n(),m(),_=i(),h.__docgenInfo={description:``,methods:[],displayName:`InputFilesList`,props:{files:{required:!0,tsType:{name:`Array`,elements:[{name:`TFile`}],raw:`TFile[]`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(files: TFile[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TFile`}],raw:`TFile[]`},name:`files`}],return:{name:`void`}}},description:``}}}})))()}export{m as i,v as n,p as r,h as t};
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./x-Dzd3S4ku.js";import{n as i}from"./iframe-CYobheWD.js";import{a,i as o}from"./utils-DUM89eIj.js";var s,c,l,u,d,f,p;function m(){return(m=e((()=>{s=`h9SMea`,c=`rUyh0y`,l=`Q0CY1r`,u=`AJuYXd`,d=`CKKkOD`,f=`UgxhS1`,p={control:s,hiddenInput:c,fileList:l,fileItem:u,fileItemName:d,removeButton:f}})))()}function h({files:e,onChange:t}){let n=(0,g.useCallback)(n=>{t(e.filter((e,t)=>t!==n))},[e,t]);return!e||!e.length?null:(0,_.jsx)(`ul`,{className:p.fileList,children:e.map((e,t)=>(0,_.jsxs)(`li`,{className:p.fileItem,children:[(0,_.jsx)(`span`,{className:p.fileItemName,children:e.meta.name}),(0,_.jsx)(`button`,{type:`button`,className:a(p.removeButton,`flexCenter`),onClick:()=>n(t),"aria-label":`Удалить ${e.meta.name}`,children:(0,_.jsx)(r,{})})]},`${e.meta.name}-${e.meta.lastModified}`))})}var g,_;function v(){return(v=e((()=>{g=t(),o(),n(),m(),_=i(),h.__docgenInfo={description:``,methods:[],displayName:`InputFilesList`,props:{files:{required:!0,tsType:{name:`Array`,elements:[{name:`TFile`}],raw:`TFile[]`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(files: TFile[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TFile`}],raw:`TFile[]`},name:`files`}],return:{name:`void`}}},description:``}}}})))()}export{m as i,v as n,p as r,h as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-DaJPX7QV.js";import{a as r,i,n as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-B48csOVs.js";import{c,l,n as u,o as d,r as f,u as p}from"./Input-TNrA13az.js";import{i as m,n as h,t as g}from"./file-vPGnhPr-.js";var _,v,y,b;function x(){return(x=e((()=>{_=`EV-Vji`,v=`A5-T93`,y=`V1Rhiv`,b={control:_,fileName:v,hiddenInput:y}})))()}function S({value:e,onChange:t,onClear:n,onReadError:i,allowedMime:s,maxBytes:c,readMode:l,label:m,description:_,placeholder:v=`Выберите изображение`,disabled:y,size:x,error:S,onClearError:T,className:E}){let D=(0,C.useRef)(null),{controlId:O,labelId:k,descriptionId:A,errorId:j,describedBy:M}=p({hasLabel:m!=null,hasDescription:!!_,hasError:!!S}),N=(0,C.useCallback)(e=>l===`array-buffer`?g(e,{allowedMime:s,maxBytes:c,mode:`array-buffer`}):g(e,{allowedMime:s,maxBytes:c}),[s,c,l]),P=(0,C.useMemo)(()=>s&&s.length>0?s.join(`,`):`image/*`,[s]),F=(0,C.useCallback)(async e=>{let n=e.target.files?.[0];if(n){e.target.value=``,S&&T&&T();try{t(await N(n))}catch(e){e instanceof h&&i&&i(e)}}},[N,t,i,S,T]),I=(0,C.useCallback)(()=>{D.current?.click()},[]);return(0,w.jsxs)(d,{label:m,description:_,disabled:y,className:E,size:x,error:S,controlId:O,labelId:k,descriptionId:A,errorId:j,children:[(0,w.jsx)(`input`,{ref:D,id:O,type:`file`,accept:P,disabled:y,className:b.hiddenInput,onChange:F,tabIndex:-1}),(0,w.jsx)(f,{endAdornment:n?(0,w.jsx)(u,{onClick:n,disabled:y}):void 0,endAdornmentWidth:n?`var(--control-height)`:void 0,children:({controlClassName:t})=>(0,w.jsx)(`div`,{role:`button`,tabIndex:y?-1:0,onClick:I,onKeyDown:e=>a(e,I,{disabled:y}),className:r(o.uiInputControl,b.control,t,!!S&&`invalid`),"data-disabled":y||void 0,"aria-invalid":!!S||void 0,"aria-disabled":y,"aria-labelledby":k,"aria-describedby":M,children:e?(0,w.jsx)(`span`,{className:b.fileName,children:e.meta.name}):(0,w.jsx)(`span`,{className:o.uiPlaceholder,children:v})})})]})}var C,w;function T(){return(T=e((()=>{C=t(),m(),i(),c(),l(),s(),x(),w=n(),S.__docgenInfo={description:`InputImage — компонент выбора одного изображения.
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-CYobheWD.js";import{a as r,i,n as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-CHEKb9Cb.js";import{c,l,n as u,o as d,r as f,u as p}from"./Input-g2XrzU2e.js";import{i as m,n as h,t as g}from"./file-vPGnhPr-.js";var _,v,y,b;function x(){return(x=e((()=>{_=`EV-Vji`,v=`A5-T93`,y=`V1Rhiv`,b={control:_,fileName:v,hiddenInput:y}})))()}function S({value:e,onChange:t,onClear:n,onReadError:i,allowedMime:s,maxBytes:c,readMode:l,label:m,description:_,placeholder:v=`Выберите изображение`,disabled:y,size:x,error:S,onClearError:T,className:E}){let D=(0,C.useRef)(null),{controlId:O,labelId:k,descriptionId:A,errorId:j,describedBy:M}=p({hasLabel:m!=null,hasDescription:!!_,hasError:!!S}),N=(0,C.useCallback)(e=>l===`array-buffer`?g(e,{allowedMime:s,maxBytes:c,mode:`array-buffer`}):g(e,{allowedMime:s,maxBytes:c}),[s,c,l]),P=(0,C.useMemo)(()=>s&&s.length>0?s.join(`,`):`image/*`,[s]),F=(0,C.useCallback)(async e=>{let n=e.target.files?.[0];if(n){e.target.value=``,S&&T&&T();try{t(await N(n))}catch(e){e instanceof h&&i&&i(e)}}},[N,t,i,S,T]),I=(0,C.useCallback)(()=>{D.current?.click()},[]);return(0,w.jsxs)(d,{label:m,description:_,disabled:y,className:E,size:x,error:S,controlId:O,labelId:k,descriptionId:A,errorId:j,children:[(0,w.jsx)(`input`,{ref:D,id:O,type:`file`,accept:P,disabled:y,className:b.hiddenInput,onChange:F,tabIndex:-1}),(0,w.jsx)(f,{endAdornment:n?(0,w.jsx)(u,{onClick:n,disabled:y}):void 0,endAdornmentWidth:n?`var(--control-height)`:void 0,children:({controlClassName:t})=>(0,w.jsx)(`div`,{role:`button`,tabIndex:y?-1:0,onClick:I,onKeyDown:e=>a(e,I,{disabled:y}),className:r(o.uiInputControl,b.control,t,!!S&&`invalid`),"data-disabled":y||void 0,"aria-invalid":!!S||void 0,"aria-disabled":y,"aria-labelledby":k,"aria-describedby":M,children:e?(0,w.jsx)(`span`,{className:b.fileName,children:e.meta.name}):(0,w.jsx)(`span`,{className:o.uiPlaceholder,children:v})})})]})}var C,w;function T(){return(T=e((()=>{C=t(),m(),i(),c(),l(),s(),x(),w=n(),S.__docgenInfo={description:`InputImage — компонент выбора одного изображения.
2
2
 
3
3
  Визуально идентичен InputText. Под капотом использует readImageFile,
4
4
  который валидирует что файл — изображение и извлекает его размеры.
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-DaJPX7QV.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-S8USJ7mc.js";import{a as p,i as m,n as h,r as g,t as _}from"./InputImage.stories-DmyG1SBq.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-C0FnF6B9.js";import{n as t}from"./iframe-CYobheWD.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DQl3eTFV.js";import{a as p,i as m,n as h,r as g,t as _}from"./InputImage.stories-48QPNNvb.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:`InputImage`}),`
3
3
  `,(0,b.jsx)(o,{children:`Контрол загрузки и предварительного просмотра изображения в формах и карточках`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`InputImage уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-DaJPX7QV.js";import{n as i,t as a}from"./InputImage-C1ZemGke.js";var o=t({ArrayBufferMode:()=>p,Controlled:()=>d,WithInitialImage:()=>f,__namedExportsOrder:()=>m,default:()=>u}),s,c,l,u,d,f,p,m;function h(){return(h=e((()=>{s=n(),i(),c=r(),l=(e=`avatar.png`)=>{let t=new File([`image-demo`],e,{type:`image/png`,lastModified:17040672e5});return{mode:`data-url`,meta:{name:t.name,mime:t.type,size:t.size,lastModified:t.lastModified},dataUrl:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9YxM9a0AAAAASUVORK5CYII=`,file:t,dimensions:{width:1,height:1}}},u={title:`Shared/UI/InputImage`,component:a,args:{value:void 0,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля выбора изображения.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст до выбора изображения.`,control:`text`},value:{description:`Результат чтения выбранного изображения.`,control:!1},onChange:{description:`Вызывается после успешного чтения изображения.`,control:!1},onReadError:{description:`Вызывается при ошибке валидации или чтения изображения.`,control:!1},onClear:{description:`Очищает выбранное изображение.`,control:!1},allowedMime:{description:`Разрешенные MIME-типы изображений.`,control:!1},maxBytes:{description:`Максимальный размер изображения в байтах.`,control:`number`},readMode:{description:`Режим чтения: data-url или array-buffer.`,control:`inline-radio`,options:[`data-url`,`array-buffer`]},error:{description:`Текст ошибки под полем.`,control:`text`},onClearError:{description:`Сброс ошибки при повторном выборе изображения.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер визуального контрола.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={render:e=>{let[t,n]=(0,s.useState)(e.value);return(0,c.jsx)(a,{...e,value:t,onChange:n,onClear:()=>n(void 0)})},args:{label:`Аватар`,description:`Выберите одно изображение профиля.`,placeholder:`Выберите изображение`,readMode:`data-url`,allowedMime:[`image/png`,`image/jpeg`,`image/webp`],value:void 0}},f={render:e=>{let[t,n]=(0,s.useState)(l());return(0,c.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,c.jsx)(a,{...e,value:t,onChange:n,onClear:()=>n(void 0)}),t?.mode===`data-url`&&(0,c.jsx)(`img`,{src:t.dataUrl,alt:`Предпросмотр`,style:{width:96,height:96,objectFit:`cover`,border:`1px solid var(--border-0)`}})]})},args:{label:`Изображение с предпросмотром`,description:`Сторис показывает, что значение можно использовать для preview.`}},p={render:e=>{let[t,n]=(0,s.useState)(void 0);return(0,c.jsx)(a,{...e,value:t,onChange:n,onClear:()=>n(void 0)})},args:{label:`Двоичный режим`,description:`Используется, когда изображение нужно обработать как бинарные данные.`,readMode:`array-buffer`,value:void 0}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CYobheWD.js";import{n as i,t as a}from"./InputImage-CoqzaT5z.js";var o=t({ArrayBufferMode:()=>p,Controlled:()=>d,WithInitialImage:()=>f,__namedExportsOrder:()=>m,default:()=>u}),s,c,l,u,d,f,p,m;function h(){return(h=e((()=>{s=n(),i(),c=r(),l=(e=`avatar.png`)=>{let t=new File([`image-demo`],e,{type:`image/png`,lastModified:17040672e5});return{mode:`data-url`,meta:{name:t.name,mime:t.type,size:t.size,lastModified:t.lastModified},dataUrl:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9YxM9a0AAAAASUVORK5CYII=`,file:t,dimensions:{width:1,height:1}}},u={title:`Shared/UI/InputImage`,component:a,args:{value:void 0,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля выбора изображения.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст до выбора изображения.`,control:`text`},value:{description:`Результат чтения выбранного изображения.`,control:!1},onChange:{description:`Вызывается после успешного чтения изображения.`,control:!1},onReadError:{description:`Вызывается при ошибке валидации или чтения изображения.`,control:!1},onClear:{description:`Очищает выбранное изображение.`,control:!1},allowedMime:{description:`Разрешенные MIME-типы изображений.`,control:!1},maxBytes:{description:`Максимальный размер изображения в байтах.`,control:`number`},readMode:{description:`Режим чтения: data-url или array-buffer.`,control:`inline-radio`,options:[`data-url`,`array-buffer`]},error:{description:`Текст ошибки под полем.`,control:`text`},onClearError:{description:`Сброс ошибки при повторном выборе изображения.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер визуального контрола.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={render:e=>{let[t,n]=(0,s.useState)(e.value);return(0,c.jsx)(a,{...e,value:t,onChange:n,onClear:()=>n(void 0)})},args:{label:`Аватар`,description:`Выберите одно изображение профиля.`,placeholder:`Выберите изображение`,readMode:`data-url`,allowedMime:[`image/png`,`image/jpeg`,`image/webp`],value:void 0}},f={render:e=>{let[t,n]=(0,s.useState)(l());return(0,c.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,c.jsx)(a,{...e,value:t,onChange:n,onClear:()=>n(void 0)}),t?.mode===`data-url`&&(0,c.jsx)(`img`,{src:t.dataUrl,alt:`Предпросмотр`,style:{width:96,height:96,objectFit:`cover`,border:`1px solid var(--border-0)`}})]})},args:{label:`Изображение с предпросмотром`,description:`Сторис показывает, что значение можно использовать для preview.`}},p={render:e=>{let[t,n]=(0,s.useState)(void 0);return(0,c.jsx)(a,{...e,value:t,onChange:n,onClear:()=>n(void 0)})},args:{label:`Двоичный режим`,description:`Используется, когда изображение нужно обработать как бинарные данные.`,readMode:`array-buffer`,value:void 0}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
2
2
  render: args => {
3
3
  const [value, setValue] = useState<ReadImageResult | undefined>(args.value);
4
4
  return <InputImage {...args} value={value} onChange={setValue} onClear={() => setValue(undefined)} />;
@@ -1,4 +1,4 @@
1
- import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./Switch-CndShiDg.js";import{i as a,n as o,r as s,t as ee}from"./DisclosureGroup-CXOF5bww.js";import{n as c,t as te}from"./ExpandableActionPanel-aHZGT5B4.js";import{n as ne,t as re}from"./RadioButton-B02A58Qr.js";import{n as l,t as ie}from"./SingleDateTimeInput-B4A_9baT.js";import{n as u,t as ae}from"./CheckBox-DDxhhLj6.js";import{n as d,t as oe}from"./DropZone-BUSFKNkC.js";import{n as f}from"./iframe-DaJPX7QV.js";import{n as p,t as m}from"./Popover-CL1-w2Po.js";import{n as se,t as h}from"./Button-2-1lrrp0.js";import{n as ce,t as g}from"./ContextMenu-CaQlZt-v.js";import{a as le,i as ue,n as de,r as fe,s as pe,t as me}from"./ModalManagerProvider-CygTKozo.js";import{n as _,t as v}from"./DropdownMenu-bAQ5wKRG.js";import{n as he,r as ge}from"./DateInput-BuCyQJPb.js";import{a as y,c as b,i as x,t as _e}from"./Input-TNrA13az.js";import{n as ve,t as S}from"./RadioGroup-D5sQH9R3.js";import{n as C,t as ye}from"./Select-BXAaQy9V.js";import{n as w,t as be}from"./DateRangePresetSelect-C9ZhGO09.js";import{n as T,t as xe}from"./Dialog-B9lYwQct.js";import{n as E,t as Se}from"./InputFiles-D9QDOmYY.js";import{n as D,t as Ce}from"./InputFile-D0kivEqF.js";import{n as O,t as we}from"./InputImage-C1ZemGke.js";import{n as k,t as Te}from"./LayoutPicker-BBcQR4eE.js";import{n as A,t as Ee}from"./Listbox-xBsSzB7c.js";import{n as j,t as De}from"./MultiSelect-BZKxCQ9J.js";import{n as M,t as Oe}from"./PeriodSelect-Dxy-Udif.js";import{n as N,t as ke}from"./PresetRangeDateInput-Kn0jZ58w.js";import{i as Ae,t as je}from"./Slider-D_fu_5jT.js";import{r as Me,t as Ne}from"./SliderInput-CF2Ze83S.js";import{n as Pe,t as Fe}from"./StateSelect-C_3pLhBP.js";import{n as Ie,t as Le}from"./TabsBox-rDhSlrdo.js";import{n as Re,t as ze}from"./TagInput-DjNOYO1Z.js";import{n as P,t as Be}from"./Textarea-HkRYNZSt.js";import{n as F,t as Ve}from"./Toggle-zpuNtBpW.js";import{n as He,t as I}from"./TreeMultiSelect-CnB02Va9.js";import{n as Ue,t as We}from"./treeStoryFixtures-Ci7STpiz.js";function Ge({onChange:e,...t}){let[n,r]=(0,L.useState)(()=>t.defaultValue??t.value??``),[i,a]=(0,L.useState)(()=>t.defaultValue??t.value??``),o=t=>{let n=t.trim();n!==i&&(a(n),e(n))},s=()=>{r(``),a(``),e(``)},ee=e=>{e.key===`Enter`&&(e.preventDefault(),o(n))},c=()=>{o(n)},te=e=>{r(e)};return(0,R.jsx)(_e,{...t,value:n,onChange:te,onKeyDown:ee,onBlur:c,onClear:s})}var L,R;function z(){return(z=e((()=>{L=t(n(),1),b(),R=f(),Ge.__docgenInfo={description:``,methods:[],displayName:`InputSearch`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`T`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},onClear:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},endAdornment:{required:!1,tsType:{name:`ReactNode`},description:``},endAdornmentClassName:{required:!1,tsType:{name:`string`},description:``},endAdornmentWidth:{required:!1,tsType:{name:`string`},description:``}},composes:[`Omit`]}})))()}function B({title:e,children:t}){return(0,U.jsxs)(`section`,{style:W,children:[(0,U.jsx)(`div`,{style:G,children:e}),t]})}function Ke({initialValue:e={},label:t=`TreeMultiSelect`,description:n,optionsLayout:r=`tree`,nodes:i=We,defaultExpandedCodeKeys:a}){let[o,s]=(0,H.useState)(e);return(0,U.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,U.jsx)(I,{label:t,description:n,nodes:i,value:o,onChange:s,optionsLayout:r,defaultExpandedCodeKeys:a}),(0,U.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(o)]})]})}function V(){let[e,t]=(0,H.useState)(`Значение`),[n,r]=(0,H.useState)(42),[a,o]=(0,H.useState)(``),[c,ne]=(0,H.useState)(`Комментарий`),[l,u]=(0,H.useState)(!0),[d,f]=(0,H.useState)(!1),[p,se]=(0,H.useState)(`first`),[ce,de]=(0,H.useState)(!0),[pe,_]=(0,H.useState)(!1),[ge,b]=(0,H.useState)(60),[_e,ve]=(0,H.useState)(60),[C,w]=(0,H.useState)(q[0]),[T,E]=(0,H.useState)([J[0]]),[D,O]=(0,H.useState)([`UI`,`Стили`]),[k,A]=(0,H.useState)(`week`),[j,M]=(0,H.useState)(`information`),[N,Ae]=(0,H.useState)(`two-columns`),[Me,Pe]=(0,H.useState)(new Date(2026,2,10)),[Ie,Re]=(0,H.useState)(new Date(2026,2,10,10,30)),[P,F]=(0,H.useState)(`today`),[He,I]=(0,H.useState)([new Date(2026,2,1),new Date(2026,2,10)]),[Ue,We]=(0,H.useState)(`month`),[L,R]=(0,H.useState)(),[z,V]=(0,H.useState)([]),[W,G]=(0,H.useState)(),[Y,X]=(0,H.useState)([]),[Z,Q]=(0,H.useState)(!1),[Ye,$]=(0,H.useState)(!1);return(0,U.jsxs)(`div`,{style:qe,children:[(0,U.jsxs)(B,{title:`Button`,children:[(0,U.jsx)(h,{variant:`transparent`,children:`Действие`}),(0,U.jsx)(h,{variant:`ghost`,children:`Действие`}),(0,U.jsx)(h,{variant:`neutral`,children:`Действие`}),(0,U.jsx)(h,{variant:`neutralOutline`,children:`Действие`}),(0,U.jsx)(h,{variant:`info`,children:`Действие`}),(0,U.jsx)(h,{variant:`infoOutline`,children:`Действие`})]}),(0,U.jsxs)(B,{title:`InputText`,children:[(0,U.jsx)(y,{label:`Текст`,description:`Поле ввода текста`,placeholder:`Введите текст`,disabled:!0,value:e,onChange:t}),(0,U.jsx)(y,{label:`Текст`,description:`Поле ввода текста`,placeholder:`Введите текст`,value:e,onChange:t}),(0,U.jsx)(y,{required:!0,label:`Текст`,description:`Поле ввода текста`,placeholder:`Введите текст`,value:e,onChange:t,onClear:()=>t(``)})]}),(0,U.jsxs)(B,{title:`InputNumber`,children:[(0,U.jsx)(x,{label:`Количество`,value:n,min:0,onChange:r,disabled:!0}),(0,U.jsx)(x,{label:`Количество`,value:n,min:0,onChange:r,required:!0}),(0,U.jsx)(x,{label:`Количество`,value:n,min:0,onChange:r}),(0,U.jsx)(x,{label:`Количество`,value:n,min:0,onChange:r,onClear:()=>r(void 0)})]}),(0,U.jsx)(B,{title:`InputSearch`,children:(0,U.jsx)(Ge,{label:`Поиск`,placeholder:`Найти`,value:a,onChange:o})}),(0,U.jsx)(B,{title:`Textarea`,children:(0,U.jsx)(Be,{label:`Комментарий`,required:!0,placeholder:`Многострочный комментарий`,rows:6,value:c,onChange:ne})}),(0,U.jsxs)(B,{title:`CheckBox`,children:[(0,U.jsx)(ae,{label:`Опция включена`,disabled:!0,value:l,onChange:u}),(0,U.jsx)(ae,{label:`Опция включена`,value:l,onChange:u,indeterminate:!0})]}),(0,U.jsxs)(B,{title:`RadioButton`,children:[(0,U.jsx)(re,{label:`Выбранная опция`,disabled:!0,value:d,onChange:f}),(0,U.jsx)(re,{label:`Выбранная опция`,value:d,onChange:f})]}),(0,U.jsx)(B,{title:`RadioGroup`,children:(0,U.jsxs)(S,{value:p,onChange:se,orientation:`vertical`,"aria-label":`Вариант`,children:[(0,U.jsx)(S.Option,{value:`first`,label:`Первый`}),(0,U.jsx)(S.Option,{value:`second`,label:`Второй`})]})}),(0,U.jsx)(B,{title:`Switch`,children:(0,U.jsx)(i,{label:`Уведомления`,value:ce,onChange:de})}),(0,U.jsx)(B,{title:`Toggle`,children:(0,U.jsx)(Ve,{label:`Режим`,value:pe,onChange:_,checkedText:`Вкл`,uncheckedText:`Выкл`})}),(0,U.jsx)(B,{title:`Slider`,children:(0,U.jsx)(je,{label:`Уровень`,value:ge,min:0,max:100,onChange:b})}),(0,U.jsx)(B,{title:`SliderInput`,children:(0,U.jsx)(Ne,{label:`Порог`,value:_e,min:0,max:100,onChange:ve})}),(0,U.jsxs)(B,{title:`Select`,children:[(0,U.jsx)(ye,{label:`Статус`,options:q,value:C,onChange:w,getOptionKey:e=>e.id,getOptionLabel:e=>e.label}),(0,U.jsx)(ye,{label:`Статус`,searchable:!0,options:q,value:C,onChange:w,getOptionKey:e=>e.id,getOptionLabel:e=>e.label})]}),(0,U.jsx)(B,{title:`MultiSelect`,children:(0,U.jsx)(De,{label:`Города`,items:J,value:T,query:``,codeKey:`code`,textKey:`label`,onChange:E,onQuery:()=>void 0,onOpen:()=>void 0,onClose:()=>void 0})}),(0,U.jsx)(B,{title:`TreeMultiSelect`,children:(0,U.jsx)(Ke,{})}),(0,U.jsx)(B,{title:`TagInput`,children:(0,U.jsx)(ze,{label:`Теги`,placeholder:`Добавить`,value:D,onChange:O})}),(0,U.jsx)(B,{title:`Listbox`,children:(0,U.jsx)(Ee,{options:Je,value:k,onChange:e=>A(e)})}),(0,U.jsx)(B,{title:`StateSelect`,children:(0,U.jsx)(Fe,{label:`Состояние`,value:j,onChange:M})}),(0,U.jsx)(B,{title:`LayoutPicker`,children:(0,U.jsx)(Te,{label:`Раскладка`,value:N,onChange:Ae,showPlaceholder:!0})}),(0,U.jsx)(B,{title:`SingleDateInput`,children:(0,U.jsx)(he,{label:`Дата`,value:Me,onChange:Pe})}),(0,U.jsx)(B,{title:`SingleDateTimeInput`,children:(0,U.jsx)(ie,{label:`Дата и время`,value:Ie,onChange:Re})}),(0,U.jsx)(B,{title:`DateRangePresetSelect`,children:(0,U.jsx)(be,{label:`Период`,value:P??void 0,onChange:e=>F(e??null),onRangeChange:e=>I(e?.range??null),referenceDate:new Date(2026,2,10,12)})}),(0,U.jsx)(B,{title:`PresetRangeDateInput`,children:(0,U.jsx)(ke,{value:He,onChange:I,presetId:P??null,onPresetIdChange:e=>F(e??null),referenceDate:new Date(2026,2,10,12),presetLabel:`Быстрый диапазон`})}),(0,U.jsx)(B,{title:`PeriodSelect`,children:(0,U.jsx)(Oe,{label:`Группировка`,value:Ue,onChange:We})}),(0,U.jsx)(B,{title:`InputFile`,children:(0,U.jsx)(Ce,{label:`Файл`,placeholder:`Выберите файл`,value:L,onChange:R,onClear:()=>R(void 0),readMode:`data-url`})}),(0,U.jsx)(B,{title:`InputFiles`,children:(0,U.jsx)(Se,{label:`Файлы`,placeholder:`Выберите файлы`,value:z,onChange:V,readMode:`data-url`})}),(0,U.jsx)(B,{title:`InputImage`,children:(0,U.jsx)(we,{label:`Изображение`,value:W,onChange:G,onClear:()=>G(void 0)})}),(0,U.jsx)(B,{title:`DropZone`,children:(0,U.jsx)(oe,{value:Y,multiple:!0,readMode:`data-url`,onChange:e=>X(e),children:(0,U.jsx)(`div`,{style:{display:`grid`,placeItems:`center`,minHeight:`6em`,textAlign:`center`},children:Y.length?`Файлов: ${Y.length}`:`Перетащите файлы`})})}),(0,U.jsx)(B,{title:`TabsBox`,children:(0,U.jsx)(Le,{defaultValue:`first`,bordered:!0,items:[{id:`first`,title:`Первый`,content:`Содержимое`},{id:`second`,title:`Второй`,content:`Другая панель`},{id:`third`,title:`Ещё одна`,content:`Другая панель`},{id:`quat`,title:`Четвертая`,content:`Другая панель`}]})}),(0,U.jsx)(B,{title:`TabsBox`,children:(0,U.jsx)(Le,{defaultValue:`first`,orientation:`vertical`,bordered:!0,items:[{id:`first`,title:`Первый`,content:`Содержимое`},{id:`second`,title:`Второй`,content:`Другая панель`},{id:`third`,title:`Ещё одна`,content:`Другая панель`},{id:`quat`,title:`Четвертая`,content:`Другая панель`}]})}),(0,U.jsxs)(B,{title:`Disclosure`,children:[(0,U.jsxs)(ee,{children:[(0,U.jsx)(s,{label:`Раскрыть 1`,children:`Содержимое панели 1`}),(0,U.jsx)(s,{label:`Раскрыть 2`,children:`Содержимое панели 2`}),(0,U.jsx)(s,{label:`Раскрыть 3`,children:`Содержимое панели 3`}),(0,U.jsx)(s,{label:`Раскрыть 4`,children:`Содержимое панели 4`})]}),(0,U.jsx)(s,{label:`Раскрыть 1`,children:`Содержимое панели 1`})]}),(0,U.jsx)(B,{title:`ExpandableActionPanel`,children:(0,U.jsx)(te,{children:(0,U.jsx)(h,{variant:`transparent`,children:`Действие`})})}),(0,U.jsx)(B,{title:`Popover`,children:(0,U.jsxs)(m,{children:[(0,U.jsx)(m.Trigger,{children:(0,U.jsx)(h,{style:K,children:`Открыть`})}),(0,U.jsx)(m.Content,{children:({setClose:e})=>(0,U.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`,padding:`1em`,maxWidth:`14em`},children:[(0,U.jsx)(`div`,{children:`Содержимое popover`}),(0,U.jsx)(h,{onClick:e,children:`Закрыть`})]})})]})}),(0,U.jsx)(B,{title:`DropdownMenu`,children:(0,U.jsxs)(v,{children:[(0,U.jsx)(v.Trigger,{children:(0,U.jsx)(h,{style:K,children:`Действия`})}),(0,U.jsxs)(v.Content,{children:[(0,U.jsx)(v.Item,{children:`Редактировать`}),(0,U.jsx)(v.Item,{children:`Удалить`})]})]})}),(0,U.jsx)(B,{title:`ContextMenu`,children:(0,U.jsxs)(g,{children:[(0,U.jsx)(g.Trigger,{children:(0,U.jsx)(`div`,{style:{display:`grid`,placeItems:`center`,minHeight:`6em`,padding:`0.75em`,border:`var(--border)`,borderRadius:`var(--radius-sm)`,textAlign:`center`},children:`Правая кнопка мыши`})}),(0,U.jsxs)(g.Content,{children:[(0,U.jsx)(g.Item,{children:`Переименовать`}),(0,U.jsx)(g.Item,{children:`Удалить`})]})]})}),(0,U.jsxs)(B,{title:`Dialog`,children:[(0,U.jsx)(h,{style:K,onClick:()=>Q(!0),children:`Открыть диалог`}),(0,U.jsx)(xe,{title:`Подтверждение`,description:`Подтвердите действие`,open:Z,onClose:()=>Q(!1),children:(0,U.jsx)(h,{onClick:()=>Q(!1),children:`Закрыть`})})]}),(0,U.jsx)(B,{title:`Modal`,children:(0,U.jsxs)(me,{children:[(0,U.jsx)(h,{style:K,onClick:()=>$(!0),children:`Открыть модалку`}),(0,U.jsxs)(fe,{title:`Параметры`,isOpen:Ye,onClose:()=>$(!1),children:[(0,U.jsx)(ue,{children:`Содержимое модального окна`}),(0,U.jsx)(le,{children:(0,U.jsx)(h,{onClick:()=>$(!1),children:`Готово`})})]})]})})]})}var H,U,qe,W,G,K,q,J,Je,Y,X,Z;function Q(){return(Q=e((()=>{H=n(),se(),u(),ce(),_(),ge(),w(),l(),T(),a(),o(),d(),c(),b(),D(),E(),O(),z(),k(),A(),pe(),de(),j(),M(),p(),N(),ne(),ve(),C(),Ae(),Me(),Pe(),r(),Ie(),Re(),P(),F(),He(),Ue(),U=f(),qe={display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(var(--ui-width-xl), 1fr))`,alignItems:`start`,gap:`2em`,padding:`2em`},W={display:`grid`,alignContent:`start`,gridTemplateColumns:`100%`,gap:`0.5em`,padding:`1em`,overflow:`hidden`,borderRadius:`var(--radius-md)`,background:`var(--surface-0)`,boxShadow:`var(--shadow-lg)`},G={fontWeight:700,color:`var(--content-0)`},K={width:`100%`},q=[{id:`draft`,label:`Черновик`},{id:`review`,label:`На согласовании`},{id:`published`,label:`Опубликован`}],J=[{code:`EKB`,label:`Екатеринбург`},{code:`KZN`,label:`Казань`},{code:`MOW`,label:`Москва`}],Je=[{value:`day`,label:`День`},{value:`week`,label:`Неделя`},{value:`month`,label:`Месяц`}],Y={title:`Development/Interactive components`,component:V,parameters:{layout:`fullscreen`,docs:{description:{component:`Быстрая витрина интерактивных UI-компонентов для разработки и проверки общих стилей.`}}}},X={},V.__docgenInfo={description:``,methods:[],displayName:`InteractiveComponents`},V.parameters={...V.parameters,docs:{...V.parameters?.docs,source:{originalSource:`function InteractiveComponents() {
1
+ import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./Switch-Bs4yhyjR.js";import{i as a,n as o,r as s,t as ee}from"./DisclosureGroup-C7kadoVD.js";import{n as c,t as te}from"./ExpandableActionPanel-C-xRvGLK.js";import{n as ne,t as re}from"./RadioButton-BelOYlsv.js";import{n as l,t as ie}from"./SingleDateTimeInput-CuTy_t_1.js";import{n as u,t as ae}from"./CheckBox-DdyYpHip.js";import{n as d,t as oe}from"./DropZone-DSkgQNJy.js";import{n as f}from"./iframe-CYobheWD.js";import{n as p,t as m}from"./Popover-BrEAV6tC.js";import{n as se,t as h}from"./Button-G_ZnGyXY.js";import{n as ce,t as g}from"./ContextMenu-DQv1v1zy.js";import{a as le,i as ue,n as de,r as fe,s as pe,t as me}from"./ModalManagerProvider-CDpI_bMR.js";import{n as _,t as v}from"./DropdownMenu-CIwvcBv7.js";import{n as he,r as ge}from"./DateInput-DakqiSFb.js";import{a as y,c as b,i as x,t as _e}from"./Input-g2XrzU2e.js";import{n as ve,t as S}from"./RadioGroup-CMerSWPc.js";import{n as C,t as ye}from"./Select-iRRHKOR9.js";import{n as w,t as be}from"./DateRangePresetSelect-R8gpZJUt.js";import{n as T,t as xe}from"./Dialog-aECS25qq.js";import{n as E,t as Se}from"./InputFiles-BTOdLOY4.js";import{n as D,t as Ce}from"./InputFile-CniSRV0z.js";import{n as O,t as we}from"./InputImage-CoqzaT5z.js";import{n as k,t as Te}from"./LayoutPicker-C14HuoJT.js";import{n as A,t as Ee}from"./Listbox-Mqn7EoPt.js";import{n as j,t as De}from"./MultiSelect-Cujmvoxp.js";import{n as M,t as Oe}from"./PeriodSelect-BFLetGco.js";import{n as N,t as ke}from"./PresetRangeDateInput-BxBcwRrC.js";import{i as Ae,t as je}from"./Slider-D2-xtMN2.js";import{r as Me,t as Ne}from"./SliderInput-C8OO6jI-.js";import{n as Pe,t as Fe}from"./StateSelect-DRHlFj9s.js";import{n as Ie,t as Le}from"./TabsBox-B37Xpp9P.js";import{n as Re,t as ze}from"./TagInput-Blo36mAx.js";import{n as P,t as Be}from"./Textarea-B02c6Ggv.js";import{n as F,t as Ve}from"./Toggle-BjyGbAMN.js";import{n as He,t as I}from"./TreeMultiSelect-CFNKXcU5.js";import{n as Ue,t as We}from"./treeStoryFixtures-Ci7STpiz.js";function Ge({onChange:e,...t}){let[n,r]=(0,L.useState)(()=>t.defaultValue??t.value??``),[i,a]=(0,L.useState)(()=>t.defaultValue??t.value??``),o=t=>{let n=t.trim();n!==i&&(a(n),e(n))},s=()=>{r(``),a(``),e(``)},ee=e=>{e.key===`Enter`&&(e.preventDefault(),o(n))},c=()=>{o(n)},te=e=>{r(e)};return(0,R.jsx)(_e,{...t,value:n,onChange:te,onKeyDown:ee,onBlur:c,onClear:s})}var L,R;function z(){return(z=e((()=>{L=t(n(),1),b(),R=f(),Ge.__docgenInfo={description:``,methods:[],displayName:`InputSearch`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`T`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},onClear:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},endAdornment:{required:!1,tsType:{name:`ReactNode`},description:``},endAdornmentClassName:{required:!1,tsType:{name:`string`},description:``},endAdornmentWidth:{required:!1,tsType:{name:`string`},description:``}},composes:[`Omit`]}})))()}function B({title:e,children:t}){return(0,U.jsxs)(`section`,{style:W,children:[(0,U.jsx)(`div`,{style:G,children:e}),t]})}function Ke({initialValue:e={},label:t=`TreeMultiSelect`,description:n,optionsLayout:r=`tree`,nodes:i=We,defaultExpandedCodeKeys:a}){let[o,s]=(0,H.useState)(e);return(0,U.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,U.jsx)(I,{label:t,description:n,nodes:i,value:o,onChange:s,optionsLayout:r,defaultExpandedCodeKeys:a}),(0,U.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(o)]})]})}function V(){let[e,t]=(0,H.useState)(`Значение`),[n,r]=(0,H.useState)(42),[a,o]=(0,H.useState)(``),[c,ne]=(0,H.useState)(`Комментарий`),[l,u]=(0,H.useState)(!0),[d,f]=(0,H.useState)(!1),[p,se]=(0,H.useState)(`first`),[ce,de]=(0,H.useState)(!0),[pe,_]=(0,H.useState)(!1),[ge,b]=(0,H.useState)(60),[_e,ve]=(0,H.useState)(60),[C,w]=(0,H.useState)(q[0]),[T,E]=(0,H.useState)([J[0]]),[D,O]=(0,H.useState)([`UI`,`Стили`]),[k,A]=(0,H.useState)(`week`),[j,M]=(0,H.useState)(`information`),[N,Ae]=(0,H.useState)(`two-columns`),[Me,Pe]=(0,H.useState)(new Date(2026,2,10)),[Ie,Re]=(0,H.useState)(new Date(2026,2,10,10,30)),[P,F]=(0,H.useState)(`today`),[He,I]=(0,H.useState)([new Date(2026,2,1),new Date(2026,2,10)]),[Ue,We]=(0,H.useState)(`month`),[L,R]=(0,H.useState)(),[z,V]=(0,H.useState)([]),[W,G]=(0,H.useState)(),[Y,X]=(0,H.useState)([]),[Z,Q]=(0,H.useState)(!1),[Ye,$]=(0,H.useState)(!1);return(0,U.jsxs)(`div`,{style:qe,children:[(0,U.jsxs)(B,{title:`Button`,children:[(0,U.jsx)(h,{variant:`transparent`,children:`Действие`}),(0,U.jsx)(h,{variant:`ghost`,children:`Действие`}),(0,U.jsx)(h,{variant:`neutral`,children:`Действие`}),(0,U.jsx)(h,{variant:`neutralOutline`,children:`Действие`}),(0,U.jsx)(h,{variant:`info`,children:`Действие`}),(0,U.jsx)(h,{variant:`infoOutline`,children:`Действие`})]}),(0,U.jsxs)(B,{title:`InputText`,children:[(0,U.jsx)(y,{label:`Текст`,description:`Поле ввода текста`,placeholder:`Введите текст`,disabled:!0,value:e,onChange:t}),(0,U.jsx)(y,{label:`Текст`,description:`Поле ввода текста`,placeholder:`Введите текст`,value:e,onChange:t}),(0,U.jsx)(y,{required:!0,label:`Текст`,description:`Поле ввода текста`,placeholder:`Введите текст`,value:e,onChange:t,onClear:()=>t(``)})]}),(0,U.jsxs)(B,{title:`InputNumber`,children:[(0,U.jsx)(x,{label:`Количество`,value:n,min:0,onChange:r,disabled:!0}),(0,U.jsx)(x,{label:`Количество`,value:n,min:0,onChange:r,required:!0}),(0,U.jsx)(x,{label:`Количество`,value:n,min:0,onChange:r}),(0,U.jsx)(x,{label:`Количество`,value:n,min:0,onChange:r,onClear:()=>r(void 0)})]}),(0,U.jsx)(B,{title:`InputSearch`,children:(0,U.jsx)(Ge,{label:`Поиск`,placeholder:`Найти`,value:a,onChange:o})}),(0,U.jsx)(B,{title:`Textarea`,children:(0,U.jsx)(Be,{label:`Комментарий`,required:!0,placeholder:`Многострочный комментарий`,rows:6,value:c,onChange:ne})}),(0,U.jsxs)(B,{title:`CheckBox`,children:[(0,U.jsx)(ae,{label:`Опция включена`,disabled:!0,value:l,onChange:u}),(0,U.jsx)(ae,{label:`Опция включена`,value:l,onChange:u,indeterminate:!0})]}),(0,U.jsxs)(B,{title:`RadioButton`,children:[(0,U.jsx)(re,{label:`Выбранная опция`,disabled:!0,value:d,onChange:f}),(0,U.jsx)(re,{label:`Выбранная опция`,value:d,onChange:f})]}),(0,U.jsx)(B,{title:`RadioGroup`,children:(0,U.jsxs)(S,{value:p,onChange:se,orientation:`vertical`,"aria-label":`Вариант`,children:[(0,U.jsx)(S.Option,{value:`first`,label:`Первый`}),(0,U.jsx)(S.Option,{value:`second`,label:`Второй`})]})}),(0,U.jsx)(B,{title:`Switch`,children:(0,U.jsx)(i,{label:`Уведомления`,value:ce,onChange:de})}),(0,U.jsx)(B,{title:`Toggle`,children:(0,U.jsx)(Ve,{label:`Режим`,value:pe,onChange:_,checkedText:`Вкл`,uncheckedText:`Выкл`})}),(0,U.jsx)(B,{title:`Slider`,children:(0,U.jsx)(je,{label:`Уровень`,value:ge,min:0,max:100,onChange:b})}),(0,U.jsx)(B,{title:`SliderInput`,children:(0,U.jsx)(Ne,{label:`Порог`,value:_e,min:0,max:100,onChange:ve})}),(0,U.jsxs)(B,{title:`Select`,children:[(0,U.jsx)(ye,{label:`Статус`,options:q,value:C,onChange:w,getOptionKey:e=>e.id,getOptionLabel:e=>e.label}),(0,U.jsx)(ye,{label:`Статус`,searchable:!0,options:q,value:C,onChange:w,getOptionKey:e=>e.id,getOptionLabel:e=>e.label})]}),(0,U.jsx)(B,{title:`MultiSelect`,children:(0,U.jsx)(De,{label:`Города`,items:J,value:T,query:``,codeKey:`code`,textKey:`label`,onChange:E,onQuery:()=>void 0,onOpen:()=>void 0,onClose:()=>void 0})}),(0,U.jsx)(B,{title:`TreeMultiSelect`,children:(0,U.jsx)(Ke,{})}),(0,U.jsx)(B,{title:`TagInput`,children:(0,U.jsx)(ze,{label:`Теги`,placeholder:`Добавить`,value:D,onChange:O})}),(0,U.jsx)(B,{title:`Listbox`,children:(0,U.jsx)(Ee,{options:Je,value:k,onChange:e=>A(e)})}),(0,U.jsx)(B,{title:`StateSelect`,children:(0,U.jsx)(Fe,{label:`Состояние`,value:j,onChange:M})}),(0,U.jsx)(B,{title:`LayoutPicker`,children:(0,U.jsx)(Te,{label:`Раскладка`,value:N,onChange:Ae,showPlaceholder:!0})}),(0,U.jsx)(B,{title:`SingleDateInput`,children:(0,U.jsx)(he,{label:`Дата`,value:Me,onChange:Pe})}),(0,U.jsx)(B,{title:`SingleDateTimeInput`,children:(0,U.jsx)(ie,{label:`Дата и время`,value:Ie,onChange:Re})}),(0,U.jsx)(B,{title:`DateRangePresetSelect`,children:(0,U.jsx)(be,{label:`Период`,value:P??void 0,onChange:e=>F(e??null),onRangeChange:e=>I(e?.range??null),referenceDate:new Date(2026,2,10,12)})}),(0,U.jsx)(B,{title:`PresetRangeDateInput`,children:(0,U.jsx)(ke,{value:He,onChange:I,presetId:P??null,onPresetIdChange:e=>F(e??null),referenceDate:new Date(2026,2,10,12),presetLabel:`Быстрый диапазон`})}),(0,U.jsx)(B,{title:`PeriodSelect`,children:(0,U.jsx)(Oe,{label:`Группировка`,value:Ue,onChange:We})}),(0,U.jsx)(B,{title:`InputFile`,children:(0,U.jsx)(Ce,{label:`Файл`,placeholder:`Выберите файл`,value:L,onChange:R,onClear:()=>R(void 0),readMode:`data-url`})}),(0,U.jsx)(B,{title:`InputFiles`,children:(0,U.jsx)(Se,{label:`Файлы`,placeholder:`Выберите файлы`,value:z,onChange:V,readMode:`data-url`})}),(0,U.jsx)(B,{title:`InputImage`,children:(0,U.jsx)(we,{label:`Изображение`,value:W,onChange:G,onClear:()=>G(void 0)})}),(0,U.jsx)(B,{title:`DropZone`,children:(0,U.jsx)(oe,{value:Y,multiple:!0,readMode:`data-url`,onChange:e=>X(e),children:(0,U.jsx)(`div`,{style:{display:`grid`,placeItems:`center`,minHeight:`6em`,textAlign:`center`},children:Y.length?`Файлов: ${Y.length}`:`Перетащите файлы`})})}),(0,U.jsx)(B,{title:`TabsBox`,children:(0,U.jsx)(Le,{defaultValue:`first`,bordered:!0,items:[{id:`first`,title:`Первый`,content:`Содержимое`},{id:`second`,title:`Второй`,content:`Другая панель`},{id:`third`,title:`Ещё одна`,content:`Другая панель`},{id:`quat`,title:`Четвертая`,content:`Другая панель`}]})}),(0,U.jsx)(B,{title:`TabsBox`,children:(0,U.jsx)(Le,{defaultValue:`first`,orientation:`vertical`,bordered:!0,items:[{id:`first`,title:`Первый`,content:`Содержимое`},{id:`second`,title:`Второй`,content:`Другая панель`},{id:`third`,title:`Ещё одна`,content:`Другая панель`},{id:`quat`,title:`Четвертая`,content:`Другая панель`}]})}),(0,U.jsxs)(B,{title:`Disclosure`,children:[(0,U.jsxs)(ee,{children:[(0,U.jsx)(s,{label:`Раскрыть 1`,children:`Содержимое панели 1`}),(0,U.jsx)(s,{label:`Раскрыть 2`,children:`Содержимое панели 2`}),(0,U.jsx)(s,{label:`Раскрыть 3`,children:`Содержимое панели 3`}),(0,U.jsx)(s,{label:`Раскрыть 4`,children:`Содержимое панели 4`})]}),(0,U.jsx)(s,{label:`Раскрыть 1`,children:`Содержимое панели 1`})]}),(0,U.jsx)(B,{title:`ExpandableActionPanel`,children:(0,U.jsx)(te,{children:(0,U.jsx)(h,{variant:`transparent`,children:`Действие`})})}),(0,U.jsx)(B,{title:`Popover`,children:(0,U.jsxs)(m,{children:[(0,U.jsx)(m.Trigger,{children:(0,U.jsx)(h,{style:K,children:`Открыть`})}),(0,U.jsx)(m.Content,{children:({setClose:e})=>(0,U.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`,padding:`1em`,maxWidth:`14em`},children:[(0,U.jsx)(`div`,{children:`Содержимое popover`}),(0,U.jsx)(h,{onClick:e,children:`Закрыть`})]})})]})}),(0,U.jsx)(B,{title:`DropdownMenu`,children:(0,U.jsxs)(v,{children:[(0,U.jsx)(v.Trigger,{children:(0,U.jsx)(h,{style:K,children:`Действия`})}),(0,U.jsxs)(v.Content,{children:[(0,U.jsx)(v.Item,{children:`Редактировать`}),(0,U.jsx)(v.Item,{children:`Удалить`})]})]})}),(0,U.jsx)(B,{title:`ContextMenu`,children:(0,U.jsxs)(g,{children:[(0,U.jsx)(g.Trigger,{children:(0,U.jsx)(`div`,{style:{display:`grid`,placeItems:`center`,minHeight:`6em`,padding:`0.75em`,border:`var(--border)`,borderRadius:`var(--radius-sm)`,textAlign:`center`},children:`Правая кнопка мыши`})}),(0,U.jsxs)(g.Content,{children:[(0,U.jsx)(g.Item,{children:`Переименовать`}),(0,U.jsx)(g.Item,{children:`Удалить`})]})]})}),(0,U.jsxs)(B,{title:`Dialog`,children:[(0,U.jsx)(h,{style:K,onClick:()=>Q(!0),children:`Открыть диалог`}),(0,U.jsx)(xe,{title:`Подтверждение`,description:`Подтвердите действие`,open:Z,onClose:()=>Q(!1),children:(0,U.jsx)(h,{onClick:()=>Q(!1),children:`Закрыть`})})]}),(0,U.jsx)(B,{title:`Modal`,children:(0,U.jsxs)(me,{children:[(0,U.jsx)(h,{style:K,onClick:()=>$(!0),children:`Открыть модалку`}),(0,U.jsxs)(fe,{title:`Параметры`,isOpen:Ye,onClose:()=>$(!1),children:[(0,U.jsx)(ue,{children:`Содержимое модального окна`}),(0,U.jsx)(le,{children:(0,U.jsx)(h,{onClick:()=>$(!1),children:`Готово`})})]})]})})]})}var H,U,qe,W,G,K,q,J,Je,Y,X,Z;function Q(){return(Q=e((()=>{H=n(),se(),u(),ce(),_(),ge(),w(),l(),T(),a(),o(),d(),c(),b(),D(),E(),O(),z(),k(),A(),pe(),de(),j(),M(),p(),N(),ne(),ve(),C(),Ae(),Me(),Pe(),r(),Ie(),Re(),P(),F(),He(),Ue(),U=f(),qe={display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(var(--ui-width-xl), 1fr))`,alignItems:`start`,gap:`2em`,padding:`2em`},W={display:`grid`,alignContent:`start`,gridTemplateColumns:`100%`,gap:`0.5em`,padding:`1em`,overflow:`hidden`,borderRadius:`var(--radius-md)`,background:`var(--surface-0)`,boxShadow:`var(--shadow-lg)`},G={fontWeight:700,color:`var(--content-0)`},K={width:`100%`},q=[{id:`draft`,label:`Черновик`},{id:`review`,label:`На согласовании`},{id:`published`,label:`Опубликован`}],J=[{code:`EKB`,label:`Екатеринбург`},{code:`KZN`,label:`Казань`},{code:`MOW`,label:`Москва`}],Je=[{value:`day`,label:`День`},{value:`week`,label:`Неделя`},{value:`month`,label:`Месяц`}],Y={title:`Development/Interactive components`,component:V,parameters:{layout:`fullscreen`,docs:{description:{component:`Быстрая витрина интерактивных UI-компонентов для разработки и проверки общих стилей.`}}}},X={},V.__docgenInfo={description:``,methods:[],displayName:`InteractiveComponents`},V.parameters={...V.parameters,docs:{...V.parameters?.docs,source:{originalSource:`function InteractiveComponents() {
2
2
  const [text, setText] = useState("Значение");
3
3
  const [number, setNumber] = useState<number | undefined>(42);
4
4
  const [search, setSearch] = useState("");
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-DaJPX7QV.js";import{a as r,i}from"./utils-DUM89eIj.js";import{n as a,t as o}from"./ui.module-B48csOVs.js";import{c as s,g as c,h as l,i as u,l as d,n as f,r as p,s as m,t as h,u as g}from"./usePickerTriggerController-B-AurKCR.js";import{n as _,t as v}from"./PickerTriggerActions-DfajdlA-.js";function y(e,t){return{gridTemplateColumns:`repeat(${e.columns}, minmax(0, 1fr))`,gridTemplateRows:`repeat(${e.rows}, minmax(${t??0}em, 1fr))`}}function b(e){return{gridColumn:`${e.column} / span ${e.columnSpan??1}`,gridRow:`${e.row} / span ${e.rowSpan??1}`}}var x;function S(){return(S=e((()=>{x=[{id:`1x1`,label:`1x1`,columns:1,rows:1,cells:[{id:`c11`,row:1,column:1}]},{id:`1x2`,label:`1x2`,columns:2,rows:1,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2}]},{id:`1x3`,label:`1x3`,columns:3,rows:1,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3}]},{id:`2x1`,label:`2x1`,columns:1,rows:2,cells:[{id:`c11`,row:1,column:1},{id:`c21`,row:2,column:1}]},{id:`2x2`,label:`2x2`,columns:2,rows:2,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2}]},{id:`2x3`,label:`2x3`,columns:3,rows:2,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3}]},{id:`3x1`,label:`3x1`,columns:1,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c21`,row:2,column:1},{id:`c31`,row:3,column:1}]},{id:`3x2`,label:`3x2`,columns:2,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2}]},{id:`3x3`,label:`3x3`,columns:3,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3}]},{id:`4x1`,label:`4x1`,columns:1,rows:4,cells:[{id:`c11`,row:1,column:1},{id:`c21`,row:2,column:1},{id:`c31`,row:3,column:1},{id:`c41`,row:4,column:1}]},{id:`4x2`,label:`4x2`,columns:2,rows:4,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c41`,row:4,column:1},{id:`c42`,row:4,column:2}]},{id:`4x3`,label:`4x3`,columns:3,rows:4,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3},{id:`c41`,row:4,column:1},{id:`c42`,row:4,column:2},{id:`c43`,row:4,column:3}]},{id:`2x2-l`,label:`Большая слева + две справа`,columns:2,rows:2,cells:[{id:`left`,row:1,column:1,rowSpan:2},{id:`rt`,row:1,column:2},{id:`rb`,row:2,column:2}]},{id:`2x2-r`,label:`Две слева + большая справа`,columns:2,rows:2,cells:[{id:`lt`,row:1,column:1},{id:`lb`,row:2,column:1},{id:`right`,row:1,column:2,rowSpan:2}]},{id:`2x2-t`,label:`Широкая сверху + две снизу`,columns:2,rows:2,cells:[{id:`top`,row:1,column:1,columnSpan:2},{id:`bl`,row:2,column:1},{id:`br`,row:2,column:2}]},{id:`2x2-b`,label:`Две сверху + широкая снизу`,columns:2,rows:2,cells:[{id:`tl`,row:1,column:1},{id:`tr`,row:1,column:2},{id:`bottom`,row:2,column:1,columnSpan:2}]},{id:`3x2-t`,label:`Широкая сверху + 2x2`,columns:2,rows:3,cells:[{id:`top`,row:1,column:1,columnSpan:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2}]},{id:`3x2-b`,label:`2x2 + широкая снизу`,columns:2,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`bottom`,row:3,column:1,columnSpan:2}]},{id:`3x2-m`,label:`Широкая по центру`,columns:2,rows:3,cells:[{id:`tl`,row:1,column:1},{id:`tr`,row:1,column:2},{id:`middle`,row:2,column:1,columnSpan:2},{id:`bl`,row:3,column:1},{id:`br`,row:3,column:2}]},{id:`3x3-l`,label:`Большая слева + 2x3 справа`,columns:3,rows:3,cells:[{id:`left`,row:1,column:1,rowSpan:3},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3}]},{id:`3x3-r`,label:`2x3 слева + большая справа`,columns:3,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`right`,row:1,column:3,rowSpan:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2}]},{id:`3x3-t`,label:`Широкая сверху + 2x3`,columns:3,rows:3,cells:[{id:`top`,row:1,column:1,columnSpan:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3}]},{id:`3x3-b`,label:`2x3 + широкая снизу`,columns:3,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`bottom`,row:3,column:1,columnSpan:3}]},{id:`4x2-t`,label:`Широкая сверху + 3x2`,columns:2,rows:4,cells:[{id:`top`,row:1,column:1,columnSpan:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c41`,row:4,column:1},{id:`c42`,row:4,column:2}]},{id:`4x2-b`,label:`3x2 + широкая снизу`,columns:2,rows:4,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`bottom`,row:4,column:1,columnSpan:2}]},{id:`4x3-t`,label:`Широкая сверху + 3x3`,columns:3,rows:4,cells:[{id:`top`,row:1,column:1,columnSpan:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3},{id:`c41`,row:4,column:1},{id:`c42`,row:4,column:2},{id:`c43`,row:4,column:3}]},{id:`4x3-b`,label:`3x3 + широкая снизу`,columns:3,rows:4,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3},{id:`bottom`,row:4,column:1,columnSpan:3}]}]})))()}var C,w,T,E,D,O,k,A,j,M,N,P,F,I,L,R;function z(){return(z=e((()=>{C=`_959ulH`,w=`Ch-SZL`,T=`SmdPit`,E=`giOtGs`,D=`_57Tr0T`,O=`Tkhulr`,k=`VQlniu`,A=`wb39Kf`,j=`HGvQdT`,M=`rZuYyb`,N=`VrHnjN`,P=`vNV6Q2`,F=`koxYU-`,I=`k8xLa2`,L=`_5pd3Bb`,R={valueOverlay:C,triggerInput:w,triggerText:T,popup:E,popupLayout:D,popupBody:O,options:k,option:A,optionActive:j,optionSelected:M,previewCell:N,optionPreviewWrap:P,preview:F,previewPlaceholder:I,previewCompact:L}})))()}function B({preset:e,compact:t=!1}){return(0,U.jsx)(`span`,{className:r(R.preview,t&&R.previewCompact),style:y(e),"aria-hidden":`true`,"data-ui":`layout-picker-preview`,children:e.cells.map(t=>(0,U.jsx)(`span`,{className:R.previewCell,style:b(t)},`${e.id}:${t.id}`))})}function V({id:e,label:t,description:n,value:i,onChange:o,presets:s=x,disabled:c,getPresetDisabled:p,placeholder:h=W,showPlaceholder:g=!1,size:_,ariaLabel:y,className:b,triggerClassName:S,popupClassName:C,placement:w=`bottom-start`}){let T=(0,H.useRef)(null),[E,D]=(0,H.useState)(!1),O=s.findIndex(e=>e.id===i),k=O>=0?s[O]:void 0,A=k??s[0],j=k?.label??h,{activeIndex:M,context:N,floatingStyles:P,getFloatingProps:F,setReference:I,setFloating:L,setOptionRef:z,close:V,openList:G,toggleOpen:K,selectOption:q,selectActiveOption:J,handleReferenceKeyDown:Y,handleFloatingKeyDown:X,getOptionId:Z,getActiveOptionId:Q}=u({options:s,selectedIndex:O,open:E,onOpenChange:D,getOptionDisabled:p,onSelect:e=>o(e.id),disabled:c,placement:w,triggerMode:`display`}),$=f({mode:`display`,open:E,currentQuery:``,hasDisplayValue:k!==void 0,inputRef:T,openList:G,close:V,toggleOpen:K}),ee=e=>{T.current=e};return(0,U.jsx)(l,{id:e,label:t,description:n,disabled:c,size:_,className:b,children:({controlId:e,labelId:t,describedBy:n})=>{let i=`${e}-listbox`;return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(m,{ref:ee,rootRef:I,id:e,type:`button`,disabled:c,readOnly:!0,autoComplete:`off`,role:`combobox`,value:j,"aria-haspopup":`listbox`,"aria-expanded":E,"aria-controls":E?i:void 0,"aria-labelledby":t,"aria-describedby":n,"aria-autocomplete":`none`,"aria-activedescendant":E?Q(i):void 0,"aria-label":t?void 0:y??`Выбрать layout. Текущее значение: ${j}`,"data-ui":`layout-picker-trigger`,rootClassName:S,inputClassName:R.triggerInput,overlay:(0,U.jsxs)(`div`,{className:R.valueOverlay,children:[A?(0,U.jsx)(B,{preset:A,compact:!0}):(0,U.jsx)(`span`,{className:R.previewPlaceholder}),g?(0,U.jsx)(`span`,{className:r(R.triggerText,a.uiPlaceholder),"data-ui":`layout-picker-placeholder`,children:h}):null]}),endAdornment:(0,U.jsx)(v,{open:E,disabled:c,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,openAriaLabel:`Открыть список layout`,closeAriaLabel:`Закрыть список layout`}),onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{Y(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:J,enableSpaceActivation:!0})}}),(0,U.jsx)(d,{open:E,context:N,floatingStyles:P,listId:i,labelId:t,descriptionId:n,activeOptionId:Q(i),setFloating:L,getFloatingProps:F,onKeyDown:X,className:r(a.uiPopupOptions,R.popup,C),layoutClassName:R.popupLayout,bodyClassName:R.popupBody,children:(0,U.jsx)(`div`,{className:R.options,children:s.map((e,t)=>{let n=t===O,a=t===M,o=p?.(e)??!1,s=Z(i,t);return(0,U.jsx)(`button`,{id:s,ref:e=>z(t,e),type:`button`,role:`option`,tabIndex:-1,disabled:o,"aria-selected":n,"aria-disabled":o||void 0,"aria-label":e.description?`${e.label}. ${e.description}`:e.label,className:r(R.option,n&&R.optionSelected,a&&R.optionActive),"data-ui":`layout-picker-option`,"data-selected":n||void 0,onMouseDown:e=>e.preventDefault(),onClick:()=>q(e),children:(0,U.jsx)(`span`,{className:R.optionPreviewWrap,children:(0,U.jsx)(B,{preset:e})})},e.id)})})})]})}})}var H,U,W;function G(){return(G=e((()=>{H=t(),i(),c(),g(),_(),s(),p(),h(),o(),S(),z(),U=n(),W=`Выберите раскладку`,V.__docgenInfo={description:`Контрол выбора layout-пресета. Не хранит бизнес-логику содержимого ячеек.`,methods:[],displayName:`LayoutPicker`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите раскладку"`,computed:!1}},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},id:{required:!1,tsType:{name:`string`},description:``},presets:{required:!1,tsType:{name:`unknown`},description:``,defaultValue:{value:`[
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-CYobheWD.js";import{a as r,i}from"./utils-DUM89eIj.js";import{n as a,t as o}from"./ui.module-CHEKb9Cb.js";import{c as s,g as c,h as l,i as u,l as d,n as f,r as p,s as m,t as h,u as g}from"./usePickerTriggerController-Cxo7izm1.js";import{n as _,t as v}from"./PickerTriggerActions-BKQ28AXr.js";function y(e,t){return{gridTemplateColumns:`repeat(${e.columns}, minmax(0, 1fr))`,gridTemplateRows:`repeat(${e.rows}, minmax(${t??0}em, 1fr))`}}function b(e){return{gridColumn:`${e.column} / span ${e.columnSpan??1}`,gridRow:`${e.row} / span ${e.rowSpan??1}`}}var x;function S(){return(S=e((()=>{x=[{id:`1x1`,label:`1x1`,columns:1,rows:1,cells:[{id:`c11`,row:1,column:1}]},{id:`1x2`,label:`1x2`,columns:2,rows:1,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2}]},{id:`1x3`,label:`1x3`,columns:3,rows:1,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3}]},{id:`2x1`,label:`2x1`,columns:1,rows:2,cells:[{id:`c11`,row:1,column:1},{id:`c21`,row:2,column:1}]},{id:`2x2`,label:`2x2`,columns:2,rows:2,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2}]},{id:`2x3`,label:`2x3`,columns:3,rows:2,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3}]},{id:`3x1`,label:`3x1`,columns:1,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c21`,row:2,column:1},{id:`c31`,row:3,column:1}]},{id:`3x2`,label:`3x2`,columns:2,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2}]},{id:`3x3`,label:`3x3`,columns:3,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3}]},{id:`4x1`,label:`4x1`,columns:1,rows:4,cells:[{id:`c11`,row:1,column:1},{id:`c21`,row:2,column:1},{id:`c31`,row:3,column:1},{id:`c41`,row:4,column:1}]},{id:`4x2`,label:`4x2`,columns:2,rows:4,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c41`,row:4,column:1},{id:`c42`,row:4,column:2}]},{id:`4x3`,label:`4x3`,columns:3,rows:4,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3},{id:`c41`,row:4,column:1},{id:`c42`,row:4,column:2},{id:`c43`,row:4,column:3}]},{id:`2x2-l`,label:`Большая слева + две справа`,columns:2,rows:2,cells:[{id:`left`,row:1,column:1,rowSpan:2},{id:`rt`,row:1,column:2},{id:`rb`,row:2,column:2}]},{id:`2x2-r`,label:`Две слева + большая справа`,columns:2,rows:2,cells:[{id:`lt`,row:1,column:1},{id:`lb`,row:2,column:1},{id:`right`,row:1,column:2,rowSpan:2}]},{id:`2x2-t`,label:`Широкая сверху + две снизу`,columns:2,rows:2,cells:[{id:`top`,row:1,column:1,columnSpan:2},{id:`bl`,row:2,column:1},{id:`br`,row:2,column:2}]},{id:`2x2-b`,label:`Две сверху + широкая снизу`,columns:2,rows:2,cells:[{id:`tl`,row:1,column:1},{id:`tr`,row:1,column:2},{id:`bottom`,row:2,column:1,columnSpan:2}]},{id:`3x2-t`,label:`Широкая сверху + 2x2`,columns:2,rows:3,cells:[{id:`top`,row:1,column:1,columnSpan:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2}]},{id:`3x2-b`,label:`2x2 + широкая снизу`,columns:2,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`bottom`,row:3,column:1,columnSpan:2}]},{id:`3x2-m`,label:`Широкая по центру`,columns:2,rows:3,cells:[{id:`tl`,row:1,column:1},{id:`tr`,row:1,column:2},{id:`middle`,row:2,column:1,columnSpan:2},{id:`bl`,row:3,column:1},{id:`br`,row:3,column:2}]},{id:`3x3-l`,label:`Большая слева + 2x3 справа`,columns:3,rows:3,cells:[{id:`left`,row:1,column:1,rowSpan:3},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3}]},{id:`3x3-r`,label:`2x3 слева + большая справа`,columns:3,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`right`,row:1,column:3,rowSpan:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2}]},{id:`3x3-t`,label:`Широкая сверху + 2x3`,columns:3,rows:3,cells:[{id:`top`,row:1,column:1,columnSpan:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3}]},{id:`3x3-b`,label:`2x3 + широкая снизу`,columns:3,rows:3,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`bottom`,row:3,column:1,columnSpan:3}]},{id:`4x2-t`,label:`Широкая сверху + 3x2`,columns:2,rows:4,cells:[{id:`top`,row:1,column:1,columnSpan:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c41`,row:4,column:1},{id:`c42`,row:4,column:2}]},{id:`4x2-b`,label:`3x2 + широкая снизу`,columns:2,rows:4,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`bottom`,row:4,column:1,columnSpan:2}]},{id:`4x3-t`,label:`Широкая сверху + 3x3`,columns:3,rows:4,cells:[{id:`top`,row:1,column:1,columnSpan:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3},{id:`c41`,row:4,column:1},{id:`c42`,row:4,column:2},{id:`c43`,row:4,column:3}]},{id:`4x3-b`,label:`3x3 + широкая снизу`,columns:3,rows:4,cells:[{id:`c11`,row:1,column:1},{id:`c12`,row:1,column:2},{id:`c13`,row:1,column:3},{id:`c21`,row:2,column:1},{id:`c22`,row:2,column:2},{id:`c23`,row:2,column:3},{id:`c31`,row:3,column:1},{id:`c32`,row:3,column:2},{id:`c33`,row:3,column:3},{id:`bottom`,row:4,column:1,columnSpan:3}]}]})))()}var C,w,T,E,D,O,k,A,j,M,N,P,F,I,L,R;function z(){return(z=e((()=>{C=`_959ulH`,w=`Ch-SZL`,T=`SmdPit`,E=`giOtGs`,D=`_57Tr0T`,O=`Tkhulr`,k=`VQlniu`,A=`wb39Kf`,j=`HGvQdT`,M=`rZuYyb`,N=`VrHnjN`,P=`vNV6Q2`,F=`koxYU-`,I=`k8xLa2`,L=`_5pd3Bb`,R={valueOverlay:C,triggerInput:w,triggerText:T,popup:E,popupLayout:D,popupBody:O,options:k,option:A,optionActive:j,optionSelected:M,previewCell:N,optionPreviewWrap:P,preview:F,previewPlaceholder:I,previewCompact:L}})))()}function B({preset:e,compact:t=!1}){return(0,U.jsx)(`span`,{className:r(R.preview,t&&R.previewCompact),style:y(e),"aria-hidden":`true`,"data-ui":`layout-picker-preview`,children:e.cells.map(t=>(0,U.jsx)(`span`,{className:R.previewCell,style:b(t)},`${e.id}:${t.id}`))})}function V({id:e,label:t,description:n,value:i,onChange:o,presets:s=x,disabled:c,getPresetDisabled:p,placeholder:h=W,showPlaceholder:g=!1,size:_,ariaLabel:y,className:b,triggerClassName:S,popupClassName:C,placement:w=`bottom-start`}){let T=(0,H.useRef)(null),[E,D]=(0,H.useState)(!1),O=s.findIndex(e=>e.id===i),k=O>=0?s[O]:void 0,A=k??s[0],j=k?.label??h,{activeIndex:M,context:N,floatingStyles:P,getFloatingProps:F,setReference:I,setFloating:L,setOptionRef:z,close:V,openList:G,toggleOpen:K,selectOption:q,selectActiveOption:J,handleReferenceKeyDown:Y,handleFloatingKeyDown:X,getOptionId:Z,getActiveOptionId:Q}=u({options:s,selectedIndex:O,open:E,onOpenChange:D,getOptionDisabled:p,onSelect:e=>o(e.id),disabled:c,placement:w,triggerMode:`display`}),$=f({mode:`display`,open:E,currentQuery:``,hasDisplayValue:k!==void 0,inputRef:T,openList:G,close:V,toggleOpen:K}),ee=e=>{T.current=e};return(0,U.jsx)(l,{id:e,label:t,description:n,disabled:c,size:_,className:b,children:({controlId:e,labelId:t,describedBy:n})=>{let i=`${e}-listbox`;return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(m,{ref:ee,rootRef:I,id:e,type:`button`,disabled:c,readOnly:!0,autoComplete:`off`,role:`combobox`,value:j,"aria-haspopup":`listbox`,"aria-expanded":E,"aria-controls":E?i:void 0,"aria-labelledby":t,"aria-describedby":n,"aria-autocomplete":`none`,"aria-activedescendant":E?Q(i):void 0,"aria-label":t?void 0:y??`Выбрать layout. Текущее значение: ${j}`,"data-ui":`layout-picker-trigger`,rootClassName:S,inputClassName:R.triggerInput,overlay:(0,U.jsxs)(`div`,{className:R.valueOverlay,children:[A?(0,U.jsx)(B,{preset:A,compact:!0}):(0,U.jsx)(`span`,{className:R.previewPlaceholder}),g?(0,U.jsx)(`span`,{className:r(R.triggerText,a.uiPlaceholder),"data-ui":`layout-picker-placeholder`,children:h}):null]}),endAdornment:(0,U.jsx)(v,{open:E,disabled:c,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,openAriaLabel:`Открыть список layout`,closeAriaLabel:`Закрыть список layout`}),onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{Y(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:J,enableSpaceActivation:!0})}}),(0,U.jsx)(d,{open:E,context:N,floatingStyles:P,listId:i,labelId:t,descriptionId:n,activeOptionId:Q(i),setFloating:L,getFloatingProps:F,onKeyDown:X,className:r(a.uiPopupOptions,R.popup,C),layoutClassName:R.popupLayout,bodyClassName:R.popupBody,children:(0,U.jsx)(`div`,{className:R.options,children:s.map((e,t)=>{let n=t===O,a=t===M,o=p?.(e)??!1,s=Z(i,t);return(0,U.jsx)(`button`,{id:s,ref:e=>z(t,e),type:`button`,role:`option`,tabIndex:-1,disabled:o,"aria-selected":n,"aria-disabled":o||void 0,"aria-label":e.description?`${e.label}. ${e.description}`:e.label,className:r(R.option,n&&R.optionSelected,a&&R.optionActive),"data-ui":`layout-picker-option`,"data-selected":n||void 0,onMouseDown:e=>e.preventDefault(),onClick:()=>q(e),children:(0,U.jsx)(`span`,{className:R.optionPreviewWrap,children:(0,U.jsx)(B,{preset:e})})},e.id)})})})]})}})}var H,U,W;function G(){return(G=e((()=>{H=t(),i(),c(),g(),_(),s(),p(),h(),o(),S(),z(),U=n(),W=`Выберите раскладку`,V.__docgenInfo={description:`Контрол выбора layout-пресета. Не хранит бизнес-логику содержимого ячеек.`,methods:[],displayName:`LayoutPicker`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите раскладку"`,computed:!1}},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},id:{required:!1,tsType:{name:`string`},description:``},presets:{required:!1,tsType:{name:`unknown`},description:``,defaultValue:{value:`[
2
2
  {
3
3
  id: "1x1",
4
4
  label: "1x1",
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-DaJPX7QV.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-S8USJ7mc.js";import{a as p,c as m,i as h,n as g,o as _,r as v,s as y,t as b}from"./LayoutPicker.stories-DzOns37u.js";function x(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(s,{of:_,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CYobheWD.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DQl3eTFV.js";import{a as p,c as m,i as h,n as g,o as _,r as v,s as y,t as b}from"./LayoutPicker.stories-Cbdev2zd.js";function x(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(s,{of:_,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,C.jsx)(u,{children:`LayoutPicker`}),`
3
3
  `,(0,C.jsx)(o,{children:`Контролируемый выбор layout-пресета со схематичным превью`}),`
4
4
  `,(0,C.jsxs)(t.p,{children:[(0,C.jsx)(t.code,{children:`LayoutPicker`}),` нужен для выбора схемы размещения независимых областей: графиков, панелей, секций дашборда или другого UI, где сама раскладка хранится во внешней модели.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-DaJPX7QV.js";import{i,n as a,r as o,t as s}from"./LayoutPicker-BBcQR4eE.js";var c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{c=`buT8ds`,l=`vDpJVR`,u=`-GMI1h`,d=`Xgkzn9`,f=`X--lo-`,p=`W5rEjx`,m=`BgilL7`,h=`ALGrVl`,g=`IrqK1d`,_={canvas:c,toolbar:l,summary:u,summaryItem:d,summaryValue:f,muted:p,layoutPreview:m,layoutCell:h,layoutCellTitle:g}})))()}var y=t({Controlled:()=>A,CustomPresets:()=>M,Disabled:()=>F,DisabledPresets:()=>N,InToolbar:()=>P,Placeholder:()=>j,__namedExportsOrder:()=>I,default:()=>k});function b(e,t){return t.find(t=>t.id===e)}function x({value:e,presets:t}){let n=b(e,t);return(0,T.jsxs)(`div`,{className:_.summary,"aria-live":`polite`,children:[(0,T.jsxs)(`div`,{className:_.summaryItem,children:[(0,T.jsx)(`span`,{children:`ID`}),(0,T.jsx)(`span`,{className:_.summaryValue,children:e||`не выбрано`})]}),(0,T.jsxs)(`div`,{className:_.summaryItem,children:[(0,T.jsx)(`span`,{children:`Название`}),(0,T.jsx)(`span`,{className:_.summaryValue,children:n?.label??`Layout не выбран`})]}),(0,T.jsxs)(`div`,{className:_.summaryItem,children:[(0,T.jsx)(`span`,{children:`Сетка`}),(0,T.jsx)(`span`,{className:_.summaryValue,children:n?`${n.columns} x ${n.rows}`:`нет данных`})]}),(0,T.jsxs)(`div`,{className:_.summaryItem,children:[(0,T.jsx)(`span`,{children:`Ячеек`}),(0,T.jsx)(`span`,{className:_.summaryValue,children:n?.cells.length??0})]})]})}function S({value:e,presets:t}){let n=b(e,t);if(!n)return null;let r=n.columns,i=n.rows,a=n.cells;return(0,T.jsx)(`div`,{className:_.layoutPreview,style:{gridTemplateColumns:`repeat(${r}, minmax(0, 1fr))`,gridTemplateRows:`repeat(${i}, minmax(0, 1fr))`},children:a.map((e,t)=>(0,T.jsxs)(`div`,{className:_.layoutCell,style:{gridColumn:`${e.column} / span ${e.columnSpan}`,gridRow:`${e.row} / span ${e.rowSpan}`},children:[(0,T.jsxs)(`span`,{className:_.layoutCellTitle,children:[`Область `,t+1]}),(0,T.jsxs)(`span`,{className:_.muted,children:[`Колонка `,e.column,`, строка `,e.row,`; span `,e.columnSpan,` x `,e.rowSpan]})]},e.id))})}function C(){let[e,t]=(0,w.useState)(`1x2`);return(0,T.jsxs)(`div`,{className:_.canvas,children:[(0,T.jsx)(`div`,{className:_.toolbar,children:(0,T.jsx)(s,{label:`Layout панели`,value:e,onChange:t,ariaLabel:`Выбрать layout панели`})}),(0,T.jsx)(x,{value:e,presets:o}),(0,T.jsx)(S,{value:e,presets:o})]})}var w,T,E,D,O,k,A,j,M,N,P,F,I;function L(){return(L=e((()=>{w=n(),i(),a(),v(),T=r(),{useArgs:E}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:D}=__STORYBOOK_MODULE_TEST__,O=[{id:`dashboard-summary`,label:`Сводка + детали`,description:`Один широкий блок сверху и две области детализации снизу.`,columns:2,rows:2,cells:[{id:`summary`,column:1,columnSpan:2,row:1,rowSpan:1},{id:`left-detail`,column:1,columnSpan:1,row:2,rowSpan:1},{id:`right-detail`,column:2,columnSpan:1,row:2,rowSpan:1}]},{id:`dashboard-main-aside`,label:`Основной блок + сайдбар`,description:`Большая рабочая область слева и вертикальная колонка справа.`,columns:3,rows:2,cells:[{id:`main`,column:1,columnSpan:2,row:1,rowSpan:2},{id:`aside-top`,column:3,columnSpan:1,row:1,rowSpan:1},{id:`aside-bottom`,column:3,columnSpan:1,row:2,rowSpan:1}]},{id:`dashboard-quad`,label:`Четыре равных блока`,description:`Плотная сетка для сравнения нескольких независимых виджетов.`,columns:2,rows:2,cells:[{id:`top-left`,column:1,columnSpan:1,row:1,rowSpan:1},{id:`top-right`,column:2,columnSpan:1,row:1,rowSpan:1},{id:`bottom-left`,column:1,columnSpan:1,row:2,rowSpan:1},{id:`bottom-right`,column:2,columnSpan:1,row:2,rowSpan:1}]}],k={title:`Shared/UI/LayoutPicker`,component:s,args:{label:`Layout панели`,description:`Выберите схему размещения областей.`,value:o[0].id,onChange:D(),presets:o,disabled:!1,placeholder:`Выберите layout`,showPlaceholder:!1,ariaLabel:`Выбрать layout`,placement:`bottom-start`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Контролируемый выбор layout-пресета со схематичным превью. Компонент хранит только UI-состояние popup и возвращает наружу ID выбранного пресета.`}}},argTypes:{id:{description:"ID кнопки выбора. Если не передан, компонент создаёт стабильный `useId`.",control:`text`},label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},value:{description:`ID текущего выбранного layout-пресета.`,control:`text`},onChange:{description:`Вызывается с ID выбранного layout-пресета.`,control:!1},presets:{description:"Список layout-пресетов. По умолчанию используется `DEFAULT_LAYOUT_PICKER_PRESETS`.",control:!1},disabled:{description:`Блокирует кнопку выбора и открытие popup.`,control:`boolean`},getPresetDisabled:{description:`Позволяет заблокировать отдельные пресеты внутри popup.`,control:!1},placeholder:{description:"Текст, который можно явно показать рядом с превью через `showPlaceholder`.",control:`text`},showPlaceholder:{description:"Показывает рядом с превью именно строку `placeholder`. По умолчанию trigger содержит только иконку.",control:`boolean`},ariaLabel:{description:`Доступное имя trigger-кнопки. Если не передано, строится из текущего значения.`,control:`text`},size:{description:"Размер поля из общего `UiBaseProps`.",control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},className:{description:`Дополнительный CSS-класс корневого контейнера.`,control:`text`},triggerClassName:{description:`Дополнительный CSS-класс trigger-кнопки.`,control:`text`},popupClassName:{description:`Дополнительный CSS-класс popup.`,control:`text`},placement:{description:`Позиционирование popup относительно trigger.`,control:`select`,options:[`bottom-start`,`bottom-end`,`top-start`,`top-end`,`right-start`,`left-start`]}}},A={args:{value:`2x1`},name:`Контролируемый выбор`,render:function(e){let[,t]=E(),n=e.presets??o;return(0,T.jsxs)(`div`,{className:_.canvas,children:[(0,T.jsx)(s,{...e,presets:n,onChange:n=>{e.onChange(n),t({value:n})}}),(0,T.jsx)(x,{value:e.value??``,presets:n})]})}},j={name:`Без выбранного значения`,render:e=>{let[t,n]=(0,w.useState)(``),r=e.presets??o;return(0,T.jsxs)(`div`,{className:_.canvas,children:[(0,T.jsx)(s,{...e,value:t,presets:r,placeholder:`Layout ещё не выбран`,showPlaceholder:!0,onChange:t=>{n(t),e.onChange(t)}}),(0,T.jsx)(x,{value:t,presets:r})]})},args:{value:``}},M={name:`Кастомные пресеты`,render:e=>{let[t,n]=(0,w.useState)(O[0].id);return(0,T.jsxs)(`div`,{className:_.canvas,children:[(0,T.jsx)(s,{...e,value:t,presets:O,ariaLabel:`Выбрать layout дашборда`,onChange:t=>{n(t),e.onChange(t)}}),(0,T.jsx)(x,{value:t,presets:O}),(0,T.jsx)(S,{value:t,presets:O})]})},args:{value:O[0].id,presets:O}},N={name:`Заблокированные пресеты`,render:e=>{let[t,n]=(0,w.useState)(`1x1`);return(0,T.jsxs)(`div`,{className:_.canvas,children:[(0,T.jsx)(s,{...e,value:t,getPresetDisabled:e=>e.id===`1x2`||e.id===`2x2-l`,onChange:t=>{n(t),e.onChange(t)}}),(0,T.jsx)(`div`,{className:_.muted,children:`Пресеты с двумя колонками в этом сценарии недоступны.`}),(0,T.jsx)(x,{value:t,presets:o})]})}},P={name:`В панели настройки`,render:()=>(0,T.jsx)(C,{})},F={name:`Заблокированный контрол`,args:{disabled:!0,value:`1x2`}},A.parameters={...A.parameters,docs:{...A.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CYobheWD.js";import{i,n as a,r as o,t as s}from"./LayoutPicker-C14HuoJT.js";var c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{c=`buT8ds`,l=`vDpJVR`,u=`-GMI1h`,d=`Xgkzn9`,f=`X--lo-`,p=`W5rEjx`,m=`BgilL7`,h=`ALGrVl`,g=`IrqK1d`,_={canvas:c,toolbar:l,summary:u,summaryItem:d,summaryValue:f,muted:p,layoutPreview:m,layoutCell:h,layoutCellTitle:g}})))()}var y=t({Controlled:()=>A,CustomPresets:()=>M,Disabled:()=>F,DisabledPresets:()=>N,InToolbar:()=>P,Placeholder:()=>j,__namedExportsOrder:()=>I,default:()=>k});function b(e,t){return t.find(t=>t.id===e)}function x({value:e,presets:t}){let n=b(e,t);return(0,T.jsxs)(`div`,{className:_.summary,"aria-live":`polite`,children:[(0,T.jsxs)(`div`,{className:_.summaryItem,children:[(0,T.jsx)(`span`,{children:`ID`}),(0,T.jsx)(`span`,{className:_.summaryValue,children:e||`не выбрано`})]}),(0,T.jsxs)(`div`,{className:_.summaryItem,children:[(0,T.jsx)(`span`,{children:`Название`}),(0,T.jsx)(`span`,{className:_.summaryValue,children:n?.label??`Layout не выбран`})]}),(0,T.jsxs)(`div`,{className:_.summaryItem,children:[(0,T.jsx)(`span`,{children:`Сетка`}),(0,T.jsx)(`span`,{className:_.summaryValue,children:n?`${n.columns} x ${n.rows}`:`нет данных`})]}),(0,T.jsxs)(`div`,{className:_.summaryItem,children:[(0,T.jsx)(`span`,{children:`Ячеек`}),(0,T.jsx)(`span`,{className:_.summaryValue,children:n?.cells.length??0})]})]})}function S({value:e,presets:t}){let n=b(e,t);if(!n)return null;let r=n.columns,i=n.rows,a=n.cells;return(0,T.jsx)(`div`,{className:_.layoutPreview,style:{gridTemplateColumns:`repeat(${r}, minmax(0, 1fr))`,gridTemplateRows:`repeat(${i}, minmax(0, 1fr))`},children:a.map((e,t)=>(0,T.jsxs)(`div`,{className:_.layoutCell,style:{gridColumn:`${e.column} / span ${e.columnSpan}`,gridRow:`${e.row} / span ${e.rowSpan}`},children:[(0,T.jsxs)(`span`,{className:_.layoutCellTitle,children:[`Область `,t+1]}),(0,T.jsxs)(`span`,{className:_.muted,children:[`Колонка `,e.column,`, строка `,e.row,`; span `,e.columnSpan,` x `,e.rowSpan]})]},e.id))})}function C(){let[e,t]=(0,w.useState)(`1x2`);return(0,T.jsxs)(`div`,{className:_.canvas,children:[(0,T.jsx)(`div`,{className:_.toolbar,children:(0,T.jsx)(s,{label:`Layout панели`,value:e,onChange:t,ariaLabel:`Выбрать layout панели`})}),(0,T.jsx)(x,{value:e,presets:o}),(0,T.jsx)(S,{value:e,presets:o})]})}var w,T,E,D,O,k,A,j,M,N,P,F,I;function L(){return(L=e((()=>{w=n(),i(),a(),v(),T=r(),{useArgs:E}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:D}=__STORYBOOK_MODULE_TEST__,O=[{id:`dashboard-summary`,label:`Сводка + детали`,description:`Один широкий блок сверху и две области детализации снизу.`,columns:2,rows:2,cells:[{id:`summary`,column:1,columnSpan:2,row:1,rowSpan:1},{id:`left-detail`,column:1,columnSpan:1,row:2,rowSpan:1},{id:`right-detail`,column:2,columnSpan:1,row:2,rowSpan:1}]},{id:`dashboard-main-aside`,label:`Основной блок + сайдбар`,description:`Большая рабочая область слева и вертикальная колонка справа.`,columns:3,rows:2,cells:[{id:`main`,column:1,columnSpan:2,row:1,rowSpan:2},{id:`aside-top`,column:3,columnSpan:1,row:1,rowSpan:1},{id:`aside-bottom`,column:3,columnSpan:1,row:2,rowSpan:1}]},{id:`dashboard-quad`,label:`Четыре равных блока`,description:`Плотная сетка для сравнения нескольких независимых виджетов.`,columns:2,rows:2,cells:[{id:`top-left`,column:1,columnSpan:1,row:1,rowSpan:1},{id:`top-right`,column:2,columnSpan:1,row:1,rowSpan:1},{id:`bottom-left`,column:1,columnSpan:1,row:2,rowSpan:1},{id:`bottom-right`,column:2,columnSpan:1,row:2,rowSpan:1}]}],k={title:`Shared/UI/LayoutPicker`,component:s,args:{label:`Layout панели`,description:`Выберите схему размещения областей.`,value:o[0].id,onChange:D(),presets:o,disabled:!1,placeholder:`Выберите layout`,showPlaceholder:!1,ariaLabel:`Выбрать layout`,placement:`bottom-start`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Контролируемый выбор layout-пресета со схематичным превью. Компонент хранит только UI-состояние popup и возвращает наружу ID выбранного пресета.`}}},argTypes:{id:{description:"ID кнопки выбора. Если не передан, компонент создаёт стабильный `useId`.",control:`text`},label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},value:{description:`ID текущего выбранного layout-пресета.`,control:`text`},onChange:{description:`Вызывается с ID выбранного layout-пресета.`,control:!1},presets:{description:"Список layout-пресетов. По умолчанию используется `DEFAULT_LAYOUT_PICKER_PRESETS`.",control:!1},disabled:{description:`Блокирует кнопку выбора и открытие popup.`,control:`boolean`},getPresetDisabled:{description:`Позволяет заблокировать отдельные пресеты внутри popup.`,control:!1},placeholder:{description:"Текст, который можно явно показать рядом с превью через `showPlaceholder`.",control:`text`},showPlaceholder:{description:"Показывает рядом с превью именно строку `placeholder`. По умолчанию trigger содержит только иконку.",control:`boolean`},ariaLabel:{description:`Доступное имя trigger-кнопки. Если не передано, строится из текущего значения.`,control:`text`},size:{description:"Размер поля из общего `UiBaseProps`.",control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},className:{description:`Дополнительный CSS-класс корневого контейнера.`,control:`text`},triggerClassName:{description:`Дополнительный CSS-класс trigger-кнопки.`,control:`text`},popupClassName:{description:`Дополнительный CSS-класс popup.`,control:`text`},placement:{description:`Позиционирование popup относительно trigger.`,control:`select`,options:[`bottom-start`,`bottom-end`,`top-start`,`top-end`,`right-start`,`left-start`]}}},A={args:{value:`2x1`},name:`Контролируемый выбор`,render:function(e){let[,t]=E(),n=e.presets??o;return(0,T.jsxs)(`div`,{className:_.canvas,children:[(0,T.jsx)(s,{...e,presets:n,onChange:n=>{e.onChange(n),t({value:n})}}),(0,T.jsx)(x,{value:e.value??``,presets:n})]})}},j={name:`Без выбранного значения`,render:e=>{let[t,n]=(0,w.useState)(``),r=e.presets??o;return(0,T.jsxs)(`div`,{className:_.canvas,children:[(0,T.jsx)(s,{...e,value:t,presets:r,placeholder:`Layout ещё не выбран`,showPlaceholder:!0,onChange:t=>{n(t),e.onChange(t)}}),(0,T.jsx)(x,{value:t,presets:r})]})},args:{value:``}},M={name:`Кастомные пресеты`,render:e=>{let[t,n]=(0,w.useState)(O[0].id);return(0,T.jsxs)(`div`,{className:_.canvas,children:[(0,T.jsx)(s,{...e,value:t,presets:O,ariaLabel:`Выбрать layout дашборда`,onChange:t=>{n(t),e.onChange(t)}}),(0,T.jsx)(x,{value:t,presets:O}),(0,T.jsx)(S,{value:t,presets:O})]})},args:{value:O[0].id,presets:O}},N={name:`Заблокированные пресеты`,render:e=>{let[t,n]=(0,w.useState)(`1x1`);return(0,T.jsxs)(`div`,{className:_.canvas,children:[(0,T.jsx)(s,{...e,value:t,getPresetDisabled:e=>e.id===`1x2`||e.id===`2x2-l`,onChange:t=>{n(t),e.onChange(t)}}),(0,T.jsx)(`div`,{className:_.muted,children:`Пресеты с двумя колонками в этом сценарии недоступны.`}),(0,T.jsx)(x,{value:t,presets:o})]})}},P={name:`В панели настройки`,render:()=>(0,T.jsx)(C,{})},F={name:`Заблокированный контрол`,args:{disabled:!0,value:`1x2`}},A.parameters={...A.parameters,docs:{...A.parameters?.docs,source:{originalSource:`{
2
2
  args: {
3
3
  value: "2x1"
4
4
  },
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-DaJPX7QV.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-S8USJ7mc.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Listbox.stories-B95lW5nW.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:_,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CYobheWD.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DQl3eTFV.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Listbox.stories-hZtjBKIX.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:_,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(u,{children:`Listbox`}),`
3
3
  `,(0,x.jsx)(o,{children:`Список выбора для single- и multi-select сценариев, кастомного рендера элементов и блокированного состояния`}),`
4
4
  `,(0,x.jsx)(t.p,{children:`Listbox уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./check-Cceu88S-.js";import{n as i}from"./iframe-DaJPX7QV.js";import{a,i as o,n as s,r as c,s as l,t as u}from"./utils-DUM89eIj.js";import{n as d,t as f}from"./ui.module-B48csOVs.js";function p(e,t,n){if(n){if(Array.isArray(t)&&t.length>0){let n=e.findIndex(e=>t.includes(e.value)&&!e.disabled);if(n>=0)return n}return c(e,_)}if(t!==void 0){let n=e.findIndex(e=>e.value===t&&!e.disabled);if(n>=0)return n}return c(e,_)}function m(e){let{value:t,defaultValue:n,multiple:i,disabled:o,focusOnMount:f,renderItem:m,getKey:v,options:y,onChange:b,id:x,...S}=e,C=t!==void 0,w=(0,h.useId)(),T=x??`${w}-listbox`,[E,D]=(0,h.useState)(n),O=(0,h.useRef)(null),[k,A]=(0,h.useState)(()=>p(y,t??n,i)),j=(0,h.useRef)(!1),M=(0,h.useMemo)(()=>(C?t:E)??(i?[]:null),[E,C,i,t]),N=k,P=t=>{if(o||t.disabled)return;let n;if(e.multiple){let r=Array.isArray(M)?M:[];n=r.includes(t.value)?r.filter(e=>e!==t.value):[...r,t.value],e.onChange?.(n,t)}else n=t.value,e.onChange?.(n,t);C||D(n)};return(0,h.useEffect)(()=>{if(!j.current)return;j.current=!1;let e=O.current?.querySelectorAll(`[role="option"]`)[N];e&&e.scrollIntoView({block:`nearest`})},[N]),(0,h.useLayoutEffect)(()=>{f&&O.current?.focus()},[f]),(0,g.jsx)(`ul`,{ref:O,id:T,role:`listbox`,"aria-multiselectable":i||void 0,"aria-activedescendant":N>=0?`${T}-option-${N}`:void 0,onKeyDown:e=>{if(!o){if(e.key===`ArrowDown`)e.preventDefault(),j.current=!0,A(e=>u(y,e,1,_));else if(e.key===`ArrowUp`)e.preventDefault(),j.current=!0,A(e=>u(y,e,-1,_));else if(e.key===`Home`)e.preventDefault(),j.current=!0,A(c(y,_));else if(e.key===`End`)e.preventDefault(),j.current=!0,A(l(y,_));else if(s(e,()=>{let e=y[N];e&&P(e)}))return}},...S,"aria-disabled":o||void 0,tabIndex:o?-1:0,className:a(d.uiPanel,`scrollable surface1`,o&&d.disabled),children:y.map((e,t)=>{let n=i?Array.isArray(M)&&M.includes(e.value):M===e.value,s=t===N;return(0,g.jsxs)(`li`,{id:`${T}-option-${t}`,role:`option`,"aria-selected":n,"aria-disabled":o||e.disabled||void 0,onMouseDown:n=>{n.preventDefault(),!(o||e.disabled)&&(A(t),P(e))},tabIndex:-1,className:a(d.uiPopupOption,(o||e.disabled)&&d.disabled,s&&d.uiPopupOptionActive,n&&d.selected),children:[n?(0,g.jsx)(r,{className:d.uiPopupOptionIcon}):(0,g.jsx)(`span`,{className:d.uiPopupOptionIcon}),(0,g.jsx)(`div`,{children:m?m(e,n,s):e.label??String(e.value)})]},v?v(e,t):t)})})}var h,g,_;function v(){return(v=e((()=>{h=t(),o(),n(),f(),g=i(),_=e=>e.disabled===!0,m.__docgenInfo={description:``,methods:[],displayName:`Listbox`}})))()}export{v as n,m as t};
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./check-D-psTYia.js";import{n as i}from"./iframe-CYobheWD.js";import{a,i as o,n as s,r as c,s as l,t as u}from"./utils-DUM89eIj.js";import{n as d,t as f}from"./ui.module-CHEKb9Cb.js";function p(e,t,n){if(n){if(Array.isArray(t)&&t.length>0){let n=e.findIndex(e=>t.includes(e.value)&&!e.disabled);if(n>=0)return n}return c(e,_)}if(t!==void 0){let n=e.findIndex(e=>e.value===t&&!e.disabled);if(n>=0)return n}return c(e,_)}function m(e){let{value:t,defaultValue:n,multiple:i,disabled:o,focusOnMount:f,renderItem:m,getKey:v,options:y,onChange:b,id:x,...S}=e,C=t!==void 0,w=(0,h.useId)(),T=x??`${w}-listbox`,[E,D]=(0,h.useState)(n),O=(0,h.useRef)(null),[k,A]=(0,h.useState)(()=>p(y,t??n,i)),j=(0,h.useRef)(!1),M=(0,h.useMemo)(()=>(C?t:E)??(i?[]:null),[E,C,i,t]),N=k,P=t=>{if(o||t.disabled)return;let n;if(e.multiple){let r=Array.isArray(M)?M:[];n=r.includes(t.value)?r.filter(e=>e!==t.value):[...r,t.value],e.onChange?.(n,t)}else n=t.value,e.onChange?.(n,t);C||D(n)};return(0,h.useEffect)(()=>{if(!j.current)return;j.current=!1;let e=O.current?.querySelectorAll(`[role="option"]`)[N];e&&e.scrollIntoView({block:`nearest`})},[N]),(0,h.useLayoutEffect)(()=>{f&&O.current?.focus()},[f]),(0,g.jsx)(`ul`,{ref:O,id:T,role:`listbox`,"aria-multiselectable":i||void 0,"aria-activedescendant":N>=0?`${T}-option-${N}`:void 0,onKeyDown:e=>{if(!o){if(e.key===`ArrowDown`)e.preventDefault(),j.current=!0,A(e=>u(y,e,1,_));else if(e.key===`ArrowUp`)e.preventDefault(),j.current=!0,A(e=>u(y,e,-1,_));else if(e.key===`Home`)e.preventDefault(),j.current=!0,A(c(y,_));else if(e.key===`End`)e.preventDefault(),j.current=!0,A(l(y,_));else if(s(e,()=>{let e=y[N];e&&P(e)}))return}},...S,"aria-disabled":o||void 0,tabIndex:o?-1:0,className:a(d.uiPanel,`scrollable surface1`,o&&d.disabled),children:y.map((e,t)=>{let n=i?Array.isArray(M)&&M.includes(e.value):M===e.value,s=t===N;return(0,g.jsxs)(`li`,{id:`${T}-option-${t}`,role:`option`,"aria-selected":n,"aria-disabled":o||e.disabled||void 0,onMouseDown:n=>{n.preventDefault(),!(o||e.disabled)&&(A(t),P(e))},tabIndex:-1,className:a(d.uiPopupOption,(o||e.disabled)&&d.disabled,s&&d.uiPopupOptionActive,n&&d.selected),children:[n?(0,g.jsx)(r,{className:d.uiPopupOptionIcon}):(0,g.jsx)(`span`,{className:d.uiPopupOptionIcon}),(0,g.jsx)(`div`,{children:m?m(e,n,s):e.label??String(e.value)})]},v?v(e,t):t)})})}var h,g,_;function v(){return(v=e((()=>{h=t(),o(),n(),f(),g=i(),_=e=>e.disabled===!0,m.__docgenInfo={description:``,methods:[],displayName:`Listbox`}})))()}export{v as n,m as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-DaJPX7QV.js";import{n as i,t as a}from"./Listbox-xBsSzB7c.js";var o=t({CustomRender:()=>p,Disabled:()=>m,MultiSelect:()=>f,SingleSelect:()=>d,__namedExportsOrder:()=>h,default:()=>u});function s(e){return e.multiple?(0,l.jsx)(a,{...e,multiple:!0}):(0,l.jsx)(a,{...e})}var c,l,u,d,f,p,m,h;function g(){return(g=e((()=>{c=n(),i(),l=r(),u={title:`Shared/UI/Listbox`,component:s,args:{options:[{id:`low`,label:`Низкий`},{id:`medium`,label:`Средний`},{id:`high`,label:`Высокий`},{id:`critical`,label:`Критический`,disabled:!0}],multiple:!1,value:`medium`,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{options:{description:`Массив доступных опций списка.`,control:!1},multiple:{description:`Режим множественного выбора.`,control:`boolean`},value:{description:`Текущее выбранное значение (или массив значений).`,control:!1},defaultValue:{description:`Начальное значение для uncontrolled-режима.`,control:!1},disabled:{description:`Блокирует фокусировку, навигацию и изменение выбора.`,control:`boolean`},onChange:{description:`Вызывается при выборе опции.`,control:!1},focusOnMount:{description:`Автофокус списка при монтировании.`,control:`boolean`},renderItem:{description:`Кастомный рендер строки списка.`,control:!1},getKey:{description:`Функция генерации ключа для опции.`,control:!1},className:{description:`Дополнительный CSS-класс.`,control:`text`}}},d={render:e=>{let[t,n]=(0,c.useState)(`medium`);return(0,l.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:280},children:[(0,l.jsx)(s,{...e,multiple:!1,value:t,onChange:e=>{typeof e==`string`&&n(e)}}),(0,l.jsxs)(`div`,{children:[`Выбрано: `,t]})]})}},f={render:e=>{let[t,n]=(0,c.useState)([`low`,`high`]);return(0,l.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:320},children:[(0,l.jsx)(s,{...e,multiple:!0,value:t,onChange:e=>{Array.isArray(e)&&n(e)}}),(0,l.jsxs)(`div`,{children:[`Выбрано: `,t.join(`, `)||`пусто`]})]})},args:{multiple:!0}},p={render:e=>{let[t,n]=(0,c.useState)(`low`);return(0,l.jsx)(s,{...e,value:t,onChange:e=>{typeof e==`string`&&n(e)},renderItem:(e,t,n)=>(0,l.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,width:`100%`,opacity:e.disabled?.5:1},children:[(0,l.jsx)(`span`,{children:e.label}),(0,l.jsx)(`span`,{children:t?`Выбрано`:n?`Фокус`:``})]})})}},m={args:{disabled:!0,value:`medium`},render:e=>(0,l.jsx)(s,{...e})},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CYobheWD.js";import{n as i,t as a}from"./Listbox-Mqn7EoPt.js";var o=t({CustomRender:()=>p,Disabled:()=>m,MultiSelect:()=>f,SingleSelect:()=>d,__namedExportsOrder:()=>h,default:()=>u});function s(e){return e.multiple?(0,l.jsx)(a,{...e,multiple:!0}):(0,l.jsx)(a,{...e})}var c,l,u,d,f,p,m,h;function g(){return(g=e((()=>{c=n(),i(),l=r(),u={title:`Shared/UI/Listbox`,component:s,args:{options:[{id:`low`,label:`Низкий`},{id:`medium`,label:`Средний`},{id:`high`,label:`Высокий`},{id:`critical`,label:`Критический`,disabled:!0}],multiple:!1,value:`medium`,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{options:{description:`Массив доступных опций списка.`,control:!1},multiple:{description:`Режим множественного выбора.`,control:`boolean`},value:{description:`Текущее выбранное значение (или массив значений).`,control:!1},defaultValue:{description:`Начальное значение для uncontrolled-режима.`,control:!1},disabled:{description:`Блокирует фокусировку, навигацию и изменение выбора.`,control:`boolean`},onChange:{description:`Вызывается при выборе опции.`,control:!1},focusOnMount:{description:`Автофокус списка при монтировании.`,control:`boolean`},renderItem:{description:`Кастомный рендер строки списка.`,control:!1},getKey:{description:`Функция генерации ключа для опции.`,control:!1},className:{description:`Дополнительный CSS-класс.`,control:`text`}}},d={render:e=>{let[t,n]=(0,c.useState)(`medium`);return(0,l.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:280},children:[(0,l.jsx)(s,{...e,multiple:!1,value:t,onChange:e=>{typeof e==`string`&&n(e)}}),(0,l.jsxs)(`div`,{children:[`Выбрано: `,t]})]})}},f={render:e=>{let[t,n]=(0,c.useState)([`low`,`high`]);return(0,l.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:320},children:[(0,l.jsx)(s,{...e,multiple:!0,value:t,onChange:e=>{Array.isArray(e)&&n(e)}}),(0,l.jsxs)(`div`,{children:[`Выбрано: `,t.join(`, `)||`пусто`]})]})},args:{multiple:!0}},p={render:e=>{let[t,n]=(0,c.useState)(`low`);return(0,l.jsx)(s,{...e,value:t,onChange:e=>{typeof e==`string`&&n(e)},renderItem:(e,t,n)=>(0,l.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,width:`100%`,opacity:e.disabled?.5:1},children:[(0,l.jsx)(`span`,{children:e.label}),(0,l.jsx)(`span`,{children:t?`Выбрано`:n?`Фокус`:``})]})})}},m={args:{disabled:!0,value:`medium`},render:e=>(0,l.jsx)(s,{...e})},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
2
2
  render: args => {
3
3
  const [value, setValue] = useState<string>("medium");
4
4
  return <div style={{
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-DaJPX7QV.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-S8USJ7mc.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./Modal.stories-DXQpo-2P.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:h,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CYobheWD.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DQl3eTFV.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./Modal.stories-W1kjdQpw.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:h,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,S.jsx)(u,{children:`Modal`}),`
3
3
  `,(0,S.jsx)(o,{children:`Составная модалка с контентом, toolbar и footer для пользовательских диалоговых сценариев`}),`
4
4
  `,(0,S.jsx)(t.p,{children:`Modal уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-DaJPX7QV.js";import{n as i,t as a}from"./Button-2-1lrrp0.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./ModalManagerProvider-CygTKozo.js";import{c as p,t as m}from"./Input-TNrA13az.js";var h=t({Controlled:()=>x,ScrollableContent:()=>C,Sizes:()=>w,StackedModals:()=>T,WithToolbarAndFooter:()=>S,__namedExportsOrder:()=>E,default:()=>b});function g({children:e}){return(0,y.jsx)(`div`,{style:{minHeight:`60dvh`,padding:24,display:`flex`,alignItems:`center`,justifyContent:`center`},children:e})}function _(){let[e,t]=(0,v.useState)(`Алексей`),[n,r]=(0,v.useState)(`Департамент автоматизации бизнеса`);return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:16},children:[(0,y.jsx)(m,{label:`Имя`,value:e,onChange:t,placeholder:`Введите имя`}),(0,y.jsx)(m,{label:`Подразделение`,value:n,onChange:r,placeholder:`Введите подразделение`}),(0,y.jsxs)(`div`,{style:{padding:12,borderRadius:8,background:`var(--surface-1)`,border:`1px solid var(--border-1)`},children:[`Текущие значения: `,e||`не указано`,`, `,n||`не указано`]})]})}var v,y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{v=n(),i(),p(),d(),c(),y=r(),b={title:`Shared/UI/Modal`,component:u,parameters:{atomicCanvas:!0,layout:`fullscreen`,docs:{description:{component:"Композиционная модалка с `Toolbar`, `Content` и `Footer`, поддержкой focus trap, возврата фокуса, закрытия по `Escape` и менеджером стека через `ModalManagerProvider`."}}},decorators:[e=>(0,y.jsx)(f,{children:(0,y.jsx)(g,{children:e()})})],args:{isOpen:!1,title:`Редактирование профиля`,size:`md`,height:void 0,onClose:()=>{},children:(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(s,{children:(0,y.jsx)(_,{})}),(0,y.jsxs)(o,{children:[(0,y.jsx)(a,{variant:`transparent`,children:`Отмена`}),(0,y.jsx)(a,{children:`Сохранить`})]})]})},argTypes:{isOpen:{description:`Управляет видимостью модального окна.`,control:`boolean`},title:{description:`Заголовок модального окна.`,control:`text`},size:{description:`Предустановленный размер модального окна.`,control:`inline-radio`,options:[`sm`,`md`,`lg`,`xl`,`inside`]},height:{description:`Явная высота body-области модалки.`,control:`text`},onClose:{description:"Вызывается при закрытии по кнопке, `Escape` или пользовательскому действию.",control:!1},children:{description:"Композиция из `ModalToolbar`, `ModalContent`, `ModalFooter`.",control:!1}}},x={name:`Управляемая модалка`,render:e=>{let[t,n]=(0,v.useState)(!1);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(a,{onClick:()=>n(!0),children:`Открыть модалку`}),(0,y.jsxs)(u,{...e,isOpen:t,onClose:()=>n(!1),children:[(0,y.jsx)(s,{children:(0,y.jsx)(_,{})}),(0,y.jsxs)(o,{children:[(0,y.jsx)(a,{variant:`transparent`,onClick:()=>n(!1),children:`Отмена`}),(0,y.jsx)(a,{onClick:()=>n(!1),children:`Сохранить`})]})]})]})}},S={name:`Полная композиция`,render:e=>{let[t,n]=(0,v.useState)(!1);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(a,{onClick:()=>n(!0),children:`Открыть сценарий редактирования`}),(0,y.jsxs)(u,{...e,isOpen:t,onClose:()=>n(!1),height:`min(34rem, 70dvh)`,children:[(0,y.jsx)(l,{children:(0,y.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12,padding:12,borderRadius:8,background:`var(--surface-1)`,border:`1px solid var(--border-1)`},children:[(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{style:{fontWeight:600},children:`Черновик обновлён автоматически`}),(0,y.jsx)(`div`,{style:{opacity:.72},children:`Последнее сохранение: 2 минуты назад`})]}),(0,y.jsx)(a,{variant:`transparent`,children:`Сбросить`})]})}),(0,y.jsx)(s,{children:(0,y.jsx)(_,{})}),(0,y.jsxs)(o,{children:[(0,y.jsx)(a,{variant:`transparent`,onClick:()=>n(!1),children:`Отмена`}),(0,y.jsx)(a,{variant:`success`,onClick:()=>n(!1),children:`Применить`})]})]})]})}},C={name:`Длинный контент`,render:e=>{let[t,n]=(0,v.useState)(!1);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(a,{onClick:()=>n(!0),children:`Открыть длинный контент`}),(0,y.jsxs)(u,{...e,isOpen:t,onClose:()=>n(!1),size:`lg`,height:`min(38rem, 75dvh)`,title:`Журнал изменений`,children:[(0,y.jsx)(s,{children:(0,y.jsx)(`div`,{style:{display:`grid`,gap:12},children:Array.from({length:18},(e,t)=>(0,y.jsxs)(`div`,{style:{padding:12,borderRadius:8,border:`1px solid var(--border-1)`,background:`var(--surface-1)`},children:[(0,y.jsxs)(`div`,{style:{fontWeight:600},children:[`Событие #`,t+1]}),(0,y.jsx)(`div`,{style:{opacity:.72},children:`Пользователь обновил настройки карточки, изменил состав полей и подтвердил сохранение конфигурации.`})]},t))})}),(0,y.jsx)(o,{children:(0,y.jsx)(a,{onClick:()=>n(!1),children:`Закрыть`})})]})]})}},w={name:`Размеры`,render:()=>{let[e,t]=(0,v.useState)(null);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:12,justifyContent:`center`},children:[`sm`,`md`,`lg`,`xl`,`inside`].map(e=>(0,y.jsx)(a,{variant:`transparent`,onClick:()=>t(e),children:e.toUpperCase()},e))}),e&&(0,y.jsxs)(u,{isOpen:!0,onClose:()=>t(null),size:e,title:`Размер ${e.toUpperCase()}`,children:[(0,y.jsx)(s,{children:(0,y.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,y.jsx)(`div`,{children:`Этот сценарий помогает быстро сравнить ширину и поведение модалки для разных размеров.`}),(0,y.jsx)(`div`,{style:{opacity:.72},children:"Проверьте отступы, читабельность и поведение при `Escape`."})]})}),(0,y.jsx)(o,{children:(0,y.jsx)(a,{onClick:()=>t(null),children:`Понятно`})})]})]})}},T={name:`Стек модалок`,render:e=>{let[t,n]=(0,v.useState)(!1),[r,i]=(0,v.useState)(!1);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(a,{onClick:()=>n(!0),children:`Открыть первую модалку`}),(0,y.jsxs)(u,{...e,isOpen:t,onClose:()=>{i(!1),n(!1)},size:`lg`,title:`Первая модалка`,children:[(0,y.jsx)(s,{children:(0,y.jsxs)(`div`,{style:{display:`grid`,gap:16},children:[(0,y.jsx)(`div`,{children:"Откройте вторую модалку и проверьте, что `Escape` закрывает только верхний слой."}),(0,y.jsx)(a,{variant:`transparent`,onClick:()=>i(!0),children:`Открыть вторую модалку`})]})}),(0,y.jsx)(o,{children:(0,y.jsx)(a,{variant:`transparent`,onClick:()=>n(!1),children:`Закрыть первую`})})]}),(0,y.jsxs)(u,{isOpen:r,onClose:()=>i(!1),size:`sm`,title:`Вторая модалка`,children:[(0,y.jsx)(s,{children:(0,y.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,y.jsx)(`div`,{children:`Эта модалка должна считаться верхней в стеке.`}),(0,y.jsx)(m,{label:`Короткое поле`,value:`Фокус внутри`,onChange:()=>{}})]})}),(0,y.jsx)(o,{children:(0,y.jsx)(a,{onClick:()=>i(!1),children:`Закрыть вторую`})})]})]})}},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CYobheWD.js";import{n as i,t as a}from"./Button-G_ZnGyXY.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./ModalManagerProvider-CDpI_bMR.js";import{c as p,t as m}from"./Input-g2XrzU2e.js";var h=t({Controlled:()=>x,ScrollableContent:()=>C,Sizes:()=>w,StackedModals:()=>T,WithToolbarAndFooter:()=>S,__namedExportsOrder:()=>E,default:()=>b});function g({children:e}){return(0,y.jsx)(`div`,{style:{minHeight:`60dvh`,padding:24,display:`flex`,alignItems:`center`,justifyContent:`center`},children:e})}function _(){let[e,t]=(0,v.useState)(`Алексей`),[n,r]=(0,v.useState)(`Департамент автоматизации бизнеса`);return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:16},children:[(0,y.jsx)(m,{label:`Имя`,value:e,onChange:t,placeholder:`Введите имя`}),(0,y.jsx)(m,{label:`Подразделение`,value:n,onChange:r,placeholder:`Введите подразделение`}),(0,y.jsxs)(`div`,{style:{padding:12,borderRadius:8,background:`var(--surface-1)`,border:`1px solid var(--border-1)`},children:[`Текущие значения: `,e||`не указано`,`, `,n||`не указано`]})]})}var v,y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{v=n(),i(),p(),d(),c(),y=r(),b={title:`Shared/UI/Modal`,component:u,parameters:{atomicCanvas:!0,layout:`fullscreen`,docs:{description:{component:"Композиционная модалка с `Toolbar`, `Content` и `Footer`, поддержкой focus trap, возврата фокуса, закрытия по `Escape` и менеджером стека через `ModalManagerProvider`."}}},decorators:[e=>(0,y.jsx)(f,{children:(0,y.jsx)(g,{children:e()})})],args:{isOpen:!1,title:`Редактирование профиля`,size:`md`,height:void 0,onClose:()=>{},children:(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(s,{children:(0,y.jsx)(_,{})}),(0,y.jsxs)(o,{children:[(0,y.jsx)(a,{variant:`transparent`,children:`Отмена`}),(0,y.jsx)(a,{children:`Сохранить`})]})]})},argTypes:{isOpen:{description:`Управляет видимостью модального окна.`,control:`boolean`},title:{description:`Заголовок модального окна.`,control:`text`},size:{description:`Предустановленный размер модального окна.`,control:`inline-radio`,options:[`sm`,`md`,`lg`,`xl`,`inside`]},height:{description:`Явная высота body-области модалки.`,control:`text`},onClose:{description:"Вызывается при закрытии по кнопке, `Escape` или пользовательскому действию.",control:!1},children:{description:"Композиция из `ModalToolbar`, `ModalContent`, `ModalFooter`.",control:!1}}},x={name:`Управляемая модалка`,render:e=>{let[t,n]=(0,v.useState)(!1);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(a,{onClick:()=>n(!0),children:`Открыть модалку`}),(0,y.jsxs)(u,{...e,isOpen:t,onClose:()=>n(!1),children:[(0,y.jsx)(s,{children:(0,y.jsx)(_,{})}),(0,y.jsxs)(o,{children:[(0,y.jsx)(a,{variant:`transparent`,onClick:()=>n(!1),children:`Отмена`}),(0,y.jsx)(a,{onClick:()=>n(!1),children:`Сохранить`})]})]})]})}},S={name:`Полная композиция`,render:e=>{let[t,n]=(0,v.useState)(!1);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(a,{onClick:()=>n(!0),children:`Открыть сценарий редактирования`}),(0,y.jsxs)(u,{...e,isOpen:t,onClose:()=>n(!1),height:`min(34rem, 70dvh)`,children:[(0,y.jsx)(l,{children:(0,y.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12,padding:12,borderRadius:8,background:`var(--surface-1)`,border:`1px solid var(--border-1)`},children:[(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{style:{fontWeight:600},children:`Черновик обновлён автоматически`}),(0,y.jsx)(`div`,{style:{opacity:.72},children:`Последнее сохранение: 2 минуты назад`})]}),(0,y.jsx)(a,{variant:`transparent`,children:`Сбросить`})]})}),(0,y.jsx)(s,{children:(0,y.jsx)(_,{})}),(0,y.jsxs)(o,{children:[(0,y.jsx)(a,{variant:`transparent`,onClick:()=>n(!1),children:`Отмена`}),(0,y.jsx)(a,{variant:`success`,onClick:()=>n(!1),children:`Применить`})]})]})]})}},C={name:`Длинный контент`,render:e=>{let[t,n]=(0,v.useState)(!1);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(a,{onClick:()=>n(!0),children:`Открыть длинный контент`}),(0,y.jsxs)(u,{...e,isOpen:t,onClose:()=>n(!1),size:`lg`,height:`min(38rem, 75dvh)`,title:`Журнал изменений`,children:[(0,y.jsx)(s,{children:(0,y.jsx)(`div`,{style:{display:`grid`,gap:12},children:Array.from({length:18},(e,t)=>(0,y.jsxs)(`div`,{style:{padding:12,borderRadius:8,border:`1px solid var(--border-1)`,background:`var(--surface-1)`},children:[(0,y.jsxs)(`div`,{style:{fontWeight:600},children:[`Событие #`,t+1]}),(0,y.jsx)(`div`,{style:{opacity:.72},children:`Пользователь обновил настройки карточки, изменил состав полей и подтвердил сохранение конфигурации.`})]},t))})}),(0,y.jsx)(o,{children:(0,y.jsx)(a,{onClick:()=>n(!1),children:`Закрыть`})})]})]})}},w={name:`Размеры`,render:()=>{let[e,t]=(0,v.useState)(null);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:12,justifyContent:`center`},children:[`sm`,`md`,`lg`,`xl`,`inside`].map(e=>(0,y.jsx)(a,{variant:`transparent`,onClick:()=>t(e),children:e.toUpperCase()},e))}),e&&(0,y.jsxs)(u,{isOpen:!0,onClose:()=>t(null),size:e,title:`Размер ${e.toUpperCase()}`,children:[(0,y.jsx)(s,{children:(0,y.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,y.jsx)(`div`,{children:`Этот сценарий помогает быстро сравнить ширину и поведение модалки для разных размеров.`}),(0,y.jsx)(`div`,{style:{opacity:.72},children:"Проверьте отступы, читабельность и поведение при `Escape`."})]})}),(0,y.jsx)(o,{children:(0,y.jsx)(a,{onClick:()=>t(null),children:`Понятно`})})]})]})}},T={name:`Стек модалок`,render:e=>{let[t,n]=(0,v.useState)(!1),[r,i]=(0,v.useState)(!1);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(a,{onClick:()=>n(!0),children:`Открыть первую модалку`}),(0,y.jsxs)(u,{...e,isOpen:t,onClose:()=>{i(!1),n(!1)},size:`lg`,title:`Первая модалка`,children:[(0,y.jsx)(s,{children:(0,y.jsxs)(`div`,{style:{display:`grid`,gap:16},children:[(0,y.jsx)(`div`,{children:"Откройте вторую модалку и проверьте, что `Escape` закрывает только верхний слой."}),(0,y.jsx)(a,{variant:`transparent`,onClick:()=>i(!0),children:`Открыть вторую модалку`})]})}),(0,y.jsx)(o,{children:(0,y.jsx)(a,{variant:`transparent`,onClick:()=>n(!1),children:`Закрыть первую`})})]}),(0,y.jsxs)(u,{isOpen:r,onClose:()=>i(!1),size:`sm`,title:`Вторая модалка`,children:[(0,y.jsx)(s,{children:(0,y.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,y.jsx)(`div`,{children:`Эта модалка должна считаться верхней в стеке.`}),(0,y.jsx)(m,{label:`Короткое поле`,value:`Фокус внутри`,onChange:()=>{}})]})}),(0,y.jsx)(o,{children:(0,y.jsx)(a,{onClick:()=>i(!1),children:`Закрыть вторую`})})]})]})}},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
2
2
  name: "Управляемая модалка",
3
3
  render: args => {
4
4
  const [open, setOpen] = useState(false);
@@ -1 +1 @@
1
- import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./x-BUr2A9Su.js";import{n as a}from"./iframe-DaJPX7QV.js";import{t as o}from"./react-dom-2o2phaJG.js";import{a as s,i as c}from"./utils-DUM89eIj.js";import{a as l,n as u,r as d,t as ee}from"./dom-B3G_GtJw.js";import{n as f,t as p}from"./FlexContainer-LmZIdhq2.js";import{n as m,t as te}from"./Button-2-1lrrp0.js";import{a as ne,c as h,l as g,n as re,o as _,r as ie,s as v,t as y}from"./react-B7DFunao.js";import{n as b,t as ae}from"./GridContainer-qDguE1HS.js";import{n as x,t as S}from"./Scrollable-D3aXHtrY.js";function oe(){!v.current&&ne();let[e]=(0,C.useState)(g.current);return e}var C;function w(){return(w=e((()=>{h(),_(),C=n()})))()}var T,E,D,O,k,A,j,M,N,P,F,I;function L(){return(L=e((()=>{T=`vGPUKV`,E=`O7gb7P`,D=`RVq8v3`,O=`PCSUAL`,k=`XDCHzq`,A=`t1kl8L`,j=`o3PEEB`,M=`WhUkxm`,N=`NDgdMi`,P=`JDlse5`,F=`FaDKSt`,I={modal:T,sm:E,md:D,lg:O,xl:k,xxl:A,inside:j,header:M,body:N,headerText:P,headerButton:F}})))()}var R,z,se;function B(){return(B=e((()=>{R={hidden:{opacity:0,scale:.96,y:12},visible:{opacity:1,scale:1,y:0}},z={duration:.18,ease:[.22,1,.36,1]},se={duration:0}})))()}var V,H,U;function W(){return(W=e((()=>{V=n(),H=(0,V.createContext)({modals:[],openModal:()=>{},closeModal:()=>{},isTopModal:()=>!1}),U=()=>(0,V.useContext)(H)})))()}var G,K,q,J,Y,X,ce;function le(){return(le=e((()=>{G=t(n(),1),d(),c(),r(),y(),K=o(),m(),f(),b(),x(),L(),B(),W(),q=a(),J=({children:e,className:t})=>(0,q.jsx)(`div`,{className:s(`surface2 paddingMd borderBottom`,t),children:e}),J.displayName=`Modal.Toolbar`,Y=({children:e,className:t,scrollable:n})=>(0,q.jsx)(`div`,{className:s(`paddingMd h100 overflowHidden`,t),children:n?(0,q.jsx)(S,{className:`h100`,children:e}):e}),Y.displayName=`Modal.Content`,X=({children:e,className:t})=>(0,q.jsx)(`div`,{className:s(`surface2 borderTop paddingMd`,t),children:(0,q.jsx)(p,{gap:`sm`,align:`center`,justify:`end`,children:e})}),X.displayName=`Modal.Footer`,ce=({isOpen:e,title:t,size:n=`sm`,height:r,onClose:a,children:o})=>{let c=(0,G.useId)(),d=(0,G.useId)(),{modals:f,openModal:p,closeModal:m,isTopModal:ne}=U(),h=oe(),g=(0,G.useRef)(null),_=(0,G.useRef)(0),v=e&&(f.length===0||ne(c));(0,G.useEffect)(()=>{e&&(g.current=document.activeElement instanceof HTMLElement?document.activeElement:null)},[e]);let y=l({active:e||!1,trapFocus:!0,restoreFocus:!1});u({active:v||!1,onDismiss:a,containerRef:y}),(0,G.useEffect)(()=>{e&&p(c)},[e,c,p]),(0,G.useEffect)(()=>()=>{window.cancelAnimationFrame(_.current),m(c)},[m,c]);function b(){m(c);let e=g.current;_.current=window.requestAnimationFrame(()=>{e?.isConnected&&e.focus(),g.current=null})}let x=ee(`modal-root`);if(!x)return null;let S=null,C=null,w=null,T=G.Children.toArray(o);for(let e of T)switch(e.type.displayName){case J.displayName:if(S)throw Error(`Modal: duplicate <Toolbar> found`);S=e;break;case X.displayName:if(w)throw Error(`Modal: duplicate <Footer> found`);w=e;break;case Y.displayName:if(C)throw Error(`Modal: duplicate <Content> found`);C=e}return(0,K.createPortal)((0,q.jsx)(ie,{onExitComplete:b,children:e?(0,q.jsxs)(re.div,{ref:y,className:s(I.modal,I[n]),style:{height:r},role:`dialog`,"aria-modal":`true`,"aria-labelledby":d,"aria-describedby":`${d}-content`,initial:`hidden`,animate:`visible`,exit:`hidden`,variants:R,transition:h?se:z,children:[(0,q.jsxs)(`div`,{className:s(I.header,S?``:`borderBottom`),children:[(0,q.jsx)(`h3`,{className:I.headerText,id:d,children:t}),(0,q.jsx)(te,{icon:(0,q.jsx)(i,{}),className:I.headerButton,variant:`ghost`,"aria-label":`Закрыть модальное окно`,onClick:a})]}),(0,q.jsxs)(ae,{id:`${d}-content`,templateRows:`${S?`auto`:``} 1fr ${w?`auto`:``}`.trim(),className:I.body,children:[S,C,w]})]}):null}),x)},J.__docgenInfo={description:``,methods:[],displayName:`Modal.Toolbar`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}},Y.__docgenInfo={description:``,methods:[],displayName:`Modal.Content`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``},scrollable:{required:!1,tsType:{name:`boolean`},description:``}}},X.__docgenInfo={description:``,methods:[],displayName:`Modal.Footer`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}function ue({children:e,compensateScrollbar:t=!1}){let[n,r]=(0,Z.useState)([]),i=(0,Z.useRef)(0),a=(0,Z.useRef)(0),o=(0,Z.useRef)(``),s=(0,Z.useRef)(!1),c=(0,Z.useCallback)(e=>{r(t=>[...t,e])},[]),l=(0,Z.useCallback)(e=>{r(t=>t.filter(t=>t!==e))},[]),u=(0,Z.useCallback)(e=>n[n.length-1]===e,[n]);return(0,Z.useEffect)(()=>{let e=i.current===0;if(e&&n.length>0){let e=window.scrollY,r=document.querySelector(`#app-root`);a.current=Math.max(0,window.innerWidth-document.documentElement.clientWidth),o.current=document.body.style.paddingRight,document.body.style.position=`fixed`,document.body.style.top=`-${e}px`,document.body.style.width=`100%`,t&&(document.body.style.paddingRight=`${a.current}px`,s.current=!0),r?.setAttribute(`inert`,`true`),i.current=n.length;return}if(!e&&n.length>0&&t!==s.current&&(document.body.style.paddingRight=t?`${a.current}px`:o.current,s.current=t),!e&&n.length===0){let e=document.querySelector(`#app-root`),t=parseInt(document.body.style.top||`0`)*-1;document.body.style.position=``,document.body.style.top=``,document.body.style.width=``,s.current&&=(document.body.style.paddingRight=o.current,!1),e?.removeAttribute(`inert`),window.scrollTo({top:t,left:0,behavior:`instant`})}i.current=n.length},[t,n.length]),(0,Q.jsx)(H.Provider,{value:{modals:n,openModal:c,closeModal:l,isTopModal:u},children:e})}var Z,Q;function $(){return($=e((()=>{Z=t(n(),1),W(),Q=a(),ue.__docgenInfo={description:`Провайдер для централизованного управления стеком модальных окон. Дает вложенным компонентам доступ к открытию и закрытию модалок через контекст.`,methods:[],displayName:`ModalManagerProvider`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},compensateScrollbar:{required:!1,tsType:{name:`boolean`},description:`Компенсирует исчезновение скроллбара правым padding у body.`,defaultValue:{value:`false`,computed:!1}}}}})))()}export{X as a,w as c,Y as i,$ as n,J as o,ce as r,le as s,ue as t};
1
+ import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./x-Dzd3S4ku.js";import{n as a}from"./iframe-CYobheWD.js";import{t as o}from"./react-dom-2o2phaJG.js";import{a as s,i as c}from"./utils-DUM89eIj.js";import{a as l,n as u,r as d,t as ee}from"./dom-B3G_GtJw.js";import{n as f,t as p}from"./FlexContainer-LmZIdhq2.js";import{n as m,t as te}from"./Button-G_ZnGyXY.js";import{a as ne,c as h,l as g,n as re,o as _,r as ie,s as v,t as y}from"./react-CNEBWIpL.js";import{n as b,t as ae}from"./GridContainer-qDguE1HS.js";import{n as x,t as S}from"./Scrollable-bLa141TT.js";function oe(){!v.current&&ne();let[e]=(0,C.useState)(g.current);return e}var C;function w(){return(w=e((()=>{h(),_(),C=n()})))()}var T,E,D,O,k,A,j,M,N,P,F,I;function L(){return(L=e((()=>{T=`vGPUKV`,E=`O7gb7P`,D=`RVq8v3`,O=`PCSUAL`,k=`XDCHzq`,A=`t1kl8L`,j=`o3PEEB`,M=`WhUkxm`,N=`NDgdMi`,P=`JDlse5`,F=`FaDKSt`,I={modal:T,sm:E,md:D,lg:O,xl:k,xxl:A,inside:j,header:M,body:N,headerText:P,headerButton:F}})))()}var R,z,se;function B(){return(B=e((()=>{R={hidden:{opacity:0,scale:.96,y:12},visible:{opacity:1,scale:1,y:0}},z={duration:.18,ease:[.22,1,.36,1]},se={duration:0}})))()}var V,H,U;function W(){return(W=e((()=>{V=n(),H=(0,V.createContext)({modals:[],openModal:()=>{},closeModal:()=>{},isTopModal:()=>!1}),U=()=>(0,V.useContext)(H)})))()}var G,K,q,J,Y,X,ce;function le(){return(le=e((()=>{G=t(n(),1),d(),c(),r(),y(),K=o(),m(),f(),b(),x(),L(),B(),W(),q=a(),J=({children:e,className:t})=>(0,q.jsx)(`div`,{className:s(`surface2 paddingMd borderBottom`,t),children:e}),J.displayName=`Modal.Toolbar`,Y=({children:e,className:t,scrollable:n})=>(0,q.jsx)(`div`,{className:s(`paddingMd h100 overflowHidden`,t),children:n?(0,q.jsx)(S,{className:`h100`,children:e}):e}),Y.displayName=`Modal.Content`,X=({children:e,className:t})=>(0,q.jsx)(`div`,{className:s(`surface2 borderTop paddingMd`,t),children:(0,q.jsx)(p,{gap:`sm`,align:`center`,justify:`end`,children:e})}),X.displayName=`Modal.Footer`,ce=({isOpen:e,title:t,size:n=`sm`,height:r,onClose:a,children:o})=>{let c=(0,G.useId)(),d=(0,G.useId)(),{modals:f,openModal:p,closeModal:m,isTopModal:ne}=U(),h=oe(),g=(0,G.useRef)(null),_=(0,G.useRef)(0),v=e&&(f.length===0||ne(c));(0,G.useEffect)(()=>{e&&(g.current=document.activeElement instanceof HTMLElement?document.activeElement:null)},[e]);let y=l({active:e||!1,trapFocus:!0,restoreFocus:!1});u({active:v||!1,onDismiss:a,containerRef:y}),(0,G.useEffect)(()=>{e&&p(c)},[e,c,p]),(0,G.useEffect)(()=>()=>{window.cancelAnimationFrame(_.current),m(c)},[m,c]);function b(){m(c);let e=g.current;_.current=window.requestAnimationFrame(()=>{e?.isConnected&&e.focus(),g.current=null})}let x=ee(`modal-root`);if(!x)return null;let S=null,C=null,w=null,T=G.Children.toArray(o);for(let e of T)switch(e.type.displayName){case J.displayName:if(S)throw Error(`Modal: duplicate <Toolbar> found`);S=e;break;case X.displayName:if(w)throw Error(`Modal: duplicate <Footer> found`);w=e;break;case Y.displayName:if(C)throw Error(`Modal: duplicate <Content> found`);C=e}return(0,K.createPortal)((0,q.jsx)(ie,{onExitComplete:b,children:e?(0,q.jsxs)(re.div,{ref:y,className:s(I.modal,I[n]),style:{height:r},role:`dialog`,"aria-modal":`true`,"aria-labelledby":d,"aria-describedby":`${d}-content`,initial:`hidden`,animate:`visible`,exit:`hidden`,variants:R,transition:h?se:z,children:[(0,q.jsxs)(`div`,{className:s(I.header,S?``:`borderBottom`),children:[(0,q.jsx)(`h3`,{className:I.headerText,id:d,children:t}),(0,q.jsx)(te,{icon:(0,q.jsx)(i,{}),className:I.headerButton,variant:`ghost`,"aria-label":`Закрыть модальное окно`,onClick:a})]}),(0,q.jsxs)(ae,{id:`${d}-content`,templateRows:`${S?`auto`:``} 1fr ${w?`auto`:``}`.trim(),className:I.body,children:[S,C,w]})]}):null}),x)},J.__docgenInfo={description:``,methods:[],displayName:`Modal.Toolbar`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}},Y.__docgenInfo={description:``,methods:[],displayName:`Modal.Content`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``},scrollable:{required:!1,tsType:{name:`boolean`},description:``}}},X.__docgenInfo={description:``,methods:[],displayName:`Modal.Footer`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}function ue({children:e,compensateScrollbar:t=!1}){let[n,r]=(0,Z.useState)([]),i=(0,Z.useRef)(0),a=(0,Z.useRef)(0),o=(0,Z.useRef)(``),s=(0,Z.useRef)(!1),c=(0,Z.useCallback)(e=>{r(t=>[...t,e])},[]),l=(0,Z.useCallback)(e=>{r(t=>t.filter(t=>t!==e))},[]),u=(0,Z.useCallback)(e=>n[n.length-1]===e,[n]);return(0,Z.useEffect)(()=>{let e=i.current===0;if(e&&n.length>0){let e=window.scrollY,r=document.querySelector(`#app-root`);a.current=Math.max(0,window.innerWidth-document.documentElement.clientWidth),o.current=document.body.style.paddingRight,document.body.style.position=`fixed`,document.body.style.top=`-${e}px`,document.body.style.width=`100%`,t&&(document.body.style.paddingRight=`${a.current}px`,s.current=!0),r?.setAttribute(`inert`,`true`),i.current=n.length;return}if(!e&&n.length>0&&t!==s.current&&(document.body.style.paddingRight=t?`${a.current}px`:o.current,s.current=t),!e&&n.length===0){let e=document.querySelector(`#app-root`),t=parseInt(document.body.style.top||`0`)*-1;document.body.style.position=``,document.body.style.top=``,document.body.style.width=``,s.current&&=(document.body.style.paddingRight=o.current,!1),e?.removeAttribute(`inert`),window.scrollTo({top:t,left:0,behavior:`instant`})}i.current=n.length},[t,n.length]),(0,Q.jsx)(H.Provider,{value:{modals:n,openModal:c,closeModal:l,isTopModal:u},children:e})}var Z,Q;function $(){return($=e((()=>{Z=t(n(),1),W(),Q=a(),ue.__docgenInfo={description:`Провайдер для централизованного управления стеком модальных окон. Дает вложенным компонентам доступ к открытию и закрытию модалок через контекст.`,methods:[],displayName:`ModalManagerProvider`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},compensateScrollbar:{required:!1,tsType:{name:`boolean`},description:`Компенсирует исчезновение скроллбара правым padding у body.`,defaultValue:{value:`false`,computed:!1}}}}})))()}export{X as a,w as c,Y as i,$ as n,J as o,ce as r,le as s,ue as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-DaJPX7QV.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-S8USJ7mc.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./MultiSelect.stories-DhF6adqK.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CYobheWD.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DQl3eTFV.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./MultiSelect.stories-BnmOPMcq.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(u,{children:`MultiSelect`}),`
3
3
  `,(0,x.jsx)(o,{children:`Мультиселект для локальных коллекций с токенами, поиском и состояниями загрузки`}),`
4
4
  `,(0,x.jsx)(t.p,{children:`MultiSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,2 +1,2 @@
1
- import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./CheckBox-DDxhhLj6.js";import{n as a,t as ee}from"./x-BUr2A9Su.js";import{n as o}from"./iframe-DaJPX7QV.js";import{a as te,i as s}from"./utils-DUM89eIj.js";import{n as c,t as l}from"./Text-CqOk_yW2.js";import{n as u,t as d}from"./ui.module-B48csOVs.js";import{c as f,g as p,h as m,i as h,l as g,m as _,n as ne,p as re,r as v,s as ie,t as ae,u as y}from"./usePickerTriggerController-B-AurKCR.js";import{i as b,n as oe,r as x,t as S}from"./usePickerQuery-D01d0TZO.js";import{n as C,t as se}from"./PickerTriggerActions-DfajdlA-.js";import{n as w,t as T}from"./usePickerDefaultFilter-Be420WNF.js";import{a as ce,d as le,f as ue,i as E,l as de,n as fe,o as pe,t as me,u as D}from"./defaultRenderers-CYvY-_uC.js";function O({text:e,isError:t}){return(0,k.jsxs)(`div`,{className:u.uiPopupOption,children:[(0,k.jsx)(`span`,{className:u.uiPopupOptionIcon}),(0,k.jsx)(l,{color:t?`error`:`primary`,children:e})]})}var k;function A(){return(A=e((()=>{c(),d(),k=o(),O.__docgenInfo={description:"Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.",methods:[],displayName:`MultiSelectOptionSkeleton`,props:{text:{required:!0,tsType:{name:`string`},description:``},isError:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function he({isNoData:e,isLoading:t,error:n,children:r}){return e?(0,P.jsx)(x,{emptyState:(0,P.jsx)(O,{text:`Нет данных`})}):t?(0,P.jsx)(x,{loadingState:(0,P.jsx)(O,{text:`Загрузка...`})}):n?(0,P.jsx)(x,{errorState:(0,P.jsx)(O,{isError:!0,text:`Ошибка загрузки`})}):(0,P.jsx)(P.Fragment,{children:r})}function j(e,t){return e[t]}function ge(e,t,n){return Array.from(new Set([e[n],e[t],...Object.values(e)]))}function _e(e,t,n){if(e.length!==t.length)return!1;let r=new Set(t.map(e=>j(e,n)));return e.every(e=>r.has(j(e,n)))}function M({entries:e,listId:t,activeIndex:n,selectedKeys:r,codeKey:a,query:ee,highlightQuery:o,getOptionDisabled:s,getOptionId:c,setOptionRef:l,toggleOption:d,selectOnlyOption:f,renderItem:p}){return e.map(({item:e,index:m})=>{let h=m===n,g=r.has(j(e,a)),_=s?.(e)??!1;return(0,P.jsxs)(`div`,{id:c(t,m),ref:e=>l(m,e),role:`option`,"aria-selected":g,"aria-disabled":_||void 0,className:te(u.uiSelectOption,_&&u.disabled,g&&u.selected,h&&u.uiPopupOptionActive),onMouseDown:e=>{e.preventDefault()},children:[(0,P.jsx)(`div`,{onClick:e=>{e.stopPropagation()},children:(0,P.jsx)(i,{value:g,disabled:_,onChange:()=>{_||d(e)},onClick:e=>{e.stopPropagation()},onMouseDown:e=>{e.stopPropagation()}})}),(0,P.jsx)(`div`,{className:`overflowHidden`,onClick:()=>{_||f(e)},children:p(e,{selected:g,active:h,disabled:_,query:ee,highlightQuery:o})})]},`${j(e,a)}-${m}`)})}var N,P,F,I;function L(){return(L=e((()=>{N=t(n(),1),s(),a(),r(),p(),y(),b(),C(),f(),T(),v(),S(),le(),ae(),_(),d(),E(),D(),A(),P=o(),F=[],I=(0,N.forwardRef)(({codeKey:e,textKey:t,hideCode:n,items:r,value:i,onChange:a,label:o,description:te,placeholder:s,size:c,query:l,defaultQuery:d,highlightQuery:f,onQuery:p,defaultFilter:_=!0,onOpen:v,onClose:ae,getOptionDisabled:y,disabled:b,error:x,isLoading:S,renderToken:C,renderToolbar:T,renderItem:le},E)=>{let D=(0,N.useRef)(null),[O,k]=(0,N.useState)(!1),A=`search-multi`,I=i??F,L=(0,N.useMemo)(()=>new Set(I.map(t=>j(t,e))),[e,I]),R=(0,N.useMemo)(()=>r.filter(t=>!L.has(j(t,e))),[e,L,r]),z=(0,N.useMemo)(()=>pe([...I,...r],e,t),[e,I,r,t]),{query:B,setQuery:ve,resetQueryOnClose:ye}=oe({query:l,defaultQuery:d,onQuery:p,triggerMode:A}),be=e=>{O&&!e&&ye&&ve(``),k(e)},V=w({options:I,query:B,enabled:_,getSearchText:t=>ge(t,e,z)}),H=w({options:R,query:B,enabled:_,getSearchText:t=>ge(t,e,z)}),U=(0,N.useMemo)(()=>[...V,...H],[H,V]),xe=V.length>0?0:-1,{draftValue:W,setDraftValue:G,prepareOpen:Se}=ue({value:I,open:O,onCommit:a,onOpen:v,onClose:ae,isEqual:(t,n)=>_e(t,n,e)}),K=(0,N.useMemo)(()=>new Set(W.map(t=>j(t,e))),[e,W]),Ce=(0,N.useMemo)(()=>({selectedItems:W,committedSelectedItems:I,selectedKeys:K,open:O}),[I,W,O,K]),q=(0,N.useCallback)(e=>y?.(e,Ce)??!1,[y,Ce]),{activeIndex:J,context:we,floatingStyles:Te,getFloatingProps:Ee,setReference:De,setFloating:Oe,setOptionRef:ke,close:Ae,openList:je,toggleOpen:Me,selectActiveOption:Ne,handleReferenceKeyDown:Pe,handleFloatingKeyDown:Fe,getOptionId:Ie,getActiveOptionId:Le}=h({options:U,selectedIndex:xe,open:O,onOpenChange:be,onSelect:void 0,disabled:b,getOptionDisabled:q,closeOnSelect:!1,allowOpenWithoutOptions:!0,triggerMode:A}),Re=f??B,Y=t=>{let n=j(t,e);G(r=>r.some(t=>j(t,e)===n)?r.filter(t=>j(t,e)!==n):q(t)?r:[...r,t])},ze=e=>{if(D.current=e,typeof E==`function`){E(e);return}E&&(E.current=e)},Be=()=>{G([]),O||a([])},Ve=()=>{G(t=>{let n=[...t],r=new Set(t.map(t=>j(t,e)));for(let t of U){let i=j(t,e);!r.has(i)&&!q(t)&&(r.add(i),n.push(t))}return n})},He=()=>{G([])},Ue=e=>{q(e)||(G([e]),Ae())},We=O?W:I,X=We.length>0,Ge={selectedItems:We,committedSelectedItems:I,availableItems:H,query:B,open:O,clearSelection:Be,selectAll:Ve,deselectAll:He},Ke=C===void 0?fe({codeKey:e,textKey:z}):C,qe=T===void 0?ce:T,Z=le??me({codeKey:e,textKey:z,hideCode:n}),Je=typeof Ke==`function`?Ke(Ge):null,Ye=typeof qe==`function`?qe(Ge):null,Q=V.map((e,t)=>({item:e,index:t})),Xe=H.map((e,t)=>({item:e,index:t+Q.length})),Ze=!S&&!x&&U.length===0,$=ne({mode:A,open:O,currentQuery:B,hasDisplayValue:!1,inputRef:D,setQuery:ve,openList:je,close:Ae,toggleOpen:Me,onBeforeOpen:()=>{O||Se()}});return(0,P.jsx)(m,{label:o,description:te,disabled:b,size:c,className:de.multiSelect,children:({controlId:t,labelId:n,describedBy:i})=>{let a=`${t}-listbox`;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(ie,{ref:ze,rootRef:De,id:t,type:`text`,role:`combobox`,autoComplete:`off`,disabled:b,value:B,placeholder:X?void 0:`${s??o??`Выберите значения`} <${r.length}>`,"aria-labelledby":n,"aria-describedby":i,"aria-haspopup":`listbox`,"aria-expanded":O,"aria-controls":O?a:void 0,"aria-autocomplete":`list`,"aria-activedescendant":O?Le(a):void 0,rootClassName:`flex alignItemsCenter`,endAdornment:(0,P.jsx)(se,{open:O,disabled:b,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,children:(0,P.jsx)(`button`,{type:`button`,disabled:!X,className:u.uiClearButton,"data-ui":`multi-select-clear-button`,"data-action":`clear-multi-select`,onClick:Be,"aria-label":`Очистить все`,children:(0,P.jsx)(ee,{})})}),overlay:Je,onChange:e=>{$.handleTriggerInputChange(e.target.value)},onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{Pe(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{if(J>=0){let e=U[J];if(e){Y(e);return}}Ne()},enableClosedArrowDownOpen:!0,suppressClosedArrowUp:!0})}}),(0,P.jsx)(g,{open:O,context:we,floatingStyles:Te,listId:a,labelId:n,descriptionId:i,activeOptionId:O?Le(a):void 0,setFloating:Oe,getFloatingProps:Ee,onKeyDown:Fe,initialFocus:-1,returnFocus:!1,tabIndex:-1,className:u.uiPopupOptions,header:Ye,children:(0,P.jsx)(he,{isNoData:Ze,isLoading:S,error:x,children:(0,P.jsxs)(`div`,{className:`scrollable h100`,children:[(0,P.jsx)(M,{entries:Q,listId:a,activeIndex:J,selectedKeys:K,codeKey:e,query:B,highlightQuery:Re,getOptionDisabled:q,getOptionId:Ie,setOptionRef:ke,toggleOption:Y,selectOnlyOption:Ue,renderItem:Z}),Q.length>0&&R.length>0&&(0,P.jsx)(re,{className:`marginBlockSm`}),(0,P.jsx)(M,{entries:Xe,listId:a,activeIndex:J,selectedKeys:K,codeKey:e,query:B,highlightQuery:Re,getOptionDisabled:q,getOptionId:Ie,setOptionRef:ke,toggleOption:Y,selectOnlyOption:Ue,renderItem:Z})]})})})]})}})}),I.displayName=`MultiSelect`,I.__docgenInfo={description:`Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.
1
+ import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./CheckBox-DdyYpHip.js";import{n as a,t as ee}from"./x-Dzd3S4ku.js";import{n as o}from"./iframe-CYobheWD.js";import{a as te,i as s}from"./utils-DUM89eIj.js";import{n as c,t as l}from"./Text-C1at2dMq.js";import{n as u,t as d}from"./ui.module-CHEKb9Cb.js";import{c as f,g as p,h as m,i as h,l as g,m as _,n as ne,p as re,r as v,s as ie,t as ae,u as y}from"./usePickerTriggerController-Cxo7izm1.js";import{i as b,n as oe,r as x,t as S}from"./usePickerQuery-C1tepQnh.js";import{n as C,t as se}from"./PickerTriggerActions-BKQ28AXr.js";import{n as w,t as T}from"./usePickerDefaultFilter-Be420WNF.js";import{a as ce,d as le,f as ue,i as E,l as de,n as fe,o as pe,t as me,u as D}from"./defaultRenderers-IYkjKXvR.js";function O({text:e,isError:t}){return(0,k.jsxs)(`div`,{className:u.uiPopupOption,children:[(0,k.jsx)(`span`,{className:u.uiPopupOptionIcon}),(0,k.jsx)(l,{color:t?`error`:`primary`,children:e})]})}var k;function A(){return(A=e((()=>{c(),d(),k=o(),O.__docgenInfo={description:"Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.",methods:[],displayName:`MultiSelectOptionSkeleton`,props:{text:{required:!0,tsType:{name:`string`},description:``},isError:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function he({isNoData:e,isLoading:t,error:n,children:r}){return e?(0,P.jsx)(x,{emptyState:(0,P.jsx)(O,{text:`Нет данных`})}):t?(0,P.jsx)(x,{loadingState:(0,P.jsx)(O,{text:`Загрузка...`})}):n?(0,P.jsx)(x,{errorState:(0,P.jsx)(O,{isError:!0,text:`Ошибка загрузки`})}):(0,P.jsx)(P.Fragment,{children:r})}function j(e,t){return e[t]}function ge(e,t,n){return Array.from(new Set([e[n],e[t],...Object.values(e)]))}function _e(e,t,n){if(e.length!==t.length)return!1;let r=new Set(t.map(e=>j(e,n)));return e.every(e=>r.has(j(e,n)))}function M({entries:e,listId:t,activeIndex:n,selectedKeys:r,codeKey:a,query:ee,highlightQuery:o,getOptionDisabled:s,getOptionId:c,setOptionRef:l,toggleOption:d,selectOnlyOption:f,renderItem:p}){return e.map(({item:e,index:m})=>{let h=m===n,g=r.has(j(e,a)),_=s?.(e)??!1;return(0,P.jsxs)(`div`,{id:c(t,m),ref:e=>l(m,e),role:`option`,"aria-selected":g,"aria-disabled":_||void 0,className:te(u.uiSelectOption,_&&u.disabled,g&&u.selected,h&&u.uiPopupOptionActive),onMouseDown:e=>{e.preventDefault()},children:[(0,P.jsx)(`div`,{onClick:e=>{e.stopPropagation()},children:(0,P.jsx)(i,{value:g,disabled:_,onChange:()=>{_||d(e)},onClick:e=>{e.stopPropagation()},onMouseDown:e=>{e.stopPropagation()}})}),(0,P.jsx)(`div`,{className:`overflowHidden`,onClick:()=>{_||f(e)},children:p(e,{selected:g,active:h,disabled:_,query:ee,highlightQuery:o})})]},`${j(e,a)}-${m}`)})}var N,P,F,I;function L(){return(L=e((()=>{N=t(n(),1),s(),a(),r(),p(),y(),b(),C(),f(),T(),v(),S(),le(),ae(),_(),d(),E(),D(),A(),P=o(),F=[],I=(0,N.forwardRef)(({codeKey:e,textKey:t,hideCode:n,items:r,value:i,onChange:a,label:o,description:te,placeholder:s,size:c,query:l,defaultQuery:d,highlightQuery:f,onQuery:p,defaultFilter:_=!0,onOpen:v,onClose:ae,getOptionDisabled:y,disabled:b,error:x,isLoading:S,renderToken:C,renderToolbar:T,renderItem:le},E)=>{let D=(0,N.useRef)(null),[O,k]=(0,N.useState)(!1),A=`search-multi`,I=i??F,L=(0,N.useMemo)(()=>new Set(I.map(t=>j(t,e))),[e,I]),R=(0,N.useMemo)(()=>r.filter(t=>!L.has(j(t,e))),[e,L,r]),z=(0,N.useMemo)(()=>pe([...I,...r],e,t),[e,I,r,t]),{query:B,setQuery:ve,resetQueryOnClose:ye}=oe({query:l,defaultQuery:d,onQuery:p,triggerMode:A}),be=e=>{O&&!e&&ye&&ve(``),k(e)},V=w({options:I,query:B,enabled:_,getSearchText:t=>ge(t,e,z)}),H=w({options:R,query:B,enabled:_,getSearchText:t=>ge(t,e,z)}),U=(0,N.useMemo)(()=>[...V,...H],[H,V]),xe=V.length>0?0:-1,{draftValue:W,setDraftValue:G,prepareOpen:Se}=ue({value:I,open:O,onCommit:a,onOpen:v,onClose:ae,isEqual:(t,n)=>_e(t,n,e)}),K=(0,N.useMemo)(()=>new Set(W.map(t=>j(t,e))),[e,W]),Ce=(0,N.useMemo)(()=>({selectedItems:W,committedSelectedItems:I,selectedKeys:K,open:O}),[I,W,O,K]),q=(0,N.useCallback)(e=>y?.(e,Ce)??!1,[y,Ce]),{activeIndex:J,context:we,floatingStyles:Te,getFloatingProps:Ee,setReference:De,setFloating:Oe,setOptionRef:ke,close:Ae,openList:je,toggleOpen:Me,selectActiveOption:Ne,handleReferenceKeyDown:Pe,handleFloatingKeyDown:Fe,getOptionId:Ie,getActiveOptionId:Le}=h({options:U,selectedIndex:xe,open:O,onOpenChange:be,onSelect:void 0,disabled:b,getOptionDisabled:q,closeOnSelect:!1,allowOpenWithoutOptions:!0,triggerMode:A}),Re=f??B,Y=t=>{let n=j(t,e);G(r=>r.some(t=>j(t,e)===n)?r.filter(t=>j(t,e)!==n):q(t)?r:[...r,t])},ze=e=>{if(D.current=e,typeof E==`function`){E(e);return}E&&(E.current=e)},Be=()=>{G([]),O||a([])},Ve=()=>{G(t=>{let n=[...t],r=new Set(t.map(t=>j(t,e)));for(let t of U){let i=j(t,e);!r.has(i)&&!q(t)&&(r.add(i),n.push(t))}return n})},He=()=>{G([])},Ue=e=>{q(e)||(G([e]),Ae())},We=O?W:I,X=We.length>0,Ge={selectedItems:We,committedSelectedItems:I,availableItems:H,query:B,open:O,clearSelection:Be,selectAll:Ve,deselectAll:He},Ke=C===void 0?fe({codeKey:e,textKey:z}):C,qe=T===void 0?ce:T,Z=le??me({codeKey:e,textKey:z,hideCode:n}),Je=typeof Ke==`function`?Ke(Ge):null,Ye=typeof qe==`function`?qe(Ge):null,Q=V.map((e,t)=>({item:e,index:t})),Xe=H.map((e,t)=>({item:e,index:t+Q.length})),Ze=!S&&!x&&U.length===0,$=ne({mode:A,open:O,currentQuery:B,hasDisplayValue:!1,inputRef:D,setQuery:ve,openList:je,close:Ae,toggleOpen:Me,onBeforeOpen:()=>{O||Se()}});return(0,P.jsx)(m,{label:o,description:te,disabled:b,size:c,className:de.multiSelect,children:({controlId:t,labelId:n,describedBy:i})=>{let a=`${t}-listbox`;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(ie,{ref:ze,rootRef:De,id:t,type:`text`,role:`combobox`,autoComplete:`off`,disabled:b,value:B,placeholder:X?void 0:`${s??o??`Выберите значения`} <${r.length}>`,"aria-labelledby":n,"aria-describedby":i,"aria-haspopup":`listbox`,"aria-expanded":O,"aria-controls":O?a:void 0,"aria-autocomplete":`list`,"aria-activedescendant":O?Le(a):void 0,rootClassName:`flex alignItemsCenter`,endAdornment:(0,P.jsx)(se,{open:O,disabled:b,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,children:(0,P.jsx)(`button`,{type:`button`,disabled:!X,className:u.uiClearButton,"data-ui":`multi-select-clear-button`,"data-action":`clear-multi-select`,onClick:Be,"aria-label":`Очистить все`,children:(0,P.jsx)(ee,{})})}),overlay:Je,onChange:e=>{$.handleTriggerInputChange(e.target.value)},onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{Pe(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{if(J>=0){let e=U[J];if(e){Y(e);return}}Ne()},enableClosedArrowDownOpen:!0,suppressClosedArrowUp:!0})}}),(0,P.jsx)(g,{open:O,context:we,floatingStyles:Te,listId:a,labelId:n,descriptionId:i,activeOptionId:O?Le(a):void 0,setFloating:Oe,getFloatingProps:Ee,onKeyDown:Fe,initialFocus:-1,returnFocus:!1,tabIndex:-1,className:u.uiPopupOptions,header:Ye,children:(0,P.jsx)(he,{isNoData:Ze,isLoading:S,error:x,children:(0,P.jsxs)(`div`,{className:`scrollable h100`,children:[(0,P.jsx)(M,{entries:Q,listId:a,activeIndex:J,selectedKeys:K,codeKey:e,query:B,highlightQuery:Re,getOptionDisabled:q,getOptionId:Ie,setOptionRef:ke,toggleOption:Y,selectOnlyOption:Ue,renderItem:Z}),Q.length>0&&R.length>0&&(0,P.jsx)(re,{className:`marginBlockSm`}),(0,P.jsx)(M,{entries:Xe,listId:a,activeIndex:J,selectedKeys:K,codeKey:e,query:B,highlightQuery:Re,getOptionDisabled:q,getOptionId:Ie,setOptionRef:ke,toggleOption:Y,selectOnlyOption:Ue,renderItem:Z})]})})})]})}})}),I.displayName=`MultiSelect`,I.__docgenInfo={description:`Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.
2
2
  Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.`,methods:[],displayName:`MultiSelect`,props:{renderToken:{required:!1,tsType:{name:`union`,raw:`((context: TContext) => React.ReactNode) | null | false`,elements:[{name:`unknown`},{name:`null`},{name:`literal`,value:`false`}]},description:``},renderToolbar:{required:!1,tsType:{name:`union`,raw:`((context: TContext) => React.ReactNode) | null | false`,elements:[{name:`unknown`},{name:`null`},{name:`literal`,value:`false`}]},description:``},renderItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: CollectionItem, state: MultiSelectItemState) => React.ReactNode`,signature:{arguments:[{type:{name:`CollectionItem`},name:`item`},{type:{name:`MultiSelectItemState`},name:`state`}],return:{name:`ReactReactNode`,raw:`React.ReactNode`}}},description:``},label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},codeKey:{required:!0,tsType:{name:`string`},description:``},textKey:{required:!1,tsType:{name:`string`},description:``},hideCode:{required:!1,tsType:{name:`boolean`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},highlightQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},defaultFilter:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TOption`}],raw:`TOption[]`},description:``},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: TOption, context: MultiSelectOptionDisableContext) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`item`},{type:{name:`MultiSelectOptionDisableContext`},name:`context`}],return:{name:`boolean`}}},description:``},onOpen:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onClose:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: TOption[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TOption`}],raw:`TOption[]`},name:`value`}],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}export{L as n,I as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-DaJPX7QV.js";import{n as i,t as a}from"./MultiSelect-BZKxCQ9J.js";var o=t({Basic:()=>d,Empty:()=>m,ErrorState:()=>p,Loading:()=>f,__namedExportsOrder:()=>h,default:()=>u}),s,c,l,u,d,f,p,m,h;function g(){return(g=e((()=>{s=n(),i(),c=r(),l=[{code:`MOW`,label:`Москва`},{code:`SPB`,label:`Санкт-Петербург`},{code:`EKB`,label:`Екатеринбург`},{code:`KZN`,label:`Казань`},{code:`NSK`,label:`Новосибирск`}],u={title:`Shared/UI/MultiSelect`,component:a,args:{label:`Города`,description:`Выберите несколько значений.`,placeholder:`Начните вводить`,value:[],onChange:()=>{},codeKey:`code`,textKey:`label`,items:l,query:``,onQuery:()=>{},onOpen:()=>{},onClose:()=>{},size:`md`,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{value:{control:!1},onChange:{control:!1},items:{control:!1},onQuery:{control:!1},onOpen:{control:!1},onClose:{control:!1},renderToken:{control:!1},renderToolbar:{control:!1},renderItem:{control:!1},size:{control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={render:e=>{let[t,n]=(0,s.useState)([l[1]]),[r,i]=(0,s.useState)(``),o=(0,s.useMemo)(()=>{let e=r.trim().toLowerCase();return e?l.filter(t=>t.label.toLowerCase().includes(e)||t.code.toLowerCase().includes(e)):l},[r]);return(0,c.jsx)(a,{...e,value:t,items:o,query:r,onQuery:i,onChange:n})}},f={render:e=>{let[t,n]=(0,s.useState)([]);return(0,c.jsx)(a,{...e,value:t,items:[],isLoading:!0,onChange:n})}},p={render:e=>{let[t,n]=(0,s.useState)([]);return(0,c.jsx)(a,{...e,value:t,items:[],error:`Ошибка загрузки`,onChange:n})}},m={render:e=>{let[t,n]=(0,s.useState)([]);return(0,c.jsx)(a,{...e,value:t,items:[],onChange:n})}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CYobheWD.js";import{n as i,t as a}from"./MultiSelect-Cujmvoxp.js";var o=t({Basic:()=>d,Empty:()=>m,ErrorState:()=>p,Loading:()=>f,__namedExportsOrder:()=>h,default:()=>u}),s,c,l,u,d,f,p,m,h;function g(){return(g=e((()=>{s=n(),i(),c=r(),l=[{code:`MOW`,label:`Москва`},{code:`SPB`,label:`Санкт-Петербург`},{code:`EKB`,label:`Екатеринбург`},{code:`KZN`,label:`Казань`},{code:`NSK`,label:`Новосибирск`}],u={title:`Shared/UI/MultiSelect`,component:a,args:{label:`Города`,description:`Выберите несколько значений.`,placeholder:`Начните вводить`,value:[],onChange:()=>{},codeKey:`code`,textKey:`label`,items:l,query:``,onQuery:()=>{},onOpen:()=>{},onClose:()=>{},size:`md`,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{value:{control:!1},onChange:{control:!1},items:{control:!1},onQuery:{control:!1},onOpen:{control:!1},onClose:{control:!1},renderToken:{control:!1},renderToolbar:{control:!1},renderItem:{control:!1},size:{control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={render:e=>{let[t,n]=(0,s.useState)([l[1]]),[r,i]=(0,s.useState)(``),o=(0,s.useMemo)(()=>{let e=r.trim().toLowerCase();return e?l.filter(t=>t.label.toLowerCase().includes(e)||t.code.toLowerCase().includes(e)):l},[r]);return(0,c.jsx)(a,{...e,value:t,items:o,query:r,onQuery:i,onChange:n})}},f={render:e=>{let[t,n]=(0,s.useState)([]);return(0,c.jsx)(a,{...e,value:t,items:[],isLoading:!0,onChange:n})}},p={render:e=>{let[t,n]=(0,s.useState)([]);return(0,c.jsx)(a,{...e,value:t,items:[],error:`Ошибка загрузки`,onChange:n})}},m={render:e=>{let[t,n]=(0,s.useState)([]);return(0,c.jsx)(a,{...e,value:t,items:[],onChange:n})}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
2
2
  render: args => {
3
3
  const [value, setValue] = useState<CollectionItem[]>([catalog[1]]);
4
4
  const [query, setQuery] = useState("");
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-DaJPX7QV.js";import{a as n,i as r}from"./utils-DUM89eIj.js";import{n as i,t as a}from"./Text-CqOk_yW2.js";var o,s;function c(){return(c=e((()=>{r(),o=t(),s=({className:e,minHeight:t,children:r,style:i,...a})=>{let s=t===void 0?i:{...i,minHeight:t};return(0,o.jsx)(`div`,{...a,className:n(`flexCenter h100`,e),style:s,children:r})},s.__docgenInfo={description:``,methods:[],displayName:`FlexCenter`,props:{children:{required:!1,tsType:{name:`ReactNode`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``}},composes:[`Omit`]}})))()}var l,u;function d(){return(d=e((()=>{l=`qgIKVo`,u={componentLoader:l}})))()}var f,p;function m(){return(m=e((()=>{r(),c(),i(),f=t(),p=({className:e,children:t,color:r=`muted`,minHeight:i,uppercase:o=!0})=>(0,f.jsx)(s,{className:n(`paddingMd textCenter`,e),minHeight:i,children:(0,f.jsx)(a,{as:`div`,weight:`bold`,color:r,uppercase:o,children:t})}),p.__docgenInfo={description:``,methods:[],displayName:`Message`,props:{color:{defaultValue:{value:`"muted"`,computed:!1},required:!1},uppercase:{defaultValue:{value:`true`,computed:!1},required:!1}}}})))()}function h({className:e,logo:t,text:r}){return(0,g.jsxs)(p,{className:n(u.componentLoader,t?void 0:`skeletonLine`,e),children:[t,r||`Загрузка...`]})}var g;function _(){return(_=e((()=>{r(),d(),m(),g=t(),h.__docgenInfo={description:``,methods:[],displayName:`LoadingMessage`,props:{className:{required:!1,tsType:{name:`string`},description:``},logo:{required:!1,tsType:{name:`ReactNode`},description:`Готовый брендовый знак, которым host-проект при необходимости дополняет сообщение о загрузке.`},text:{required:!1,tsType:{name:`string`},description:``}}}})))()}var v,y;function b(){return(b=e((()=>{m(),v=t(),y=({className:e,text:t,minHeight:n=`5em`})=>(0,v.jsx)(p,{className:e,color:`muted`,minHeight:n,children:t||`Нет данных`}),y.__docgenInfo={description:``,methods:[],displayName:`NoData`,props:{className:{required:!1,tsType:{name:`string`},description:``},text:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``,defaultValue:{value:`"5em"`,computed:!1}}}}})))()}export{_ as i,b as n,h as r,y as t};
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CYobheWD.js";import{a as n,i as r}from"./utils-DUM89eIj.js";import{n as i,t as a}from"./Text-C1at2dMq.js";var o,s;function c(){return(c=e((()=>{r(),o=t(),s=({className:e,minHeight:t,children:r,style:i,...a})=>{let s=t===void 0?i:{...i,minHeight:t};return(0,o.jsx)(`div`,{...a,className:n(`flexCenter h100`,e),style:s,children:r})},s.__docgenInfo={description:``,methods:[],displayName:`FlexCenter`,props:{children:{required:!1,tsType:{name:`ReactNode`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``}},composes:[`Omit`]}})))()}var l,u;function d(){return(d=e((()=>{l=`qgIKVo`,u={componentLoader:l}})))()}var f,p;function m(){return(m=e((()=>{r(),c(),i(),f=t(),p=({className:e,children:t,color:r=`muted`,minHeight:i,uppercase:o=!0})=>(0,f.jsx)(s,{className:n(`paddingMd textCenter`,e),minHeight:i,children:(0,f.jsx)(a,{as:`div`,weight:`bold`,color:r,uppercase:o,children:t})}),p.__docgenInfo={description:``,methods:[],displayName:`Message`,props:{color:{defaultValue:{value:`"muted"`,computed:!1},required:!1},uppercase:{defaultValue:{value:`true`,computed:!1},required:!1}}}})))()}function h({className:e,logo:t,text:r}){return(0,g.jsxs)(p,{className:n(u.componentLoader,t?void 0:`skeletonLine`,e),children:[t,r||`Загрузка...`]})}var g;function _(){return(_=e((()=>{r(),d(),m(),g=t(),h.__docgenInfo={description:``,methods:[],displayName:`LoadingMessage`,props:{className:{required:!1,tsType:{name:`string`},description:``},logo:{required:!1,tsType:{name:`ReactNode`},description:`Готовый брендовый знак, которым host-проект при необходимости дополняет сообщение о загрузке.`},text:{required:!1,tsType:{name:`string`},description:``}}}})))()}var v,y;function b(){return(b=e((()=>{m(),v=t(),y=({className:e,text:t,minHeight:n=`5em`})=>(0,v.jsx)(p,{className:e,color:`muted`,minHeight:n,children:t||`Нет данных`}),y.__docgenInfo={description:``,methods:[],displayName:`NoData`,props:{className:{required:!1,tsType:{name:`string`},description:``},text:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``,defaultValue:{value:`"5em"`,computed:!1}}}}})))()}export{_ as i,b as n,h as r,y as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{i as t,n,r,t as i}from"./NotificationsHost.stories-B65ogFlZ.js";import{n as a}from"./iframe-DaJPX7QV.js";import{i as o,r as s}from"./react-qN2cStNd.js";import{a as c,d as l,f as u,l as d,m as f,n as p,p as m,r as h,u as g}from"./blocks-S8USJ7mc.js";function _(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...o(),...e.components};return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(d,{of:n,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{i as t,n,r,t as i}from"./NotificationsHost.stories-DOZprbOB.js";import{n as a}from"./iframe-CYobheWD.js";import{i as o,r as s}from"./react-qN2cStNd.js";import{a as c,d as l,f as u,l as d,m as f,n as p,p as m,r as h,u as g}from"./blocks-DQl3eTFV.js";function _(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...o(),...e.components};return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(d,{of:n,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,y.jsx)(m,{children:`NotificationsHost`}),`
3
3
  `,(0,y.jsx)(u,{children:`Хост глобальных уведомлений для очереди toast-сообщений и длинных пользовательских операций`}),`
4
4
  `,(0,y.jsx)(t.p,{children:`NotificationsHost уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.