@ryuzaki13/react-foundation-ui 1.8.12 → 1.8.14

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 (262) hide show
  1. package/dist/chunks/ui.module-BsDio9A3.js.map +1 -1
  2. package/dist/styles.css +1 -1
  3. package/package.json +2 -2
  4. package/storybook-static/assets/{Badge-CveIo2LZ.js → Badge-Sv6eRVzK.js} +1 -1
  5. package/storybook-static/assets/{Badge.stories-Bd8M64xJ.js → Badge.stories-DVmquAc-.js} +1 -1
  6. package/storybook-static/assets/{BadgeList-xT41a0VL.js → BadgeList-CDdjSFhA.js} +1 -1
  7. package/storybook-static/assets/{Button-DkDgfpHL.js → Button-CkXBOqtg.js} +1 -1
  8. package/storybook-static/assets/{Button-C5bBSb3k.js → Button-DLdmu_Qa.js} +1 -1
  9. package/storybook-static/assets/{Button.stories-CeKPeGK5.js → Button.stories-BhhPN3cO.js} +1 -1
  10. package/storybook-static/assets/{CalendarView-CEqcrblx.js → CalendarView-Cz74PFcU.js} +1 -1
  11. package/storybook-static/assets/{CheckBox-DKeFkdOt.js → CheckBox-8sW-kpX-.js} +1 -1
  12. package/storybook-static/assets/{CheckBox-OVvAarW-.js → CheckBox-DcH3qwbm.js} +1 -1
  13. package/storybook-static/assets/{CheckBox.stories-CfZ0p1yo.js → CheckBox.stories-BA9MwVIi.js} +1 -1
  14. package/storybook-static/assets/{Color-6AOWCN3U-BWW7zrfs.js → Color-6AOWCN3U-DW9_SixM.js} +1 -1
  15. package/storybook-static/assets/{ContextMenu-kia7is1N.js → ContextMenu-6XIB9-E_.js} +1 -1
  16. package/storybook-static/assets/{ContextMenu-xn2GtiLR.js → ContextMenu-oCfsHX5G.js} +1 -1
  17. package/storybook-static/assets/{ContextMenu.stories-CYuy9uXF.js → ContextMenu.stories-DsRiGv-d.js} +1 -1
  18. package/storybook-static/assets/{CustomOptionButton-C4w-APws.js → CustomOptionButton-By6XsDCG.js} +1 -1
  19. package/storybook-static/assets/{DateInput-BiUFIihm.js → DateInput-CD_CDw8L.js} +1 -1
  20. package/storybook-static/assets/{DateInput-DAzE5mCE.js → DateInput-CMxzQRo_.js} +1 -1
  21. package/storybook-static/assets/{DateInput.stories-BcowGCRD.js → DateInput.stories-BL0d4llb.js} +1 -1
  22. package/storybook-static/assets/{DateRangePresetSelect-RIyqNBk9.js → DateRangePresetSelect-393Izw7W.js} +1 -1
  23. package/storybook-static/assets/{DateRangePresetSelect-CQm4dNLR.js → DateRangePresetSelect-BeEhwdah.js} +1 -1
  24. package/storybook-static/assets/{DateRangePresetSelect.stories-ypGyuGfy.js → DateRangePresetSelect.stories-BKRFlABX.js} +1 -1
  25. package/storybook-static/assets/{Detail-CEypL2Nh.js → Detail-BbQSGgu7.js} +1 -1
  26. package/storybook-static/assets/{Detail.stories-DNkT7B-u.js → Detail.stories-BMD_2zWN.js} +1 -1
  27. package/storybook-static/assets/{Dialog-BVFFQJDH.js → Dialog-CAM8VuM7.js} +1 -1
  28. package/storybook-static/assets/{Dialog-DD0grLG3.js → Dialog-Dw9rG9oU.js} +1 -1
  29. package/storybook-static/assets/{Dialog.stories-DSCypHqR.js → Dialog.stories-C3NKTM84.js} +1 -1
  30. package/storybook-static/assets/{Disclosure-DauUgrev.js → Disclosure-CRP1Wrwg.js} +1 -1
  31. package/storybook-static/assets/{Disclosure.stories-B1qB8vQZ.js → Disclosure.stories-uOnVxNv4.js} +1 -1
  32. package/storybook-static/assets/{DisclosureGroup-D9oCCeHf.js → DisclosureGroup-CV9aHNnL.js} +1 -1
  33. package/storybook-static/assets/{DocsRenderer-JROSPFPF-CmSf6tXp.js → DocsRenderer-JROSPFPF-Dt6sU0Wy.js} +1 -1
  34. package/storybook-static/assets/{DropZone-D8hbPCAv.js → DropZone-1-qIEJTI.js} +1 -1
  35. package/storybook-static/assets/{DropZone-D42ueN1w.js → DropZone-UOOd3d_D.js} +1 -1
  36. package/storybook-static/assets/{DropZone.stories-DO-T_Bh4.js → DropZone.stories-P0P8n3BX.js} +1 -1
  37. package/storybook-static/assets/{DropdownMenu-CknJDoji.js → DropdownMenu-CIkQkHEe.js} +1 -1
  38. package/storybook-static/assets/{ExpandableActionPanel-Dqi_bo3c.js → ExpandableActionPanel-BVxtZtja.js} +1 -1
  39. package/storybook-static/assets/{ExpandableActionPanel.stories-BD9QZGZN.js → ExpandableActionPanel.stories-Bw-Nbxjl.js} +1 -1
  40. package/storybook-static/assets/{Flex-CaVn1IOP.js → Flex-v3qGyymY.js} +1 -1
  41. package/storybook-static/assets/{Flex.stories-Bp9Y6q6b.js → Flex.stories-BZWj9Yqq.js} +1 -1
  42. package/storybook-static/assets/{FloatingPopover-U7tx-Jlw.js → FloatingPopover-CBzRVsZl.js} +1 -1
  43. package/storybook-static/assets/{FormattedTableCell-pmmhsAbN.js → FormattedTableCell-woQYObYH.js} +1 -1
  44. package/storybook-static/assets/{Grid-CEpMNurH.js → Grid-BuA8kbGl.js} +1 -1
  45. package/storybook-static/assets/{Grid.stories-BM-gO5DN.js → Grid.stories-DkQGjuPs.js} +1 -1
  46. package/storybook-static/assets/{ImageCropper.stories-BWz5XU6U.js → ImageCropper.stories-DWU8FP_b.js} +1 -1
  47. package/storybook-static/assets/{ImageRenderer-BTYZEX5t.js → ImageRenderer-BYrN4S_Z.js} +1 -1
  48. package/storybook-static/assets/{ImageRenderer.stories-Dz2STM95.js → ImageRenderer.stories-ChjsjhPh.js} +1 -1
  49. package/storybook-static/assets/{ImageView.stories-DBVe0an3.js → ImageView.stories-CWkyOzLP.js} +1 -1
  50. package/storybook-static/assets/{ImageViewer.stories-C4Px97lD.js → ImageViewer.stories-BAJJBDHc.js} +2 -2
  51. package/storybook-static/assets/{ImageViewerRuntime-TJtlJVfa.js → ImageViewerRuntime-DGLE97-e.js} +1 -1
  52. package/storybook-static/assets/{Input-CIPgijvW.js → Input-B8ZadIiC.js} +1 -1
  53. package/storybook-static/assets/{Input-D8io9jVS.js → Input-BoKPLAe2.js} +1 -1
  54. package/storybook-static/assets/{Input.stories-SUk3aYaC.js → Input.stories-JHdz5Jsc.js} +1 -1
  55. package/storybook-static/assets/{InputDateTime-DA5pIDuE.js → InputDateTime-D0IxugsL.js} +1 -1
  56. package/storybook-static/assets/{InputDateTime.stories-DeudzDSU.js → InputDateTime.stories-Ba0D7xF9.js} +1 -1
  57. package/storybook-static/assets/{InputFile-CGAC7ruP.js → InputFile--u_0dj3Y.js} +1 -1
  58. package/storybook-static/assets/{InputFile-C5mp5Y5I.js → InputFile-BTJBqn1m.js} +1 -1
  59. package/storybook-static/assets/{InputFile.stories-Cx1xQ6PE.js → InputFile.stories-CwpNYB5J.js} +1 -1
  60. package/storybook-static/assets/{InputFiles-B7OBcPJN.js → InputFiles-B6vhWm7I.js} +1 -1
  61. package/storybook-static/assets/{InputFiles-Hzl89Ghf.js → InputFiles-DwMvXQb3.js} +1 -1
  62. package/storybook-static/assets/{InputFiles.stories-CG6QjDZH.js → InputFiles.stories-5oCc9HHg.js} +1 -1
  63. package/storybook-static/assets/{InputFilesList-B6htWHF1.js → InputFilesList-D51n4iSR.js} +1 -1
  64. package/storybook-static/assets/{InputImage-CQnoblAE.js → InputImage-DPnitmQk.js} +1 -1
  65. package/storybook-static/assets/{InputImage-BTa4S4Wp.js → InputImage-bnYOQAkQ.js} +1 -1
  66. package/storybook-static/assets/{InputImage.stories-CEI44Eyz.js → InputImage.stories-uf2LvY4r.js} +1 -1
  67. package/storybook-static/assets/{InteractiveComponents-B0ypWz1x.js → InteractiveComponents-CJn1YMhT.js} +1 -1
  68. package/storybook-static/assets/{InteractiveComponents.stories-BadApta9.js → InteractiveComponents.stories-fFTx5yhl.js} +1 -1
  69. package/storybook-static/assets/{LayoutPicker-C_Uz7Tnj.js → LayoutPicker-BPBdZChZ.js} +1 -1
  70. package/storybook-static/assets/{LayoutPicker-COB9GlV_.js → LayoutPicker-C_NUvbsk.js} +1 -1
  71. package/storybook-static/assets/{LayoutPicker.stories-Btp0IcaL.js → LayoutPicker.stories-DBzM8rRy.js} +1 -1
  72. package/storybook-static/assets/{Listbox-CyfuZw7w.js → Listbox-Cqgq5Wny.js} +1 -1
  73. package/storybook-static/assets/{Listbox-AAaZGSAl.js → Listbox-D7jP8mCo.js} +1 -1
  74. package/storybook-static/assets/{Listbox.stories-NDKQmjyQ.js → Listbox.stories-X2jhmC90.js} +1 -1
  75. package/storybook-static/assets/{Modal-BJDnJ4zv.js → Modal-QiGhxbkR.js} +1 -1
  76. package/storybook-static/assets/{Modal.stories-D_X5lTLO.js → Modal.stories-CPLTAhHy.js} +1 -1
  77. package/storybook-static/assets/{ModalManagerProvider-ShDjozpW.js → ModalManagerProvider-DpbTvfL4.js} +1 -1
  78. package/storybook-static/assets/{MultiSelect-B5CElQ3-.js → MultiSelect-CJN6yc1C.js} +1 -1
  79. package/storybook-static/assets/{MultiSelect-DqXfrjcH.js → MultiSelect-DeAFY3RP.js} +1 -1
  80. package/storybook-static/assets/{MultiSelect.stories-fB3mcFmx.js → MultiSelect.stories-DHrCaM8r.js} +1 -1
  81. package/storybook-static/assets/{NoData-DDb0G7T8.js → NoData-Cw6KaFFK.js} +1 -1
  82. package/storybook-static/assets/{NotificationsHost-CIGL-pKX.js → NotificationsHost-BjEs_A2p.js} +1 -1
  83. package/storybook-static/assets/{NotificationsHost.stories-B_MRb3fs.js → NotificationsHost.stories-DUyWIJ9o.js} +1 -1
  84. package/storybook-static/assets/{ODataMultiSelect-DQAitH4N.js → ODataMultiSelect-DsGVEtfr.js} +1 -1
  85. package/storybook-static/assets/{ODataMultiSelect.stories-DwW221S9.js → ODataMultiSelect.stories-CV8LD8fz.js} +1 -1
  86. package/storybook-static/assets/{ODataSelect-tiZhOIhE.js → ODataSelect-nPkCWP7P.js} +1 -1
  87. package/storybook-static/assets/{ODataSelect.stories-BhaatPjK.js → ODataSelect.stories-BT5zNMAw.js} +1 -1
  88. package/storybook-static/assets/{ODataTreeMultiSelect-B9WqJ-Un.js → ODataTreeMultiSelect-BnA7iZbw.js} +1 -1
  89. package/storybook-static/assets/{ODataTreeMultiSelect.stories-CAfKuhfU.js → ODataTreeMultiSelect.stories-Ddu-3L1X.js} +1 -1
  90. package/storybook-static/assets/{ODataTreeSelect-Cel1phxZ.js → ODataTreeSelect-Df18JZjH.js} +1 -1
  91. package/storybook-static/assets/{ODataTreeSelect.stories-BpBCpBA9.js → ODataTreeSelect.stories-CnbN0_2o.js} +1 -1
  92. package/storybook-static/assets/{OneStepScroller-BSeGbz02.js → OneStepScroller-pCI7NBLQ.js} +1 -1
  93. package/storybook-static/assets/{Option-BBtQ3GdK.js → Option-rYnCuHwV.js} +1 -1
  94. package/storybook-static/assets/{OptionButton-B9nZuqqW.js → OptionButton-dRTEtcWJ.js} +1 -1
  95. package/storybook-static/assets/{PeriodSelect-DA_zjcdA.js → PeriodSelect-BbxmKATg.js} +1 -1
  96. package/storybook-static/assets/{PeriodSelect-BGvhR3to.js → PeriodSelect-QdYqbYVi.js} +1 -1
  97. package/storybook-static/assets/{PeriodSelect.stories-DDP1eXyM.js → PeriodSelect.stories-C_w6x_nb.js} +1 -1
  98. package/storybook-static/assets/{PickerTriggerActions-BgvzqRBd.js → PickerTriggerActions-B9PzXuqb.js} +1 -1
  99. package/storybook-static/assets/{Popover-C0NebUMz.js → Popover-C7EBSl-A.js} +1 -1
  100. package/storybook-static/assets/{Popover-BQql18MF.js → Popover-DTIeV8sp.js} +1 -1
  101. package/storybook-static/assets/{Popover.stories-CIyDUtlz.js → Popover.stories-DdK6opAj.js} +1 -1
  102. package/storybook-static/assets/{PresetRangeDateInput-htbxc3ni.js → PresetRangeDateInput-BuzCEA0N.js} +1 -1
  103. package/storybook-static/assets/{PresetRangeDateInput-BsgzPwCV.js → PresetRangeDateInput-wM7gI2RF.js} +1 -1
  104. package/storybook-static/assets/{PresetRangeDateInput.stories-ClHM5Kah.js → PresetRangeDateInput.stories-BHzW7J5Y.js} +1 -1
  105. package/storybook-static/assets/{PresetSelect-Dcx0BOTx.js → PresetSelect-qwyBKXya.js} +1 -1
  106. package/storybook-static/assets/{README-eHCINzP3.js → README-3kx1b1eN.js} +1 -1
  107. package/storybook-static/assets/{README-CHbo4O3Z.js → README-B1TFddGZ.js} +1 -1
  108. package/storybook-static/assets/{README-ByALXSEH.js → README-B6UdiKEB.js} +1 -1
  109. package/storybook-static/assets/README-BB1nn-L1.js +740 -0
  110. package/storybook-static/assets/{README-CWfPiPIB.js → README-BLliGbp2.js} +1 -1
  111. package/storybook-static/assets/{README-DV4fCpqN.js → README-BRAIrWZ5.js} +1 -1
  112. package/storybook-static/assets/README-BS_UTHKY.js +441 -0
  113. package/storybook-static/assets/README-BUwRENpH.js +448 -0
  114. package/storybook-static/assets/README-BZ5VcRb-.js +583 -0
  115. package/storybook-static/assets/{README-CNHemCS2.js → README-BbvZ3Kxp.js} +1 -1
  116. package/storybook-static/assets/{README-BSh5XUR9.js → README-BcQVOGWd.js} +1 -1
  117. package/storybook-static/assets/{README-ui-uanyg.js → README-Bdo7L8re.js} +1 -1
  118. package/storybook-static/assets/README-Bl5v6SbZ.js +325 -0
  119. package/storybook-static/assets/{README-C3UcjOGB.js → README-Bs5hFsTF.js} +1 -1
  120. package/storybook-static/assets/{README-C8E1O7DQ.js → README-Bt-vDWJK.js} +1 -1
  121. package/storybook-static/assets/{README-CsoHGRve.js → README-BxWQjG0l.js} +1 -1
  122. package/storybook-static/assets/{README-BIq-FXcN.js → README-C1-upl_v.js} +1 -1
  123. package/storybook-static/assets/{README-qHKxXU95.js → README-C3kroViK.js} +1 -1
  124. package/storybook-static/assets/{README-CH_6ZIO2.js → README-C5VbGqji.js} +1 -1
  125. package/storybook-static/assets/README-CAN_sUOj.js +400 -0
  126. package/storybook-static/assets/{README-BB_JPejH.js → README-CAu_o5w0.js} +1 -1
  127. package/storybook-static/assets/{README-Ss-3t1nX.js → README-CB8w2VUq.js} +1 -1
  128. package/storybook-static/assets/README-CJ5dluvT.js +3591 -0
  129. package/storybook-static/assets/{README-B3bFglqG.js → README-CMdJkXoj.js} +1 -1
  130. package/storybook-static/assets/{README-Dl92E69Z.js → README-CUjyWC3m.js} +1 -1
  131. package/storybook-static/assets/{README-B45Cwj2a.js → README-CV3k61OS.js} +1 -1
  132. package/storybook-static/assets/README-CYOVpnIy.js +324 -0
  133. package/storybook-static/assets/{README-CM-7E-Jf.js → README-CeyhIAvP.js} +1 -1
  134. package/storybook-static/assets/{README-Byo6DxIF.js → README-Ci8Dg8Od.js} +1 -1
  135. package/storybook-static/assets/{README-DJHVgrpj.js → README-CiQrgj9L.js} +1 -1
  136. package/storybook-static/assets/{README-BxjYCoYA.js → README-CjAvZYa8.js} +1 -1
  137. package/storybook-static/assets/{README-5NhzH8VL.js → README-Cjkxz5fF.js} +1 -1
  138. package/storybook-static/assets/{README-DE2wk9-v.js → README-Cl_7GagY.js} +1 -1
  139. package/storybook-static/assets/{README-CIGfHKKE.js → README-CnncCyVQ.js} +1 -1
  140. package/storybook-static/assets/{README-Bqnqu1bC.js → README-CqqJTDcO.js} +1 -1
  141. package/storybook-static/assets/{README-D9OypaFB.js → README-CrjrH7U6.js} +1 -1
  142. package/storybook-static/assets/{README-DvAlDsh9.js → README-D1mTncLb.js} +1 -1
  143. package/storybook-static/assets/{README-B6Nq7NCU.js → README-DFH1zDp2.js} +1 -1
  144. package/storybook-static/assets/README-DIqS0sM9.js +355 -0
  145. package/storybook-static/assets/{README-DjCArsA5.js → README-DLaJrEGM.js} +1 -1
  146. package/storybook-static/assets/{README-Am6Fa6-b.js → README-DO23FJAl.js} +1 -1
  147. package/storybook-static/assets/{README-CeK4kfFO.js → README-DeAPv0Mf.js} +1 -1
  148. package/storybook-static/assets/{README-CAGQnLsv.js → README-Dy9sTa_6.js} +1 -1
  149. package/storybook-static/assets/{README-5M8ajrJp.js → README-JtT-ZtO0.js} +1 -1
  150. package/storybook-static/assets/{README-B6ltJiw3.js → README-OYzQVQte.js} +1 -1
  151. package/storybook-static/assets/{README-C9eh0JLs.js → README-UoSNP7Tk.js} +1 -1
  152. package/storybook-static/assets/{README-DDBqoI-T.js → README-a5ZgliOG.js} +1 -1
  153. package/storybook-static/assets/{README-DEj2wSK0.js → README-dokGlpDu.js} +1 -1
  154. package/storybook-static/assets/{README-BmhhWWEk.js → README-kQRTlSA-.js} +1 -1
  155. package/storybook-static/assets/{README-DIbfpC-2.js → README-rDh9Q6yY.js} +1 -1
  156. package/storybook-static/assets/{README-BuMMG4_N.js → README-rhPk9fCo.js} +1 -1
  157. package/storybook-static/assets/{README-DnA-4W65.js → README-rzRXnvCP.js} +1 -1
  158. package/storybook-static/assets/{README-BYSgTTZt.js → README-twVQ7X9P.js} +1 -1
  159. package/storybook-static/assets/{RadioButton-CWtjclwT.js → RadioButton-B_oQ8Wlu.js} +1 -1
  160. package/storybook-static/assets/{RadioButton-YIQXt0wx.js → RadioButton-Baxj9d9s.js} +1 -1
  161. package/storybook-static/assets/{RadioButton.stories-Ah-CBpeC.js → RadioButton.stories-CsHPV3Wm.js} +1 -1
  162. package/storybook-static/assets/{RadioGroup-CUS0etBD.js → RadioGroup-Dz0J0QJk.js} +1 -1
  163. package/storybook-static/assets/{RadioGroup-BnO-GL7A.js → RadioGroup-PH_lOUuL.js} +1 -1
  164. package/storybook-static/assets/{RadioGroup.stories-DGwCawtU.js → RadioGroup.stories-B3Nbh5ui.js} +1 -1
  165. package/storybook-static/assets/{Scrollable-D85fA6pO.js → Scrollable-BnVRtd7g.js} +1 -1
  166. package/storybook-static/assets/{Select-gRnfvfGh.js → Select-CqFdLQiM.js} +1 -1
  167. package/storybook-static/assets/{Select-CGCxJjL9.js → Select-DlCmYtXt.js} +1 -1
  168. package/storybook-static/assets/{Select.stories-CMwt4F9i.js → Select.stories-wUtNe9Ec.js} +1 -1
  169. package/storybook-static/assets/{SerializableSelect-BLXfKJ38.js → SerializableSelect-Cxj4rBI9.js} +1 -1
  170. package/storybook-static/assets/{SerializableSelect.stories-Bca1a9ZU.js → SerializableSelect.stories-D8S4jMFa.js} +1 -1
  171. package/storybook-static/assets/{SingleDateTimeInput-CyeQN0Rd.js → SingleDateTimeInput-B00ILEN6.js} +1 -1
  172. package/storybook-static/assets/{SingleDateTimeInput-xrmZckzw.js → SingleDateTimeInput-Z6TGUUj6.js} +1 -1
  173. package/storybook-static/assets/{SingleDateTimeInput.stories-BYFTQM9z.js → SingleDateTimeInput.stories-CV6Nv9qi.js} +1 -1
  174. package/storybook-static/assets/{Slider-D8GtXVGI.js → Slider-B9FxWdEJ.js} +1 -1
  175. package/storybook-static/assets/{Slider-1yJ3uVeR.js → Slider-Dk01oltE.js} +1 -1
  176. package/storybook-static/assets/{Slider.stories-CyQ3ns_C.js → Slider.stories-VNmcaz3A.js} +1 -1
  177. package/storybook-static/assets/{SliderInput-ISSx9vH_.js → SliderInput-E86RlSIn.js} +1 -1
  178. package/storybook-static/assets/{SliderInput-BOzHhEUA.js → SliderInput-V3uHOcZ2.js} +1 -1
  179. package/storybook-static/assets/{SliderInput.stories-7ooTghrS.js → SliderInput.stories-Bwl2rOaJ.js} +1 -1
  180. package/storybook-static/assets/{Sortable-CCLiMmfZ.js → Sortable-DaGz4_X2.js} +1 -1
  181. package/storybook-static/assets/{Sortable.stories-B36szI6t.js → Sortable.stories-Ba8gP0xY.js} +1 -1
  182. package/storybook-static/assets/{Splitter-DQGhgRwx.js → Splitter-BIsxdfsl.js} +1 -1
  183. package/storybook-static/assets/{Splitter.stories-Hsq1wYaq.js → Splitter.stories-DlgVxAnv.js} +1 -1
  184. package/storybook-static/assets/{StateSelect-DieNn4VC.js → StateSelect-3pOCDdLu.js} +1 -1
  185. package/storybook-static/assets/{StateSelect-C6hldFgO.js → StateSelect-Q0-lss-x.js} +1 -1
  186. package/storybook-static/assets/{StateSelect.stories-CvAhDMix.js → StateSelect.stories-B2W4sd0y.js} +1 -1
  187. package/storybook-static/assets/{StringToggle.stories-CUT1tvt-.js → StringToggle.stories-CwhsQCkG.js} +1 -1
  188. package/storybook-static/assets/{Switch-nEMRtcWe.js → Switch-8ZMASw90.js} +1 -1
  189. package/storybook-static/assets/{Switch-CX9p_uYU.js → Switch-CxoCcf-H.js} +1 -1
  190. package/storybook-static/assets/{Switch.stories-CPsHa2_m.js → Switch.stories-Ceo-Mw04.js} +1 -1
  191. package/storybook-static/assets/{Table-BhtITVtj.js → Table-nJgo4qpK.js} +1 -1
  192. package/storybook-static/assets/{Table.stories-nWNhSydG.js → Table.stories-CSCZ9sFd.js} +1 -1
  193. package/storybook-static/assets/{Tabs-DMQFh2BJ.js → Tabs-D-gRjKef.js} +1 -1
  194. package/storybook-static/assets/{Tabs.stories-D23_xvom.js → Tabs.stories-EQ3VUnt-.js} +1 -1
  195. package/storybook-static/assets/{TabsBox-B5BsD_j_.js → TabsBox-NrlLIwhz.js} +1 -1
  196. package/storybook-static/assets/{TagInput-DO17z100.js → TagInput-Drf7SeTu.js} +1 -1
  197. package/storybook-static/assets/{TagInput.stories-CMMFnIzb.js → TagInput.stories-BcM6J6I9.js} +1 -1
  198. package/storybook-static/assets/{Text-ClnbDqRk.js → Text-Ck_6UUKY.js} +1 -1
  199. package/storybook-static/assets/{Textarea-DkhohiNc.js → Textarea-C7SEoYQa.js} +1 -1
  200. package/storybook-static/assets/{Textarea-C2IO_zsP.js → Textarea-DFko4W6r.js} +1 -1
  201. package/storybook-static/assets/{Textarea.stories-NL6Aq8Vc.js → Textarea.stories-BW5QBRXP.js} +1 -1
  202. package/storybook-static/assets/{TimePanel-DNEPDlSW.js → TimePanel-BcCaEcjP.js} +1 -1
  203. package/storybook-static/assets/{TimePanel.stories-DlfdPsz1.js → TimePanel.stories-OjUebxOe.js} +1 -1
  204. package/storybook-static/assets/{Toggle-3U5CceQN.js → Toggle-BN83AOrV.js} +1 -1
  205. package/storybook-static/assets/{Toggle-Cc6Ca-HI.js → Toggle-Cs5KD8Kd.js} +1 -1
  206. package/storybook-static/assets/{Toggle.stories-BR-hVLDp.js → Toggle.stories-UtFKPdYx.js} +1 -1
  207. package/storybook-static/assets/{TreeMultiSelect-D9hMQN2O.js → TreeMultiSelect-04RqLe9P.js} +1 -1
  208. package/storybook-static/assets/{TreeMultiSelect-B0oBc-4y.js → TreeMultiSelect-CN_rnzFe.js} +1 -1
  209. package/storybook-static/assets/{TreeMultiSelect.stories-CslpbvPR.js → TreeMultiSelect.stories-BbYabVXc.js} +1 -1
  210. package/storybook-static/assets/{TreePickerBase-B_dMCe45.js → TreePickerBase-FDlZpaH2.js} +1 -1
  211. package/storybook-static/assets/{TreeSelect-2lj0Q8gm.js → TreeSelect-DGSc7Vg9.js} +1 -1
  212. package/storybook-static/assets/{TreeSelect-DEKNYF2b.js → TreeSelect-DT6WnSjM.js} +1 -1
  213. package/storybook-static/assets/{TreeSelect.stories-CVDxn8Vm.js → TreeSelect.stories-C3jdjFQY.js} +1 -1
  214. package/storybook-static/assets/{TreeTable-CBIpzYRL.js → TreeTable-_ymCr62E.js} +1 -1
  215. package/storybook-static/assets/{TreeTable.stories-BMzrr2Kc.js → TreeTable.stories-DHShLIUZ.js} +1 -1
  216. package/storybook-static/assets/{blocks-B5YBxaaS.js → blocks-DcVVTXzf.js} +3 -3
  217. package/storybook-static/assets/{check-BjtdCRaW.js → check-5jIlw3QY.js} +1 -1
  218. package/storybook-static/assets/{chevron-down-B4u-y8Z1.js → chevron-down-CkkAjpRn.js} +1 -1
  219. package/storybook-static/assets/{chevron-left-BQfWs7Ah.js → chevron-left-DNKAotw1.js} +1 -1
  220. package/storybook-static/assets/{chevron-right-ChokKd-f.js → chevron-right-CYbSLSbL.js} +1 -1
  221. package/storybook-static/assets/{chunk-W22LQPXL-meOkhzk4.js → chunk-W22LQPXL-CfJS6YKX.js} +1 -1
  222. package/storybook-static/assets/{circle-alert-B1AnDRf_.js → circle-alert-DXlaxNFD.js} +1 -1
  223. package/storybook-static/assets/{circle-check-JYnlcC1F.js → circle-check-BEKmaVgA.js} +1 -1
  224. package/storybook-static/assets/{components-C_wl1sL5.js → components-tbVBP-zS.js} +3 -3
  225. package/storybook-static/assets/{contextMenu-B-TUGs_1.js → contextMenu-DsufH6U8.js} +1 -1
  226. package/storybook-static/assets/{download-eR3X8I-h.js → download-C9jGmfx6.js} +1 -1
  227. package/storybook-static/assets/{floating-ui.react-D95VPQ0b.js → floating-ui.react-YV96fWnb.js} +1 -1
  228. package/storybook-static/assets/{foundationApi-QhHXpYLB.js → foundationApi-DoAXLuxI.js} +1 -1
  229. package/storybook-static/assets/{foundationLib-CEAjnstw.js → foundationLib-C7xkVQAX.js} +1 -1
  230. package/storybook-static/assets/{hooks-awde7r2r.js → hooks-pjRWWXeZ.js} +1 -1
  231. package/storybook-static/assets/{iframe-FSp_AjJa.js → iframe--RU38UHO.js} +3 -3
  232. package/storybook-static/assets/iframe-BpGl-WdJ.js +1 -0
  233. package/storybook-static/assets/{info-12vmb1sT.js → info-CI9KvIum.js} +1 -1
  234. package/storybook-static/assets/{odata-C0Kpvttz.js → odata-bRglfPOU.js} +1 -1
  235. package/storybook-static/assets/{odataStoryFixtures-BXZnk_C7.js → odataStoryFixtures-B8p8bkan.js} +1 -1
  236. package/storybook-static/assets/{react-BlCqWuXr.js → react-pQ8GL5b8.js} +1 -1
  237. package/storybook-static/assets/{refresh-cw-Bf5ufPte.js → refresh-cw-BJlS8-cO.js} +1 -1
  238. package/storybook-static/assets/{settings-2-DR-dTXIC.js → settings-2-CDqhDJH7.js} +1 -1
  239. package/storybook-static/assets/{sortable-B5e5yb_-.js → sortable-CPlbom2V.js} +1 -1
  240. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-EVJARTec.js → syntaxhighlighter-QEQV7K2Y-Dh9tQsbp.js} +1 -1
  241. package/storybook-static/assets/{trash-2-QP7TS18H.js → trash-2-B3rSNw_b.js} +1 -1
  242. package/storybook-static/assets/{triangle-alert-qw19mxHr.js → triangle-alert-zaUE1fxx.js} +1 -1
  243. package/storybook-static/assets/{ui-CatTcSJL.css → ui-aDejsbZB.css} +1 -1
  244. package/storybook-static/assets/{uiClasses-B9c6dZuu.js → uiClasses-Cmg8Dx0X.js} +1 -1
  245. package/storybook-static/assets/{useODataSelectBase-Csu_Cct9.js → useODataSelectBase-DH9eFTxr.js} +1 -1
  246. package/storybook-static/assets/{useODataTreeData-BAv-Twqf.js → useODataTreeData-BrcEV-bK.js} +1 -1
  247. package/storybook-static/assets/{usePickerQuery-Da-XM_Y0.js → usePickerQuery-BbTJGOEV.js} +1 -1
  248. package/storybook-static/assets/{usePickerTriggerController-C0TdC2Pz.js → usePickerTriggerController-DNei2G7n.js} +1 -1
  249. package/storybook-static/assets/{x-aCjYTirW.js → x-BiHHkto5.js} +1 -1
  250. package/storybook-static/iframe.html +2 -2
  251. package/storybook-static/project.json +1 -1
  252. package/storybook-static/assets/README--LCKbep-.js +0 -110
  253. package/storybook-static/assets/README-BXJneZAJ.js +0 -147
  254. package/storybook-static/assets/README-C6BOdXNV.js +0 -322
  255. package/storybook-static/assets/README-CC00hlZK.js +0 -527
  256. package/storybook-static/assets/README-Cj2e6HrF.js +0 -178
  257. package/storybook-static/assets/README-DN9HKtp_.js +0 -124
  258. package/storybook-static/assets/README-DNricOkt.js +0 -136
  259. package/storybook-static/assets/README-DoCA4JXf.js +0 -273
  260. package/storybook-static/assets/README-tm9QH9cF.js +0 -103
  261. package/storybook-static/assets/iframe-DzQq_POR.js +0 -1
  262. /package/storybook-static/assets/{ui.module-Cat84Nza.js → ui.module-BDnTp43_.js} +0 -0
