@ryuzaki13/react-foundation-ui 1.8.18 → 1.8.20

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 (298) hide show
  1. package/dist/picker/model/usePickerFloatingListbox.d.ts +1 -1
  2. package/package.json +3 -3
  3. package/storybook-static/assets/{Badge-BIHyYCo7.js → Badge-CtgCgcrE.js} +6 -6
  4. package/storybook-static/assets/{Badge.stories-DLTrI-x_.js → Badge.stories-Bde8GdpE.js} +1 -1
  5. package/storybook-static/assets/{BadgeList-CDdRxEFa.js → BadgeList-B354PiFh.js} +1 -1
  6. package/storybook-static/assets/{Button-Clgno5I9.js → Button-BC1vJeBh.js} +6 -6
  7. package/storybook-static/assets/{Button-XTBI9blK.js → Button-DdWXdL9L.js} +1 -1
  8. package/storybook-static/assets/{Button.stories-B-0_zqxk.js → Button.stories-CvsBKXsv.js} +1 -1
  9. package/storybook-static/assets/{CalendarView-5yfJ6Sx-.js → CalendarView-CJkJU4EC.js} +1 -1
  10. package/storybook-static/assets/{CheckBox-DZh7cCZZ.js → CheckBox-BaKD1lsb.js} +2 -2
  11. package/storybook-static/assets/{CheckBox-BNpn-ZBB.js → CheckBox-DlCG7Opb.js} +1 -1
  12. package/storybook-static/assets/{CheckBox.stories--dSzC2Mf.js → CheckBox.stories-noW5T-OA.js} +1 -1
  13. package/storybook-static/assets/Color-6AOWCN3U-DVSJ6tQm.js +1 -0
  14. package/storybook-static/assets/{ContextMenu-CTrTO0H7.js → ContextMenu-D79bky7p.js} +1 -1
  15. package/storybook-static/assets/{ContextMenu-24LNOr91.js → ContextMenu-DL12BLWo.js} +2 -2
  16. package/storybook-static/assets/{ContextMenu.stories-Cbq6B29u.js → ContextMenu.stories-BwyqG2jc.js} +1 -1
  17. package/storybook-static/assets/{CustomOptionButton-BHA-6inc.js → CustomOptionButton-oTNty8hW.js} +1 -1
  18. package/storybook-static/assets/{DateInput-Ceqy8_hm.js → DateInput-X20d2Q59.js} +1 -1
  19. package/storybook-static/assets/{DateInput-Bmwgwx_r.js → DateInput-YyZk0Ov_.js} +2 -2
  20. package/storybook-static/assets/{DateInput.stories-C0oDEW0V.js → DateInput.stories-DQoF9ZwI.js} +1 -1
  21. package/storybook-static/assets/{DateRangePresetSelect-EUO5ju87.js → DateRangePresetSelect-BauBnnPB.js} +1 -1
  22. package/storybook-static/assets/{DateRangePresetSelect-DrbWZdO7.js → DateRangePresetSelect-C-AvOpuX.js} +2 -2
  23. package/storybook-static/assets/DateRangePresetSelect.stories-XvgjFAh7.js +19 -0
  24. package/storybook-static/assets/{Detail-BdMA8W8a.js → Detail-BpXehD7_.js} +2 -2
  25. package/storybook-static/assets/{Detail.stories-kYjF0OE8.js → Detail.stories-BQWhtlp0.js} +1 -1
  26. package/storybook-static/assets/{Dialog-DGlxegJa.js → Dialog-D3hJTgwE.js} +2 -2
  27. package/storybook-static/assets/{Dialog-B__C03-Z.js → Dialog-DODbPv79.js} +1 -1
  28. package/storybook-static/assets/Dialog.stories-DcgpUIUP.js +22 -0
  29. package/storybook-static/assets/{Disclosure-BXUWkiag.js → Disclosure-5UdBgIbZ.js} +2 -2
  30. package/storybook-static/assets/Disclosure.stories-IYljEE4h.js +23 -0
  31. package/storybook-static/assets/{DisclosureGroup-C57FHp13.js → DisclosureGroup-Bbseg3US.js} +1 -1
  32. package/storybook-static/assets/{DocsRenderer-JROSPFPF-CiLWX8JT.js → DocsRenderer-JROSPFPF-CADpK3Xb.js} +1 -1
  33. package/storybook-static/assets/{DropZone-BPOCc8un.js → DropZone-BKncWUns.js} +2 -2
  34. package/storybook-static/assets/{DropZone-DCGBDcam.js → DropZone-CI5qAgz5.js} +1 -1
  35. package/storybook-static/assets/DropZone.stories-CmLlcGx0.js +26 -0
  36. package/storybook-static/assets/{DropdownMenu-DDHBuZt5.js → DropdownMenu-K7NYW8LX.js} +1 -1
  37. package/storybook-static/assets/{ExpandableActionPanel-mmlDn8ts.js → ExpandableActionPanel-DSHE6wTG.js} +1 -1
  38. package/storybook-static/assets/ExpandableActionPanel.stories-BN_qe4FR.js +9 -0
  39. package/storybook-static/assets/{Flex-DHMDn1uW.js → Flex-BP4dH1EM.js} +2 -2
  40. package/storybook-static/assets/{Flex.stories-BgYOys3T.js → Flex.stories-CG6MjVWv.js} +1 -1
  41. package/storybook-static/assets/{FloatingPopover-BL_nJJrL.js → FloatingPopover-CbuI645U.js} +1 -1
  42. package/storybook-static/assets/{FormattedTableCell-Od6SSoxO.js → FormattedTableCell-SiBfPwwP.js} +1 -1
  43. package/storybook-static/assets/{Grid-CS-mSNKX.js → Grid-CcYtG8qC.js} +2 -2
  44. package/storybook-static/assets/{Grid.stories-DWCKacQB.js → Grid.stories-D8AkQcoe.js} +1 -1
  45. package/storybook-static/assets/ImageCropper.stories-DgYml-BE.js +131 -0
  46. package/storybook-static/assets/{ImageRenderer-jDryL3Z9.js → ImageRenderer-DdnnseXq.js} +1 -1
  47. package/storybook-static/assets/ImageRenderer.stories-BN4QxhBf.js +34 -0
  48. package/storybook-static/assets/ImageView.stories-2LMwV4qh.js +14 -0
  49. package/storybook-static/assets/{ImageViewer.stories-CKUiWvv7.js → ImageViewer.stories-D6BcidoN.js} +3 -3
  50. package/storybook-static/assets/{ImageViewerRuntime-DUjkq3km.js → ImageViewerRuntime-DVUlXl_G.js} +1 -1
  51. package/storybook-static/assets/{Input-Q95tdikw.js → Input-Bb5uuJsd.js} +1 -1
  52. package/storybook-static/assets/{Input-C5eMHeOp.js → Input-CWQgYEr9.js} +2 -2
  53. package/storybook-static/assets/Input.stories-B0SSM1T_.js +52 -0
  54. package/storybook-static/assets/{InputDateTime-D8iFVC4N.js → InputDateTime-EefPx2jA.js} +2 -2
  55. package/storybook-static/assets/InputDateTime.stories-B71jcVWG.js +30 -0
  56. package/storybook-static/assets/{InputFile-CEMWMZ8W.js → InputFile-BqoeOsqC.js} +1 -1
  57. package/storybook-static/assets/{InputFile-CVgdFBc9.js → InputFile-CktSGEBF.js} +2 -2
  58. package/storybook-static/assets/InputFile.stories-Ce3mDoRs.js +27 -0
  59. package/storybook-static/assets/{InputFiles-AtxulUya.js → InputFiles-B5O1fLjO.js} +1 -1
  60. package/storybook-static/assets/{InputFiles-BWh55c4D.js → InputFiles-RrvJwhF3.js} +2 -2
  61. package/storybook-static/assets/InputFiles.stories-BwWItttY.js +26 -0
  62. package/storybook-static/assets/{InputFilesList-Dx0Dhms2.js → InputFilesList-DStssgki.js} +1 -1
  63. package/storybook-static/assets/{InputImage-wBNZRvrJ.js → InputImage-CPGNaW07.js} +2 -2
  64. package/storybook-static/assets/{InputImage-DKCC82SZ.js → InputImage-CvuIiNq_.js} +1 -1
  65. package/storybook-static/assets/InputImage.stories-CCG2g2Io.js +56 -0
  66. package/storybook-static/assets/{InteractiveComponents-CHTFQ4qL.js → InteractiveComponents-BgsmaSTZ.js} +1 -1
  67. package/storybook-static/assets/{InteractiveComponents.stories-DJxkbHUR.js → InteractiveComponents.stories-BwtQ8dqK.js} +1 -1
  68. package/storybook-static/assets/{LayoutPicker-Dv5O_Hy0.js → LayoutPicker-DRtnMCPh.js} +1 -1
  69. package/storybook-static/assets/{LayoutPicker-D887Y2XB.js → LayoutPicker-DsGelRcW.js} +3 -3
  70. package/storybook-static/assets/{LayoutPicker.stories-DbN3i5QL.js → LayoutPicker.stories-BWnRDODR.js} +1 -1
  71. package/storybook-static/assets/{Listbox-Cnzu7mYT.js → Listbox-DOUFsbK8.js} +2 -2
  72. package/storybook-static/assets/{Listbox-C4dx1h82.js → Listbox-IR21PF4n.js} +1 -1
  73. package/storybook-static/assets/{Listbox.stories-BO1Df9Mq.js → Listbox.stories-qC0AcRTK.js} +1 -1
  74. package/storybook-static/assets/{Modal-CMacWyay.js → Modal-D8Il31Wx.js} +3 -3
  75. package/storybook-static/assets/{Modal.stories-DMrYaonL.js → Modal.stories-Vb_wvC7j.js} +1 -1
  76. package/storybook-static/assets/{ModalManagerProvider-NbdotfpM.js → ModalManagerProvider-DW29PIGA.js} +1 -1
  77. package/storybook-static/assets/{MultiSelect-DEPuEcGb.js → MultiSelect-BTXEzEbr.js} +2 -2
  78. package/storybook-static/assets/{MultiSelect-N4vTBX-X.js → MultiSelect-Bi7awY_l.js} +1 -1
  79. package/storybook-static/assets/MultiSelect.stories-BHm7nyE0.js +55 -0
  80. package/storybook-static/assets/{NoData-BdrsNRw1.js → NoData-D2fqJN8_.js} +1 -1
  81. package/storybook-static/assets/{NotificationsHost-BmcIZZNC.js → NotificationsHost-CB4Caorz.js} +3 -3
  82. package/storybook-static/assets/NotificationsHost.stories-ClREN7GD.js +29 -0
  83. package/storybook-static/assets/{ODataMultiSelect-DVVDe1Yr.js → ODataMultiSelect-DVqtuVtf.js} +2 -2
  84. package/storybook-static/assets/{ODataMultiSelect.stories-DQDXXq_9.js → ODataMultiSelect.stories-BXspOSkv.js} +2 -2
  85. package/storybook-static/assets/{ODataSelect-B88g3t3l.js → ODataSelect-ODT2BTTx.js} +2 -2
  86. package/storybook-static/assets/{ODataSelect.stories-BPWp8xtb.js → ODataSelect.stories-Czh9ONwP.js} +2 -2
  87. package/storybook-static/assets/{ODataTreeMultiSelect-DN0hWqto.js → ODataTreeMultiSelect-D2CfiHud.js} +1 -1
  88. package/storybook-static/assets/{ODataTreeMultiSelect.stories-BDDEO9n2.js → ODataTreeMultiSelect.stories-C5CcMnCO.js} +2 -2
  89. package/storybook-static/assets/{ODataTreeSelect-BpuPkpt_.js → ODataTreeSelect-CtXGcTu6.js} +1 -1
  90. package/storybook-static/assets/{ODataTreeSelect.stories-Rgosfapi.js → ODataTreeSelect.stories-D9C0TW7E.js} +2 -2
  91. package/storybook-static/assets/{OneStepScroller-B8wmmQwf.js → OneStepScroller-DvNxIB4z.js} +1 -1
  92. package/storybook-static/assets/{Option-Bdu68XEe.js → Option-EvZAvPlO.js} +1 -1
  93. package/storybook-static/assets/{OptionButton-D0afktaf.js → OptionButton-ClHPJWSS.js} +1 -1
  94. package/storybook-static/assets/{PeriodSelect-D_NZ5ghQ.js → PeriodSelect-Cj4KFbL8.js} +1 -1
  95. package/storybook-static/assets/{PeriodSelect-C7DVNvsY.js → PeriodSelect-CopVqvke.js} +1 -1
  96. package/storybook-static/assets/PeriodSelect.stories-CdPRC5lO.js +50 -0
  97. package/storybook-static/assets/{PickerTriggerActions-ZNVb9eeZ.js → PickerTriggerActions-CChnIvDY.js} +1 -1
  98. package/storybook-static/assets/{Popover-CCGDNoKF.js → Popover-D84worS4.js} +2 -2
  99. package/storybook-static/assets/{Popover-CewYrQZr.js → Popover-GCefn4ZK.js} +1 -1
  100. package/storybook-static/assets/{Popover.stories-COIDcy4l.js → Popover.stories-Km8RZinG.js} +1 -1
  101. package/storybook-static/assets/{PresetRangeDateInput-DroAaDSa.js → PresetRangeDateInput-CKkA7evU.js} +2 -2
  102. package/storybook-static/assets/{PresetRangeDateInput-DclYoHcQ.js → PresetRangeDateInput-D8Nd8OKM.js} +1 -1
  103. package/storybook-static/assets/PresetRangeDateInput.stories-mEsDYDGg.js +3 -0
  104. package/storybook-static/assets/{PresetSelect-DCGdwz-H.js → PresetSelect-Bm-UK37m.js} +1 -1
  105. package/storybook-static/assets/{README-TpwnHOuM.js → README-9g3GgWWF.js} +4 -8
  106. package/storybook-static/assets/{README-CVydkudU.js → README-AVujzV-Q.js} +4 -8
  107. package/storybook-static/assets/{README-Bemrp1iw.js → README-B2M46KR7.js} +12 -12
  108. package/storybook-static/assets/{README-B5TiIjbQ.js → README-B2OZG04f.js} +1 -1
  109. package/storybook-static/assets/{README-Brb_uBB0.js → README-BAsxlcAX.js} +2 -2
  110. package/storybook-static/assets/{README-DWrWXc67.js → README-BPyrojLC.js} +3 -3
  111. package/storybook-static/assets/{README-Dq6K08x4.js → README-BQw3k-Ra.js} +4 -4
  112. package/storybook-static/assets/{README-BBDVhq-F.js → README-BYe60A3Z.js} +3 -3
  113. package/storybook-static/assets/{README-eKZfcYEw.js → README-BZOXtBHM.js} +1 -1
  114. package/storybook-static/assets/{README-C0tHxk9e.js → README-Bn52nDUU.js} +1 -1
  115. package/storybook-static/assets/{README-C6mK2jiz.js → README-Btc8dTTa.js} +1 -1
  116. package/storybook-static/assets/{README-CDO4U2L-.js → README-Bu8NSN83.js} +1 -1
  117. package/storybook-static/assets/{README-B8PHFNI6.js → README-ByU9WtnE.js} +1 -1
  118. package/storybook-static/assets/{README-B0LFAdG7.js → README-C-HfyZj6.js} +4 -8
  119. package/storybook-static/assets/{README-Cv6X1gyB.js → README-C19FjXEc.js} +6 -9
  120. package/storybook-static/assets/{README-BLXxOqWU.js → README-C3ootpC3.js} +5 -5
  121. package/storybook-static/assets/{README-CRdPVRby.js → README-C65NMR4N.js} +1 -1
  122. package/storybook-static/assets/{README-DXgQjmDb.js → README-C7uZcWP5.js} +1 -5
  123. package/storybook-static/assets/{README-CMRfMvBh.js → README-C9g6HTtO.js} +4 -4
  124. package/storybook-static/assets/{README-C9V17f1i.js → README-CGtXxNWL.js} +14 -14
  125. package/storybook-static/assets/{README-DQ3UG1-2.js → README-CJIysyPl.js} +1 -1
  126. package/storybook-static/assets/{README-Bq8Gw9ut.js → README-CU0nO91c.js} +3 -3
  127. package/storybook-static/assets/{README-HKNlRLs4.js → README-CV043M5l.js} +3 -3
  128. package/storybook-static/assets/{README-MUkRRO8C.js → README-CeVilD38.js} +1 -1
  129. package/storybook-static/assets/{README-DXAnOakM.js → README-Ch_Q8rfx.js} +3 -6
  130. package/storybook-static/assets/{README-BZh0P4dJ.js → README-CpJrFpd-.js} +1 -4
  131. package/storybook-static/assets/{README-CbQE6RqS.js → README-CzVaDwCa.js} +1 -1
  132. package/storybook-static/assets/{README-BnvGfIB_.js → README-D3ahQzwF.js} +1 -1
  133. package/storybook-static/assets/{README-DK77wEHj.js → README-DBedFn2k.js} +1 -1
  134. package/storybook-static/assets/{README-UY3fsLu_.js → README-DBgowiDe.js} +3 -5
  135. package/storybook-static/assets/{README-Gw_kdXei.js → README-DEZR-nsP.js} +4 -8
  136. package/storybook-static/assets/{README-CGv6MRmX.js → README-DIz7GaJX.js} +4 -4
  137. package/storybook-static/assets/{README-jnMsm42G.js → README-DOwtu6P8.js} +1 -1
  138. package/storybook-static/assets/{README-BQng9oML.js → README-DRlbzNwm.js} +4 -8
  139. package/storybook-static/assets/{README-BaupBcvr.js → README-DS9gKK_l.js} +1 -1
  140. package/storybook-static/assets/{README-B6bmU7Tq.js → README-DTM6S2tD.js} +3 -3
  141. package/storybook-static/assets/{README-CG7cgejD.js → README-DazyZywt.js} +4 -8
  142. package/storybook-static/assets/{README-BoojQHna.js → README-DgVBKXxO.js} +1 -1
  143. package/storybook-static/assets/{README-j6FF9vf5.js → README-Dga9VBXp.js} +9 -12
  144. package/storybook-static/assets/{README-CIS29z6p.js → README-DsG_VYny.js} +1 -1
  145. package/storybook-static/assets/{README-BqBKX_xQ.js → README-DsTcywLt.js} +4 -7
  146. package/storybook-static/assets/{README-BTM8wY-Q.js → README-Du_uNuzw.js} +3 -7
  147. package/storybook-static/assets/{README-B4FGWSHR.js → README-Dwu0rBCx.js} +4 -4
  148. package/storybook-static/assets/{README-BDEEI-me.js → README-EfW0h3H2.js} +5 -8
  149. package/storybook-static/assets/{README-SM_eIjlq.js → README-GPrnGZGg.js} +4 -4
  150. package/storybook-static/assets/{README-BqpsuZii.js → README-I-J1PF75.js} +3 -3
  151. package/storybook-static/assets/{README-j4oj7GSR.js → README-cHwz_DGu.js} +1 -1
  152. package/storybook-static/assets/{README-B2pks9-S.js → README-efyzb9zY.js} +1 -1
  153. package/storybook-static/assets/{README-DK-nosD8.js → README-foisdU5e.js} +1 -1
  154. package/storybook-static/assets/{README-QnKC46FO.js → README-na4Tvba4.js} +5 -9
  155. package/storybook-static/assets/{README-DFDO19TR.js → README-oFnWsuXd.js} +4 -4
  156. package/storybook-static/assets/{README-Db-VD9A-.js → README-pdJ6FjLG.js} +1 -1
  157. package/storybook-static/assets/{RadioButton-CN-1Bmu-.js → RadioButton-CFIAc4xz.js} +1 -1
  158. package/storybook-static/assets/{RadioButton-CioheQT6.js → RadioButton-Dk52KGyn.js} +2 -2
  159. package/storybook-static/assets/RadioButton.stories-B10De9DU.js +32 -0
  160. package/storybook-static/assets/{RadioGroup-CTZXoIcq.js → RadioGroup-B7X4Pr-l.js} +1 -1
  161. package/storybook-static/assets/{RadioGroup-CJzzJ3Fs.js → RadioGroup-DHpLxYGV.js} +2 -2
  162. package/storybook-static/assets/{RadioGroup.stories-C7N9yLcN.js → RadioGroup.stories-BAE8jGr_.js} +1 -1
  163. package/storybook-static/assets/{Scrollable-BOTJbzkH.js → Scrollable-vhQ02gPl.js} +1 -1
  164. package/storybook-static/assets/{Select-CNAFGsHq.js → Select-5pGJ-9Pp.js} +1 -1
  165. package/storybook-static/assets/{Select-D2yqrKAE.js → Select-wSFMQijV.js} +2 -2
  166. package/storybook-static/assets/Select.stories-D6_viZUX.js +69 -0
  167. package/storybook-static/assets/{SerializableSelect-BZBYLnHq.js → SerializableSelect-DDx9-Bur.js} +2 -2
  168. package/storybook-static/assets/{SerializableSelect.stories-PIYq8I5b.js → SerializableSelect.stories-lLHLEyB9.js} +2 -2
  169. package/storybook-static/assets/{SingleDateTimeInput-D2cDr1L5.js → SingleDateTimeInput-B4vUIB4m.js} +1 -1
  170. package/storybook-static/assets/{SingleDateTimeInput-B6M2oHtl.js → SingleDateTimeInput-DKleuzaX.js} +2 -2
  171. package/storybook-static/assets/{SingleDateTimeInput.stories-DqswDqo4.js → SingleDateTimeInput.stories-U_d98CIX.js} +1 -1
  172. package/storybook-static/assets/{Slider-C0fjZ3TE.js → Slider-C9EHsb-H.js} +3 -3
  173. package/storybook-static/assets/{Slider-Cu_mMfmP.js → Slider-Dfj4alv-.js} +1 -1
  174. package/storybook-static/assets/{Slider.stories-BcYnYgUs.js → Slider.stories-vZkWxSqT.js} +1 -1
  175. package/storybook-static/assets/{SliderInput-CaaSdoql.js → SliderInput-BdYHLdem.js} +1 -1
  176. package/storybook-static/assets/{SliderInput-D8pa0Cwh.js → SliderInput-CzlPZSO9.js} +3 -3
  177. package/storybook-static/assets/{SliderInput.stories-biJs3NtU.js → SliderInput.stories-C6tBSbPb.js} +1 -1
  178. package/storybook-static/assets/{Sortable-wyJd-LB7.js → Sortable-BGVo-kNH.js} +2 -2
  179. package/storybook-static/assets/Sortable.stories-vIFl2X-p.js +44 -0
  180. package/storybook-static/assets/{Splitter-D0L1B9tf.js → Splitter-BQWPhfku.js} +4 -4
  181. package/storybook-static/assets/{Splitter.stories-CDQGRB14.js → Splitter.stories-ICS_ZBHX.js} +1 -1
  182. package/storybook-static/assets/{StateSelect-BaThi-59.js → StateSelect-CyReXSM1.js} +2 -2
  183. package/storybook-static/assets/{StateSelect-hO1K2z4b.js → StateSelect-Dd6SpUUh.js} +1 -1
  184. package/storybook-static/assets/StateSelect.stories-D0-HsFXZ.js +59 -0
  185. package/storybook-static/assets/StringToggle.stories-pC48Sxqx.js +3 -0
  186. package/storybook-static/assets/{Switch-Ct9tsisu.js → Switch-BqR-1lxY.js} +2 -2
  187. package/storybook-static/assets/{Switch-DCV_mYJ2.js → Switch-Cj8-VcVg.js} +1 -1
  188. package/storybook-static/assets/Switch.stories-WiYjSzuW.js +15 -0
  189. package/storybook-static/assets/{Table-DaP6Qndv.js → Table-BxXretCJ.js} +4 -4
  190. package/storybook-static/assets/Table.stories-BNQvlsuf.js +178 -0
  191. package/storybook-static/assets/{Tabs-CC5Gzc7s.js → Tabs-Bfy1NJMT.js} +3 -3
  192. package/storybook-static/assets/{Tabs.stories-B_76Da9k.js → Tabs.stories-CPIuTwP2.js} +2 -2
  193. package/storybook-static/assets/{TabsBox-D52IZXj5.js → TabsBox-jMCEuOZ4.js} +1 -1
  194. package/storybook-static/assets/{TagInput-T9Lp1amS.js → TagInput-BUw0lagA.js} +1 -1
  195. package/storybook-static/assets/TagInput.stories-DFt-q5Jo.js +18 -0
  196. package/storybook-static/assets/{Text-CXcCu6R8.js → Text-qYKrK4eb.js} +1 -1
  197. package/storybook-static/assets/{Textarea-BlE2vGsV.js → Textarea-CHFjT8jC.js} +1 -1
  198. package/storybook-static/assets/{Textarea-CNl12Mkz.js → Textarea-evU43JN1.js} +2 -2
  199. package/storybook-static/assets/Textarea.stories-DEIYLgZF.js +17 -0
  200. package/storybook-static/assets/{TimePanel-DKD18ldm.js → TimePanel-DTiDfMFt.js} +1 -1
  201. package/storybook-static/assets/TimePanel.stories-Ct__ocID.js +10 -0
  202. package/storybook-static/assets/{Toggle-DKNuMtMW.js → Toggle-IPvbQmMD.js} +2 -2
  203. package/storybook-static/assets/{Toggle-fqZP5j32.js → Toggle-IdtrAW0T.js} +1 -1
  204. package/storybook-static/assets/Toggle.stories-BJ9VWYeG.js +25 -0
  205. package/storybook-static/assets/{TreeMultiSelect-b4PiPTEN.js → TreeMultiSelect-CH0Zc3KF.js} +1 -1
  206. package/storybook-static/assets/{TreeMultiSelect-B6et22Ea.js → TreeMultiSelect-CSd33bKQ.js} +1 -1
  207. package/storybook-static/assets/{TreeMultiSelect.stories-C_4ZpE9w.js → TreeMultiSelect.stories-BJwU3XBe.js} +1 -1
  208. package/storybook-static/assets/{TreePickerBase-BBwppLrT.js → TreePickerBase-CKnyu6AR.js} +1 -1
  209. package/storybook-static/assets/{TreeSelect-D4u7C0tA.js → TreeSelect-DYJm99Z2.js} +1 -1
  210. package/storybook-static/assets/{TreeSelect-BaCD5AjF.js → TreeSelect-DiiLtgN_.js} +1 -1
  211. package/storybook-static/assets/TreeSelect.stories-CEiN12BG.js +32 -0
  212. package/storybook-static/assets/{TreeTable-CbhUffZj.js → TreeTable-CInX-hLX.js} +3 -3
  213. package/storybook-static/assets/TreeTable.stories-DQsXSocU.js +138 -0
  214. package/storybook-static/assets/{WithTooltip-7X4HQR7L-DQ4Qthn2.js → WithTooltip-CDUNV5IS-mFMh6Qcu.js} +2 -2
  215. package/storybook-static/assets/{blocks-IjspN281.js → blocks-v2XPznvF.js} +3 -3
  216. package/storybook-static/assets/{check-ue9rVspp.js → check-Cw2uZkgi.js} +1 -1
  217. package/storybook-static/assets/{chevron-down-Dnk-3hJo.js → chevron-down-DCcoFYMu.js} +1 -1
  218. package/storybook-static/assets/{chevron-left-CaAFuWY0.js → chevron-left-DbTmcqTw.js} +1 -1
  219. package/storybook-static/assets/{chevron-right-CKnELL4E.js → chevron-right-BhBh36az.js} +1 -1
  220. package/storybook-static/assets/{chunk-W22LQPXL-jFAFLKOH.js → chunk-W22LQPXL-2pLErBcr.js} +1 -1
  221. package/storybook-static/assets/{circle-alert-miJVMeEa.js → circle-alert-DztOdOaG.js} +1 -1
  222. package/storybook-static/assets/circle-check-CAdrHnV2.js +1 -0
  223. package/storybook-static/assets/components-BTpiQE9n.js +241 -0
  224. package/storybook-static/assets/{contextMenu-D8NvB0La.js → contextMenu-DJ0HpnV6.js} +1 -1
  225. package/storybook-static/assets/{defaultRenderers-DfmnIuod.js → defaultRenderers-Dinv2uRZ.js} +1 -1
  226. package/storybook-static/assets/{download-Cq_lr01f.js → download-BT_zAyTC.js} +1 -1
  227. package/storybook-static/assets/floating-ui.react-Cvohd2Gw.js +1 -0
  228. package/storybook-static/assets/{formatters-D33Uh3si-CxrG0jsB.js → formatters-D33Uh3si-Df97arf9.js} +1 -1
  229. package/storybook-static/assets/{foundationApi-CLyEyFIu.js → foundationApi-DJeCu7Ht.js} +3 -6
  230. package/storybook-static/assets/{foundationLib-DH2mxNct.js → foundationLib-hGtcm5KL.js} +1 -1
  231. package/storybook-static/assets/{hooks-BwH7Yo1F.js → hooks-BCeL5FKt.js} +1 -1
  232. package/storybook-static/assets/iframe-B-Rqywce.js +1 -0
  233. package/storybook-static/assets/{iframe-B_6aAEqw.js → iframe-DlUmG4EA.js} +203 -203
  234. package/storybook-static/assets/{info-BgHKckDk.js → info-BkC2CBYX.js} +1 -1
  235. package/storybook-static/assets/odata-BMO7cuBZ.js +1 -0
  236. package/storybook-static/assets/odata-service-CWkHASdw-CXhFi03v.js +3 -0
  237. package/storybook-static/assets/odataStoryFixtures-CWldE9pM.js +25 -0
  238. package/storybook-static/assets/{react-18-D4o7zN8K.js → react-18-EmNFJX4V.js} +1 -1
  239. package/storybook-static/assets/react-C0u6t2Tr.js +9 -0
  240. package/storybook-static/assets/{refresh-cw-Cz1Mtnwr.js → refresh-cw-BA16_2Dg.js} +1 -1
  241. package/storybook-static/assets/{settings-2-BUY_jI1a.js → settings-2-C3fAar8h.js} +1 -1
  242. package/storybook-static/assets/{sortable-DfiDnDGH.js → sortable-4U2uS5RT.js} +1 -1
  243. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-RwE_sP6g.js → syntaxhighlighter-QEQV7K2Y-e4tU0oKD.js} +1 -1
  244. package/storybook-static/assets/theming-BgT2grXK.js +39 -0
  245. package/storybook-static/assets/{trash-2-Da9E4hDy.js → trash-2-DIhA8-QF.js} +1 -1
  246. package/storybook-static/assets/{triangle-alert-D2CpTkxC.js → triangle-alert-CYOiH1yf.js} +1 -1
  247. package/storybook-static/assets/{useODataSelectBase-BTVM_2wU.js → useODataSelectBase-CcvoIMyY.js} +1 -1
  248. package/storybook-static/assets/{useODataTreeData-BwwhT42f.js → useODataTreeData-Vkqc6Vi_.js} +1 -1
  249. package/storybook-static/assets/{usePickerQuery-Cug-ZpN1.js → usePickerQuery-7mnpDV7K.js} +1 -1
  250. package/storybook-static/assets/{usePickerTriggerController-D3h4HqB9.js → usePickerTriggerController-fH-NsvWu.js} +1 -1
  251. package/storybook-static/assets/{x-ri5iHB3T.js → x-BJ8ArZif.js} +1 -1
  252. package/storybook-static/iframe.html +2 -2
  253. package/storybook-static/index.json +1 -1
  254. package/storybook-static/project.json +1 -1
  255. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +1 -1
  256. package/storybook-static/sb-manager/globals-runtime.js +5 -2
  257. package/storybook-static/sb-manager/runtime.js +1 -0
  258. package/storybook-static/assets/Color-6AOWCN3U-C363KdaS.js +0 -1
  259. package/storybook-static/assets/DateRangePresetSelect.stories-BnnOI6oQ.js +0 -19
  260. package/storybook-static/assets/Dialog.stories-DPFNV_A3.js +0 -22
  261. package/storybook-static/assets/Disclosure.stories-C3MufHWp.js +0 -23
  262. package/storybook-static/assets/DropZone.stories-mB8JLlHw.js +0 -26
  263. package/storybook-static/assets/ExpandableActionPanel.stories-eChkcTa4.js +0 -9
  264. package/storybook-static/assets/ImageCropper.stories-BuwhJESS.js +0 -131
  265. package/storybook-static/assets/ImageRenderer.stories-BzyPfNyt.js +0 -34
  266. package/storybook-static/assets/ImageView.stories-FmQ_gxc7.js +0 -14
  267. package/storybook-static/assets/Input.stories-BbT8eOCH.js +0 -52
  268. package/storybook-static/assets/InputDateTime.stories-Cdz1C1X5.js +0 -38
  269. package/storybook-static/assets/InputFile.stories-B84afhOU.js +0 -27
  270. package/storybook-static/assets/InputFiles.stories-CgMk9QC9.js +0 -26
  271. package/storybook-static/assets/InputImage.stories-BD3x6S5Y.js +0 -56
  272. package/storybook-static/assets/MultiSelect.stories-CNNK5rRC.js +0 -55
  273. package/storybook-static/assets/NotificationsHost.stories-Bf-a-dC3.js +0 -29
  274. package/storybook-static/assets/PeriodSelect.stories-COeb_LJq.js +0 -50
  275. package/storybook-static/assets/PresetRangeDateInput.stories-BDmwSMwK.js +0 -3
  276. package/storybook-static/assets/README-oSHJDhIJ.js +0 -101
  277. package/storybook-static/assets/RadioButton.stories-GiewWDd0.js +0 -32
  278. package/storybook-static/assets/Select.stories-CYJpEv_P.js +0 -69
  279. package/storybook-static/assets/Sortable.stories-CNW8IhRv.js +0 -77
  280. package/storybook-static/assets/StateSelect.stories-DDviL5zf.js +0 -59
  281. package/storybook-static/assets/StringToggle.stories-CFAJvvxJ.js +0 -5
  282. package/storybook-static/assets/Switch.stories-COeP2eOi.js +0 -15
  283. package/storybook-static/assets/Table.stories-DDFcryTl.js +0 -207
  284. package/storybook-static/assets/TagInput.stories-DfH66OZc.js +0 -18
  285. package/storybook-static/assets/Textarea.stories-DVOJ06z_.js +0 -17
  286. package/storybook-static/assets/TimePanel.stories-Vn5OZdpQ.js +0 -14
  287. package/storybook-static/assets/Toggle.stories-BLolzyKP.js +0 -25
  288. package/storybook-static/assets/TreeSelect.stories-CDkOknim.js +0 -32
  289. package/storybook-static/assets/TreeTable.stories-D-x-lZkU.js +0 -168
  290. package/storybook-static/assets/circle-check-CNYBjmqs.js +0 -1
  291. package/storybook-static/assets/components-9iEtMVnM.js +0 -241
  292. package/storybook-static/assets/floating-ui.react-BoRzzZ17.js +0 -1
  293. package/storybook-static/assets/iframe-BxPT5t4V.js +0 -1
  294. package/storybook-static/assets/odata-D2I4jbKq.js +0 -1
  295. package/storybook-static/assets/odata-service-CWkHASdw-DlmSiioz.js +0 -3
  296. package/storybook-static/assets/odataStoryFixtures-BiN3x4k6.js +0 -25
  297. package/storybook-static/assets/react-BoM8yiX1.js +0 -9
  298. package/storybook-static/assets/theming-Cvtrnj7n.js +0 -39