@@ -0,0 +1,355 @@
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={a:`a`,blockquote:`blockquote`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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 API/SAP/Transport Requests`}),`
2
+ `,(0,c.jsxs)(t.h1,{id:`sap-transport-requests-через-ryuzaki13react-foundation-apitransport`,children:[`SAP transport requests через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-api/transport`})]}),`
3
+ `,(0,c.jsx)(t.p,{children:`Модуль получает transport requests текущего пользователя из SAP UI2 OData endpoints и нормализует workbench/customizing records.`}),`
4
+ `,(0,c.jsxs)(t.blockquote,{children:[`
5
+ `,(0,c.jsxs)(t.p,{children:[`Здесь слово `,(0,c.jsx)(t.code,{children:`transport`}),` означает SAP transport request. Это не generic HTTP transport. Для обычного HTTP используйте `,(0,c.jsx)(t.a,{href:`../http/README.mdx`,children:(0,c.jsx)(t.code,{children:`/http`})}),`, для SAP/OData transport infrastructure — `,(0,c.jsx)(t.a,{href:`../odata/README.mdx`,children:(0,c.jsx)(t.code,{children:`/odata`})}),`.`]}),`
6
+ `]}),`
7
+ `,(0,c.jsxs)(t.p,{children:[`Для разработчика без SAP-базы: transport request — контейнер, в котором изменения переносятся между SAP systems. Workbench и customizing — разные категории, поэтому package сохраняет `,(0,c.jsx)(t.code,{children:`type`}),` рядом с каждым id.`]}),`
8
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`SAP UI2 WorkbenchRequests ──► normalize ──┐
9
+ ├─► TransportRequest[]
10
+ SAP UI2 CustomizingRequests ─► normalize ─┘
11
+ `})}),`
12
+ `,(0,c.jsx)(t.h2,{id:`импорт`,children:`Импорт`}),`
13
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
14
+ fetchCustomizingTransportRequests,
15
+ fetchTransportRequests,
16
+ fetchUserTransportRequests,
17
+ fetchWorkbenchTransportRequests,
18
+ getTransportRequestKey,
19
+ normalizeTransportRequests,
20
+ transportRequestKeys
21
+ } from "@ryuzaki13/react-foundation-api/transport";
22
+
23
+ import type {
24
+ TransportRequest,
25
+ TransportRequestRaw,
26
+ TransportRequestScope,
27
+ TransportRequestType,
28
+ UserTransportRequests
29
+ } from "@ryuzaki13/react-foundation-api/transport";
30
+ `})}),`
31
+ `,(0,c.jsx)(t.h2,{id:`быстрый-старт`,children:`Быстрый старт`}),`
32
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const requests = await fetchTransportRequests("workbench");
33
+
34
+ for (const request of requests) {
35
+ console.log(request.id, request.text);
36
+ }
37
+ `})}),`
38
+ `,(0,c.jsx)(t.p,{children:`Scopes:`}),`
39
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type TransportRequestType = "workbench" | "customizing";
40
+ type TransportRequestScope = TransportRequestType | "all";
41
+ `})}),`
42
+ `,(0,c.jsxs)(t.p,{children:[`Без аргумента загружается только `,(0,c.jsx)(t.code,{children:`workbench`}),`.`]}),`
43
+ `,(0,c.jsx)(t.h3,{id:`как-выбрать-scope`,children:`Как выбрать scope`}),`
44
+ `,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Нужно UI`}),(0,c.jsx)(t.th,{children:`Scope`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Только workbench request`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`workbench`}),` или аргумент не передан`]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Только customizing request`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`customizing`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Единый список обеих категорий`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`all`})})]})]})]}),`
45
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`await fetchTransportRequests();
46
+ // То же, что fetchTransportRequests("workbench")
47
+ `})}),`
48
+ `,(0,c.jsx)(t.h2,{id:`fetch-functions`,children:`Fetch functions`}),`
49
+ `,(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:`Endpoint`}),(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:`fetchWorkbenchTransportRequests`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`/TRANSPORT/WorkbenchRequests`})}),(0,c.jsx)(t.td,{children:`workbench array`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`fetchCustomizingTransportRequests`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`/TRANSPORT/CustomizingRequests`})}),(0,c.jsx)(t.td,{children:`customizing array`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`fetchUserTransportRequests`})}),(0,c.jsx)(t.td,{children:`Оба endpoint параллельно`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`{ workbench, customizing, all }`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`fetchTransportRequests(scope)`})}),(0,c.jsx)(t.td,{children:`Endpoint по scope`}),(0,c.jsx)(t.td,{children:`единый array`})]})]})]}),`
50
+ `,(0,c.jsxs)(t.p,{children:[`Используется base URL `,(0,c.jsx)(t.code,{children:`odataUi2`}),`: в dev/preview он направлен через настроенный DP0/UI2 proxy, в production — `,(0,c.jsx)(t.code,{children:`/sap/opu/odata/UI2`}),`.`]}),`
51
+ `,(0,c.jsx)(t.p,{children:`Запросы наследуют policy OData transport:`}),`
52
+ `,(0,c.jsxs)(t.ul,{children:[`
53
+ `,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`credentials: include`}),`;`]}),`
54
+ `,(0,c.jsx)(t.li,{children:`SAP language/client headers;`}),`
55
+ `,(0,c.jsx)(t.li,{children:`SSO detection/recovery;`}),`
56
+ `,(0,c.jsx)(t.li,{children:`OData V2 envelope parsing;`}),`
57
+ `,(0,c.jsx)(t.li,{children:`HTTP error handling.`}),`
58
+ `]}),`
59
+ `,(0,c.jsxs)(t.p,{children:[`Если один из двух запросов `,(0,c.jsx)(t.code,{children:`fetchUserTransportRequests`}),` завершился ошибкой, `,(0,c.jsx)(t.code,{children:`Promise.all`}),` отклоняется и частичный object не возвращается.`]}),`
60
+ `,(0,c.jsx)(t.h3,{id:`точные-network-paths`,children:`Точные network paths`}),`
61
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`base URL odataUi2
62
+ ├── /TRANSPORT/WorkbenchRequests
63
+ └── /TRANSPORT/CustomizingRequests
64
+ `})}),`
65
+ `,(0,c.jsxs)(t.p,{children:[`В dev/preview `,(0,c.jsx)(t.code,{children:`odataUi2`}),` обычно становится:`]}),`
66
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`/sap-dp0/opu/odata/UI2
67
+ `})}),`
68
+ `,(0,c.jsx)(t.p,{children:`В production:`}),`
69
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`/sap/opu/odata/UI2
70
+ `})}),`
71
+ `,(0,c.jsx)(t.p,{children:`Итоговый URL определяется OData transport build/project configuration. Consumer не должен добавлять этот prefix вручную.`}),`
72
+ `,(0,c.jsx)(t.h3,{id:`что-делает-каждая-function`,children:`Что делает каждая function`}),`
73
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`fetchWorkbenchTransportRequests()`}),`:`]}),`
74
+ `,(0,c.jsxs)(t.ol,{children:[`
75
+ `,(0,c.jsx)(t.li,{children:`Выполняет UI2 OData GET.`}),`
76
+ `,(0,c.jsx)(t.li,{children:`Снимает OData V2 envelope общим transport-ом.`}),`
77
+ `,(0,c.jsxs)(t.li,{children:[`Если payload falsy, возвращает `,(0,c.jsx)(t.code,{children:`[]`}),`.`]}),`
78
+ `,(0,c.jsxs)(t.li,{children:[`Нормализует records с type `,(0,c.jsx)(t.code,{children:`workbench`}),`.`]}),`
79
+ `]}),`
80
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`fetchCustomizingTransportRequests()`}),` делает то же с type `,(0,c.jsx)(t.code,{children:`customizing`}),`.`]}),`
81
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`fetchUserTransportRequests()`}),` запускает обе функции параллельно через `,(0,c.jsx)(t.code,{children:`Promise.all`}),`, затем строит:`]}),`
82
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`{
83
+ workbench,
84
+ customizing,
85
+ all: [...workbench, ...customizing]
86
+ }
87
+ `})}),`
88
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`fetchTransportRequests(scope)`}),` — удобный selector над этими calls.`]}),`
89
+ `,(0,c.jsx)(t.h3,{id:`abortsignal`,children:`AbortSignal`}),`
90
+ `,(0,c.jsxs)(t.p,{children:[`Public fetch functions не принимают `,(0,c.jsx)(t.code,{children:`AbortSignal`}),`. Их можно использовать как TanStack queryFn, но cancellation QueryClient не прерывает underlying request через этот API.`]}),`
91
+ `,(0,c.jsx)(t.p,{children:`Если abort становится обязательным для общей инфраструктуры, расширьте package contract; не создавайте deep import низкоуровневого helper-а.`}),`
92
+ `,(0,c.jsx)(t.h2,{id:`результат`,children:`Результат`}),`
93
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`interface TransportRequest {
94
+ id: string;
95
+ type: "workbench" | "customizing";
96
+ text: string;
97
+ isDefaultRequest: boolean;
98
+ }
99
+ `})}),`
100
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`all`}),` формируется как workbench records, затем customizing records:`]}),`
101
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`interface UserTransportRequests {
102
+ workbench: TransportRequest[];
103
+ customizing: TransportRequest[];
104
+ all: TransportRequest[];
105
+ }
106
+ `})}),`
107
+ `,(0,c.jsx)(t.h3,{id:`поля-результата`,children:`Поля результата`}),`
108
+ `,(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.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:`id`})}),(0,c.jsx)(t.td,{children:`да`}),(0,c.jsx)(t.td,{children:`Нормализованный SAP request number`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`type`})}),(0,c.jsx)(t.td,{children:`да`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`workbench`}),` либо `,(0,c.jsx)(t.code,{children:`customizing`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`text`})}),(0,c.jsx)(t.td,{children:`да`}),(0,c.jsx)(t.td,{children:`Нормализованное description; может быть пустой строкой`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`isDefaultRequest`})}),(0,c.jsx)(t.td,{children:`да`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`true`}),` только при strict input `,(0,c.jsx)(t.code,{children:`true`})]})]})]})]}),`
109
+ `,(0,c.jsx)(t.p,{children:`Надёжный UI label:`}),`
110
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`function getRequestLabel(request: TransportRequest) {
111
+ return request.text
112
+ ? \`\${request.id} — \${request.text}\`
113
+ : request.id;
114
+ }
115
+ `})}),`
116
+ `,(0,c.jsxs)(t.p,{children:[`Не используйте `,(0,c.jsx)(t.code,{children:`text`}),` как identity: description может измениться или быть пустым.`]}),`
117
+ `,(0,c.jsx)(t.h2,{id:`normalizetransportrequests`,children:(0,c.jsx)(t.code,{children:`normalizeTransportRequests`})}),`
118
+ `,(0,c.jsx)(t.p,{children:`Функция полезна отдельно для тестов или custom transport:`}),`
119
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const normalized = normalizeTransportRequests(
120
+ [
121
+ { id: " DEVK900001 ", description: " Исправление ", isDefaultRequest: true },
122
+ { id: "", description: "Без номера" },
123
+ { id: "DEVK900001", description: "Дубликат" }
124
+ ],
125
+ "workbench"
126
+ );
127
+ `})}),`
128
+ `,(0,c.jsxs)(t.p,{children:[`Результат содержит одну запись `,(0,c.jsx)(t.code,{children:`DEVK900001`}),`.`]}),`
129
+ `,(0,c.jsx)(t.p,{children:`Алгоритм:`}),`
130
+ `,(0,c.jsxs)(t.ol,{children:[`
131
+ `,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`id`}),` нормализуется как text с trim.`]}),`
132
+ `,(0,c.jsxs)(t.li,{children:[`Запись без непустого `,(0,c.jsx)(t.code,{children:`id`}),` удаляется.`]}),`
133
+ `,(0,c.jsxs)(t.li,{children:[`Дубликаты `,(0,c.jsx)(t.code,{children:`id`}),` внутри одного input удаляются, сохраняется первый.`]}),`
134
+ `,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`description`}),` нормализуется с trim; отсутствие превращается в пустую строку.`]}),`
135
+ `,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`type`}),` берётся из второго аргумента для всех records.`]}),`
136
+ `,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`isDefaultRequest`}),` равен `,(0,c.jsx)(t.code,{children:`true`}),` только при входном значении `,(0,c.jsx)(t.code,{children:`true`}),`.`]}),`
137
+ `,(0,c.jsx)(t.li,{children:`Порядок первых уникальных records сохраняется.`}),`
138
+ `]}),`
139
+ `,(0,c.jsx)(t.p,{children:`Нормализация не изменяет исходный array/objects.`}),`
140
+ `,(0,c.jsx)(t.h3,{id:`raw-contract`,children:`Raw contract`}),`
141
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`interface TransportRequestRaw {
142
+ id?: string | null;
143
+ description?: string | null;
144
+ isDefaultRequest?: boolean | null;
145
+ }
146
+ `})}),`
147
+ `,(0,c.jsxs)(t.p,{children:[`Все поля могут отсутствовать. После normalization `,(0,c.jsx)(t.code,{children:`id`}),`, `,(0,c.jsx)(t.code,{children:`text`}),`, `,(0,c.jsx)(t.code,{children:`type`}),`, `,(0,c.jsx)(t.code,{children:`isDefaultRequest`}),` уже обязательны.`]}),`
148
+ `,(0,c.jsx)(t.h3,{id:`пошаговый-пример-normalization`,children:`Пошаговый пример normalization`}),`
149
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const source = [
150
+ {
151
+ id: " DP0K970966 ",
152
+ description: " MIME типы ",
153
+ isDefaultRequest: true
154
+ },
155
+ {
156
+ id: "DP0K970966",
157
+ description: "Дубликат",
158
+ isDefaultRequest: false
159
+ },
160
+ {
161
+ id: null,
162
+ description: "Без id"
163
+ }
164
+ ];
165
+
166
+ const result = normalizeTransportRequests(source, "workbench");
167
+ `})}),`
168
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`[
169
+ {
170
+ id: "DP0K970966",
171
+ type: "workbench",
172
+ text: "MIME типы",
173
+ isDefaultRequest: true
174
+ }
175
+ ]
176
+ `})}),`
177
+ `,(0,c.jsxs)(t.p,{children:[`Почему остаётся первая запись: функция сразу добавляет нормализованный id в `,(0,c.jsx)(t.code,{children:`Set`}),` и пропускает последующие совпадения.`]}),`
178
+ `,(0,c.jsx)(t.h3,{id:`дубликаты-между-типами`,children:`Дубликаты между типами`}),`
179
+ `,(0,c.jsxs)(t.p,{children:[`Normalization выполняется отдельно для каждого endpoint. Одинаковый id может присутствовать один раз в workbench и один раз в customizing. Array `,(0,c.jsx)(t.code,{children:`all`}),` сохранит обе записи, потому что их semantic identity различается по `,(0,c.jsx)(t.code,{children:`type`}),`.`]}),`
180
+ `,(0,c.jsx)(t.h2,{id:`query-keys`,children:`Query keys`}),`
181
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`transportRequestKeys.all;
182
+ // ["transportRequests"]
183
+
184
+ transportRequestKeys.list();
185
+ // ["transportRequests", "workbench"]
186
+
187
+ transportRequestKeys.list("all");
188
+ // ["transportRequests", "all"]
189
+ `})}),`
190
+ `,(0,c.jsx)(t.p,{children:`Пример с TanStack Query:`}),`
191
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-tsx`,children:`const scope: TransportRequestScope = "all";
192
+
193
+ const query = useQuery({
194
+ queryKey: transportRequestKeys.list(scope),
195
+ queryFn: () => fetchTransportRequests(scope)
196
+ });
197
+ `})}),`
198
+ `,(0,c.jsx)(t.p,{children:`Factory ключей не создаёт query options и не передаёт AbortSignal; lifecycle запроса настраивает consumer.`}),`
199
+ `,(0,c.jsx)(t.h3,{id:`reusable-query-options`,children:`Reusable query options`}),`
200
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { queryOptions } from "@tanstack/react-query";
201
+ import {
202
+ fetchTransportRequests,
203
+ transportRequestKeys
204
+ } from "@ryuzaki13/react-foundation-api/transport";
205
+
206
+ export const transportRequestsQueryOptions = (
207
+ scope: TransportRequestScope = "workbench"
208
+ ) =>
209
+ queryOptions({
210
+ queryKey: transportRequestKeys.list(scope),
211
+ queryFn: () => fetchTransportRequests(scope),
212
+ staleTime: 5 * 60 * 1000
213
+ });
214
+ `})}),`
215
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`scope`}),` обязательно входит в key. Иначе workbench/customizing/all начнут делить один cache slot.`]}),`
216
+ `,(0,c.jsx)(t.h3,{id:`react-ui-со-всеми-состояниями`,children:`React UI со всеми состояниями`}),`
217
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-tsx`,children:`function TransportRequestSelect({
218
+ scope = "workbench",
219
+ value,
220
+ onChange
221
+ }: {
222
+ scope?: TransportRequestScope;
223
+ value?: string;
224
+ onChange: (id: string) => void;
225
+ }) {
226
+ const query = useQuery(transportRequestsQueryOptions(scope));
227
+
228
+ if (query.isPending) return <p>Загрузка transport requests…</p>;
229
+ if (query.isError) return <p role="alert">{query.error.message}</p>;
230
+ if (query.data.length === 0) return <p>Доступных requests нет</p>;
231
+
232
+ return (
233
+ <select value={value ?? ""} onChange={(event) => onChange(event.target.value)}>
234
+ <option value="">Выберите transport request</option>
235
+ {query.data.map((request) => (
236
+ <option key={getTransportRequestKey(request)} value={request.id}>
237
+ {request.text ? \`\${request.id} — \${request.text}\` : request.id}
238
+ </option>
239
+ ))}
240
+ </select>
241
+ );
242
+ }
243
+ `})}),`
244
+ `,(0,c.jsxs)(t.p,{children:[`Если `,(0,c.jsx)(t.code,{children:`scope === "all"`}),`, form value только `,(0,c.jsx)(t.code,{children:`id`}),` может быть неоднозначным при collision разных types. В таком UI храните `,(0,c.jsx)(t.code,{children:`{ type, id }`}),` или stable key и явно преобразуйте его при submit.`]}),`
245
+ `,(0,c.jsx)(t.h2,{id:`stable-key-отдельной-записи`,children:`Stable key отдельной записи`}),`
246
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`getTransportRequestKey({ type: "workbench", id: "DEVK900001" });
247
+ // "workbench:DEVK900001"
248
+ `})}),`
249
+ `,(0,c.jsxs)(t.p,{children:[`Включение `,(0,c.jsx)(t.code,{children:`type`}),` предотвращает collision одинаковых ID из разных списков. Функция не escaping-ит `,(0,c.jsx)(t.code,{children:`:`}),`; SAP transport ID обычно не содержит этот символ.`]}),`
250
+ `,(0,c.jsxs)(t.p,{children:[`Stable key предназначен для React `,(0,c.jsx)(t.code,{children:`key`}),`, maps и UI identity:`]}),`
251
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const map = new Map(
252
+ requests.map((request) => [getTransportRequestKey(request), request])
253
+ );
254
+ `})}),`
255
+ `,(0,c.jsxs)(t.p,{children:[`Не отправляйте `,(0,c.jsx)(t.code,{children:`workbench:DEVK...`}),` в backend вместо request id, если backend ожидает только `,(0,c.jsx)(t.code,{children:`id`}),`.`]}),`
256
+ `,(0,c.jsxs)(t.h2,{id:`отличие-от-adt`,children:[`Отличие от `,(0,c.jsx)(t.code,{children:`/adt`})]}),`
257
+ `,(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.jsx)(t.code,{children:`/transport`})}),(0,c.jsx)(t.th,{children:(0,c.jsx)(t.code,{children:`/adt`})})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Backend`}),(0,c.jsx)(t.td,{children:`SAP UI2 OData`}),(0,c.jsx)(t.td,{children:`SAP ADT CTS`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Формат`}),(0,c.jsx)(t.td,{children:`JSON/OData envelope`}),(0,c.jsx)(t.td,{children:`XML`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Категории`}),(0,c.jsx)(t.td,{children:`workbench/customizing`}),(0,c.jsx)(t.td,{children:`Общие ADT headers`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Parser`}),(0,c.jsx)(t.td,{children:`OData transport`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`fast-xml-parser`})})]})]})]}),`
258
+ `,(0,c.jsx)(t.p,{children:`Не объединяйте records автоматически: контракты endpoint и значения полей различаются.`}),`
259
+ `,(0,c.jsxs)(t.p,{children:[`ADT result богаче техническими fields (`,(0,c.jsx)(t.code,{children:`owner`}),`, `,(0,c.jsx)(t.code,{children:`statusCode`}),`, `,(0,c.jsx)(t.code,{children:`parentTransportNo`}),`), но UI2 module явно разделяет workbench/customizing и знает default request. Выбор source зависит от backend use case, а не от того, какой endpoint оказался удобнее.`]}),`
260
+ `,(0,c.jsx)(t.h2,{id:`обработка-ошибок`,children:`Обработка ошибок`}),`
261
+ `,(0,c.jsx)(t.p,{children:`Network и OData V2 errors пробрасываются caller-у. Function не превращает HTTP error в пустой array.`}),`
262
+ `,(0,c.jsxs)(t.p,{children:[`Для `,(0,c.jsx)(t.code,{children:`fetchUserTransportRequests`}),` действует fail-fast result contract:`]}),`
263
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`workbench success + customizing error = Promise rejection
264
+ `})}),`
265
+ `,(0,c.jsx)(t.p,{children:`Если product допускает partial UI, orchestrate calls отдельно на feature boundary:`}),`
266
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const [workbench, customizing] = await Promise.allSettled([
267
+ fetchWorkbenchTransportRequests(),
268
+ fetchCustomizingTransportRequests()
269
+ ]);
270
+ `})}),`
271
+ `,(0,c.jsx)(t.p,{children:`После этого feature обязана явно показать partial state; не маскируйте failed category как настоящий пустой список.`}),`
272
+ `,(0,c.jsx)(t.h2,{id:`cache-после-создания-transport-а`,children:`Cache после создания transport-а`}),`
273
+ `,(0,c.jsx)(t.p,{children:`Этот module только читает lists. Если другой feature создаёт request через OData/ADT, после успеха инвалидируйте подходящий scope:`}),`
274
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`await queryClient.invalidateQueries({
275
+ queryKey: transportRequestKeys.all
276
+ });
277
+ `})}),`
278
+ `,(0,c.jsxs)(t.p,{children:[`Prefix `,(0,c.jsx)(t.code,{children:`all`}),` здесь означает «все query keys семейства transport requests», а не только scope `,(0,c.jsx)(t.code,{children:`"all"`}),`.`]}),`
279
+ `,(0,c.jsx)(t.p,{children:`Точечно:`}),`
280
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`await queryClient.invalidateQueries({
281
+ queryKey: transportRequestKeys.list("workbench")
282
+ });
283
+ `})}),`
284
+ `,(0,c.jsx)(t.h2,{id:`тестирование`,children:`Тестирование`}),`
285
+ `,(0,c.jsx)(t.h3,{id:`pure-normalization`,children:`Pure normalization`}),`
286
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { expect, it } from "vitest";
287
+ import { normalizeTransportRequests } from "@ryuzaki13/react-foundation-api/transport";
288
+
289
+ it("trim-ит поля и сохраняет первый duplicate", () => {
290
+ expect(
291
+ normalizeTransportRequests(
292
+ [
293
+ { id: " A ", description: " Первый ", isDefaultRequest: true },
294
+ { id: "A", description: " Второй " }
295
+ ],
296
+ "workbench"
297
+ )
298
+ ).toEqual([
299
+ {
300
+ id: "A",
301
+ type: "workbench",
302
+ text: "Первый",
303
+ isDefaultRequest: true
304
+ }
305
+ ]);
306
+ });
307
+ `})}),`
308
+ `,(0,c.jsx)(t.h3,{id:`что-проверить`,children:`Что проверить`}),`
309
+ `,(0,c.jsxs)(t.ul,{children:[`
310
+ `,(0,c.jsx)(t.li,{children:`пустой/null/whitespace id удаляется;`}),`
311
+ `,(0,c.jsxs)(t.li,{children:[`пустое description становится `,(0,c.jsx)(t.code,{children:`""`}),`;`]}),`
312
+ `,(0,c.jsxs)(t.li,{children:[`только strict `,(0,c.jsx)(t.code,{children:`true`}),` даёт default flag;`]}),`
313
+ `,(0,c.jsx)(t.li,{children:`duplicates сохраняют первую запись;`}),`
314
+ `,(0,c.jsx)(t.li,{children:`workbench/customizing types проставляются argument-ом;`}),`
315
+ `,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`all`}),` сохраняет порядок категорий;`]}),`
316
+ `,(0,c.jsx)(t.li,{children:`одинаковые ids разных types имеют разные stable keys;`}),`
317
+ `,(0,c.jsx)(t.li,{children:`ошибка одного parallel endpoint отклоняет combined function.`}),`
318
+ `]}),`
319
+ `,(0,c.jsx)(t.p,{children:`Network tests должны mock-ать UI2 endpoints и OData envelope. Не используйте real SAP session в unit tests.`}),`
320
+ `,(0,c.jsx)(t.h2,{id:`частые-ошибки`,children:`Частые ошибки`}),`
321
+ `,(0,c.jsx)(t.h3,{id:`использовать-module-как-generic-http-transport`,children:`Использовать module как generic HTTP transport`}),`
322
+ `,(0,c.jsxs)(t.p,{children:[`Название относится к SAP transport requests. Для HTTP есть `,(0,c.jsx)(t.code,{children:`/http`}),`.`]}),`
323
+ `,(0,c.jsx)(t.h3,{id:`не-включить-scope-в-query-key`,children:`Не включить scope в query key`}),`
324
+ `,(0,c.jsx)(t.p,{children:`Каждый scope возвращает разные данные.`}),`
325
+ `,(0,c.jsxs)(t.h3,{id:`использовать-id-как-react-key-при-scope-all`,children:[`Использовать `,(0,c.jsx)(t.code,{children:`id`}),` как React key при scope `,(0,c.jsx)(t.code,{children:`all`})]}),`
326
+ `,(0,c.jsxs)(t.p,{children:[`Используйте `,(0,c.jsx)(t.code,{children:`getTransportRequestKey`}),`, чтобы учесть type.`]}),`
327
+ `,(0,c.jsxs)(t.h3,{id:`считать-пустой-text-ошибкой`,children:[`Считать пустой `,(0,c.jsx)(t.code,{children:`text`}),` ошибкой`]}),`
328
+ `,(0,c.jsx)(t.p,{children:`Public normalized contract допускает пустое description.`}),`
329
+ `,(0,c.jsx)(t.h3,{id:`ожидать-partial-result`,children:`Ожидать partial result`}),`
330
+ `,(0,c.jsxs)(t.p,{children:[`Combined fetch использует `,(0,c.jsx)(t.code,{children:`Promise.all`}),` и fail-fast semantics.`]}),`
331
+ `,(0,c.jsx)(t.h3,{id:`deep-import-odata-transport`,children:`Deep import OData transport`}),`
332
+ `,(0,c.jsxs)(t.p,{children:[`Application импортирует только `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-api/transport`}),`. Internal calls остаются detail package-а.`]}),`
333
+ `,(0,c.jsx)(t.h2,{id:`ошибки-и-ограничения`,children:`Ошибки и ограничения`}),`
334
+ `,(0,c.jsxs)(t.ul,{children:[`
335
+ `,(0,c.jsx)(t.li,{children:`Модуль только читает requests; он не создаёт, не освобождает и не импортирует transport.`}),`
336
+ `,(0,c.jsx)(t.li,{children:`Authorization определяется SAP backend.`}),`
337
+ `,(0,c.jsxs)(t.li,{children:[`Пустой/falsy payload endpoint превращается в `,(0,c.jsx)(t.code,{children:`[]`}),`; HTTP/SSO errors пробрасываются.`]}),`
338
+ `,(0,c.jsx)(t.li,{children:`Нет автоматической TanStack Query cache policy — используйте экспортированные keys.`}),`
339
+ `,(0,c.jsx)(t.li,{children:`Runtime требует настроенного SAP proxy/base URLs и cookies.`}),`
340
+ `]}),`
341
+ `,(0,c.jsx)(t.h2,{id:`faq`,children:`FAQ`}),`
342
+ `,(0,c.jsx)(t.h3,{id:`как-получить-обе-категории`,children:`Как получить обе категории?`}),`
343
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`fetchTransportRequests("all")`}),` для flat array или `,(0,c.jsx)(t.code,{children:`fetchUserTransportRequests()`}),` для grouped object.`]}),`
344
+ `,(0,c.jsx)(t.h3,{id:`какая-категория-загружается-по-умолчанию`,children:`Какая категория загружается по умолчанию?`}),`
345
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`workbench`}),`.`]}),`
346
+ `,(0,c.jsxs)(t.h3,{id:`почему-all-может-содержать-одинаковый-id-дважды`,children:[`Почему `,(0,c.jsx)(t.code,{children:`all`}),` может содержать одинаковый id дважды?`]}),`
347
+ `,(0,c.jsxs)(t.p,{children:[`Если он пришёл из разных categories, records имеют разные `,(0,c.jsx)(t.code,{children:`type`}),` и считаются разными.`]}),`
348
+ `,(0,c.jsx)(t.h3,{id:`можно-ли-создать-transport-request`,children:`Можно ли создать transport request?`}),`
349
+ `,(0,c.jsx)(t.p,{children:`Нет. Модуль read-only.`}),`
350
+ `,(0,c.jsx)(t.h3,{id:`есть-ли-automatic-query-cache`,children:`Есть ли automatic query cache?`}),`
351
+ `,(0,c.jsx)(t.p,{children:`Нет. Используйте exported key factory вместе с TanStack Query.`}),`
352
+ `,(0,c.jsx)(t.h3,{id:`работает-ли-без-sap-sso`,children:`Работает ли без SAP SSO?`}),`
353
+ `,(0,c.jsx)(t.p,{children:`Только если endpoint доступен и auth boundary настроена host environment. Package использует общий SAP transport с cookies/SSO policy.`}),`
354
+ `,(0,c.jsx)(t.h2,{id:`полный-api`,children:`Полный API`}),`
355
+ `,(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:`Exports`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Fetch`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`fetchWorkbenchTransportRequests`}),`, `,(0,c.jsx)(t.code,{children:`fetchCustomizingTransportRequests`}),`, `,(0,c.jsx)(t.code,{children:`fetchUserTransportRequests`}),`, `,(0,c.jsx)(t.code,{children:`fetchTransportRequests`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Normalize/key`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`normalizeTransportRequests`}),`, `,(0,c.jsx)(t.code,{children:`transportRequestKeys`}),`, `,(0,c.jsx)(t.code,{children:`getTransportRequestKey`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Types`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`TransportRequestType`}),`, `,(0,c.jsx)(t.code,{children:`TransportRequestScope`}),`, `,(0,c.jsx)(t.code,{children:`TransportRequest`}),`, `,(0,c.jsx)(t.code,{children:`TransportRequestRaw`}),`, `,(0,c.jsx)(t.code,{children:`UserTransportRequests`})]})]})]})]})]})}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,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,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/API/Formatters/Value State`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,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/API/Formatters/Value State`}),`
2
2
  `,(0,c.jsx)(t.h1,{id:`value-state`,children:`Value state`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`valueState`}),` преобразует обычное значение в семантическое состояние интерфейса:`]}),`
4
4
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type State = "" | "none" | "information" | "success" | "warning" | "error";
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(i,{title:`Foundation Lib/Browser/Client Fingerprint`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(i,{title:`Foundation Lib/Browser/Client Fingerprint`}),`
2
2
  `,(0,c.jsxs)(t.h1,{id:`client-fingerprint-через-ryuzaki13react-foundation-libfingerprint`,children:[`Client fingerprint через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/fingerprint`})]}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`getClientFingerprint`}),` лениво загружает FingerprintJS, получает `,(0,c.jsx)(t.code,{children:`visitorId`}),` и кеширует Promise на всё время жизни JavaScript-модуля.`]}),`