@@ -1,27 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-B_6aAEqw.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./InputFile-CEMWMZ8W.js";var s=t({ArrayBufferMode:()=>g,Controlled:()=>m,WithInitialValue:()=>h,__namedExportsOrder:()=>_,default:()=>d}),c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{r(),a(),c=n(),{fn:l}=__STORYBOOK_MODULE_TEST__,u=(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}},d={title:`Shared/UI/InputFile`,component:o,args:{value:void 0,onChange:l(),readMode:`data-url`},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},accept:{description:"HTML `accept` для нативного диалога выбора файла.",control:`object`},allowedMime:{description:`Белый список MIME-типов для readFile-валидации.`,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:`Callback сброса ошибки при повторном выборе файла.`,control:!1},disabled:{description:`Блокирует выбор файла.`,control:`boolean`},size:{description:`Размер визуального контрола.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},f=i((e,t)=>{let n={...e,onChange:n=>{e.onChange(n),t({value:n})},onClear:()=>{e.onClear?.(),t({value:void 0})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}};return(0,c.jsx)(o,{...n})}),p=i((e,t)=>{let n={...e,onChange:n=>{e.onChange(n),t({value:n})},onClear:()=>{e.onClear?.(),t({value:void 0})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}};return(0,c.jsx)(o,{...n})}),m={render:f,args:{label:`Документ`,description:`Загрузите один файл.`,placeholder:`Выберите файл`,accept:[`.pdf`,`.docx`],readMode:`data-url`,value:void 0}},h={render:f,args:{label:`Файл с предзаполнением`,description:`Демонстрация состояния после успешной загрузки.`,value:u(`report.pdf`)}},g={render:p,args:{label:`Двоичное чтение`,description:"Режим `array-buffer` для дальнейшей бинарной обработки.",readMode:`array-buffer`,accept:[`.zip`,`.pdf`],value:void 0}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
2
- render: renderInputFileDataUrlStory,
3
- args: {
4
- label: "Документ",
5
- description: "Загрузите один файл.",
6
- placeholder: "Выберите файл",
7
- accept: [".pdf", ".docx"],
8
- readMode: "data-url",
9
- value: undefined
10
- }
11
- }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
12
- render: renderInputFileDataUrlStory,
13
- args: {
14
- label: "Файл с предзаполнением",
15
- description: "Демонстрация состояния после успешной загрузки.",
16
- value: createMockReadFileResult("report.pdf")
17
- }
18
- }`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
19
- render: renderInputFileArrayBufferStory,
20
- args: {
21
- label: "Двоичное чтение",
22
- description: "Режим \`array-buffer\` для дальнейшей бинарной обработки.",
23
- readMode: "array-buffer",
24
- accept: [".zip", ".pdf"],
25
- value: undefined
26
- }
27
- }`,...g.parameters?.docs?.source}}},_=[`Controlled`,`WithInitialValue`,`ArrayBufferMode`]})))()}export{v as a,h as i,m as n,s as r,g as t};
@@ -1,26 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-B_6aAEqw.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./InputFiles-AtxulUya.js";var s=t({Controlled:()=>p,LimitReached:()=>h,WithInitialFiles:()=>m,__namedExportsOrder:()=>g,default:()=>d}),c,l,u,d,f,p,m,h,g;function _(){return(_=e((()=>{r(),a(),c=n(),{fn:l}=__STORYBOOK_MODULE_TEST__,u=(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}},d={title:`Shared/UI/InputFiles`,component:o,args:{value:[],onChange:l(),readMode:`data-url`},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:`object`},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`]}}},f=i((e,t)=>(0,c.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}})),p={render:f,args:{label:`Вложения`,description:`Можно выбрать несколько файлов.`,placeholder:`Выберите файлы`,accept:[`.pdf`,`.png`,`.jpg`],maxFiles:5,value:[]}},m={render:f,args:{label:`Предзаполненный список`,description:`Иллюстрация удаления файлов из уже заполненного значения.`,value:[u(`contract.pdf`),u(`diagram.png`,`image/png`)]}},h={render:f,args:{label:`Лимит файлов`,description:`После достижения лимита поле выбора блокируется.`,maxFiles:2,value:[u(`first.pdf`),u(`second.pdf`)]}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
2
- render: renderInputFilesStory,
3
- args: {
4
- label: "Вложения",
5
- description: "Можно выбрать несколько файлов.",
6
- placeholder: "Выберите файлы",
7
- accept: [".pdf", ".png", ".jpg"],
8
- maxFiles: 5,
9
- value: []
10
- }
11
- }`,...p.parameters?.docs?.source}}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
12
- render: renderInputFilesStory,
13
- args: {
14
- label: "Предзаполненный список",
15
- description: "Иллюстрация удаления файлов из уже заполненного значения.",
16
- value: [createMockReadFileResult("contract.pdf"), createMockReadFileResult("diagram.png", "image/png")]
17
- }
18
- }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
19
- render: renderInputFilesStory,
20
- args: {
21
- label: "Лимит файлов",
22
- description: "После достижения лимита поле выбора блокируется.",
23
- maxFiles: 2,
24
- value: [createMockReadFileResult("first.pdf"), createMockReadFileResult("second.pdf")]
25
- }
26
- }`,...h.parameters?.docs?.source}}},g=[`Controlled`,`WithInitialFiles`,`LimitReached`]})))()}export{_ as a,m as i,s as n,h as r,p as t};
@@ -1,56 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-B_6aAEqw.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./InputImage-DKCC82SZ.js";var s=t({ArrayBufferMode:()=>g,Controlled:()=>m,WithInitialImage:()=>h,__namedExportsOrder:()=>_,default:()=>f}),c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{r(),a(),c=n(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=(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}}},f={title:`Shared/UI/InputImage`,component:o,args:{value:void 0,onChange:u(),readMode:`data-url`},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`]}}},p=i((e,t)=>(0,c.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})},onClear:()=>{e.onClear?.(),t({value:void 0})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}})),m={render:p,args:{label:`Аватар`,description:`Выберите одно изображение профиля.`,placeholder:`Выберите изображение`,readMode:`data-url`,allowedMime:[`image/png`,`image/jpeg`,`image/webp`],value:void 0}},h={render:function(e){let[,t]=l(),n=e.value;return(0,c.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,c.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})},onClear:()=>{e.onClear?.(),t({value:void 0})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}}),n?.mode===`data-url`&&(0,c.jsx)(`img`,{src:n.dataUrl,alt:`Предпросмотр`,style:{width:96,height:96,objectFit:`cover`,border:`1px solid var(--border-0)`}})]})},args:{label:`Изображение с предпросмотром`,description:`Сторис показывает, что значение можно использовать для preview.`,value:d()}},g={render:p,args:{label:`Двоичный режим`,description:`Используется, когда изображение нужно обработать как бинарные данные.`,readMode:`array-buffer`,value:void 0}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
2
- render: renderInputImageStory,
3
- args: {
4
- label: "Аватар",
5
- description: "Выберите одно изображение профиля.",
6
- placeholder: "Выберите изображение",
7
- readMode: "data-url",
8
- allowedMime: ["image/png", "image/jpeg", "image/webp"],
9
- value: undefined
10
- }
11
- }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
12
- render: function Render(args) {
13
- const [, updateArgs] = useArgs<InputImageProps>();
14
- const value = args.value;
15
- return <div style={{
16
- display: "grid",
17
- gap: 12
18
- }}>
19
- <InputImage {...args} onChange={nextValue => {
20
- args.onChange(nextValue);
21
- updateArgs({
22
- value: nextValue
23
- });
24
- }} onClear={() => {
25
- args.onClear?.();
26
- updateArgs({
27
- value: undefined
28
- });
29
- }} onClearError={() => {
30
- args.onClearError?.();
31
- updateArgs({
32
- error: undefined
33
- });
34
- }} />
35
- {value?.mode === "data-url" && <img src={value.dataUrl} alt="Предпросмотр" style={{
36
- width: 96,
37
- height: 96,
38
- objectFit: "cover",
39
- border: "1px solid var(--border-0)"
40
- }} />}
41
- </div>;
42
- },
43
- args: {
44
- label: "Изображение с предпросмотром",
45
- description: "Сторис показывает, что значение можно использовать для preview.",
46
- value: createMockReadImageResult()
47
- }
48
- }`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
49
- render: renderInputImageStory,
50
- args: {
51
- label: "Двоичный режим",
52
- description: "Используется, когда изображение нужно обработать как бинарные данные.",
53
- readMode: "array-buffer",
54
- value: undefined
55
- }
56
- }`,...g.parameters?.docs?.source}}},_=[`Controlled`,`WithInitialImage`,`ArrayBufferMode`]})))()}export{v as a,h as i,m as n,s as r,g as t};
@@ -1,55 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-B_6aAEqw.js";import{n as i,t as a}from"./MultiSelect-N4vTBX-X.js";var o=t({Basic:()=>p,Empty:()=>g,ErrorState:()=>h,Loading:()=>m,__namedExportsOrder:()=>_,default:()=>f}),s,c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{s=n(),i(),c=r(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=[{code:`MOW`,label:`Москва`},{code:`SPB`,label:`Санкт-Петербург`},{code:`EKB`,label:`Екатеринбург`},{code:`KZN`,label:`Казань`},{code:`NSK`,label:`Новосибирск`}],f={title:`Shared/UI/MultiSelect`,component:a,args:{label:`Города`,description:`Выберите несколько значений.`,placeholder:`Начните вводить`,value:[],onChange:u(),codeKey:`code`,textKey:`label`,items:d,query:``,onQuery:u(),onOpen:()=>{},onClose:u(),size:`md`,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст пустого поля.`,control:`text`},value:{description:`Контролируемый набор выбранных option.`,control:!1},onChange:{description:`Вызывается после подтверждения набора option.`,control:!1},codeKey:{description:`Имя поля option с уникальным ключом.`,control:`text`},textKey:{description:`Имя поля option с отображаемым текстом.`,control:`text`},hideCode:{description:`Скрывает код option в токенах и списке.`,control:`boolean`},items:{description:`Набор доступных option.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},highlightQuery:{description:`Текст, который подсвечивается в option.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},defaultFilter:{description:`Включает встроенную фильтрацию option.`,control:`boolean`},getOptionDisabled:{description:`Блокирует отдельные option с учетом текущего выбора.`,control:!1},onOpen:{description:`Вызывается при открытии списка.`,control:!1},onClose:{description:`Вызывается при закрытии списка после commit.`,control:!1},error:{description:`Текст ошибки загрузки option.`,control:`text`},isLoading:{description:`Показывает состояние загрузки option.`,control:`boolean`},renderToken:{description:`Кастомный рендер выбранных токенов.`,control:!1},renderToolbar:{description:`Кастомный рендер toolbar popup.`,control:!1},renderItem:{description:`Возвращает text, code и searchText для общей композиции OptionButton.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},p={render:function(e){let[,t]=l(),n=e.value??[d[1]],r=e.query??``,i=(0,s.useMemo)(()=>{let e=r.trim().toLowerCase();return e?d.filter(t=>t.label.toLowerCase().includes(e)||t.code.toLowerCase().includes(e)):d},[r]);return(0,c.jsx)(a,{...e,value:n,items:i,query:r,onQuery:n=>{e.onQuery?.(n),t({query:n})},onChange:n=>{e.onChange(n),t({value:n})}})}},m={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],isLoading:!0,onChange:n=>{e.onChange(n),t({value:n})}})}},h={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],error:`Ошибка загрузки`,onChange:n=>{e.onChange(n),t({value:n})}})}},g={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],onChange:n=>{e.onChange(n),t({value:n})}})}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
2
- render: function Render(args) {
3
- const [, updateArgs] = useArgs<React.ComponentProps<typeof MultiSelect>>();
4
- const value = args.value ?? [catalog[1]!];
5
- const query = args.query ?? "";
6
- const filteredItems = useMemo(() => {
7
- const needle = query.trim().toLowerCase();
8
- if (!needle) {
9
- return catalog;
10
- }
11
- return catalog.filter(item => item.label.toLowerCase().includes(needle) || item.code.toLowerCase().includes(needle));
12
- }, [query]);
13
- return <MultiSelect {...args} value={value} items={filteredItems} query={query} onQuery={query => {
14
- args.onQuery?.(query);
15
- updateArgs({
16
- query
17
- });
18
- }} onChange={value => {
19
- args.onChange(value);
20
- updateArgs({
21
- value
22
- });
23
- }} />;
24
- }
25
- }`,...p.parameters?.docs?.source}}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
26
- render: function Render(args) {
27
- const [, updateArgs] = useArgs<React.ComponentProps<typeof MultiSelect>>();
28
- return <MultiSelect {...args} value={args.value ?? []} items={[]} isLoading onChange={value => {
29
- args.onChange(value);
30
- updateArgs({
31
- value
32
- });
33
- }} />;
34
- }
35
- }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
36
- render: function Render(args) {
37
- const [, updateArgs] = useArgs<React.ComponentProps<typeof MultiSelect>>();
38
- return <MultiSelect {...args} value={args.value ?? []} items={[]} error="Ошибка загрузки" onChange={value => {
39
- args.onChange(value);
40
- updateArgs({
41
- value
42
- });
43
- }} />;
44
- }
45
- }`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
46
- render: function Render(args) {
47
- const [, updateArgs] = useArgs<React.ComponentProps<typeof MultiSelect>>();
48
- return <MultiSelect {...args} value={args.value ?? []} items={[]} onChange={value => {
49
- args.onChange(value);
50
- updateArgs({
51
- value
52
- });
53
- }} />;
54
- }
55
- }`,...g.parameters?.docs?.source}}},_=[`Basic`,`Loading`,`ErrorState`,`Empty`]})))()}export{o as a,m as i,g as n,v as o,h as r,p as t};
@@ -1,29 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./check-ue9rVspp.js";import{n as a,t as o}from"./circle-alert-miJVMeEa.js";import{n as s,t as c}from"./circle-check-CNYBjmqs.js";import{i as l,n as ee,r as te,t as ne}from"./info-BgHKckDk.js";import{n as re,t as ie}from"./refresh-cw-Cz1Mtnwr.js";import{n as ae,t as oe}from"./trash-2-Da9E4hDy.js";import{n as se,t as u}from"./triangle-alert-D2CpTkxC.js";import{n as ce,t as le}from"./x-ri5iHB3T.js";import{i as d,n as f,r as p}from"./iframe-B_6aAEqw.js";import{a as ue,i as de}from"./utils-tg3ibbzi.js";import{a as fe,i as pe,n as me,r as he}from"./react-GkniIHEK.js";import{n as ge}from"./error-De9R4E_F.js";import{n as _e,t as m}from"./FlexContainer-BWyPlTMB.js";import{n as h,t as g}from"./Button-XTBI9blK.js";var _,v;function y(){return(y=e((()=>{d(),_=[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]],v=p(`bell-ring`,_)})))()}var b,x;function S(){return(S=e((()=>{d(),b=[[`path`,{d:`M10 2h4`,key:`n1abiw`}],[`path`,{d:`M12 14v-4`,key:`1evpnu`}],[`path`,{d:`M4 13a8 8 0 0 1 8-7 8 8 0 1 1-5.3 14L4 17.6`,key:`1ts96g`}],[`path`,{d:`M9 17H4v5`,key:`8t5av`}]],x=p(`timer-reset`,b)})))()}var C,w,T,E,D,O,k;function A(){return(A=e((()=>{fe(),C=null,w=e=>(C=e,()=>{C===e&&(C=null)}),T=()=>{if(!C)throw Error(`Notifications store is not bound. Wrap app with NotificationsProvider.`);return C},E=Object.freeze({push:e=>T().getState().actions.push(e),upsert:e=>T().getState().actions.upsert(e),update:(e,t)=>T().getState().actions.update(e,t),dismiss:e=>T().getState().actions.dismiss(e),clear:()=>T().getState().actions.clear(),success:(e,t)=>T().getState().actions.push({type:`success`,message:e,...t}),info:(e,t)=>T().getState().actions.push({type:`info`,message:e,...t}),warning:(e,t)=>T().getState().actions.push({type:`warning`,message:e,...t}),error:(e,t)=>T().getState().actions.push({type:`error`,message:e,...t}),progress:(e,t)=>{let n=T(),r=t?.id;r&&n.getState().actions.upsert({id:r,type:`info`,title:t?.title,message:e,dismissible:!1});let i=r??n.getState().actions.push({type:`info`,title:t?.title,message:e,dismissible:!1});return{id:i,update:e=>E.update(i,{message:e}),success:(e,t=2500)=>E.update(i,{type:`success`,message:e,dismissible:!0,ttlMs:t}),error:(e,t=5e3)=>E.update(i,{type:`error`,message:e,dismissible:!0,ttlMs:t}),dismiss:()=>E.dismiss(i)}}}),D=()=>`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,9)}`,O=6,k=()=>{let e=new Map,t=t=>{let n=e.get(t);n&&(window.clearTimeout(n),e.delete(t))},n=(n,r,i=1e4)=>{if(t(r),i<=0)return;let a=window.setTimeout(()=>{n.getState().actions.dismiss(r)},i);e.set(r,a)},r=pe()((i,a)=>({items:[],actions:{push:e=>{let t=e.id??D(),a=Date.now(),o={id:t,type:e.type,title:e.title,message:e.message,createdAt:a,ttlMs:e.ttlMs,dismissible:e.dismissible??!0,actions:e.actions};return i(e=>({items:[o,...e.items.filter(e=>e.id!==t)].slice(0,O)})),n(r,t,o.ttlMs),t},update:(e,t)=>{let{items:o}=a(),s=o.findIndex(t=>t.id===e);if(s===-1)return!1;let c=o[s],l={...c,...t,id:c.id,createdAt:c.createdAt};return i(t=>({items:t.items.map(t=>t.id===e?l:t)})),`ttlMs`in t&&n(r,e,l.ttlMs),!0},upsert:e=>a().actions.update(e.id,{type:e.type,title:e.title,message:e.message,ttlMs:e.ttlMs,dismissible:e.dismissible})?e.id:a().actions.push(e),dismiss:e=>{t(e),i(t=>({items:t.items.filter(t=>t.id!==e)}))},clear:()=>{e.forEach(e=>window.clearTimeout(e)),e.clear(),i({items:[]})}}}));return r}})))()}function j({children:e}){let t=(0,P.useMemo)(()=>k(),[]);return(0,P.useEffect)(()=>w(t),[t]),(0,F.jsx)(I.Provider,{value:t,children:e})}function M(){let e=(0,P.useContext)(I);if(!e)throw ge({hookName:`useNotificationApi`,providerName:`NotificationsProvider`});return e}function ve(){let e=M();return he(e,e=>e.items)}function N(){let e=M(),t=he(e,e=>e.actions),n=e=>(n,r)=>t.push({type:e,message:n,...r});return{...t,success:n(`success`),info:n(`info`),warning:n(`warning`),error:n(`error`)}}var P,F,I;function L(){return(L=e((()=>{P=n(),A(),me(),F=f(),I=(0,P.createContext)(null),j.__docgenInfo={description:`Провайдер уведомлений приложения. Хранит состояние списка уведомлений и предоставляет хуки доступа к нему.`,methods:[],displayName:`NotificationsProvider`}})))()}var R,z,B,V,H,ye,U,be,xe,Se,Ce,we,Te,Ee,W;function De(){return(De=e((()=>{R=`STGQ3g`,z=`RaiISE`,B=`cM81wO`,V=`nH2cuZ`,H=`A2glD7`,ye=`yWjijS`,U=`_1HO2ne`,be=`OyRJpj`,xe=`vrCrow`,Se=`A0X-ma`,Ce=`AkHvPV`,we=`_4YDLB5`,Te=`CK3Bqv`,Ee=`nLmQut`,W={container:R,card:z,info:B,success:V,warning:H,error:ye,header:U,content:be,copy:xe,icon:Se,kicker:Ce,title:we,message:Te,actions:Ee}})))()}function G(){let e=ve(),{dismiss:t}=N();return(0,K.jsx)(`div`,{className:W.container,"aria-label":`Область уведомлений`,"aria-live":`polite`,"aria-relevant":`additions text`,children:e.map(e=>{let n=Oe[e.type],r=e.title??n.title,i=n.Icon;return(0,K.jsx)(`article`,{role:e.type===`error`?`alert`:`status`,"aria-atomic":`true`,className:ue(W.card,W[e.type]),children:(0,K.jsxs)(m,{align:`start`,justify:`between`,gap:`sm`,className:W.header,children:[(0,K.jsxs)(m,{align:`start`,gap:`sm`,className:W.content,children:[(0,K.jsx)(`span`,{className:W.icon,"aria-hidden":`true`,children:(0,K.jsx)(i,{})}),(0,K.jsxs)(`div`,{className:W.copy,children:[(0,K.jsx)(`div`,{className:W.kicker,children:n.title}),e.title?(0,K.jsx)(`div`,{className:W.title,children:r}):null,(0,K.jsx)(`div`,{className:W.message,children:e.message}),e.actions?.length?(0,K.jsx)(`div`,{className:W.actions,children:e.actions.map(t=>(0,K.jsx)(g,{tone:t.tone??e.type,appearance:`outline`,"data-ui":`notification-action-button`,"data-action":`notification-action`,onClick:()=>void t.onClick(),children:t.label},t.label))}):null]})]}),e.dismissible===!1?null:(0,K.jsx)(g,{icon:(0,K.jsx)(le,{}),appearance:`ghost`,tone:e.type,onClick:()=>t(e.id),"aria-label":`Закрыть уведомление`,"data-ui":`notification-dismiss-button`,"data-action":`dismiss-notification`})]})},e.id)})})}var K,Oe;function ke(){return(ke=e((()=>{de(),a(),s(),ee(),se(),ce(),h(),_e(),L(),De(),K=f(),Oe={info:{title:`Информация`,Icon:ne},success:{title:`Успешно`,Icon:c},warning:{title:`Предупреждение`,Icon:u},error:{title:`Ошибка`,Icon:o}},G.__docgenInfo={description:`Хост для визуального отображения очереди уведомлений.
2
- Обычно монтируется один раз на уровне приложения рядом с провайдером уведомлений.`,methods:[],displayName:`NotificationsHost`}})))()}var Ae=t({InteractivePlayground:()=>Q,Showcase:()=>Z,__namedExportsOrder:()=>He,default:()=>Le});function je(){let{clear:e}=N();return(0,q.useEffect)(()=>(e(),()=>{e()}),[e]),null}function Me({children:e,hostProps:t}){return(0,J.jsxs)(j,{children:[(0,J.jsx)(je,{}),(0,J.jsx)(`div`,{style:Re,children:(0,J.jsxs)(`div`,{style:ze,children:[(0,J.jsxs)(`div`,{style:Be,children:[(0,J.jsx)(`h2`,{style:{margin:0,fontSize:`var(--font-size-xl)`},children:`Демонстрация очереди уведомлений`}),(0,J.jsx)(`p`,{style:{margin:`12px 0 0`,color:`var(--content-1)`},children:"Хост закреплён в левом нижнем углу и использует общие токены проекта: `surface`, `content`, `status` и семантические `tone-*`. Внутри историй можно проверить лимит очереди, sticky-уведомления и сценарий длительной операции с обновлением одного уведомления."})]}),e]})}),(0,J.jsx)(G,{...t})]})}function Ne({children:e}){let[t]=Ie();return(0,J.jsx)(Me,{hostProps:t,children:e})}function Pe(){let{clear:e,push:t}=N();return(0,q.useEffect)(()=>(e(),t({type:`info`,title:`Сетевой статус`,message:`Подключение к серверу восстановлено.`,ttlMs:6e3}),t({type:`success`,title:`Профиль обновлён`,message:`Изменения сохранены и отправлены в очередь на синхронизацию.`,ttlMs:4500}),t({type:`warning`,title:`Требуется внимание`,message:`Срок действия сессии истекает через 5 минут.`}),t({type:`error`,title:`Ошибка импорта`,message:`Не удалось загрузить журнал операций.
3
- Повторите запрос или обратитесь к администратору.`}),()=>{e()}),[e,t]),(0,J.jsxs)(`div`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Снимок состояний`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:`История сразу заполняет очередь всеми типами уведомлений, чтобы оценить цвет, иконки, контраст и читаемость текста.`})]})}function Fe(){let e=N(),t=(0,q.useRef)(null),[n,r]=(0,q.useState)(!1),a=()=>{t.current=null,r(!1)},o=(n,r)=>{let i=t.current;i&&(!e.update(i,{message:n,...r})||r?.type)&&a()};return(0,J.jsxs)(`div`,{style:Ve,children:[(0,J.jsxs)(`section`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Базовые сценарии`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:"Вызовы через `useNotify` подходят для UI-логики внутри React-компонентов."}),(0,J.jsxs)(`div`,{style:X,children:[(0,J.jsx)(g,{tone:`info`,appearance:`outline`,icon:(0,J.jsx)(ne,{}),onClick:()=>e.info(`Справочник обновлён по расписанию.`,{title:`Информация`,ttlMs:3500}),children:`Info`}),(0,J.jsx)(g,{tone:`success`,appearance:`solid`,icon:(0,J.jsx)(i,{}),onClick:()=>e.success(`Изменения сохранены.`,{title:`Операция завершена`,ttlMs:2500}),children:`Success`}),(0,J.jsx)(g,{tone:`warning`,appearance:`outline`,icon:(0,J.jsx)(u,{}),onClick:()=>e.warning(`Подтвердите действие в течение 2 минут.`,{title:`Требуется подтверждение`,dismissible:!1}),children:`Sticky warning`}),(0,J.jsx)(g,{tone:`error`,appearance:`solid`,icon:(0,J.jsx)(te,{}),onClick:()=>e.error(`Сервис проверки подписей недоступен.`,{title:`Критическая ошибка`}),children:`Error`})]})]}),(0,J.jsxs)(`section`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Долгая операция`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:"Сценарий имитирует `notify.progress`: создаёт одно sticky-уведомление и затем обновляет его по тому же `id`."}),(0,J.jsxs)(`div`,{style:X,children:[(0,J.jsx)(g,{variant:`neutralOutline`,icon:(0,J.jsx)(v,{}),onClick:()=>{let n=e.push({type:`info`,title:`Экспорт архива`,message:`Подготавливаю пакет документов...`,dismissible:!1});t.current=n,r(!0)},children:`Запустить`}),(0,J.jsx)(g,{variant:`neutralOutline`,icon:(0,J.jsx)(ie,{}),onClick:()=>{o(`Обработано 68% записей. Формирую итоговый архив...`)},disabled:!n,children:`Обновить прогресс`}),(0,J.jsx)(g,{tone:`success`,appearance:`outline`,icon:(0,J.jsx)(i,{}),onClick:()=>{o(`Архив подготовлен и доступен для скачивания.`,{type:`success`,ttlMs:2500,dismissible:!0})},disabled:!n,children:`Завершить успешно`}),(0,J.jsx)(g,{tone:`error`,appearance:`outline`,icon:(0,J.jsx)(te,{}),onClick:()=>{o(`Не удалось собрать архив из-за ошибки чтения вложений.`,{type:`error`,ttlMs:5e3,dismissible:!0})},disabled:!n,children:`Завершить ошибкой`})]})]}),(0,J.jsxs)(`section`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Очередь и очистка`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:`Стор сохраняет не более 6 уведомлений. Кнопка ниже специально создаёт 8 элементов, чтобы проверить отсечение старых записей.`}),(0,J.jsxs)(`div`,{style:X,children:[(0,J.jsx)(g,{variant:`neutralOutline`,icon:(0,J.jsx)(ie,{}),onClick:()=>{for(let t=1;t<=8;t+=1)e.info(`Пакет ${t} поставлен в очередь на обработку.`,{title:`Задача ${t}`,ttlMs:8e3})},children:`Заполнить очередь`}),(0,J.jsx)(g,{tone:`info`,appearance:`outline`,icon:(0,J.jsx)(x,{}),onClick:()=>e.info(`Это уведомление исчезнет автоматически через 2 секунды.`,{title:`TTL = 2000 мс`,ttlMs:2e3}),children:`Проверить TTL`}),(0,J.jsx)(g,{variant:`transparent`,icon:(0,J.jsx)(oe,{}),onClick:()=>{a(),e.clear()},children:`Очистить всё`})]})]})]})}var q,J,Ie,Le,Re,ze,Be,Ve,Y,X,Z,Q,He;function $(){return($=e((()=>{q=n(),y(),r(),ee(),re(),S(),ae(),se(),l(),h(),L(),ke(),J=f(),{useArgs:Ie}=__STORYBOOK_MODULE_PREVIEW_API__,Le={title:`Shared/UI/Notifications`,component:G,args:{},argTypes:{},parameters:{atomicCanvas:!0,layout:`fullscreen`,docs:{description:{component:`Компонент отображает очередь глобальных уведомлений поверх интерфейса. Истории ниже показывают внешний вид для разных статусов, работу автозакрытия, ограничение очереди и сценарий длительной операции с обновлением одного уведомления.`}}}},Re={minHeight:`100vh`,padding:`32px 24px 160px`,background:`linear-gradient(180deg, color-mix(in srgb, var(--surface-1) 82%, transparent) 0%, var(--surface-0) 100%)`,color:`var(--content-0)`},ze={maxWidth:1120,margin:`0 auto`,display:`grid`,gap:16},Be={padding:20,border:`var(--border)`,borderRadius:`var(--radius-md)`,background:`var(--surface-0)`,boxShadow:`var(--shadow-sm)`},Ve={display:`grid`,gap:16,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`},Y={padding:20,border:`var(--border)`,borderRadius:`var(--radius-md)`,background:`var(--surface-0)`,boxShadow:`var(--shadow-sm)`,display:`grid`,gap:12,alignContent:`start`},X={display:`flex`,flexWrap:`wrap`,gap:10},Z={render:function(){return(0,J.jsx)(Ne,{children:(0,J.jsx)(Pe,{})})},parameters:{docs:{description:{story:`Быстрый визуальный обзор: все статусы сразу добавляются в очередь после открытия истории.`}}}},Q={render:function(){return(0,J.jsx)(Ne,{children:(0,J.jsx)(Fe,{})})},parameters:{docs:{description:{story:`Интерактивный сценарий для проверки базовых уведомлений, длительной операции, лимита очереди и автозакрытия.`}}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
4
- render: function Render() {
5
- return <NotificationsStoryCanvas>
6
- <ShowcaseSeed />
7
- </NotificationsStoryCanvas>;
8
- },
9
- parameters: {
10
- docs: {
11
- description: {
12
- story: "Быстрый визуальный обзор: все статусы сразу добавляются в очередь после открытия истории."
13
- }
14
- }
15
- }
16
- }`,...Z.parameters?.docs?.source}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`{
17
- render: function Render() {
18
- return <NotificationsStoryCanvas>
19
- <PlaygroundPanel />
20
- </NotificationsStoryCanvas>;
21
- },
22
- parameters: {
23
- docs: {
24
- description: {
25
- story: "Интерактивный сценарий для проверки базовых уведомлений, длительной операции, лимита очереди и автозакрытия."
26
- }
27
- }
28
- }
29
- }`,...Q.parameters?.docs?.source}}},He=[`Showcase`,`InteractivePlayground`]})))()}export{$ as i,Ae as n,Z as r,Q as t};
@@ -1,50 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-B_6aAEqw.js";import{n as r,t as i}from"./Text-CXcCu6R8.js";import{a,b as o,y as s}from"./formatters-D33Uh3si-CxrG0jsB.js";import{n as c,t as l}from"./createControlledStoryRender-BouhvX-R.js";import{n as u,t as d}from"./GridContainer-fKYgDsLl.js";import{r as f,t as p}from"./DateInput-Ceqy8_hm.js";import{i as m,n as h,r as g,t as _}from"./PeriodSelect-D_NZ5ghQ.js";var v=t({AllAllowedOptionsDisabled:()=>A,AlternativeLabels:()=>k,AutoSwitchByRange:()=>D,Controlled:()=>E,Disabled:()=>j,MonthAndYear:()=>O,__namedExportsOrder:()=>M,default:()=>w});function y(e){return e!==void 0&&o(e)?e:null}var b,x,S,C,w,T,E,D,O,k,A,j,M;function N(){return(N=e((()=>{s(),f(),c(),u(),r(),m(),h(),b=n(),{fn:x}=__STORYBOOK_MODULE_TEST__,S=[new Date(2026,2,1,0,0,0),new Date(2026,2,14,23,59,59)],C=[new Date(2026,0,1,0,0,0),new Date(2026,4,20,23,59,59)],w={title:`Shared/UI/PeriodSelect`,component:_,args:{label:`Период детализации`,description:`Выберите уровень группировки дат.`,placeholder:`Выберите период`,value:`day`,onChange:x(),presetIds:g,dateRange:S,maxDayRangeDays:31,maxWeekRangeWeeks:26,disabled:!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Select периода детализации дат. Компонент работает с id периода и может блокировать слишком детальные варианты по переданному диапазону дат.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда период не выбран.`,control:`text`},value:{description:`Текущий id периода.`,control:`select`,options:g},onChange:{description:`Вызывается с id выбранного периода.`,control:!1},options:{description:"Кастомный список периодов по контракту `PeriodSelectOption`; имеет приоритет над `presetIds`, `labels` и порогами диапазона.",control:!1},labels:{description:`Частичные подписи встроенных периодов поверх канонического каталога.`,control:`object`},presetIds:{description:"Разрешенные встроенные периоды. Порядок отображения остается `day → week → month → year`.",control:`check`,options:g},dateRange:{description:`Диапазон дат, по которому вычисляются заблокированные периоды.`,control:!1},maxDayRangeDays:{description:"Максимальное количество дней, при котором доступен период `day`.",control:{type:`number`,min:1,step:1}},maxWeekRangeWeeks:{description:"Максимальное количество недель, при котором доступен период `week`.",control:{type:`number`,min:1,step:1}},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},T=l((e,t)=>{let n=y(e.dateRange),r=a(e.dateRange??null);return(0,b.jsxs)(d,{gap:`md`,children:[(0,b.jsx)(_,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,b.jsx)(p,{label:`Связанный диапазон дат`,placeholder:`дд.мм.гггг - дд.мм.гггг`,value:n,onChange:e=>t({dateRange:e??void 0})}),(0,b.jsxs)(i,{as:`p`,color:`secondary`,"aria-live":`polite`,children:[`Выбрано: `,(0,b.jsx)(i,{as:`code`,children:e.value??`не выбрано`}),`. Дней в диапазоне:`,` `,(0,b.jsx)(i,{as:`code`,children:r??`не задано`}),`.`]})]})}),E={name:`Контролируемый выбор`,render:T},D={name:`Автопереключение по диапазону`,args:{value:`day`,dateRange:C,maxDayRangeDays:31,maxWeekRangeWeeks:8},render:T},O={name:`Только месяцы и годы`,args:{value:`month`,presetIds:[`month`,`year`]},render:T},k={name:`Альтернативные подписи`,args:{value:`month`,labels:{day:`за день`,week:`за неделю`,month:`за месяц`,year:`за год`}},render:T},A={name:`Все разрешенные варианты недоступны`,args:{value:`day`,presetIds:[`day`,`week`],dateRange:C,maxDayRangeDays:31,maxWeekRangeWeeks:8},render:T},j={name:`Заблокированный контрол`,args:{disabled:!0,value:`week`}},E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
2
- name: "Контролируемый выбор",
3
- render: renderPeriodSelectStory
4
- }`,...E.parameters?.docs?.source},description:{story:"Контролируемый сценарий синхронизирует `value` и `dateRange` через Storybook args.",...E.parameters?.docs?.description}}},D.parameters={...D.parameters,docs:{...D.parameters?.docs,source:{originalSource:`{
5
- name: "Автопереключение по диапазону",
6
- args: {
7
- value: "day",
8
- dateRange: longDateRange,
9
- maxDayRangeDays: 31,
10
- maxWeekRangeWeeks: 8
11
- },
12
- render: renderPeriodSelectStory
13
- }`,...D.parameters?.docs?.source},description:{story:"Длинный диапазон блокирует `day` и `week`, поэтому контрол переключает значение на ближайший доступный период.",...D.parameters?.docs?.description}}},O.parameters={...O.parameters,docs:{...O.parameters?.docs,source:{originalSource:`{
14
- name: "Только месяцы и годы",
15
- args: {
16
- value: "month",
17
- presetIds: ["month", "year"]
18
- },
19
- render: renderPeriodSelectStory
20
- }`,...O.parameters?.docs?.source},description:{story:`Allow-list ограничивает встроенный каталог двумя крупными уровнями детализации.`,...O.parameters?.docs?.description}}},k.parameters={...k.parameters,docs:{...k.parameters?.docs,source:{originalSource:`{
21
- name: "Альтернативные подписи",
22
- args: {
23
- value: "month",
24
- labels: {
25
- day: "за день",
26
- week: "за неделю",
27
- month: "за месяц",
28
- year: "за год"
29
- }
30
- },
31
- render: renderPeriodSelectStory
32
- }`,...k.parameters?.docs?.source},description:{story:`Частичный labels override меняет формулировки встроенных вариантов,
33
- сохраняя их id, порядок и ограничения доступности.`,...k.parameters?.docs?.description}}},A.parameters={...A.parameters,docs:{...A.parameters?.docs,source:{originalSource:`{
34
- name: "Все разрешенные варианты недоступны",
35
- args: {
36
- value: "day",
37
- presetIds: ["day", "week"],
38
- dateRange: longDateRange,
39
- maxDayRangeDays: 31,
40
- maxWeekRangeWeeks: 8
41
- },
42
- render: renderPeriodSelectStory
43
- }`,...A.parameters?.docs?.source},description:{story:`При длинном диапазоне все разрешенные варианты временно недоступны; внешний
44
- controlled-id сохраняется, и после сокращения диапазона отображение восстанавливается.`,...A.parameters?.docs?.description}}},j.parameters={...j.parameters,docs:{...j.parameters?.docs,source:{originalSource:`{
45
- name: "Заблокированный контрол",
46
- args: {
47
- disabled: true,
48
- value: "week"
49
- }
50
- }`,...j.parameters?.docs?.source}}},M=[`Controlled`,`AutoSwitchByRange`,`MonthAndYear`,`AlternativeLabels`,`AllAllowedOptionsDisabled`,`Disabled`]})))()}export{j as a,N as c,E as i,k as n,O as o,D as r,v as s,A as t};
@@ -1,3 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{a as n,i as r,r as i}from"./CalendarView-5yfJ6Sx-.js";import{n as a}from"./iframe-B_6aAEqw.js";import{n as o,t as s}from"./Text-CXcCu6R8.js";import{n as c,t as l}from"./FlexContainer-BWyPlTMB.js";import{n as u,t as d}from"./createControlledStoryRender-BouhvX-R.js";import{a as f,r as p}from"./DateRangePresetSelect-EUO5ju87.js";import{n as m,t as h}from"./PresetRangeDateInput-DclYoHcQ.js";var g=t({Default:()=>x,__namedExportsOrder:()=>S,default:()=>y}),_,v,y,b,x,S;function C(){return(C=e((()=>{n(),f(),u(),c(),o(),m(),_=a(),{fn:v}=__STORYBOOK_MODULE_TEST__,y={title:`Shared/UI/PresetRangeDateInput`,component:h,args:{label:`Диапазон дат`,placeholder:`дд.мм.гггг - дд.мм.гггг`,value:[new Date(2026,2,10,0,0,0),new Date(2026,2,10,23,59,59)],onChange:v(),presetId:`today`,onPresetIdChange:v(),referenceDate:new Date(2026,2,10,12,0,0),presetLabel:`Быстрый диапазон`,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{presetId:{description:"Контролируемый ID выбранного быстрого пресета. `null` снимает внешний выбор.",control:`select`,options:[...p,null]},onPresetIdChange:{description:`Вызывается, когда выбор пресета меняется из-за preset или ручного диапазона.`,control:!1},referenceDate:{description:`Опорная дата для вычисления встроенных быстрых диапазонов.`,control:`date`},presetIds:{description:"Разрешённые встроенные ID пресетов, если не передан `presetOptions`.",control:`check`,options:p},presetOptions:{description:`Кастомный каталог быстрых диапазонов с функциями вычисления.`,control:!1},presetLabel:{description:`Заголовок поля быстрого выбора.`,control:`text`},presetDescription:{description:`Описание под полем быстрого выбора.`,control:`text`},presetPlaceholder:{description:`Текст до выбора быстрого диапазона.`,control:`text`},presetDisabled:{description:`Блокирует только выбор быстрого пресета.`,control:`boolean`},label:{description:`Заголовок ручного поля диапазона.`,control:`text`},description:{description:`Описание ручного поля диапазона.`,control:`text`},placeholder:{description:`Текст до выбора ручного диапазона.`,control:`text`},value:{description:`Текущий ручной диапазон дат.`,control:!1},onChange:{description:`Вызывается при изменении ручного диапазона или выборе пресета.`,control:!1},error:{description:`Текст внешней ошибки ручного поля.`,control:`text`},onClearError:{description:`Сбрасывает внешнюю ошибку после ввода или выбора.`,control:!1},minDate:{description:`Минимально доступная дата ручного диапазона.`,control:`date`},maxDate:{description:`Максимально доступная дата ручного диапазона.`,control:`date`},datePreset:{description:`Пресет форматирования выбранного ручного диапазона.`,control:`text`},datePickerLevel:{description:`Минимальный уровень навигации календаря ручного поля.`,control:`select`,options:[`day`,`month`,`year`]},selectionMode:{description:`Размер периода, который выбирает ручное поле.`,control:`select`,options:i},weekEndDay:{description:`Последний включённый день недели в режиме week.`,control:`select`,options:r},allowSelectionModeChange:{description:`Показывает runtime-переключатель размера периода.`,control:`boolean`},selectionModeOptions:{description:`Ограничивает доступные режимы в runtime-переключателе.`,control:`check`,options:i},onSelectionModeChange:{description:`Вызывается при runtime-смене размера периода.`,control:!1},disabled:{description:"Блокирует ручное поле и, если `presetDisabled` не задан, быстрый выбор.",control:`boolean`},size:{description:`Размер обоих полей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},b=d((e,t)=>(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(l,{gap:`sm`,align:`end`,children:(0,_.jsx)(h,{...e,value:e.value??null,onChange:n=>{e.onChange(n),t({value:n})},onPresetIdChange:n=>{e.onPresetIdChange?.(n),t({presetId:n})},onSelectionModeChange:n=>{e.onSelectionModeChange?.(n),t({selectionMode:n})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}})}),(0,_.jsxs)(s,{as:`p`,className:`marginBlockSm`,children:[`Активный presetId: `,(0,_.jsx)(s,{as:`code`,children:e.presetId??`null`})]})]})),x={render:b},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
2
- render: renderPresetRangeDateInputStory
3
- }`,...x.parameters?.docs?.source},description:{story:`Демонстрирует совместную работу пресета и ручного диапазона.`,...x.parameters?.docs?.description}}},S=[`Default`]})))()}export{g as n,C as r,x as t};
@@ -1,101 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-B_6aAEqw.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-IjspN281.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...n(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(i,{title:`Foundation Lib/Data/Currency`}),`
2
- `,(0,c.jsxs)(t.h1,{id:`валютные-подписи-через-ryuzaki13react-foundation-libcurrency`,children:[`Валютные подписи через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/currency`})]}),`
3
- `,(0,c.jsxs)(t.p,{children:[`Модуль связывает общий OData-параметр `,(0,c.jsx)(t.code,{children:`p_curr`}),` с отображаемой подписью показателя. Он определяет один из двух режимов валюты и добавляет соответствующий суффикс к label.`]}),`
4
- `,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
5
- `,(0,c.jsxs)(t.ul,{children:[`
6
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5`,children:`Назначение`})}),`
7
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Установка и импорт`})}),`
8
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#currencymode`,children:(0,c.jsx)(t.code,{children:`CurrencyMode`})})}),`
9
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#resolvecurrencymodefromodataparameters`,children:(0,c.jsx)(t.code,{children:`resolveCurrencyModeFromODataParameters`})})}),`
10
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#resolvecurrencyawarelabel`,children:(0,c.jsx)(t.code,{children:`resolveCurrencyAwareLabel`})})}),`
11
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D1%8B%D0%B9-pipeline`,children:`Готовый pipeline`})}),`
12
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B8-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8`,children:`Ограничения и ошибки`})}),`
13
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#api-%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA`,children:`API-справочник`})}),`
14
- `]}),`
15
- `,(0,c.jsx)(t.h2,{id:`назначение`,children:`Назначение`}),`
16
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`wrapped OData params
17
- { p_curr: { value: true } }
18
- │
19
- ▼
20
- CurrencyMode "rub"
21
- │
22
- ▼
23
- "Выручка" + ["за тн", "руб/тн"]
24
- │
25
- ▼
26
- "Выручка руб/тн"
27
- `})}),`
28
- `,(0,c.jsxs)(t.p,{children:[`Модуль не форматирует денежное число, не конвертирует валюту и не строит OData query. Для чисел используйте `,(0,c.jsx)(t.code,{children:`/formatters`}),`, для OData params — `,(0,c.jsx)(t.code,{children:`/odata-service`}),`.`]}),`
29
- `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
30
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { resolveCurrencyAwareLabel, resolveCurrencyModeFromODataParameters } from "@ryuzaki13/react-foundation-lib/currency";
31
-
32
- import type { CurrencyMode } from "@ryuzaki13/react-foundation-lib/currency";
33
- `})}),`
34
- `,(0,c.jsxs)(t.p,{children:[`Модуль ESM, не требует React или browser API. Параметры должны иметь публичную wrapped-форму из `,(0,c.jsx)(t.code,{children:`/odata-service`}),`.`]}),`
35
- `,(0,c.jsx)(t.h2,{id:`currencymode`,children:(0,c.jsx)(t.code,{children:`CurrencyMode`})}),`
36
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type CurrencyMode = "internal" | "rub";
37
- `})}),`
38
- `,(0,c.jsxs)(t.ul,{children:[`
39
- `,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`internal`}),` — внутренний режим;`]}),`
40
- `,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`rub`}),` — рублёвый режим.`]}),`
41
- `]}),`
42
- `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`null`}),` используется resolver-функцией, когда режим определить нельзя.`]}),`
43
- `,(0,c.jsx)(t.h2,{id:`resolvecurrencymodefromodataparameters`,children:(0,c.jsx)(t.code,{children:`resolveCurrencyModeFromODataParameters`})}),`
44
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const mode = resolveCurrencyModeFromODataParameters(params);
45
- `})}),`
46
- `,(0,c.jsxs)(t.p,{children:[`Функция читает только собственное поле `,(0,c.jsx)(t.code,{children:`p_curr.value`}),`:`]}),`
47
- `,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Вход`}),(0,c.jsx)(t.th,{children:`Результат`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`параметров нет`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`null`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsxs)(t.td,{children:[`поля `,(0,c.jsx)(t.code,{children:`p_curr`}),` нет`]}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`null`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`{ p_curr: { value: false } }`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`"internal"`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`{ p_curr: { value: true } }`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`"rub"`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`{ p_curr: { value: "true" } }`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`null`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`{ p_curr: { value: 1 } }`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`null`})})]})]})]}),`
48
- `,(0,c.jsxs)(t.p,{children:[`Строка `,(0,c.jsx)(t.code,{children:`"true"`}),` намеренно не приводится к boolean. Нормализуйте внешний payload на OData boundary, а не внутри UI label.`]}),`
49
- `,(0,c.jsxs)(t.p,{children:[`Пример с helper `,(0,c.jsx)(t.code,{children:`/odata-service`}),`:`]}),`
50
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { wrapODataParams } from "@ryuzaki13/react-foundation-lib/odata-service";
51
-
52
- const params = wrapODataParams({ p_curr: true });
53
- const mode = resolveCurrencyModeFromODataParameters(params);
54
- // "rub".
55
- `})}),`
56
- `,(0,c.jsx)(t.h2,{id:`resolvecurrencyawarelabel`,children:(0,c.jsx)(t.code,{children:`resolveCurrencyAwareLabel`})}),`
57
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const label = resolveCurrencyAwareLabel("Выручка", ["за тн", "руб/тн"], "rub");
58
- // "Выручка руб/тн".
59
- `})}),`
60
- `,(0,c.jsxs)(t.p,{children:[`Пара `,(0,c.jsx)(t.code,{children:`currencyLabels`}),` имеет фиксированный смысл:`]}),`
61
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`readonly[(internalLabel, rubLabel)];
62
- `})}),`
63
- `,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Mode`}),(0,c.jsx)(t.th,{style:{textAlign:`right`},children:`Индекс суффикса`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`internal`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`0`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`rub`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`1`})]})]})]}),`
64
- `,(0,c.jsx)(t.p,{children:`Точные правила:`}),`
65
- `,(0,c.jsxs)(t.ul,{children:[`
66
- `,(0,c.jsxs)(t.li,{children:[`без `,(0,c.jsx)(t.code,{children:`currencyLabels`}),` возвращается исходный `,(0,c.jsx)(t.code,{children:`label`}),`;`]}),`
67
- `,(0,c.jsxs)(t.li,{children:[`при `,(0,c.jsx)(t.code,{children:`null`}),`/`,(0,c.jsx)(t.code,{children:`undefined`}),` mode возвращается исходный `,(0,c.jsx)(t.code,{children:`label`}),`;`]}),`
68
- `,(0,c.jsxs)(t.li,{children:[`суффикс обрезается через `,(0,c.jsx)(t.code,{children:`trim()`}),`;`]}),`
69
- `,(0,c.jsx)(t.li,{children:`пустой суффикс не добавляется;`}),`
70
- `,(0,c.jsx)(t.li,{children:`обычно между label и суффиксом добавляется один пробел;`}),`
71
- `,(0,c.jsx)(t.li,{children:`если обрезанный суффикс начинается с запятой, дополнительный пробел не добавляется.`}),`
72
- `]}),`
73
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`resolveCurrencyAwareLabel("Выручка", [", за тн", ", руб/тн"], "rub");
74
- // "Выручка, руб/тн".
75
-
76
- resolveCurrencyAwareLabel("Выручка", ["", " "], "rub");
77
- // "Выручка".
78
- `})}),`
79
- `,(0,c.jsxs)(t.p,{children:[`Исходный `,(0,c.jsx)(t.code,{children:`label`}),` не обрезается и не нормализуется.`]}),`
80
- `,(0,c.jsx)(t.h2,{id:`готовый-pipeline`,children:`Готовый pipeline`}),`
81
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`function buildMetricLabel(
82
- baseLabel: string,
83
- currencyLabels: readonly [string, string] | undefined,
84
- params: WrappedODataParameters | undefined
85
- ) {
86
- const mode = resolveCurrencyModeFromODataParameters(params);
87
- return resolveCurrencyAwareLabel(baseLabel, currencyLabels, mode);
88
- }
89
- `})}),`
90
- `,(0,c.jsx)(t.p,{children:`Resolver чистый: одинаковый вход даёт одинаковую строку и не меняет params/labels.`}),`
91
- `,(0,c.jsx)(t.h2,{id:`ограничения-и-ошибки`,children:`Ограничения и ошибки`}),`
92
- `,(0,c.jsxs)(t.ul,{children:[`
93
- `,(0,c.jsxs)(t.li,{children:[`Поддерживается только параметр с точным id `,(0,c.jsx)(t.code,{children:`p_curr`}),`.`]}),`
94
- `,(0,c.jsxs)(t.li,{children:[`Поддерживаются только два режима; код валюты `,(0,c.jsx)(t.code,{children:`USD`}),`, `,(0,c.jsx)(t.code,{children:`EUR`}),` и exchange rate не обрабатываются.`]}),`
95
- `,(0,c.jsx)(t.li,{children:`Функция не проверяет грамматику и единицы измерения.`}),`
96
- `,(0,c.jsxs)(t.li,{children:[`Запятая должна входить в сам суффикс, если нужна форма `,(0,c.jsx)(t.code,{children:`"Выручка, руб"`}),`.`]}),`
97
- `,(0,c.jsxs)(t.li,{children:[`Не передавайте плоский `,(0,c.jsx)(t.code,{children:`{ p_curr: true }`}),`: ожидается `,(0,c.jsx)(t.code,{children:`{ p_curr: { value: true } }`}),`.`]}),`
98
- `,(0,c.jsx)(t.li,{children:`Не используйте label helper для финансовых вычислений.`}),`
99
- `]}),`
100
- `,(0,c.jsx)(t.h2,{id:`api-справочник`,children:`API-справочник`}),`
101
- `,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Export`}),(0,c.jsx)(t.th,{children:`Результат`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`CurrencyMode`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`"internal" | "rub"`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`resolveCurrencyModeFromODataParameters`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`CurrencyMode | null`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`resolveCurrencyAwareLabel`})}),(0,c.jsx)(t.td,{children:`Итоговая display-строка`})]})]})]})]})}function s(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,c.jsx)(t,{...e,children:(0,c.jsx)(o,{...e})}):o(e)}var c;function l(){return(l=e((()=>{c=t(),r(),a()})))()}l();export{s as default};
@@ -1,32 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./RadioButton-CN-1Bmu-.js";import{n as a}from"./iframe-B_6aAEqw.js";import{n as o,t as s}from"./createControlledStoryRender-BouhvX-R.js";var c=t({Controlled:()=>p,Disabled:()=>h,Group:()=>m,__namedExportsOrder:()=>g,default:()=>f}),l,u,d,f,p,m,h,g;function _(){return(_=e((()=>{l=n(),o(),r(),u=a(),d=s((e,t)=>(0,u.jsx)(i,{...e,value:e.value??!1,onChange:n=>{e.onChange?.(n),t({value:n})}})),f={title:`Shared/UI/RadioButton`,component:i,args:{value:!1,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи радиокнопки.`,control:`text`},description:{description:`Дополнительное описание под элементом.`,control:`text`},placeholder:{description:"Резервная подпись, если `label` не задан.",control:`text`},value:{description:`Признак выбранного состояния.`,control:`boolean`},onChange:{description:`Вызывается при изменении выбранности.`,control:!1},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер визуального контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},tone:{description:`Цветовой тон радиокнопки.`,control:`inline-radio`,options:[`neutral`,`brand`,`error`,`warning`,`success`,`info`]}}},p={render:d,args:{label:`Выбрать опцию`,description:`Одиночная радиокнопка в controlled-режиме.`,value:!1,tone:`neutral`}},m={render:()=>{let[e,t]=(0,l.useState)(`email`);return(0,u.jsxs)(`div`,{role:`radiogroup`,"aria-label":`Канал уведомлений`,style:{display:`grid`,gap:12},children:[(0,u.jsx)(i,{name:`notification-channel`,label:`Email`,value:e===`email`,onChange:e=>e&&t(`email`),tone:`info`}),(0,u.jsx)(i,{name:`notification-channel`,label:`SMS`,value:e===`sms`,onChange:e=>e&&t(`sms`),tone:`info`})]})},args:{value:void 0}},h={render:d,args:{label:`Недоступная опция`,description:`Заблокировано политикой конфигурации.`,value:!0,disabled:!0,tone:`neutral`}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
2
- render: renderRadioButtonStory,
3
- args: {
4
- label: "Выбрать опцию",
5
- description: "Одиночная радиокнопка в controlled-режиме.",
6
- value: false,
7
- tone: "neutral"
8
- }
9
- }`,...p.parameters?.docs?.source}}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
10
- render: () => {
11
- const [selected, setSelected] = useState<"email" | "sms">("email");
12
- return <div role="radiogroup" aria-label="Канал уведомлений" style={{
13
- display: "grid",
14
- gap: 12
15
- }}>
16
- <RadioButton name="notification-channel" label="Email" value={selected === "email"} onChange={checked => checked && setSelected("email")} tone="info" />
17
- <RadioButton name="notification-channel" label="SMS" value={selected === "sms"} onChange={checked => checked && setSelected("sms")} tone="info" />
18
- </div>;
19
- },
20
- args: {
21
- value: undefined
22
- }
23
- }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
24
- render: renderRadioButtonStory,
25
- args: {
26
- label: "Недоступная опция",
27
- description: "Заблокировано политикой конфигурации.",
28
- value: true,
29
- disabled: true,
30
- tone: "neutral"
31
- }
32
- }`,...h.parameters?.docs?.source}}},g=[`Controlled`,`Group`,`Disabled`]})))()}export{_ as a,c as i,h as n,m as r,p as t};
@@ -1,69 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-B_6aAEqw.js";import{n as i,t as a}from"./Select-CNAFGsHq.js";var o=t({ControlledObjects:()=>m,CustomOptionLayout:()=>v,Disabled:()=>y,GroupedOptions:()=>_,Placeholder:()=>g,PrimitiveOptions:()=>h,__namedExportsOrder:()=>b,default:()=>p}),s,c,l,u,d,f,p,m,h,g,_,v,y,b;function x(){return(x=e((()=>{s=n(),i(),c=r(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=[{id:1,name:`Отдел продаж`,code:`SLS`,manager:`Елена Миронова`,direction:`Коммерческий блок`},{id:2,name:`Закупки`,code:`PRC`,manager:`Антон Мелихов`,direction:`Коммерческий блок`},{id:3,name:`Логистика`,code:`LGS`,manager:`Мария Климова`,direction:`Операционный блок`,disabled:!0},{id:4,name:`Поддержка клиентов`,code:`SUP`,manager:`Ирина Белова`,direction:`Операционный блок`}],f=[`Новый`,`В работе`,`Завершён`,`Архив`],p={title:`Shared/UI/Select`,component:a,args:{label:`Подразделение`,description:`Выберите подразделение из списка.`,placeholder:`Не выбрано`,value:void 0,options:d,onChange:u(),getOptionKey:e=>e.id,getOptionLabel:e=>e.name,getOptionCode:e=>e.code,getOptionDisabled:e=>e.disabled??!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Низкоуровневый getter-based select. Подходит для произвольных структур данных, примитивов и сложного кастомного рендера. Компонент возвращает наружу саму выбранную option. Для сериализуемых конфигов и сценариев с optionKey/optionLabel используйте SerializableSelect.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда значение ещё не выбрано.`,control:`text`},value:{description:`Текущая выбранная option целиком.`,control:!1},options:{description:`Массив опций любого поддерживаемого формата.`,control:!1},onChange:{description:`Вызывается с выбранной option.`,control:!1},getOptionKey:{description:`Функция получения уникального ключа option.`,control:!1},getOptionLabel:{description:`Функция получения основного текста option.`,control:!1},getOptionCode:{description:`Опциональный рендер дополнительного кода справа.`,control:!1},getOptionDisabled:{description:`Опциональная функция блокировки отдельных option.`,control:!1},getOptionAriaLabel:{description:`Опциональная функция для aria-label option.`,control:!1},getOptionGroup:{description:`Опциональная функция, которая объединяет соседние option под доступным заголовком группы.`,control:!1},getOptionClassName:{description:`Опциональная функция CSS-класса option по её состоянию.`,control:!1},renderOption:{description:`Полностью кастомный рендер option в списке.`,control:!1},renderValue:{description:`Кастомный рендер выбранного значения в кнопке.`,control:!1},optionsMaxWidth:{description:`Максимальная ширина выпадающего списка в любом допустимом CSS-формате.`,control:`text`},buttonClassName:{description:`Класс trigger-кнопки Select без изменения корневого контейнера.`,control:`text`},optionsClassName:{description:`Класс popup со списком option.`,control:`text`},optionsContentClassName:{description:`Класс области содержимого popup, например для особой плотности списка.`,control:`text`},searchable:{description:`Включает поиск по option в trigger-поле.`,control:`boolean`},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},defaultFilter:{description:`Включает встроенную фильтрацию option.`,control:`boolean`},renderPopupHeader:{description:`Дополнительное содержимое над списком option.`,control:!1},emptyState:{description:`Содержимое при пустом списке option.`,control:!1},loadingState:{description:`Содержимое при загрузке option.`,control:!1},errorState:{description:`Содержимое при ошибке загрузки option.`,control:!1},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},placement:{description:`Позиционирование выпадающего списка.`,control:`select`,options:[`bottom-start`,`bottom-end`,`top-start`,`top-end`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},clearable:{description:`Показывает действие очистки выбранной option.`,control:`boolean`}}},m={name:`Объекты`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??d[1],onChange:n=>{e.onChange(n),t({value:n})}})},args:{value:d[1]}},h={name:`Примитивы`,render:()=>{let[e,t]=(0,s.useState)(f[1]);return(0,c.jsx)(a,{label:`Статус`,description:`Пример использования низкоуровневого Select со строковыми значениями.`,placeholder:`Выберите статус`,options:f,value:e,onChange:t,getOptionKey:e=>e,getOptionLabel:e=>e,size:`md`})}},g={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,onChange:n=>{e.onChange(n),t({value:n})}})}},_={name:`Группированные опции`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,onChange:n=>{e.onChange(n),t({value:n})},getOptionGroup:e=>({key:e.direction,label:e.direction}),optionsMaxWidth:`40rem`})}},v={name:`Кастомный рендер`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??d[0],onChange:n=>{e.onChange(n),t({value:n})},renderValue:e=>`${e.code} · ${e.name}`,renderOption:(e,t)=>(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`flexEllipsis`,children:[(0,c.jsx)(`div`,{children:e.name}),(0,c.jsx)(`div`,{className:`fontSizeSm content2`,children:e.manager})]}),(0,c.jsx)(`div`,{style:{opacity:t.selected?1:.5},children:e.code})]})})}},y={args:{disabled:!0,value:d[0]}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
2
- name: "Объекты",
3
- render: function Render(args) {
4
- const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
5
- return <Select {...args} value={args.value ?? departmentOptions[1]} onChange={value => {
6
- args.onChange(value);
7
- updateArgs({
8
- value
9
- });
10
- }} />;
11
- },
12
- args: {
13
- value: departmentOptions[1]
14
- }
15
- }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
16
- name: "Примитивы",
17
- render: () => {
18
- const [value, setValue] = useState<(typeof primitiveOptions)[number] | undefined>(primitiveOptions[1]);
19
- return <Select label="Статус" description="Пример использования низкоуровневого Select со строковыми значениями." placeholder="Выберите статус" options={primitiveOptions} value={value} onChange={setValue} getOptionKey={option => option} getOptionLabel={option => option} size="md" />;
20
- }
21
- }`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
22
- render: function Render(args) {
23
- const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
24
- return <Select {...args} onChange={value => {
25
- args.onChange(value);
26
- updateArgs({
27
- value
28
- });
29
- }} />;
30
- }
31
- }`,...g.parameters?.docs?.source}}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
32
- name: "Группированные опции",
33
- render: function Render(args) {
34
- const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
35
- return <Select {...args} onChange={value => {
36
- args.onChange(value);
37
- updateArgs({
38
- value
39
- });
40
- }} getOptionGroup={option => ({
41
- key: option.direction,
42
- label: option.direction
43
- })} optionsMaxWidth="40rem" />;
44
- }
45
- }`,..._.parameters?.docs?.source}}},v.parameters={...v.parameters,docs:{...v.parameters?.docs,source:{originalSource:`{
46
- name: "Кастомный рендер",
47
- render: function Render(args) {
48
- const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
49
- return <Select {...args} value={args.value ?? departmentOptions[0]} onChange={value => {
50
- args.onChange(value);
51
- updateArgs({
52
- value
53
- });
54
- }} renderValue={option => \`\${option.code} · \${option.name}\`} renderOption={(option, state) => <>
55
- <div className="flexEllipsis">
56
- <div>{option.name}</div>
57
- <div className="fontSizeSm content2">{option.manager}</div>
58
- </div>
59
- <div style={{
60
- opacity: state.selected ? 1 : 0.5
61
- }}>{option.code}</div>
62
- </>} />;
63
- }
64
- }`,...v.parameters?.docs?.source}}},y.parameters={...y.parameters,docs:{...y.parameters?.docs,source:{originalSource:`{
65
- args: {
66
- disabled: true,
67
- value: departmentOptions[0]
68
- }
69
- }`,...y.parameters?.docs?.source}}},b=[`ControlledObjects`,`PrimitiveOptions`,`Placeholder`,`GroupedOptions`,`CustomOptionLayout`,`Disabled`]})))()}export{g as a,x as c,_ as i,v as n,h as o,y as r,o as s,m as t};