4
4
  `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,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/API/Formatters/Date`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,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/API/Formatters/Date`}),`
2
2
  `,(0,c.jsx)(t.h1,{id:`даты-время-и-календарные-диапазоны`,children:`Даты, время и календарные диапазоны`}),`
3
3
  `,(0,c.jsx)(t.p,{children:`Модуль решает четыре связанные задачи:`}),`
4
4
  `,(0,c.jsxs)(t.ul,{children:[`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={a:`a`,blockquote:`blockquote`,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/HTTP/Headers and Text Response`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={a:`a`,blockquote:`blockquote`,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/HTTP/Headers and Text Response`}),`
2
2
  `,(0,c.jsxs)(t.h1,{id:`http-headers-и-текстовые-ответы-через-ryuzaki13react-foundation-libhttp`,children:[`HTTP headers и текстовые ответы через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/http`})]}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль создаёт стандартный набор HTTP-заголовков запрета кеширования и обычный `,(0,c.jsx)(t.code,{children:`Response`}),` с UTF-8 plain text.`]}),`
4
4
  `,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/API/File`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/API/File`}),`
2
2
  `,(0,c.jsxs)(t.h1,{id:`работа-с-пользовательскими-файлами-через-ryuzaki13react-foundation-libfile`,children:[`Работа с пользовательскими файлами через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/file`})]}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль `,(0,c.jsx)(t.code,{children:`file`}),` содержит browser helpers для четырёх связанных задач:`]}),`
4
4
  `,(0,c.jsxs)(t.ul,{children:[`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/API/Crypto`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/API/Crypto`}),`
2
2
  `,(0,c.jsxs)(t.h1,{id:`идентификаторы-и-строковые-hash-через-ryuzaki13react-foundation-libcrypto`,children:[`Идентификаторы и строковые hash через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/crypto`})]}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль `,(0,c.jsx)(t.code,{children:`crypto`}),` предоставляет небольшие функции для двух разных задач:`]}),`
4
4
  `,(0,c.jsxs)(t.ul,{children:[`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,li:`li`,ol:`ol`,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/Errors/Missing Context`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,li:`li`,ol:`ol`,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/Errors/Missing Context`}),`
2
2
  `,(0,c.jsxs)(t.h1,{id:`ошибка-отсутствующего-react-context-через-ryuzaki13react-foundation-liberror`,children:[`Ошибка отсутствующего React context через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/error`})]}),`
3
3
  `,(0,c.jsx)(t.p,{children:`Модуль создаёт единообразное диагностическое сообщение, когда custom hook вызван вне нужного Provider.`}),`
4
4
  `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/API/Binary`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/API/Binary`}),`
2
2
  `,(0,c.jsxs)(t.h1,{id:`работа-с-бинарными-данными-через-ryuzaki13react-foundation-libbinary`,children:[`Работа с бинарными данными через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/binary`})]}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль `,(0,c.jsx)(t.code,{children:`binary`}),` преобразует строковое бинарное содержимое в браузерный `,(0,c.jsx)(t.code,{children:`Blob`}),`, определяет предполагаемый MIME-тип документа и предоставляет React hook для типового сценария «base64 → `,(0,c.jsx)(t.code,{children:`{ blob, mime }`}),`».`]}),`
4
4
  `,(0,c.jsx)(t.p,{children:`Основной сценарий:`}),`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,strong:`strong`,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/Infrastructure/PWA`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,strong:`strong`,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/Infrastructure/PWA`}),`
2
2
  `,(0,c.jsx)(t.h1,{id:`pwa`,children:`PWA`}),`
3
3
  `,(0,c.jsx)(t.p,{children:`Модуль PWA состоит из двух публичных входов с разной ответственностью:`}),`
4
4
  `,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Import path`}),(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:`@ryuzaki13/react-foundation-lib/pwa`})}),(0,c.jsx)(t.td,{children:`React-hook обновления Service Worker и все функции cache policy`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/pwa/sw-cache-policy`})}),(0,c.jsxs)(t.td,{children:[`Только чистый parser/builder политики `,(0,c.jsx)(t.code,{children:`x-sw-cache`}),`, без React update-flow`]})]})]})]}),`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/API/Formulas`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/API/Formulas`}),`
2
2
  `,(0,c.jsx)(t.h1,{id:`табличные-формулы`,children:`Табличные формулы`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/formulas`}),` предоставляет безопасную инфраструктуру для заранее написанных клиентских формул таблицы.`]}),`
4
4
  `,(0,c.jsx)(t.p,{children:`Формула получает значения других полей текущей строки, выполняет синхронный расчёт и возвращает конечное JavaScript-число. Например, она может вычислить сумму, разницу, отношение или процент для calculated-колонки.`}),`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/API/Copy`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/API/Copy`}),`
2
2
  `,(0,c.jsxs)(t.h1,{id:`копирование-текста-через-ryuzaki13react-foundation-libcopy`,children:[`Копирование текста через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/copy`})]}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль `,(0,c.jsx)(t.code,{children:`copy`}),` содержит React hooks для копирования текста в системный буфер обмена, чтения текста из DOM-элемента и показа короткого состояния «скопировано».`]}),`
4
4
  `,(0,c.jsx)(t.p,{children:`Основные сценарии:`}),`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/HTTP/SEO`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,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/HTTP/SEO`}),`
2
2
  `,(0,c.jsx)(t.h1,{id:`seo`,children:`SEO`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/seo`}),` собирает единый набор SEO-описаний страницы:`]}),`
4
4
  `,(0,c.jsxs)(t.ul,{children:[`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,strong:`strong`,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/Infrastructure/Notifications`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,strong:`strong`,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/Infrastructure/Notifications`}),`
2
2
  `,(0,c.jsx)(t.h1,{id:`notifications`,children:`Notifications`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/notifications`}),` хранит очередь коротких уведомлений и предоставляет два способа управления ею:`]}),`
4
4
  `,(0,c.jsxs)(t.ul,{children:[`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,strong:`strong`,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/Excel`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DcVVTXzf.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,strong:`strong`,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/Excel`}),`
2
2
  `,(0,c.jsx)(t.h1,{id:`excel`,children:`Excel`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/excel`}),` формирует и скачивает `,(0,c.jsx)(t.code,{children:`.xlsx`}),`-файлы в браузере. Он поддерживает:`]}),`
4
4
  `,(0,c.jsxs)(t.ul,{children:[`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-B5YBxaaS.js";import{a as p,i as m,n as h,r as g,t as _}from"./RadioButton.stories-Ah-CBpeC.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DcVVTXzf.js";import{a as p,i as m,n as h,r as g,t as _}from"./RadioButton.stories-CsHPV3Wm.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,b.jsx)(u,{children:`RadioButton`}),`
3
3
  `,(0,b.jsx)(o,{children:`Одиночная radio-кнопка для ручной сборки наборов выбора и специальных компоновок`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`RadioButton уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1 +1 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{i as r,n as i,r as a}from"./iframe-FSp_AjJa.js";import{a as o,i as s}from"./utils-tg3ibbzi.js";import{n as c,t as l}from"./ui.module-Cat84Nza.js";import{i as u,r as d}from"./uiClasses-B9c6dZuu.js";import{n as f,t as p}from"./CheckBox.module-BOAVN-Ny.js";var m,h;function g(){return(g=t((()=>{r(),m=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]],h=a(`circle`,m)})))()}var _,v;function y(){return(y=t((()=>{_=`gu8UMB`,v={radioInput:_}})))()}var b,x,S;function C(){return(C=t((()=>{b=e(n(),1),s(),g(),f(),l(),u(),y(),x=i(),S=({label:e,description:t,placeholder:n,disabled:r,size:i,className:a,onChange:s,value:l,id:u,tone:f=`neutral`,...m})=>{let g=(0,b.useId)(),_=u??g,y=t?`${_}-description`:void 0,S=e??n,C=l??!1;return(0,x.jsxs)(`div`,{className:o(c.uiElement,i&&c.uiSizable,i&&c[i],r&&c.disabled,a),children:[(0,x.jsxs)(`div`,{className:p.row,children:[(0,x.jsxs)(`div`,{className:o(p.wrapper,d(f)),children:[(0,x.jsx)(`input`,{...m,id:_,type:`radio`,checked:C,disabled:r,"aria-disabled":r,"aria-describedby":y,className:o(c.uiSelectionControl,p.input,v.radioInput),onChange:e=>s?.(e.currentTarget.checked)}),(0,x.jsx)(`div`,{className:o(c.uiSelectionIcon,p.icon),"aria-hidden":`true`,children:(0,x.jsx)(h,{fill:`currentColor`})})]}),S&&(0,x.jsx)(`label`,{htmlFor:_,className:c.uiLabel,children:S})]}),t&&(0,x.jsx)(`p`,{id:y,className:c.uiDescription,children:t})]})},S.__docgenInfo={description:'Компонент радиокнопки для выбора одного варианта.\nНативный `input[type="radio"]` обеспечивает взаимоисключение элементов с\nобщим `name`, а controlled API продолжает публиковать булево состояние.\nПоддерживает tone + appearance и использует общие selection utility-классы из ui.module.scss.',methods:[],displayName:`RadioButton`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},tone:{required:!1,tsType:{name:`union`,raw:`"neutral" | "brand" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``,defaultValue:{value:`"neutral"`,computed:!1}}},composes:[`Omit`]}})))()}export{C as n,S as t};
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{i as r,n as i,r as a}from"./iframe--RU38UHO.js";import{a as o,i as s}from"./utils-tg3ibbzi.js";import{n as c,t as l}from"./ui.module-BDnTp43_.js";import{i as u,r as d}from"./uiClasses-Cmg8Dx0X.js";import{n as f,t as p}from"./CheckBox.module-BOAVN-Ny.js";var m,h;function g(){return(g=t((()=>{r(),m=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]],h=a(`circle`,m)})))()}var _,v;function y(){return(y=t((()=>{_=`gu8UMB`,v={radioInput:_}})))()}var b,x,S;function C(){return(C=t((()=>{b=e(n(),1),s(),g(),f(),l(),u(),y(),x=i(),S=({label:e,description:t,placeholder:n,disabled:r,size:i,className:a,onChange:s,value:l,id:u,tone:f=`neutral`,...m})=>{let g=(0,b.useId)(),_=u??g,y=t?`${_}-description`:void 0,S=e??n,C=l??!1;return(0,x.jsxs)(`div`,{className:o(c.uiElement,i&&c.uiSizable,i&&c[i],r&&c.disabled,a),children:[(0,x.jsxs)(`div`,{className:p.row,children:[(0,x.jsxs)(`div`,{className:o(p.wrapper,d(f)),children:[(0,x.jsx)(`input`,{...m,id:_,type:`radio`,checked:C,disabled:r,"aria-disabled":r,"aria-describedby":y,className:o(c.uiSelectionControl,p.input,v.radioInput),onChange:e=>s?.(e.currentTarget.checked)}),(0,x.jsx)(`div`,{className:o(c.uiSelectionIcon,p.icon),"aria-hidden":`true`,children:(0,x.jsx)(h,{fill:`currentColor`})})]}),S&&(0,x.jsx)(`label`,{htmlFor:_,className:c.uiLabel,children:S})]}),t&&(0,x.jsx)(`p`,{id:y,className:c.uiDescription,children:t})]})},S.__docgenInfo={description:'Компонент радиокнопки для выбора одного варианта.\nНативный `input[type="radio"]` обеспечивает взаимоисключение элементов с\nобщим `name`, а controlled API продолжает публиковать булево состояние.\nПоддерживает tone + appearance и использует общие selection utility-классы из ui.module.scss.',methods:[],displayName:`RadioButton`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},tone:{required:!1,tsType:{name:`union`,raw:`"neutral" | "brand" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``,defaultValue:{value:`"neutral"`,computed:!1}}},composes:[`Omit`]}})))()}export{C as n,S as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./RadioButton-YIQXt0wx.js";import{n as a}from"./iframe-FSp_AjJa.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:`{
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-Baxj9d9s.js";import{n as a}from"./iframe--RU38UHO.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
2
  render: renderRadioButtonStory,
3
3
  args: {
4
4
  label: "Выбрать опцию",
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-B5YBxaaS.js";import{a as p,i as m,n as h,r as g,t as _}from"./RadioGroup.stories-DGwCawtU.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe--RU38UHO.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DcVVTXzf.js";import{a as p,i as m,n as h,r as g,t as _}from"./RadioGroup.stories-B3Nbh5ui.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,b.jsx)(u,{children:`RadioGroup`}),`
3
3
  `,(0,b.jsx)(o,{children:`Группа взаимоисключающих опций с поддержкой горизонтальной и вертикальной раскладки`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`RadioGroup уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1 +1 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{i as r,n as i,r as a}from"./iframe-FSp_AjJa.js";import{a as o,i as s,n as c,o as l}from"./utils-tg3ibbzi.js";import{n as u,t as d}from"./ui.module-Cat84Nza.js";var f,p;function m(){return(m=t((()=>{r(),f=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]],p=a(`circle-check-big`,f)})))()}var h,g,_,v,y,b,x,S,C;function w(){return(w=t((()=>{h=`nINbA6`,g=`GL-UWx`,_=`_6PeF-i`,v=`_5wP4aR`,y=`S3MnZI`,b=`KHJ0ja`,x=`oGmcQH`,S=`k2z8AN`,C={radioGroup:h,noWrap:g,horizontal:_,vertical:v,radioItem:y,checked:b,radioItemContent:x,radioItemIcon:S}})))()}function T({value:e,onChange:t,label:n,description:r,disabled:i,className:a,noWrap:s,orientation:c=`horizontal`,"aria-label":l,children:d}){let f=(0,D.useId)(),p=n?`${f}-label`:void 0,m=r?`${f}-description`:void 0,[h,g]=(0,D.useState)([]),_=(0,D.useCallback)(e=>t?.(e),[t]),v=(0,D.useCallback)(e=>(g(t=>t.includes(e)?t:[...t,e]),()=>{g(t=>t.filter(t=>t!==e))}),[]),y=(0,D.useMemo)(()=>({value:e,onChange:_,disabled:i,orientation:c,groupId:f,labelId:p,descriptionId:m,firstOptionId:h[0],registerOption:v}),[m,i,f,_,p,c,v,h,e]);return(0,O.jsxs)(`div`,{className:o(u.uiElement,i&&u.disabled,a),children:[n&&(0,O.jsx)(`div`,{id:p,className:u.uiLabel,children:n}),r&&(0,O.jsx)(`div`,{id:m,className:u.uiDescription,children:r}),(0,O.jsx)(k.Provider,{value:y,children:(0,O.jsx)(`div`,{role:`radiogroup`,"aria-labelledby":p,"aria-label":p?void 0:l,"aria-describedby":m,"aria-disabled":i||void 0,"data-disabled":i||void 0,className:o(u.uiInputControl,C.radioGroup,s&&C.noWrap,C[c]),children:d})})]})}function E({value:e,label:t,description:n,className:r}){let i=(0,D.useContext)(k),a=(0,D.useId)(),s=i?.registerOption;if((0,D.useLayoutEffect)(()=>{if(s)return s(a)},[s,a]),!i)return(0,O.jsxs)(`div`,{className:o(C.radioItem,r),children:[(0,O.jsx)(`p`,{className:`textNoWrap`,children:t}),n&&(0,O.jsx)(`div`,{className:`fontSizeSm content2`,children:n})]});let u=Object.is(i.value,e),d=i.disabled===!0,f=i.value===void 0&&i.firstOptionId===a,m=()=>{d||u||i.onChange?.(e)};return(0,O.jsxs)(`button`,{id:`${i.groupId}-option-${a}`,type:`button`,role:`radio`,"aria-checked":u,disabled:d,tabIndex:u||f?0:-1,className:o(C.radioItem,u&&C.checked,r),"data-ui":`radio-option`,"data-action":`select-radio-option`,onClick:m,onKeyDown:e=>{if(d||c(e,m))return;let t=e.currentTarget,n=t.closest(`[role="radiogroup"]`),r=Array.from(n?.querySelectorAll(`[role="radio"]:not([disabled])`)??[]);if(!r.length)return;let a=r.indexOf(t);if(a===-1)return;let o=l({currentIndex:a,itemCount:r.length,key:e.key,orientation:i.orientation});o!==null&&(e.preventDefault(),r[o]?.focus(),r[o]?.click())},children:[(0,O.jsxs)(`span`,{className:C.radioItemContent,children:[(0,O.jsx)(`span`,{className:`textNoWrap`,children:t}),n&&(0,O.jsx)(`span`,{className:`fontSizeSm`,children:n})]}),(0,O.jsx)(`span`,{className:C.radioItemIcon,children:(0,O.jsx)(p,{style:{display:`block`,visibility:u?`visible`:`hidden`}})})]})}var D,O,k;function A(){return(A=t((()=>{D=e(n(),1),s(),m(),d(),w(),O=i(),k=(0,D.createContext)(null),T.Option=E,T.__docgenInfo={description:`Группа радиокнопок с общим состоянием выбранного значения. Обеспечивает единый API выбора и контекст для дочерних опций.`,methods:[{name:`Option`,docblock:null,modifiers:[`static`],params:[{name:`{ value, label, description, className }: OptionProps<T>`,optional:!1,type:{name:`OptionProps`,elements:[{name:`T`}],raw:`OptionProps<T>`,alias:`OptionProps`}}],returns:null}],displayName:`RadioGroup`,props:{value:{required:!1,tsType:{name:`T`},description:``},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},label:{required:!1,tsType:{name:`string`},description:``},description:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},noWrap:{required:!1,tsType:{name:`literal`,value:`true`},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"vertical" | "horizontal"`,elements:[{name:`literal`,value:`"vertical"`},{name:`literal`,value:`"horizontal"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},"aria-label":{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}},E.__docgenInfo={description:"Опция внутри `RadioGroup`, представляющая одно выбираемое значение. Отрисовывает подпись, описание и состояние выбора.",methods:[],displayName:`Option`,props:{value:{required:!0,tsType:{name:`T`},description:``},label:{required:!0,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}export{A as n,T as t};
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{i as r,n as i,r as a}from"./iframe--RU38UHO.js";import{a as o,i as s,n as c,o as l}from"./utils-tg3ibbzi.js";import{n as u,t as d}from"./ui.module-BDnTp43_.js";var f,p;function m(){return(m=t((()=>{r(),f=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]],p=a(`circle-check-big`,f)})))()}var h,g,_,v,y,b,x,S,C;function w(){return(w=t((()=>{h=`nINbA6`,g=`GL-UWx`,_=`_6PeF-i`,v=`_5wP4aR`,y=`S3MnZI`,b=`KHJ0ja`,x=`oGmcQH`,S=`k2z8AN`,C={radioGroup:h,noWrap:g,horizontal:_,vertical:v,radioItem:y,checked:b,radioItemContent:x,radioItemIcon:S}})))()}function T({value:e,onChange:t,label:n,description:r,disabled:i,className:a,noWrap:s,orientation:c=`horizontal`,"aria-label":l,children:d}){let f=(0,D.useId)(),p=n?`${f}-label`:void 0,m=r?`${f}-description`:void 0,[h,g]=(0,D.useState)([]),_=(0,D.useCallback)(e=>t?.(e),[t]),v=(0,D.useCallback)(e=>(g(t=>t.includes(e)?t:[...t,e]),()=>{g(t=>t.filter(t=>t!==e))}),[]),y=(0,D.useMemo)(()=>({value:e,onChange:_,disabled:i,orientation:c,groupId:f,labelId:p,descriptionId:m,firstOptionId:h[0],registerOption:v}),[m,i,f,_,p,c,v,h,e]);return(0,O.jsxs)(`div`,{className:o(u.uiElement,i&&u.disabled,a),children:[n&&(0,O.jsx)(`div`,{id:p,className:u.uiLabel,children:n}),r&&(0,O.jsx)(`div`,{id:m,className:u.uiDescription,children:r}),(0,O.jsx)(k.Provider,{value:y,children:(0,O.jsx)(`div`,{role:`radiogroup`,"aria-labelledby":p,"aria-label":p?void 0:l,"aria-describedby":m,"aria-disabled":i||void 0,"data-disabled":i||void 0,className:o(u.uiInputControl,C.radioGroup,s&&C.noWrap,C[c]),children:d})})]})}function E({value:e,label:t,description:n,className:r}){let i=(0,D.useContext)(k),a=(0,D.useId)(),s=i?.registerOption;if((0,D.useLayoutEffect)(()=>{if(s)return s(a)},[s,a]),!i)return(0,O.jsxs)(`div`,{className:o(C.radioItem,r),children:[(0,O.jsx)(`p`,{className:`textNoWrap`,children:t}),n&&(0,O.jsx)(`div`,{className:`fontSizeSm content2`,children:n})]});let u=Object.is(i.value,e),d=i.disabled===!0,f=i.value===void 0&&i.firstOptionId===a,m=()=>{d||u||i.onChange?.(e)};return(0,O.jsxs)(`button`,{id:`${i.groupId}-option-${a}`,type:`button`,role:`radio`,"aria-checked":u,disabled:d,tabIndex:u||f?0:-1,className:o(C.radioItem,u&&C.checked,r),"data-ui":`radio-option`,"data-action":`select-radio-option`,onClick:m,onKeyDown:e=>{if(d||c(e,m))return;let t=e.currentTarget,n=t.closest(`[role="radiogroup"]`),r=Array.from(n?.querySelectorAll(`[role="radio"]:not([disabled])`)??[]);if(!r.length)return;let a=r.indexOf(t);if(a===-1)return;let o=l({currentIndex:a,itemCount:r.length,key:e.key,orientation:i.orientation});o!==null&&(e.preventDefault(),r[o]?.focus(),r[o]?.click())},children:[(0,O.jsxs)(`span`,{className:C.radioItemContent,children:[(0,O.jsx)(`span`,{className:`textNoWrap`,children:t}),n&&(0,O.jsx)(`span`,{className:`fontSizeSm`,children:n})]}),(0,O.jsx)(`span`,{className:C.radioItemIcon,children:(0,O.jsx)(p,{style:{display:`block`,visibility:u?`visible`:`hidden`}})})]})}var D,O,k;function A(){return(A=t((()=>{D=e(n(),1),s(),m(),d(),w(),O=i(),k=(0,D.createContext)(null),T.Option=E,T.__docgenInfo={description:`Группа радиокнопок с общим состоянием выбранного значения. Обеспечивает единый API выбора и контекст для дочерних опций.`,methods:[{name:`Option`,docblock:null,modifiers:[`static`],params:[{name:`{ value, label, description, className }: OptionProps<T>`,optional:!1,type:{name:`OptionProps`,elements:[{name:`T`}],raw:`OptionProps<T>`,alias:`OptionProps`}}],returns:null}],displayName:`RadioGroup`,props:{value:{required:!1,tsType:{name:`T`},description:``},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},label:{required:!1,tsType:{name:`string`},description:``},description:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},noWrap:{required:!1,tsType:{name:`literal`,value:`true`},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"vertical" | "horizontal"`,elements:[{name:`literal`,value:`"vertical"`},{name:`literal`,value:`"horizontal"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},"aria-label":{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}},E.__docgenInfo={description:"Опция внутри `RadioGroup`, представляющая одно выбираемое значение. Отрисовывает подпись, описание и состояние выбора.",methods:[],displayName:`Option`,props:{value:{required:!0,tsType:{name:`T`},description:``},label:{required:!0,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}export{A as n,T as t};