@ryuzaki13/react-foundation-ui 1.8.17 → 1.8.19

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 (352) hide show
  1. package/dist/advanced-search/index.js +4 -4
  2. package/dist/base-table/index.js +1 -1
  3. package/dist/chunks/{TextEditorLexicalClient-Ca89d-Db.js → TextEditorLexicalClient-jYDUbAcf.js} +2 -2
  4. package/dist/chunks/{TextEditorLexicalClient-Ca89d-Db.js.map → TextEditorLexicalClient-jYDUbAcf.js.map} +1 -1
  5. package/dist/chunks/{base-table-CXPasGQC.js → base-table-BuH1DvPd.js} +2 -2
  6. package/dist/chunks/{base-table-CXPasGQC.js.map → base-table-BuH1DvPd.js.map} +1 -1
  7. package/dist/chunks/{context-menu-CTJsMd8y.js → context-menu-CCAr_R-t.js} +2 -2
  8. package/dist/chunks/{context-menu-CTJsMd8y.js.map → context-menu-CCAr_R-t.js.map} +1 -1
  9. package/dist/chunks/{date-input-g6l1iDmf.js → date-input-DXCIZbyc.js} +2 -2
  10. package/dist/chunks/{date-input-g6l1iDmf.js.map → date-input-DXCIZbyc.js.map} +1 -1
  11. package/dist/chunks/{input-d08WN5FV.js → input-D1jOxm0t.js} +3 -2
  12. package/dist/chunks/input-D1jOxm0t.js.map +1 -0
  13. package/dist/chunks/{input-files-_NdSQM_3.js → input-files-CDGpJaUm.js} +2 -2
  14. package/dist/chunks/{input-files-_NdSQM_3.js.map → input-files-CDGpJaUm.js.map} +1 -1
  15. package/dist/chunks/{input-search-BjtTMoRu.js → input-search-Ci1ubGox.js} +2 -2
  16. package/dist/chunks/{input-search-BjtTMoRu.js.map → input-search-Ci1ubGox.js.map} +1 -1
  17. package/dist/chunks/{multi-select-m5Xl2yJZ.js → multi-select-D1JjZJfr.js} +2 -2
  18. package/dist/chunks/{multi-select-m5Xl2yJZ.js.map → multi-select-D1JjZJfr.js.map} +1 -1
  19. package/dist/chunks/{picker-DF_heUIT.js → picker-DO9HFqJV.js} +2 -2
  20. package/dist/chunks/picker-DO9HFqJV.js.map +1 -0
  21. package/dist/chunks/{select-C3tbPtgQ.js → select-3jk0ljU1.js} +3 -3
  22. package/dist/chunks/{select-C3tbPtgQ.js.map → select-3jk0ljU1.js.map} +1 -1
  23. package/dist/chunks/{table-Bhj60fyi.js → table-DLkfAmSZ.js} +2 -2
  24. package/dist/chunks/{table-Bhj60fyi.js.map → table-DLkfAmSZ.js.map} +1 -1
  25. package/dist/context-menu/index.js +1 -1
  26. package/dist/date-input/index.js +1 -1
  27. package/dist/date-time-input/index.js +1 -1
  28. package/dist/drop-zone/index.js +1 -1
  29. package/dist/image/index.js +2 -2
  30. package/dist/input/Input.d.ts.map +1 -1
  31. package/dist/input/index.js +1 -1
  32. package/dist/input-date-time/index.js +1 -1
  33. package/dist/input-file/index.js +1 -1
  34. package/dist/input-files/index.js +1 -1
  35. package/dist/input-image/index.js +1 -1
  36. package/dist/input-search/index.js +1 -1
  37. package/dist/layout-picker/index.js +1 -1
  38. package/dist/listbox/index.js +1 -1
  39. package/dist/multi-select/index.js +1 -1
  40. package/dist/picker/index.js +1 -1
  41. package/dist/picker/model/usePickerFloatingListbox.d.ts +1 -1
  42. package/dist/preset-range-date-input/index.js +1 -1
  43. package/dist/preset-select/index.js +1 -1
  44. package/dist/select/index.js +1 -1
  45. package/dist/simple-table/index.js +1 -1
  46. package/dist/slider/index.js +2 -2
  47. package/dist/state-select/index.js +1 -1
  48. package/dist/styles.css +1 -1
  49. package/dist/table/index.js +1 -1
  50. package/dist/table-sorting/index.js +1 -1
  51. package/dist/tag-input/index.js +1 -1
  52. package/dist/text-editor/index.js +1 -1
  53. package/dist/textarea/index.js +1 -1
  54. package/dist/tree-select/index.js +2 -2
  55. package/dist/tree-table/index.js +1 -1
  56. package/package.json +3 -3
  57. package/storybook-static/assets/{Badge-9ov2SQpw.js → Badge-CAM2jkFm.js} +6 -6
  58. package/storybook-static/assets/{Badge.stories-DyT1y7iJ.js → Badge.stories-DRjjmR32.js} +1 -1
  59. package/storybook-static/assets/{BadgeList-DsCC0K2u.js → BadgeList-D4Swhp3V.js} +1 -1
  60. package/storybook-static/assets/{Button-Ch-WQXxt.js → Button-1UZNz2k4.js} +1 -1
  61. package/storybook-static/assets/{Button-DrEpacN2.js → Button-4YB5_DwT.js} +6 -6
  62. package/storybook-static/assets/{Button.stories-Bt1ww23Y.js → Button.stories-B0sdwFqZ.js} +1 -1
  63. package/storybook-static/assets/{CalendarView-C2J0uWGf.js → CalendarView-sSyZ5jCR.js} +1 -1
  64. package/storybook-static/assets/{CheckBox-Dmed1k3Y.js → CheckBox-BdGaGy4_.js} +2 -2
  65. package/storybook-static/assets/{CheckBox-BBm7pBaK.js → CheckBox-Cpt5rjSg.js} +1 -1
  66. package/storybook-static/assets/{CheckBox.stories-Dy7pe9eU.js → CheckBox.stories-6d6-rkNo.js} +1 -1
  67. package/storybook-static/assets/Color-6AOWCN3U-sKBB2RBT.js +1 -0
  68. package/storybook-static/assets/{ContextMenu-9gl4i81Y.js → ContextMenu-B155_m2F.js} +1 -1
  69. package/storybook-static/assets/{ContextMenu-DbjrPPi1.js → ContextMenu-BLnt5p2W.js} +2 -2
  70. package/storybook-static/assets/{ContextMenu.stories-UxHdcdSM.js → ContextMenu.stories-B8sv4v3Q.js} +1 -1
  71. package/storybook-static/assets/{CustomOptionButton-qGFdzAlY.js → CustomOptionButton-hKfsqWNH.js} +1 -1
  72. package/storybook-static/assets/{DateInput-XANZLf8y.js → DateInput-DvIl6s-f.js} +2 -2
  73. package/storybook-static/assets/{DateInput-C3lNtiZJ.js → DateInput-XvSKmvqi.js} +1 -1
  74. package/storybook-static/assets/{DateInput.stories-CPxMqlod.js → DateInput.stories-SU41oukh.js} +1 -1
  75. package/storybook-static/assets/{DateRangePresetSelect-S0q2x0q-.js → DateRangePresetSelect-BCLZcXdv.js} +2 -2
  76. package/storybook-static/assets/{DateRangePresetSelect-erSbZygb.js → DateRangePresetSelect-tz-3m9UI.js} +1 -1
  77. package/storybook-static/assets/DateRangePresetSelect.stories-D8zuTlHo.js +19 -0
  78. package/storybook-static/assets/{Detail-fBnBGZJ-.js → Detail-Ct95dA1k.js} +2 -2
  79. package/storybook-static/assets/{Detail.stories-BS83WXDS.js → Detail.stories-Chedt7EX.js} +1 -1
  80. package/storybook-static/assets/{Dialog-BkxPSokc.js → Dialog-BX3QZOnt.js} +1 -1
  81. package/storybook-static/assets/{Dialog-CUmLq_8l.js → Dialog-C7Duw0PA.js} +2 -2
  82. package/storybook-static/assets/Dialog.stories-J0w0R0Db.js +22 -0
  83. package/storybook-static/assets/{Disclosure-CoQrHJcx.js → Disclosure-BzlV54RK.js} +2 -2
  84. package/storybook-static/assets/Disclosure.stories-z7gnOr5h.js +23 -0
  85. package/storybook-static/assets/{DisclosureGroup-C76Vffsk.js → DisclosureGroup-c179TOi5.js} +1 -1
  86. package/storybook-static/assets/{DocsRenderer-JROSPFPF-Dcd0Q4OT.js → DocsRenderer-JROSPFPF-Ba9N3QAD.js} +1 -1
  87. package/storybook-static/assets/{DropZone-D8ce83Dp.js → DropZone-D5X0oV8O.js} +1 -1
  88. package/storybook-static/assets/{DropZone-CDDUWBFm.js → DropZone-vxUU2p-k.js} +2 -2
  89. package/storybook-static/assets/DropZone.stories-iNXgESGM.js +26 -0
  90. package/storybook-static/assets/{DropdownMenu-BDIZKs1J.js → DropdownMenu-CJlpP3HB.js} +1 -1
  91. package/storybook-static/assets/{ExpandableActionPanel-BuioQ5dl.js → ExpandableActionPanel-CmkEByID.js} +1 -1
  92. package/storybook-static/assets/ExpandableActionPanel.stories-DmRLaVxn.js +9 -0
  93. package/storybook-static/assets/{Flex-B22MHXX7.js → Flex-tVAYZ-nU.js} +2 -2
  94. package/storybook-static/assets/{Flex.stories-kwnLelWl.js → Flex.stories-CVYDcbvw.js} +1 -1
  95. package/storybook-static/assets/{FloatingPopover-Bp9Qypq9.js → FloatingPopover-DMTLPzR3.js} +1 -1
  96. package/storybook-static/assets/{FormattedTableCell-B6jdkIC4.js → FormattedTableCell-DP6-D86D.js} +1 -1
  97. package/storybook-static/assets/{Grid-DflESV2R.js → Grid-Vm-amT-a.js} +2 -2
  98. package/storybook-static/assets/{Grid.stories-CFoPPd64.js → Grid.stories-B0beH9CK.js} +1 -1
  99. package/storybook-static/assets/ImageCropper.stories-Dt-IA4EB.js +131 -0
  100. package/storybook-static/assets/{ImageRenderer-DIL2Vc1q.js → ImageRenderer-DudkQ-3G.js} +1 -1
  101. package/storybook-static/assets/ImageRenderer.stories-CNeSiXkj.js +34 -0
  102. package/storybook-static/assets/ImageView.stories-DMtpy--X.js +14 -0
  103. package/storybook-static/assets/{ImageViewer.stories-D0qPi2e4.js → ImageViewer.stories-BkoV0li4.js} +3 -3
  104. package/storybook-static/assets/{ImageViewerRuntime-DkHuWptv.js → ImageViewerRuntime-BLgQCsSL.js} +1 -1
  105. package/storybook-static/assets/Input-CYgnggvb.css +1 -0
  106. package/storybook-static/assets/{Input-yxWSYFnb.js → Input-MPCFEMQm.js} +2 -2
  107. package/storybook-static/assets/Input-WhTMStKL.js +3 -0
  108. package/storybook-static/assets/Input.stories-B50KKSiz.js +52 -0
  109. package/storybook-static/assets/{InputDateTime-DhZt9ZDV.js → InputDateTime-1zTFbNEF.js} +2 -2
  110. package/storybook-static/assets/{InputDateTime.stories-BUBjE1XK.js → InputDateTime.stories-B7W4BkU6.js} +1 -1
  111. package/storybook-static/assets/{InputFile-D9QY_9jH.js → InputFile-B3QB0SLD.js} +1 -1
  112. package/storybook-static/assets/{InputFile-7mZglfLi.js → InputFile-DYHuD6B8.js} +2 -2
  113. package/storybook-static/assets/InputFile.stories-B-hrCtm_.js +27 -0
  114. package/storybook-static/assets/{InputFiles-Bj0dCOF-.js → InputFiles-CPPAJxgC.js} +1 -1
  115. package/storybook-static/assets/{InputFiles-LUM6HpDW.js → InputFiles-Dpa2BiyZ.js} +2 -2
  116. package/storybook-static/assets/InputFiles.stories-1ocz2wNw.js +26 -0
  117. package/storybook-static/assets/{InputFilesList-CSR5cAWT.js → InputFilesList-D2Ro-1Hm.js} +1 -1
  118. package/storybook-static/assets/{InputImage-I4lZZZDP.js → InputImage-BDC2lyVo.js} +1 -1
  119. package/storybook-static/assets/{InputImage-DCXLCb31.js → InputImage-DPmkvGcl.js} +2 -2
  120. package/storybook-static/assets/InputImage.stories-D3hWZBtn.js +56 -0
  121. package/storybook-static/assets/{InteractiveComponents-CqglREgC.js → InteractiveComponents-Djz3CtkU.js} +1 -1
  122. package/storybook-static/assets/{InteractiveComponents.stories-wY4MY2As.js → InteractiveComponents.stories-CJ2VWPLD.js} +1 -1
  123. package/storybook-static/assets/{LayoutPicker-DaT1HP0_.js → LayoutPicker-BFShZhhi.js} +1 -1
  124. package/storybook-static/assets/{LayoutPicker-DYwZvtzh.js → LayoutPicker-CMMEs83d.js} +3 -3
  125. package/storybook-static/assets/{LayoutPicker.stories-dsNYjmjt.js → LayoutPicker.stories-Cdb_UnBI.js} +1 -1
  126. package/storybook-static/assets/{Listbox-Bnd30LZ_.js → Listbox-B7nZijLJ.js} +2 -2
  127. package/storybook-static/assets/{Listbox-DA4aaUt0.js → Listbox-DM1vuGVD.js} +1 -1
  128. package/storybook-static/assets/{Listbox.stories-xe6Yszg6.js → Listbox.stories-DTs-ANe9.js} +1 -1
  129. package/storybook-static/assets/{Modal-NJll9h9x.js → Modal-D0dkB7lh.js} +3 -3
  130. package/storybook-static/assets/{Modal.stories-B7N5aIgP.js → Modal.stories-BOh10Fkn.js} +1 -1
  131. package/storybook-static/assets/{ModalManagerProvider-DA5QtvQ2.js → ModalManagerProvider-CEEmviJU.js} +1 -1
  132. package/storybook-static/assets/{MultiSelect-CUqW5AMh.js → MultiSelect-CbrRNOEZ.js} +2 -2
  133. package/storybook-static/assets/{MultiSelect-giyYuz8c.js → MultiSelect-oJhMsKuC.js} +1 -1
  134. package/storybook-static/assets/MultiSelect.stories-mLWhd-au.js +55 -0
  135. package/storybook-static/assets/{NoData-DhKFosBa.js → NoData-C7Kj62Zk.js} +1 -1
  136. package/storybook-static/assets/{NotificationsHost-DKsOqiZE.js → NotificationsHost-D_i7EsJA.js} +3 -3
  137. package/storybook-static/assets/{NotificationsHost.stories-CVsDqE_z.js → NotificationsHost.stories-5GPO8lQl.js} +2 -2
  138. package/storybook-static/assets/{ODataMultiSelect-TMnKV9KI.js → ODataMultiSelect-B6hKhD2q.js} +2 -2
  139. package/storybook-static/assets/{ODataMultiSelect.stories-CbxXeBSq.js → ODataMultiSelect.stories-BO7WaR9I.js} +2 -2
  140. package/storybook-static/assets/{ODataSelect-D3zaT9Bd.js → ODataSelect-BW8S-U91.js} +2 -2
  141. package/storybook-static/assets/{ODataSelect.stories-Djkb72yE.js → ODataSelect.stories-rVZ8RYIu.js} +2 -2
  142. package/storybook-static/assets/{ODataTreeMultiSelect-Bz7Pqr69.js → ODataTreeMultiSelect-BhvUurca.js} +1 -1
  143. package/storybook-static/assets/{ODataTreeMultiSelect.stories-QtxQbfUh.js → ODataTreeMultiSelect.stories-CM8wiVsI.js} +2 -2
  144. package/storybook-static/assets/{ODataTreeSelect-C2dm8syR.js → ODataTreeSelect-B96PJWcL.js} +1 -1
  145. package/storybook-static/assets/{ODataTreeSelect.stories-HRX2qliv.js → ODataTreeSelect.stories-HHLJZrD8.js} +2 -2
  146. package/storybook-static/assets/{OneStepScroller-u3gW3CFu.js → OneStepScroller-DzrN3WVZ.js} +1 -1
  147. package/storybook-static/assets/{Option-CpsdTcBv.js → Option-BwWLsS-Q.js} +1 -1
  148. package/storybook-static/assets/{Option-CpAZkiB9.css → Option-DFJ-DfU8.css} +1 -1
  149. package/storybook-static/assets/{OptionButton-Cpc3pWQ6.js → OptionButton-CdYqQAwC.js} +1 -1
  150. package/storybook-static/assets/{PeriodSelect-CWHJ86O3.js → PeriodSelect-CJejEx-e.js} +1 -1
  151. package/storybook-static/assets/{PeriodSelect-C6OPxXw9.js → PeriodSelect-_GvgXTKk.js} +1 -1
  152. package/storybook-static/assets/PeriodSelect.stories-CGNmEIBG.js +50 -0
  153. package/storybook-static/assets/{PickerTriggerActions-C05_NlBv.js → PickerTriggerActions-apA_Ruie.js} +1 -1
  154. package/storybook-static/assets/{Popover-CI-lzd_Y.js → Popover-BYGM8Bjj.js} +2 -2
  155. package/storybook-static/assets/{Popover-Dp6v7TaU.js → Popover-CDeopGLJ.js} +1 -1
  156. package/storybook-static/assets/{Popover.stories-D7LLMGrG.js → Popover.stories-DTeZeyAB.js} +1 -1
  157. package/storybook-static/assets/{PresetRangeDateInput-DEXNHHFw.js → PresetRangeDateInput-BdFjz9Ed.js} +2 -2
  158. package/storybook-static/assets/{PresetRangeDateInput-jsBNunjm.js → PresetRangeDateInput-D3FBpZqV.js} +1 -1
  159. package/storybook-static/assets/PresetRangeDateInput.stories-B2HCz7Tw.js +3 -0
  160. package/storybook-static/assets/{PresetSelect-B0OvN78Z.js → PresetSelect-BgzVe_NB.js} +1 -1
  161. package/storybook-static/assets/{README-Bu_7En3k.js → README-1tFUbU_N.js} +1 -1
  162. package/storybook-static/assets/{README-D95iopvt.js → README-9flk-o3B.js} +1 -1
  163. package/storybook-static/assets/{README-z6nH2ckx.js → README-B5QVQmyU.js} +1 -1
  164. package/storybook-static/assets/{README-CsAEz_8x.js → README-B8dyxeZz.js} +9 -12
  165. package/storybook-static/assets/{README-CwzP17ME.js → README-BJEbnNWP.js} +5 -9
  166. package/storybook-static/assets/{README--JrkMrwi.js → README-BRnZl0of.js} +4 -4
  167. package/storybook-static/assets/{README-BQpq3lh7.js → README-BSrGqFaw.js} +1 -1
  168. package/storybook-static/assets/{README-CPsRBLe4.js → README-BTp9nnLv.js} +3 -3
  169. package/storybook-static/assets/{README-CZuXtApO.js → README-BUkpxX-E.js} +4 -4
  170. package/storybook-static/assets/{README-CuqoQyPO.js → README-Bht25HeR.js} +1 -1
  171. package/storybook-static/assets/{README-BLho4XLO.js → README-Br9h1slQ.js} +4 -4
  172. package/storybook-static/assets/{README-yZSX-OqC.js → README-BtPehMeb.js} +4 -8
  173. package/storybook-static/assets/{README-LsHbJAIM.js → README-Bv9s5Hlv.js} +4 -7
  174. package/storybook-static/assets/{README-CoWUGZ_l.js → README-C2rr_CMA.js} +1 -1
  175. package/storybook-static/assets/{README-BuAqAOQM.js → README-C8K3rQpu.js} +4 -4
  176. package/storybook-static/assets/{README-DBjNHk3o.js → README-CBhnA3Kz.js} +3 -3
  177. package/storybook-static/assets/{README-yrnG-A7C.js → README-C_uOxFAl.js} +3 -3
  178. package/storybook-static/assets/{README-BBZeaX_g.js → README-CeuRBAf6.js} +1 -1
  179. package/storybook-static/assets/{README-D8up0NHH.js → README-Chc7eGGc.js} +1 -1
  180. package/storybook-static/assets/{README-Cc1ZT-3z.js → README-Cl2jxLna.js} +5 -5
  181. package/storybook-static/assets/{README-CisRMHhh.js → README-CuYqzgi0.js} +1 -1
  182. package/storybook-static/assets/{README-CD5_64aC.js → README-Cuj7DFn9.js} +5 -8
  183. package/storybook-static/assets/{README-IjRO8QsY.js → README-CvrH-776.js} +1 -1
  184. package/storybook-static/assets/{README-DRmu-SFW.js → README-CxsAd0Iq.js} +1 -1
  185. package/storybook-static/assets/{README-CkJtDuAy.js → README-DGTIYOSH.js} +3 -6
  186. package/storybook-static/assets/{README-Cc_acRci.js → README-DHJwCm5f.js} +14 -14
  187. package/storybook-static/assets/{README-mw1aJmys.js → README-DLBEUtiL.js} +1 -1
  188. package/storybook-static/assets/{README-BWH3eVjB.js → README-DNDYDuQ4.js} +4 -8
  189. package/storybook-static/assets/{README-CkwN7vVC.js → README-DQSMXoRa.js} +3 -5
  190. package/storybook-static/assets/{README-k92LCArT.js → README-DSsqg62x.js} +4 -8
  191. package/storybook-static/assets/{README-Dfdjepn7.js → README-DYKVnI5h.js} +4 -8
  192. package/storybook-static/assets/{README-BkBUm6xw.js → README-DZmDqmSd.js} +12 -12
  193. package/storybook-static/assets/{README-Dmt6U3aU.js → README-DcJ05Rnh.js} +1 -1
  194. package/storybook-static/assets/{README-ChzloWz7.js → README-Dju2IqV_.js} +1 -1
  195. package/storybook-static/assets/{README-BKyKhTdP.js → README-DldTDL_-.js} +1 -1
  196. package/storybook-static/assets/{README-oaNW_-7c.js → README-Dq0P8Ach.js} +3 -7
  197. package/storybook-static/assets/{README-B80TRZff.js → README-GstpCBI6.js} +1 -1
  198. package/storybook-static/assets/{README-DBMe9cYi.js → README-HhDoM8Gq.js} +2 -2
  199. package/storybook-static/assets/{README-DVhchZZO.js → README-I0-Ly9-N.js} +4 -8
  200. package/storybook-static/assets/{README-PtCi8SvW.js → README-NwNz8xro.js} +1 -5
  201. package/storybook-static/assets/{README-BYSR0Cie.js → README-OGP9mnSD.js} +4 -4
  202. package/storybook-static/assets/{README-CiMCyRM7.js → README-Se6780nc.js} +1 -1
  203. package/storybook-static/assets/{README-BdToXIoX.js → README-VwNH_K60.js} +1 -1
  204. package/storybook-static/assets/{README-CXBr_CyQ.js → README-_aVIdcMd.js} +4 -4
  205. package/storybook-static/assets/{README-BaCtki1X.js → README-bhX-QiSo.js} +3 -3
  206. package/storybook-static/assets/{README-DjPdG1sn.js → README-eqGIA1ao.js} +4 -8
  207. package/storybook-static/assets/{README-D6gttVs5.js → README-fLJ5n8A8.js} +6 -9
  208. package/storybook-static/assets/{README-BuJyvn9e.js → README-g3WhSoX3.js} +3 -3
  209. package/storybook-static/assets/{README-DQGBcWhx.js → README-m0xvi4o1.js} +1 -1
  210. package/storybook-static/assets/{README-DnCNNxgo.js → README-mXAkjKF0.js} +1 -1
  211. package/storybook-static/assets/{README-l6UdMKGF.js → README-n3wmMhlD.js} +1 -4
  212. package/storybook-static/assets/{README-CYgh97f9.js → README-z2leBvSk.js} +3 -3
  213. package/storybook-static/assets/{RadioButton-Cjuz545O.js → RadioButton-DqEZ3dh2.js} +2 -2
  214. package/storybook-static/assets/{RadioButton-ASb4zRKF.js → RadioButton-JEqzXOJN.js} +1 -1
  215. package/storybook-static/assets/RadioButton.stories-CzIM9dix.js +32 -0
  216. package/storybook-static/assets/{RadioGroup-3QSU0_PH.js → RadioGroup-COIsrK0r.js} +2 -2
  217. package/storybook-static/assets/{RadioGroup-UOcxQ4n6.js → RadioGroup-D4EHkLTb.js} +1 -1
  218. package/storybook-static/assets/{RadioGroup.stories-B9JWyRFi.js → RadioGroup.stories-BdAv58pJ.js} +1 -1
  219. package/storybook-static/assets/{Scrollable-BM7KKTaO.js → Scrollable-noVIQseX.js} +1 -1
  220. package/storybook-static/assets/{Select-CzipkH5g.js → Select-9v7A23y8.js} +2 -2
  221. package/storybook-static/assets/{Select-BIYQ3HYq.js → Select-DgPcfbEp.js} +1 -1
  222. package/storybook-static/assets/Select.stories-yIRnlqrF.js +69 -0
  223. package/storybook-static/assets/{SerializableSelect-aH37Oz_P.js → SerializableSelect-CnPwQtgN.js} +2 -2
  224. package/storybook-static/assets/{SerializableSelect.stories-Cb31hcHm.js → SerializableSelect.stories-9QxpRX-K.js} +2 -2
  225. package/storybook-static/assets/{SingleDateTimeInput-BKZ2j5XA.js → SingleDateTimeInput-CxKz7tUP.js} +2 -2
  226. package/storybook-static/assets/{SingleDateTimeInput-jcU1eYyD.js → SingleDateTimeInput-DBrfgnnn.js} +1 -1
  227. package/storybook-static/assets/{SingleDateTimeInput.stories-D8facy2e.js → SingleDateTimeInput.stories-lOLyuR7U.js} +1 -1
  228. package/storybook-static/assets/{Slider-D5zW2B4x.js → Slider-Cn1YHOVt.js} +1 -1
  229. package/storybook-static/assets/{Slider-CdlSXT8S.js → Slider-KC0hs5nY.js} +3 -3
  230. package/storybook-static/assets/{Slider.stories-DJFDUw-L.js → Slider.stories-C-IjisOs.js} +1 -1
  231. package/storybook-static/assets/{SliderInput-DS33CaaK.js → SliderInput-BVDFbjAz.js} +3 -3
  232. package/storybook-static/assets/{SliderInput-BR8kdM0H.js → SliderInput-Bz4D-xc3.js} +1 -1
  233. package/storybook-static/assets/{SliderInput.stories-B_mObDwL.js → SliderInput.stories-SlhRnTWN.js} +1 -1
  234. package/storybook-static/assets/{Sortable-DWy-JKZS.js → Sortable-d-UOB6NI.js} +2 -2
  235. package/storybook-static/assets/{Sortable.stories-SPmHtcYM.js → Sortable.stories-DWywtUOf.js} +1 -1
  236. package/storybook-static/assets/{Splitter-HUb-YSZF.js → Splitter-t2bV_zrF.js} +4 -4
  237. package/storybook-static/assets/{Splitter.stories-Crzq96sd.js → Splitter.stories-CTTTfgXu.js} +1 -1
  238. package/storybook-static/assets/{StateSelect-BSjtYKZ-.js → StateSelect-CR5WR-IW.js} +2 -2
  239. package/storybook-static/assets/{StateSelect-BwlppuOd.js → StateSelect-CX7Xf-aX.js} +1 -1
  240. package/storybook-static/assets/StateSelect.stories-3KkvmQ80.js +59 -0
  241. package/storybook-static/assets/StringToggle.stories-D7r-Du4d.js +5 -0
  242. package/storybook-static/assets/{Switch-fLpDZ4qU.js → Switch-DB4EZ32N.js} +1 -1
  243. package/storybook-static/assets/{Switch-nA9xU7Pp.js → Switch-Deae3h9G.js} +2 -2
  244. package/storybook-static/assets/Switch.stories-CZxayDtX.js +15 -0
  245. package/storybook-static/assets/{Table-wK63zl6Q.js → Table-CrxyY7zt.js} +4 -4
  246. package/storybook-static/assets/{Table.stories-C0G_h1tN.js → Table.stories-Cwxd5T2K.js} +2 -2
  247. package/storybook-static/assets/{Tabs-D8KwnnA-.js → Tabs-L4LxDqx4.js} +3 -3
  248. package/storybook-static/assets/{Tabs.stories-CS6nCuni.js → Tabs.stories-C4XMXjqd.js} +2 -2
  249. package/storybook-static/assets/{TabsBox-DP0-ZqEC.js → TabsBox-Bnvm4jMi.js} +1 -1
  250. package/storybook-static/assets/{TagInput-D4lwVc3K.js → TagInput-DW0JzYQ3.js} +1 -1
  251. package/storybook-static/assets/TagInput.stories-zF7cV7Cp.js +18 -0
  252. package/storybook-static/assets/{Text-DG9QNJe0.js → Text-ByhnRSgp.js} +1 -1
  253. package/storybook-static/assets/{Textarea-D3-Th6DP.js → Textarea-BySrQxab.js} +2 -2
  254. package/storybook-static/assets/{Textarea-Dj6LQHvv.js → Textarea-WtjTIiyq.js} +1 -1
  255. package/storybook-static/assets/Textarea.stories-jFSqX_4h.js +17 -0
  256. package/storybook-static/assets/{TimePanel-BB4DBxJQ.js → TimePanel-B-rvi-xm.js} +1 -1
  257. package/storybook-static/assets/TimePanel.stories-BQJruT0g.js +14 -0
  258. package/storybook-static/assets/{Toggle-CZ6VsUj-.js → Toggle-BfRh792z.js} +2 -2
  259. package/storybook-static/assets/{Toggle-D6bWhfSd.js → Toggle-BkglFvBx.js} +1 -1
  260. package/storybook-static/assets/Toggle.stories-BonTJbH-.js +25 -0
  261. package/storybook-static/assets/{TreeMultiSelect-CHWAQAhE.js → TreeMultiSelect-7E1j6lHT.js} +1 -1
  262. package/storybook-static/assets/{TreeMultiSelect-BRvJJEY_.js → TreeMultiSelect-CKr7kx7s.js} +1 -1
  263. package/storybook-static/assets/{TreeMultiSelect.stories-BLkkWrbm.js → TreeMultiSelect.stories-DQ9N-EPu.js} +1 -1
  264. package/storybook-static/assets/{TreePickerBase-COJUEQlF.js → TreePickerBase-DwoQyBMk.js} +1 -1
  265. package/storybook-static/assets/{TreeSelect-nFF1HBur.js → TreeSelect-BLc7zLho.js} +1 -1
  266. package/storybook-static/assets/{TreeSelect-DRmtAxPM.js → TreeSelect-BP_YoVCu.js} +1 -1
  267. package/storybook-static/assets/TreeSelect.stories-CyurXsU_.js +32 -0
  268. package/storybook-static/assets/{TreeTable-BRWCFTXn.js → TreeTable-wfgjChnU.js} +3 -3
  269. package/storybook-static/assets/{TreeTable.stories-BqoNWDPG.js → TreeTable.stories-DUBR67SN.js} +2 -2
  270. package/storybook-static/assets/{WithTooltip-7X4HQR7L-DQ4Qthn2.js → WithTooltip-CDUNV5IS-mFMh6Qcu.js} +2 -2
  271. package/storybook-static/assets/{blocks-BohMQTSj.js → blocks-DNj8uFSt.js} +3 -3
  272. package/storybook-static/assets/{check-D7ID2Deb.js → check-CS2caYIB.js} +1 -1
  273. package/storybook-static/assets/{chevron-down-DNkLBCIY.js → chevron-down-DXkNPvpX.js} +1 -1
  274. package/storybook-static/assets/{chevron-left-CdeAAF4x.js → chevron-left-5q-SFjrm.js} +1 -1
  275. package/storybook-static/assets/{chevron-right-BXx9VPR9.js → chevron-right-u6yLjLrs.js} +1 -1
  276. package/storybook-static/assets/{chunk-W22LQPXL-DRxdZLYI.js → chunk-W22LQPXL-CfJGLIdy.js} +1 -1
  277. package/storybook-static/assets/{circle-alert-BRmexcKa.js → circle-alert-Cs1OuREv.js} +1 -1
  278. package/storybook-static/assets/circle-check-Cvppn-HO.js +1 -0
  279. package/storybook-static/assets/components-B6cPezpK.js +241 -0
  280. package/storybook-static/assets/{contextMenu-DsJ4tjOh.js → contextMenu-CX8Geuik.js} +1 -1
  281. package/storybook-static/assets/{defaultRenderers-DfmnIuod.js → defaultRenderers-Dinv2uRZ.js} +1 -1
  282. package/storybook-static/assets/{download-BM2GUoHT.js → download-DY_RFHLw.js} +1 -1
  283. package/storybook-static/assets/floating-ui.react-CCV40RlP.js +1 -0
  284. package/storybook-static/assets/{formatters-D33Uh3si-CxrG0jsB.js → formatters-D33Uh3si-Df97arf9.js} +1 -1
  285. package/storybook-static/assets/{foundationApi-B9hbYace.js → foundationApi-naPnCFLL.js} +3 -6
  286. package/storybook-static/assets/{foundationLib-CerWWVvG.js → foundationLib-CSxKMNQk.js} +1 -1
  287. package/storybook-static/assets/{hooks-DVzTVd_R.js → hooks-CK4me-dJ.js} +1 -1
  288. package/storybook-static/assets/{iframe-K-XGUe-D.js → iframe-YrfSEgEg.js} +203 -203
  289. package/storybook-static/assets/iframe-uYND_WUi.js +1 -0
  290. package/storybook-static/assets/{info-DuSCzhWe.js → info-BEkn6tJB.js} +1 -1
  291. package/storybook-static/assets/odata-j4p1dw3i.js +1 -0
  292. package/storybook-static/assets/odata-service-CWkHASdw-CXhFi03v.js +3 -0
  293. package/storybook-static/assets/{odataStoryFixtures-mZQcAsMK.js → odataStoryFixtures-B_1MKEB-.js} +1 -1
  294. package/storybook-static/assets/{react-18-D4o7zN8K.js → react-18-EmNFJX4V.js} +1 -1
  295. package/storybook-static/assets/react-BihcRTyZ.js +9 -0
  296. package/storybook-static/assets/{refresh-cw-CX2bab9x.js → refresh-cw-uKRX7BI0.js} +1 -1
  297. package/storybook-static/assets/{settings-2-BJfXo0yn.js → settings-2-DTKuqR8p.js} +1 -1
  298. package/storybook-static/assets/{sortable-BRu15Ztn.js → sortable-sVqTZjeF.js} +1 -1
  299. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-Cj45F5T0.js → syntaxhighlighter-QEQV7K2Y-GFZ4bA4u.js} +1 -1
  300. package/storybook-static/assets/theming-BgT2grXK.js +39 -0
  301. package/storybook-static/assets/{trash-2-P9F6tNaQ.js → trash-2-C6QVfyTq.js} +1 -1
  302. package/storybook-static/assets/{triangle-alert-D3Dwx8eQ.js → triangle-alert-DKkTKSAW.js} +1 -1
  303. package/storybook-static/assets/{useODataSelectBase-B6VwzbOR.js → useODataSelectBase-BxPpoJje.js} +1 -1
  304. package/storybook-static/assets/{useODataTreeData-DXyvta3A.js → useODataTreeData-Ct-ZR8pA.js} +1 -1
  305. package/storybook-static/assets/{usePickerQuery-Doby770u.js → usePickerQuery-DJMG-4Gl.js} +1 -1
  306. package/storybook-static/assets/{usePickerTriggerController-viUgSGjI.js → usePickerTriggerController-DeZhyi9h.js} +1 -1
  307. package/storybook-static/assets/{x-DIxXnpOQ.js → x-cU42PK2s.js} +1 -1
  308. package/storybook-static/iframe.html +2 -2
  309. package/storybook-static/index.json +1 -1
  310. package/storybook-static/project.json +1 -1
  311. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +1 -1
  312. package/storybook-static/sb-manager/globals-runtime.js +5 -2
  313. package/storybook-static/sb-manager/runtime.js +1 -0
  314. package/dist/chunks/input-d08WN5FV.js.map +0 -1
  315. package/dist/chunks/picker-DF_heUIT.js.map +0 -1
  316. package/storybook-static/assets/Color-6AOWCN3U-DI-APVga.js +0 -1
  317. package/storybook-static/assets/DateRangePresetSelect.stories-OATiJF6J.js +0 -19
  318. package/storybook-static/assets/Dialog.stories-2NFJy7ry.js +0 -22
  319. package/storybook-static/assets/Disclosure.stories-D1XLmlV_.js +0 -23
  320. package/storybook-static/assets/DropZone.stories-Dm7AK-kr.js +0 -26
  321. package/storybook-static/assets/ExpandableActionPanel.stories-CJZPlJkO.js +0 -9
  322. package/storybook-static/assets/ImageCropper.stories-C-MdyLbo.js +0 -131
  323. package/storybook-static/assets/ImageRenderer.stories-C2_kDlXr.js +0 -34
  324. package/storybook-static/assets/ImageView.stories-DPiGO3Ky.js +0 -14
  325. package/storybook-static/assets/Input-BDeY_-Jr.js +0 -3
  326. package/storybook-static/assets/Input-Db2-9PJZ.css +0 -1
  327. package/storybook-static/assets/Input.stories-BdtZlToV.js +0 -52
  328. package/storybook-static/assets/InputFile.stories-CA3m-mhv.js +0 -27
  329. package/storybook-static/assets/InputFiles.stories-RP0bEium.js +0 -26
  330. package/storybook-static/assets/InputImage.stories-Yn37tywg.js +0 -56
  331. package/storybook-static/assets/MultiSelect.stories-DdUxajBC.js +0 -55
  332. package/storybook-static/assets/PeriodSelect.stories-B6rrRiik.js +0 -50
  333. package/storybook-static/assets/PresetRangeDateInput.stories-DnIcaxSx.js +0 -3
  334. package/storybook-static/assets/README-BPMguwxX.js +0 -101
  335. package/storybook-static/assets/RadioButton.stories-DMiFrv1f.js +0 -32
  336. package/storybook-static/assets/Select.stories-DFRMbFDX.js +0 -69
  337. package/storybook-static/assets/StateSelect.stories-Cz-LdiGm.js +0 -59
  338. package/storybook-static/assets/StringToggle.stories-CLQs9S-2.js +0 -5
  339. package/storybook-static/assets/Switch.stories-Cc7zwrXS.js +0 -15
  340. package/storybook-static/assets/TagInput.stories-KFzrqv4v.js +0 -18
  341. package/storybook-static/assets/Textarea.stories-qerXQk3F.js +0 -17
  342. package/storybook-static/assets/TimePanel.stories-CtaUQrxC.js +0 -14
  343. package/storybook-static/assets/Toggle.stories-DbO2-OJd.js +0 -25
  344. package/storybook-static/assets/TreeSelect.stories-DmkPem76.js +0 -32
  345. package/storybook-static/assets/circle-check-BRJ_YsFd.js +0 -1
  346. package/storybook-static/assets/components-Biok6rgP.js +0 -241
  347. package/storybook-static/assets/floating-ui.react-CBQlgAqp.js +0 -1
  348. package/storybook-static/assets/iframe-GtVf_5WZ.js +0 -1
  349. package/storybook-static/assets/odata-D7jdF0bG.js +0 -1
  350. package/storybook-static/assets/odata-service-CWkHASdw-DlmSiioz.js +0 -3
  351. package/storybook-static/assets/react-CtcbcJqm.js +0 -9
  352. package/storybook-static/assets/theming-Cvtrnj7n.js +0 -39
@@ -0,0 +1,50 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-YrfSEgEg.js";import{n as r,t as i}from"./Text-ByhnRSgp.js";import{a,b as o,y as s}from"./formatters-D33Uh3si-Df97arf9.js";import{n as c,t as l}from"./createControlledStoryRender-BouhvX-R.js";import{n as u,t as d}from"./GridContainer-fKYgDsLl.js";import{r as f,t as p}from"./DateInput-XvSKmvqi.js";import{i as m,n as h,r as g,t as _}from"./PeriodSelect-CJejEx-e.js";var v=t({AllAllowedOptionsDisabled:()=>A,AlternativeLabels:()=>k,AutoSwitchByRange:()=>D,Controlled:()=>E,Disabled:()=>j,MonthAndYear:()=>O,__namedExportsOrder:()=>M,default:()=>w});function y(e){return e!==void 0&&o(e)?e:null}var b,x,S,C,w,T,E,D,O,k,A,j,M;function N(){return(N=e((()=>{s(),f(),c(),u(),r(),m(),h(),b=n(),{fn:x}=__STORYBOOK_MODULE_TEST__,S=[new Date(2026,2,1,0,0,0),new Date(2026,2,14,23,59,59)],C=[new Date(2026,0,1,0,0,0),new Date(2026,4,20,23,59,59)],w={title:`UI/PeriodSelect`,component:_,args:{label:`Период детализации`,description:`Выберите уровень группировки дат.`,placeholder:`Выберите период`,value:`day`,onChange:x(),presetIds:g,dateRange:S,maxDayRangeDays:31,maxWeekRangeWeeks:26,disabled:!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Select периода детализации дат. Компонент работает с id периода и может блокировать слишком детальные варианты по переданному диапазону дат.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда период не выбран.`,control:`text`},value:{description:`Текущий id периода.`,control:`select`,options:g},onChange:{description:`Вызывается с id выбранного периода.`,control:!1},options:{description:"Кастомный список периодов по контракту `PeriodSelectOption`; имеет приоритет над `presetIds`, `labels` и порогами диапазона.",control:!1},labels:{description:`Частичные подписи встроенных периодов поверх канонического каталога.`,control:`object`},presetIds:{description:"Разрешенные встроенные периоды. Порядок отображения остается `day → week → month → year`.",control:`check`,options:g},dateRange:{description:`Диапазон дат, по которому вычисляются заблокированные периоды.`,control:!1},maxDayRangeDays:{description:"Максимальное количество дней, при котором доступен период `day`.",control:{type:`number`,min:1,step:1}},maxWeekRangeWeeks:{description:"Максимальное количество недель, при котором доступен период `week`.",control:{type:`number`,min:1,step:1}},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},T=l((e,t)=>{let n=y(e.dateRange),r=a(e.dateRange??null);return(0,b.jsxs)(d,{gap:`md`,children:[(0,b.jsx)(_,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,b.jsx)(p,{label:`Связанный диапазон дат`,placeholder:`дд.мм.гггг - дд.мм.гггг`,value:n,onChange:e=>t({dateRange:e??void 0})}),(0,b.jsxs)(i,{as:`p`,color:`secondary`,"aria-live":`polite`,children:[`Выбрано: `,(0,b.jsx)(i,{as:`code`,children:e.value??`не выбрано`}),`. Дней в диапазоне:`,` `,(0,b.jsx)(i,{as:`code`,children:r??`не задано`}),`.`]})]})}),E={name:`Контролируемый выбор`,render:T},D={name:`Автопереключение по диапазону`,args:{value:`day`,dateRange:C,maxDayRangeDays:31,maxWeekRangeWeeks:8},render:T},O={name:`Только месяцы и годы`,args:{value:`month`,presetIds:[`month`,`year`]},render:T},k={name:`Альтернативные подписи`,args:{value:`month`,labels:{day:`за день`,week:`за неделю`,month:`за месяц`,year:`за год`}},render:T},A={name:`Все разрешенные варианты недоступны`,args:{value:`day`,presetIds:[`day`,`week`],dateRange:C,maxDayRangeDays:31,maxWeekRangeWeeks:8},render:T},j={name:`Заблокированный контрол`,args:{disabled:!0,value:`week`}},E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
2
+ name: "Контролируемый выбор",
3
+ render: renderPeriodSelectStory
4
+ }`,...E.parameters?.docs?.source},description:{story:"Контролируемый сценарий синхронизирует `value` и `dateRange` через Storybook args.",...E.parameters?.docs?.description}}},D.parameters={...D.parameters,docs:{...D.parameters?.docs,source:{originalSource:`{
5
+ name: "Автопереключение по диапазону",
6
+ args: {
7
+ value: "day",
8
+ dateRange: longDateRange,
9
+ maxDayRangeDays: 31,
10
+ maxWeekRangeWeeks: 8
11
+ },
12
+ render: renderPeriodSelectStory
13
+ }`,...D.parameters?.docs?.source},description:{story:"Длинный диапазон блокирует `day` и `week`, поэтому контрол переключает значение на ближайший доступный период.",...D.parameters?.docs?.description}}},O.parameters={...O.parameters,docs:{...O.parameters?.docs,source:{originalSource:`{
14
+ name: "Только месяцы и годы",
15
+ args: {
16
+ value: "month",
17
+ presetIds: ["month", "year"]
18
+ },
19
+ render: renderPeriodSelectStory
20
+ }`,...O.parameters?.docs?.source},description:{story:`Allow-list ограничивает встроенный каталог двумя крупными уровнями детализации.`,...O.parameters?.docs?.description}}},k.parameters={...k.parameters,docs:{...k.parameters?.docs,source:{originalSource:`{
21
+ name: "Альтернативные подписи",
22
+ args: {
23
+ value: "month",
24
+ labels: {
25
+ day: "за день",
26
+ week: "за неделю",
27
+ month: "за месяц",
28
+ year: "за год"
29
+ }
30
+ },
31
+ render: renderPeriodSelectStory
32
+ }`,...k.parameters?.docs?.source},description:{story:`Частичный labels override меняет формулировки встроенных вариантов,
33
+ сохраняя их id, порядок и ограничения доступности.`,...k.parameters?.docs?.description}}},A.parameters={...A.parameters,docs:{...A.parameters?.docs,source:{originalSource:`{
34
+ name: "Все разрешенные варианты недоступны",
35
+ args: {
36
+ value: "day",
37
+ presetIds: ["day", "week"],
38
+ dateRange: longDateRange,
39
+ maxDayRangeDays: 31,
40
+ maxWeekRangeWeeks: 8
41
+ },
42
+ render: renderPeriodSelectStory
43
+ }`,...A.parameters?.docs?.source},description:{story:`При длинном диапазоне все разрешенные варианты временно недоступны; внешний
44
+ controlled-id сохраняется, и после сокращения диапазона отображение восстанавливается.`,...A.parameters?.docs?.description}}},j.parameters={...j.parameters,docs:{...j.parameters?.docs,source:{originalSource:`{
45
+ name: "Заблокированный контрол",
46
+ args: {
47
+ disabled: true,
48
+ value: "week"
49
+ }
50
+ }`,...j.parameters?.docs?.source}}},M=[`Controlled`,`AutoSwitchByRange`,`MonthAndYear`,`AlternativeLabels`,`AllAllowedOptionsDisabled`,`Disabled`]})))()}export{j as a,N as c,E as i,k as n,O as o,D as r,v as s,A as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t,t as n}from"./chevron-down-DNkLBCIY.js";import{n as r}from"./iframe-K-XGUe-D.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-BDnTp43_.js";function c({open:e,disabled:t,children:r,onToggleMouseDown:a,onToggleClick:s,openAriaLabel:c=`Открыть список`,closeAriaLabel:u=`Закрыть список`}){return(0,l.jsxs)(`div`,{className:o.uiToggleButtonContainer,"data-disabled":t||void 0,children:[r,(0,l.jsx)(`div`,{className:o.uiButtonSeparator}),(0,l.jsx)(`button`,{type:`button`,disabled:t,"aria-label":e?u:c,className:o.uiToggleButton,onMouseDown:a,onClick:s,children:(0,l.jsx)(n,{className:i(o.uiToggleIcon,e&&o.uiToggleIconOpen)})})]})}var l;function u(){return(u=e((()=>{a(),t(),s(),l=r(),c.__docgenInfo={description:``,methods:[],displayName:`PickerTriggerActions`,props:{open:{required:!0,tsType:{name:`boolean`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},children:{required:!1,tsType:{name:`ReactNode`},description:``},onToggleMouseDown:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(event: MouseEvent<HTMLButtonElement>) => void`,signature:{arguments:[{type:{name:`MouseEvent`,elements:[{name:`HTMLButtonElement`}],raw:`MouseEvent<HTMLButtonElement>`},name:`event`}],return:{name:`void`}}},description:``},onToggleClick:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},openAriaLabel:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Открыть список"`,computed:!1}},closeAriaLabel:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Закрыть список"`,computed:!1}}}}})))()}export{u as n,c as t};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t,t as n}from"./chevron-down-DXkNPvpX.js";import{n as r}from"./iframe-YrfSEgEg.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-BDnTp43_.js";function c({open:e,disabled:t,children:r,onToggleMouseDown:a,onToggleClick:s,openAriaLabel:c=`Открыть список`,closeAriaLabel:u=`Закрыть список`}){return(0,l.jsxs)(`div`,{className:o.uiToggleButtonContainer,"data-disabled":t||void 0,children:[r,(0,l.jsx)(`div`,{className:o.uiButtonSeparator}),(0,l.jsx)(`button`,{type:`button`,disabled:t,"aria-label":e?u:c,className:o.uiToggleButton,onMouseDown:a,onClick:s,children:(0,l.jsx)(n,{className:i(o.uiToggleIcon,e&&o.uiToggleIconOpen)})})]})}var l;function u(){return(u=e((()=>{a(),t(),s(),l=r(),c.__docgenInfo={description:``,methods:[],displayName:`PickerTriggerActions`,props:{open:{required:!0,tsType:{name:`boolean`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},children:{required:!1,tsType:{name:`ReactNode`},description:``},onToggleMouseDown:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(event: MouseEvent<HTMLButtonElement>) => void`,signature:{arguments:[{type:{name:`MouseEvent`,elements:[{name:`HTMLButtonElement`}],raw:`MouseEvent<HTMLButtonElement>`},name:`event`}],return:{name:`void`}}},description:``},onToggleClick:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},openAriaLabel:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Открыть список"`,computed:!1}},closeAriaLabel:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Закрыть список"`,computed:!1}}}}})))()}export{u as n,c as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.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-BohMQTSj.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Popover.stories-D7LLMGrG.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.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-DNj8uFSt.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Popover.stories-DTeZeyAB.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(u,{children:`Popover`}),`
3
3
  `,(0,x.jsx)(o,{children:`Всплывающий контейнер, привязанный к trigger-элементу и поддерживающий управляемое открытие`}),`
4
4
  `,(0,x.jsx)(t.p,{children:`Popover уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -6,7 +6,7 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K
6
6
  `,(0,x.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
7
7
  `,(0,x.jsx)(f,{}),`
8
8
  `,(0,x.jsx)(i,{of:_}),`
9
- `,(0,x.jsx)(t.pre,{children:(0,x.jsx)(t.code,{className:`language-tsx`,children:`import { Button, Popover } from "@/shared/ui";
9
+ `,(0,x.jsx)(t.pre,{children:(0,x.jsx)(t.code,{className:`language-tsx`,children:`import { Button, Popover } from "@ryuzaki13/react-foundation-ui";
10
10
 
11
11
  export function Example() {
12
12
  return (
@@ -1,2 +1,2 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-K-XGUe-D.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{a as o,d as s,g as c,l,m as u,n as d,p as f,r as p}from"./floating-ui.react-CBQlgAqp.js";import{a as m,i as h,n as g,r as _}from"./dom-DBd_DWF8.js";import{i as v,r as y}from"./FloatingPopover-Bp9Qypq9.js";import{n as b}from"./error-De9R4E_F.js";var x,S,C,w;function T(){return(T=t((()=>{x=`JK2Y7t`,S=`_5QtpCJ`,C=`hZuysP`,w={popover:x,primary:S,secondary:C}})))()}function E(){let e=(0,D.useContext)(O);if(!e)throw b({hookName:`usePopoverContext`,providerName:`Popover`});return e}var D,O;function k(){return(k=t((()=>{D=n(),O=(0,D.createContext)(null)})))()}var A,j,M;function N(){return(N=t((()=>{A=e(n(),1),p(),_(),a(),v(),T(),k(),j=r(),M=({children:e,onClose:t,closeOnOutside:n=!0,closeOnEscape:r=!0,disableOutsideClick:a=!1,background:o=`secondary`})=>{let{open:s,setOpen:c,refs:l,floatingStyles:u,middlewareData:f,placement:p,arrowRef:_}=E(),v=(0,A.useRef)(null),b=(0,A.useCallback)(e=>{v.current=e,l.setFloating(e)},[l]),x=m({active:s,initialFocus:`container`,restoreFocus:!0,containerRef:v}),S=(0,A.useCallback)(()=>{s&&(c(!1),t?.())},[c,t,s]);g({active:s,enabled:r,onDismiss:S,containerRef:x});let C=(0,A.useCallback)(()=>{!s||a||n&&S()},[s,a,n,S]);return h([l.floating,l.reference],C),s?(0,j.jsx)(d,{children:(0,j.jsxs)(`div`,{ref:b,style:u,className:i(w.popover,w[o]),role:`dialog`,"aria-modal":`true`,tabIndex:-1,children:[typeof e==`function`?e({setClose:S}):e,(0,j.jsx)(y,{ref:_,placement:p,middlewareData:f})]})}):null},M.__docgenInfo={description:`Содержимое Popover, отображаемое в портале.`,methods:[],displayName:`PopoverContent`,props:{children:{required:!0,tsType:{name:`union`,raw:`React.ReactNode | ((ctx: { setClose: () => void }) => React.ReactNode)`,elements:[{name:`ReactReactNode`,raw:`React.ReactNode`},{name:`unknown`}]},description:``},onClose:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},closeOnOutside:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},closeOnEscape:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},disableOutsideClick:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},background:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`}]},description:``,defaultValue:{value:`"secondary"`,computed:!1}}}}})))()}var P,F;function I(){return(I=t((()=>{P=n(),k(),F=({passive:e,children:t})=>{let{open:n,setOpen:r,refs:i}=E(),a=(0,P.useCallback)(n=>{t.props.onClick&&t.props.onClick(n),!n.defaultPrevented&&(n.preventDefault(),n.stopPropagation(),!e&&r(e=>!e))},[t,r,e]);return(0,P.cloneElement)(t,{ref:i.setReference,"aria-expanded":n,onClick:a})},F.__docgenInfo={description:``,methods:[],displayName:`PopoverTrigger`,props:{passive:{required:!1,tsType:{name:`literal`,value:`true`},description:``},children:{required:!0,tsType:{name:`ReactReactElement`,raw:`React.ReactElement<React.HTMLAttributes<Element> & { ref?: React.Ref<Element> }>`,elements:[{name:`intersection`,raw:`React.HTMLAttributes<Element> & { ref?: React.Ref<Element> }`,elements:[{name:`ReactHTMLAttributes`,raw:`React.HTMLAttributes<Element>`,elements:[{name:`Element`}]},{name:`signature`,type:`object`,raw:`{ ref?: React.Ref<Element> }`,signature:{properties:[{key:`ref`,value:{name:`ReactRef`,raw:`React.Ref<Element>`,elements:[{name:`Element`}],required:!1}}]}}]}]},description:``}}}})))()}var L,R,z,B;function V(){return(V=t((()=>{L=e(n(),1),p(),N(),k(),I(),R=r(),z=({children:e,open:t,defaultOpen:n,onOpenChange:r,placement:i=`bottom`})=>{let[a,d]=(0,L.useState)(n??!1),p=t!==void 0,m=p?t:a,h=(0,L.useCallback)(e=>{let t=typeof e==`function`?e(m):e;p||d(t),r?.(t)},[p,r,m]),g=(0,L.useRef)(null),{refs:_,floatingStyles:v,middlewareData:y,placement:b}=o({open:m,onOpenChange:h,placement:i,middleware:[f(8),s(),u({padding:16}),l({element:g.current})],whileElementsMounted:c});return(0,R.jsx)(O.Provider,{value:{open:m,setOpen:h,refs:_,floatingStyles:v,placement:b,middlewareData:y,arrowRef:g},children:e})},B=Object.assign(z,{Trigger:F,Content:M}),z.__docgenInfo={description:`Контролируемый Popover.
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-YrfSEgEg.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{a as o,d as s,g as c,l,m as u,n as d,p as f,r as p}from"./floating-ui.react-CCV40RlP.js";import{a as m,i as h,n as g,r as _}from"./dom-DBd_DWF8.js";import{i as v,r as y}from"./FloatingPopover-DMTLPzR3.js";import{n as b}from"./error-De9R4E_F.js";var x,S,C,w;function T(){return(T=t((()=>{x=`JK2Y7t`,S=`_5QtpCJ`,C=`hZuysP`,w={popover:x,primary:S,secondary:C}})))()}function E(){let e=(0,D.useContext)(O);if(!e)throw b({hookName:`usePopoverContext`,providerName:`Popover`});return e}var D,O;function k(){return(k=t((()=>{D=n(),O=(0,D.createContext)(null)})))()}var A,j,M;function N(){return(N=t((()=>{A=e(n(),1),p(),_(),a(),v(),T(),k(),j=r(),M=({children:e,onClose:t,closeOnOutside:n=!0,closeOnEscape:r=!0,disableOutsideClick:a=!1,background:o=`secondary`})=>{let{open:s,setOpen:c,refs:l,floatingStyles:u,middlewareData:f,placement:p,arrowRef:_}=E(),v=(0,A.useRef)(null),b=(0,A.useCallback)(e=>{v.current=e,l.setFloating(e)},[l]),x=m({active:s,initialFocus:`container`,restoreFocus:!0,containerRef:v}),S=(0,A.useCallback)(()=>{s&&(c(!1),t?.())},[c,t,s]);g({active:s,enabled:r,onDismiss:S,containerRef:x});let C=(0,A.useCallback)(()=>{!s||a||n&&S()},[s,a,n,S]);return h([l.floating,l.reference],C),s?(0,j.jsx)(d,{children:(0,j.jsxs)(`div`,{ref:b,style:u,className:i(w.popover,w[o]),role:`dialog`,"aria-modal":`true`,tabIndex:-1,children:[typeof e==`function`?e({setClose:S}):e,(0,j.jsx)(y,{ref:_,placement:p,middlewareData:f})]})}):null},M.__docgenInfo={description:`Содержимое Popover, отображаемое в портале.`,methods:[],displayName:`PopoverContent`,props:{children:{required:!0,tsType:{name:`union`,raw:`React.ReactNode | ((ctx: { setClose: () => void }) => React.ReactNode)`,elements:[{name:`ReactReactNode`,raw:`React.ReactNode`},{name:`unknown`}]},description:``},onClose:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},closeOnOutside:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},closeOnEscape:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},disableOutsideClick:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},background:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`}]},description:``,defaultValue:{value:`"secondary"`,computed:!1}}}}})))()}var P,F;function I(){return(I=t((()=>{P=n(),k(),F=({passive:e,children:t})=>{let{open:n,setOpen:r,refs:i}=E(),a=(0,P.useCallback)(n=>{t.props.onClick&&t.props.onClick(n),!n.defaultPrevented&&(n.preventDefault(),n.stopPropagation(),!e&&r(e=>!e))},[t,r,e]);return(0,P.cloneElement)(t,{ref:i.setReference,"aria-expanded":n,onClick:a})},F.__docgenInfo={description:``,methods:[],displayName:`PopoverTrigger`,props:{passive:{required:!1,tsType:{name:`literal`,value:`true`},description:``},children:{required:!0,tsType:{name:`ReactReactElement`,raw:`React.ReactElement<React.HTMLAttributes<Element> & { ref?: React.Ref<Element> }>`,elements:[{name:`intersection`,raw:`React.HTMLAttributes<Element> & { ref?: React.Ref<Element> }`,elements:[{name:`ReactHTMLAttributes`,raw:`React.HTMLAttributes<Element>`,elements:[{name:`Element`}]},{name:`signature`,type:`object`,raw:`{ ref?: React.Ref<Element> }`,signature:{properties:[{key:`ref`,value:{name:`ReactRef`,raw:`React.Ref<Element>`,elements:[{name:`Element`}],required:!1}}]}}]}]},description:``}}}})))()}var L,R,z,B;function V(){return(V=t((()=>{L=e(n(),1),p(),N(),k(),I(),R=r(),z=({children:e,open:t,defaultOpen:n,onOpenChange:r,placement:i=`bottom`})=>{let[a,d]=(0,L.useState)(n??!1),p=t!==void 0,m=p?t:a,h=(0,L.useCallback)(e=>{let t=typeof e==`function`?e(m):e;p||d(t),r?.(t)},[p,r,m]),g=(0,L.useRef)(null),{refs:_,floatingStyles:v,middlewareData:y,placement:b}=o({open:m,onOpenChange:h,placement:i,middleware:[f(8),s(),u({padding:16}),l({element:g.current})],whileElementsMounted:c});return(0,R.jsx)(O.Provider,{value:{open:m,setOpen:h,refs:_,floatingStyles:v,placement:b,middlewareData:y,arrowRef:g},children:e})},B=Object.assign(z,{Trigger:F,Content:M}),z.__docgenInfo={description:`Контролируемый Popover.
2
2
  Используется в связке с Popover.Trigger и Popover.Content.`,methods:[],displayName:`PopoverRoot`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},placement:{required:!1,tsType:{name:`Placement`},description:``,defaultValue:{value:`"bottom"`,computed:!1}},open:{required:!1,tsType:{name:`boolean`},description:``},defaultOpen:{required:!1,tsType:{name:`boolean`},description:``},onOpenChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(open: boolean) => void`,signature:{arguments:[{type:{name:`boolean`},name:`open`}],return:{name:`void`}}},description:``}}}})))()}export{V as n,B 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}from"./iframe-K-XGUe-D.js";import{n as i,t as a}from"./Popover-Dp6v7TaU.js";import{n as o,t as s}from"./Button-Ch-WQXxt.js";import{n as c,t as l}from"./createControlledStoryRender-BouhvX-R.js";import{l as u,t as d}from"./Input-BDeY_-Jr.js";var f=t({AnchorPlacement:()=>w,Controlled:()=>C,Default:()=>S,WithInteractiveContent:()=>T,__namedExportsOrder:()=>E,default:()=>x});function p({args:e,updateArgs:t,trigger:n,children:r}){return(0,_.jsxs)(a,{placement:e.placement,open:e.open,defaultOpen:e.defaultOpen,onOpenChange:n=>{e.onOpenChange?.(n),t({open:n})},children:[(0,_.jsx)(a.Trigger,{passive:e.passive,children:n(e.open===!0)}),(0,_.jsx)(a.Content,{onClose:()=>e.onClose?.(),closeOnOutside:e.closeOnOutside,closeOnEscape:e.closeOnEscape,disableOutsideClick:e.disableOutsideClick,background:e.background,children:r})]})}function m(e,t){return l((n,r)=>(0,_.jsx)(p,{args:n,updateArgs:r,trigger:e,children:t}))}function h({args:e,updateArgs:t}){let[n,r]=(0,g.useState)(``);return(0,_.jsx)(p,{args:e,updateArgs:t,trigger:()=>(0,_.jsx)(`button`,{type:`button`,children:`Форма`}),children:e=>(0,_.jsxs)(`form`,{onSubmit:t=>{t.preventDefault(),e.setClose()},style:{display:`flex`,flexDirection:`column`,gap:8,padding:12,width:180},children:[(0,_.jsx)(d,{label:`Имя`,placeholder:`Введите имя`,value:n,onChange:r}),(0,_.jsx)(s,{children:`Отправить`})]})})}var g,_,v,y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{g=n(),o(),c(),u(),i(),_=r(),{useArgs:v}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:y}=__STORYBOOK_MODULE_TEST__,b=[`top`,`top-start`,`top-end`,`right`,`right-start`,`right-end`,`bottom`,`bottom-start`,`bottom-end`,`left`,`left-start`,`left-end`],x={title:`Shared/UI/Popover`,component:a,args:{children:null,placement:`bottom`,open:!1,defaultOpen:!1,onOpenChange:y(),onClose:y(),closeOnOutside:!0,closeOnEscape:!0,disableOutsideClick:!1,background:`secondary`},parameters:{atomicCanvas:!0,layout:`centered`},argTypes:{children:{description:"Композиция из `Popover.Trigger` и `Popover.Content`.",control:!1},placement:{description:`Предпочтительное положение панели относительно trigger.`,control:`select`,options:b},open:{description:`Контролируемая видимость popover.`,control:`boolean`},defaultOpen:{description:`Начальная видимость в uncontrolled-режиме.`,control:`boolean`},onOpenChange:{description:`Вызывается при открытии и закрытии popover.`,control:!1},passive:{description:`Оставляет trigger пассивным: он получает reference, но не переключает popover по клику.`,control:`boolean`},onClose:{description:"Вызывается после закрытия Content через Escape, клик снаружи или `setClose`.",control:!1},closeOnOutside:{description:`Закрывает Content по клику снаружи.`,control:`boolean`},closeOnEscape:{description:`Закрывает Content по клавише Escape.`,control:`boolean`},disableOutsideClick:{description:`Игнорирует клики снаружи Content.`,control:`boolean`},background:{description:`Тема фона Content.`,control:`inline-radio`,options:[`primary`,`secondary`]}}},S={render:m(()=>(0,_.jsx)(`button`,{type:`button`,children:`Открыть`}),e=>(0,_.jsxs)(`div`,{style:{padding:12,maxWidth:160},children:[(0,_.jsx)(`p`,{children:`Пример простого поповера`}),(0,_.jsx)(`button`,{type:`button`,onClick:e.setClose,children:`Закрыть`})]}))},C={render:m(e=>(0,_.jsx)(`button`,{type:`button`,children:e?`Закрыть`:`Открыть`}),(0,_.jsx)(`div`,{style:{padding:12},children:`Контролируемый режим`}))},w={render:function(){let[e,t]=v(),n=(n,r)=>{e.onOpenChange?.(n),t(n?{open:!0,placement:r}:{open:!1})};return(0,_.jsx)(`div`,{style:{display:`flex`,gap:32,flexWrap:`wrap`,justifyContent:`center`},children:b.map(t=>(0,_.jsxs)(a,{placement:t,open:e.open===!0&&e.placement===t,defaultOpen:e.defaultOpen,onOpenChange:e=>n(e,t),children:[(0,_.jsx)(a.Trigger,{passive:e.passive,children:(0,_.jsx)(`button`,{type:`button`,children:t})}),(0,_.jsx)(a.Content,{onClose:()=>e.onClose?.(),closeOnOutside:e.closeOnOutside,closeOnEscape:e.closeOnEscape,disableOutsideClick:e.disableOutsideClick,background:e.background,children:(0,_.jsx)(`div`,{style:{padding:8},children:t})})]},t))})}},T={render:l((e,t)=>(0,_.jsx)(h,{args:e,updateArgs:t}))},S.parameters={...S.parameters,docs:{...S.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}from"./iframe-YrfSEgEg.js";import{n as i,t as a}from"./Popover-CDeopGLJ.js";import{n as o,t as s}from"./Button-1UZNz2k4.js";import{n as c,t as l}from"./createControlledStoryRender-BouhvX-R.js";import{l as u,t as d}from"./Input-WhTMStKL.js";var f=t({AnchorPlacement:()=>w,Controlled:()=>C,Default:()=>S,WithInteractiveContent:()=>T,__namedExportsOrder:()=>E,default:()=>x});function p({args:e,updateArgs:t,trigger:n,children:r}){return(0,_.jsxs)(a,{placement:e.placement,open:e.open,defaultOpen:e.defaultOpen,onOpenChange:n=>{e.onOpenChange?.(n),t({open:n})},children:[(0,_.jsx)(a.Trigger,{passive:e.passive,children:n(e.open===!0)}),(0,_.jsx)(a.Content,{onClose:()=>e.onClose?.(),closeOnOutside:e.closeOnOutside,closeOnEscape:e.closeOnEscape,disableOutsideClick:e.disableOutsideClick,background:e.background,children:r})]})}function m(e,t){return l((n,r)=>(0,_.jsx)(p,{args:n,updateArgs:r,trigger:e,children:t}))}function h({args:e,updateArgs:t}){let[n,r]=(0,g.useState)(``);return(0,_.jsx)(p,{args:e,updateArgs:t,trigger:()=>(0,_.jsx)(`button`,{type:`button`,children:`Форма`}),children:e=>(0,_.jsxs)(`form`,{onSubmit:t=>{t.preventDefault(),e.setClose()},style:{display:`flex`,flexDirection:`column`,gap:8,padding:12,width:180},children:[(0,_.jsx)(d,{label:`Имя`,placeholder:`Введите имя`,value:n,onChange:r}),(0,_.jsx)(s,{children:`Отправить`})]})})}var g,_,v,y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{g=n(),o(),c(),u(),i(),_=r(),{useArgs:v}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:y}=__STORYBOOK_MODULE_TEST__,b=[`top`,`top-start`,`top-end`,`right`,`right-start`,`right-end`,`bottom`,`bottom-start`,`bottom-end`,`left`,`left-start`,`left-end`],x={title:`UI/Popover`,component:a,args:{children:null,placement:`bottom`,open:!1,defaultOpen:!1,onOpenChange:y(),onClose:y(),closeOnOutside:!0,closeOnEscape:!0,disableOutsideClick:!1,background:`secondary`},parameters:{atomicCanvas:!0,layout:`centered`},argTypes:{children:{description:"Композиция из `Popover.Trigger` и `Popover.Content`.",control:!1},placement:{description:`Предпочтительное положение панели относительно trigger.`,control:`select`,options:b},open:{description:`Контролируемая видимость popover.`,control:`boolean`},defaultOpen:{description:`Начальная видимость в uncontrolled-режиме.`,control:`boolean`},onOpenChange:{description:`Вызывается при открытии и закрытии popover.`,control:!1},passive:{description:`Оставляет trigger пассивным: он получает reference, но не переключает popover по клику.`,control:`boolean`},onClose:{description:"Вызывается после закрытия Content через Escape, клик снаружи или `setClose`.",control:!1},closeOnOutside:{description:`Закрывает Content по клику снаружи.`,control:`boolean`},closeOnEscape:{description:`Закрывает Content по клавише Escape.`,control:`boolean`},disableOutsideClick:{description:`Игнорирует клики снаружи Content.`,control:`boolean`},background:{description:`Тема фона Content.`,control:`inline-radio`,options:[`primary`,`secondary`]}}},S={render:m(()=>(0,_.jsx)(`button`,{type:`button`,children:`Открыть`}),e=>(0,_.jsxs)(`div`,{style:{padding:12,maxWidth:160},children:[(0,_.jsx)(`p`,{children:`Пример простого поповера`}),(0,_.jsx)(`button`,{type:`button`,onClick:e.setClose,children:`Закрыть`})]}))},C={render:m(e=>(0,_.jsx)(`button`,{type:`button`,children:e?`Закрыть`:`Открыть`}),(0,_.jsx)(`div`,{style:{padding:12},children:`Контролируемый режим`}))},w={render:function(){let[e,t]=v(),n=(n,r)=>{e.onOpenChange?.(n),t(n?{open:!0,placement:r}:{open:!1})};return(0,_.jsx)(`div`,{style:{display:`flex`,gap:32,flexWrap:`wrap`,justifyContent:`center`},children:b.map(t=>(0,_.jsxs)(a,{placement:t,open:e.open===!0&&e.placement===t,defaultOpen:e.defaultOpen,onOpenChange:e=>n(e,t),children:[(0,_.jsx)(a.Trigger,{passive:e.passive,children:(0,_.jsx)(`button`,{type:`button`,children:t})}),(0,_.jsx)(a.Content,{onClose:()=>e.onClose?.(),closeOnOutside:e.closeOnOutside,closeOnEscape:e.closeOnEscape,disableOutsideClick:e.disableOutsideClick,background:e.background,children:(0,_.jsx)(`div`,{style:{padding:8},children:t})})]},t))})}},T={render:l((e,t)=>(0,_.jsx)(h,{args:e,updateArgs:t}))},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
2
2
  render: createPopoverStoryRender(() => <button type="button">Открыть</button>, ctx => <div style={{
3
3
  padding: 12,
4
4
  maxWidth: 160
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.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-BohMQTSj.js";import{n as p,r as m,t as h}from"./PresetRangeDateInput.stories-DnIcaxSx.js";function g(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.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-DNj8uFSt.js";import{n as p,r as m,t as h}from"./PresetRangeDateInput.stories-B2HCz7Tw.js";function g(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,v.jsx)(u,{children:`PresetRangeDateInput`}),`
3
3
  `,(0,v.jsx)(o,{children:`Составной контрол диапазона дат с синхронизацией ручного ввода и готовых пресетов`}),`
4
4
  `,(0,v.jsx)(t.p,{children:`PresetRangeDateInput уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -8,7 +8,7 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K
8
8
  `,(0,v.jsx)(i,{of:h}),`
9
9
  `,(0,v.jsx)(t.pre,{children:(0,v.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
10
10
 
11
- import { PresetRangeDateInput } from "@/shared/ui";
11
+ import { PresetRangeDateInput } from "@ryuzaki13/react-foundation-ui";
12
12
 
13
13
  export function Example() {
14
14
  const [range, setRange] = useState(null);
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-K-XGUe-D.js";import{n as r,t as i}from"./FlexContainer-BWyPlTMB.js";import{r as a,t as o}from"./DateInput-C3lNtiZJ.js";import{a as s,c,l,n as u,o as d,r as f,s as p,t as m}from"./DateRangePresetSelect-erSbZygb.js";function h(e){return e??`__empty__`}function g({value:e,onChange:t,presetId:n,onPresetIdChange:r,referenceDate:a,presetIds:s,presetOptions:u,presetLabel:g,presetDescription:y,presetPlaceholder:b=`Выберите пресет диапазона`,presetDisabled:x,...S}){let[C]=(0,_.useState)(()=>new Date),w=a??C,T=(0,_.useMemo)(()=>u??c(d(s,f)),[s,u]),E=e??null,D=(0,_.useMemo)(()=>p(E,w,T),[E,T,w]),O=n??D??void 0,k=(0,_.useRef)(``),A=(0,_.useCallback)(e=>{if(!r)return;let t=h(e);t!==k.current&&(k.current=t,r(e))},[r]),j=e=>{let n=l(e,w,T);if(!n){A(null);return}A(n.id),t(n.range)},M=e=>{t(e),A(p(e,w,T))};return(0,v.jsxs)(i,{gap:`sm`,align:`end`,children:[(0,v.jsx)(m,{size:S.size,label:g,description:y,placeholder:b,disabled:x??S.disabled,value:O,onChange:j,options:T,referenceDate:w}),(0,v.jsx)(o,{...S,value:E,onChange:M})]})}var _,v;function y(){return(y=e((()=>{_=t(),a(),u(),s(),r(),v=n(),g.__docgenInfo={description:`Составной компонент выбора диапазона дат через пресет или ручной ввод.`,methods:[],displayName:`PresetRangeDateInput`,props:{presetId:{required:!1,tsType:{name:`union`,raw:`DateRangePresetOption["id"] | null`,elements:[{name:`DateRangePresetOption["id"]`,raw:`DateRangePresetOption["id"]`},{name:`null`}]},description:``},onPresetIdChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(presetId: DateRangePresetOption["id"] | null) => void`,signature:{arguments:[{type:{name:`union`,raw:`DateRangePresetOption["id"] | null`,elements:[{name:`DateRangePresetOption["id"]`,raw:`DateRangePresetOption["id"]`},{name:`null`}]},name:`presetId`}],return:{name:`void`}}},description:``},referenceDate:{required:!1,tsType:{name:`Date`},description:``},presetIds:{required:!1,tsType:{name:`unknown`},description:``},presetOptions:{required:!1,tsType:{name:`unknown`},description:``},presetLabel:{required:!1,tsType:{name:`ReactNode`},description:``},presetDescription:{required:!1,tsType:{name:`string`},description:``},presetPlaceholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите пресет диапазона"`,computed:!1}},presetDisabled:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`Omit`]}})))()}export{y as n,g as t};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-YrfSEgEg.js";import{n as r,t as i}from"./FlexContainer-BWyPlTMB.js";import{r as a,t as o}from"./DateInput-XvSKmvqi.js";import{a as s,c,l,n as u,o as d,r as f,s as p,t as m}from"./DateRangePresetSelect-tz-3m9UI.js";function h(e){return e??`__empty__`}function g({value:e,onChange:t,presetId:n,onPresetIdChange:r,referenceDate:a,presetIds:s,presetOptions:u,presetLabel:g,presetDescription:y,presetPlaceholder:b=`Выберите пресет диапазона`,presetDisabled:x,...S}){let[C]=(0,_.useState)(()=>new Date),w=a??C,T=(0,_.useMemo)(()=>u??c(d(s,f)),[s,u]),E=e??null,D=(0,_.useMemo)(()=>p(E,w,T),[E,T,w]),O=n??D??void 0,k=(0,_.useRef)(``),A=(0,_.useCallback)(e=>{if(!r)return;let t=h(e);t!==k.current&&(k.current=t,r(e))},[r]),j=e=>{let n=l(e,w,T);if(!n){A(null);return}A(n.id),t(n.range)},M=e=>{t(e),A(p(e,w,T))};return(0,v.jsxs)(i,{gap:`sm`,align:`end`,children:[(0,v.jsx)(m,{size:S.size,label:g,description:y,placeholder:b,disabled:x??S.disabled,value:O,onChange:j,options:T,referenceDate:w}),(0,v.jsx)(o,{...S,value:E,onChange:M})]})}var _,v;function y(){return(y=e((()=>{_=t(),a(),u(),s(),r(),v=n(),g.__docgenInfo={description:`Составной компонент выбора диапазона дат через пресет или ручной ввод.`,methods:[],displayName:`PresetRangeDateInput`,props:{presetId:{required:!1,tsType:{name:`union`,raw:`DateRangePresetOption["id"] | null`,elements:[{name:`DateRangePresetOption["id"]`,raw:`DateRangePresetOption["id"]`},{name:`null`}]},description:``},onPresetIdChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(presetId: DateRangePresetOption["id"] | null) => void`,signature:{arguments:[{type:{name:`union`,raw:`DateRangePresetOption["id"] | null`,elements:[{name:`DateRangePresetOption["id"]`,raw:`DateRangePresetOption["id"]`},{name:`null`}]},name:`presetId`}],return:{name:`void`}}},description:``},referenceDate:{required:!1,tsType:{name:`Date`},description:``},presetIds:{required:!1,tsType:{name:`unknown`},description:``},presetOptions:{required:!1,tsType:{name:`unknown`},description:``},presetLabel:{required:!1,tsType:{name:`ReactNode`},description:``},presetDescription:{required:!1,tsType:{name:`string`},description:``},presetPlaceholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите пресет диапазона"`,computed:!1}},presetDisabled:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`Omit`]}})))()}export{y as n,g as t};
@@ -0,0 +1,3 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{a as n,i as r,r as i}from"./CalendarView-sSyZ5jCR.js";import{n as a}from"./iframe-YrfSEgEg.js";import{n as o,t as s}from"./Text-ByhnRSgp.js";import{n as c,t as l}from"./FlexContainer-BWyPlTMB.js";import{n as u,t as d}from"./createControlledStoryRender-BouhvX-R.js";import{a as f,r as p}from"./DateRangePresetSelect-tz-3m9UI.js";import{n as m,t as h}from"./PresetRangeDateInput-D3FBpZqV.js";var g=t({Default:()=>x,__namedExportsOrder:()=>S,default:()=>y}),_,v,y,b,x,S;function C(){return(C=e((()=>{n(),f(),u(),c(),o(),m(),_=a(),{fn:v}=__STORYBOOK_MODULE_TEST__,y={title:`UI/PresetRangeDateInput`,component:h,args:{label:`Диапазон дат`,placeholder:`дд.мм.гггг - дд.мм.гггг`,value:[new Date(2026,2,10,0,0,0),new Date(2026,2,10,23,59,59)],onChange:v(),presetId:`today`,onPresetIdChange:v(),referenceDate:new Date(2026,2,10,12,0,0),presetLabel:`Быстрый диапазон`,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{presetId:{description:"Контролируемый ID выбранного быстрого пресета. `null` снимает внешний выбор.",control:`select`,options:[...p,null]},onPresetIdChange:{description:`Вызывается, когда выбор пресета меняется из-за preset или ручного диапазона.`,control:!1},referenceDate:{description:`Опорная дата для вычисления встроенных быстрых диапазонов.`,control:`date`},presetIds:{description:"Разрешённые встроенные ID пресетов, если не передан `presetOptions`.",control:`check`,options:p},presetOptions:{description:`Кастомный каталог быстрых диапазонов с функциями вычисления.`,control:!1},presetLabel:{description:`Заголовок поля быстрого выбора.`,control:`text`},presetDescription:{description:`Описание под полем быстрого выбора.`,control:`text`},presetPlaceholder:{description:`Текст до выбора быстрого диапазона.`,control:`text`},presetDisabled:{description:`Блокирует только выбор быстрого пресета.`,control:`boolean`},label:{description:`Заголовок ручного поля диапазона.`,control:`text`},description:{description:`Описание ручного поля диапазона.`,control:`text`},placeholder:{description:`Текст до выбора ручного диапазона.`,control:`text`},value:{description:`Текущий ручной диапазон дат.`,control:!1},onChange:{description:`Вызывается при изменении ручного диапазона или выборе пресета.`,control:!1},error:{description:`Текст внешней ошибки ручного поля.`,control:`text`},onClearError:{description:`Сбрасывает внешнюю ошибку после ввода или выбора.`,control:!1},minDate:{description:`Минимально доступная дата ручного диапазона.`,control:`date`},maxDate:{description:`Максимально доступная дата ручного диапазона.`,control:`date`},datePreset:{description:`Пресет форматирования выбранного ручного диапазона.`,control:`text`},datePickerLevel:{description:`Минимальный уровень навигации календаря ручного поля.`,control:`select`,options:[`day`,`month`,`year`]},selectionMode:{description:`Размер периода, который выбирает ручное поле.`,control:`select`,options:i},weekEndDay:{description:`Последний включённый день недели в режиме week.`,control:`select`,options:r},allowSelectionModeChange:{description:`Показывает runtime-переключатель размера периода.`,control:`boolean`},selectionModeOptions:{description:`Ограничивает доступные режимы в runtime-переключателе.`,control:`check`,options:i},onSelectionModeChange:{description:`Вызывается при runtime-смене размера периода.`,control:!1},disabled:{description:"Блокирует ручное поле и, если `presetDisabled` не задан, быстрый выбор.",control:`boolean`},size:{description:`Размер обоих полей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},b=d((e,t)=>(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(l,{gap:`sm`,align:`end`,children:(0,_.jsx)(h,{...e,value:e.value??null,onChange:n=>{e.onChange(n),t({value:n})},onPresetIdChange:n=>{e.onPresetIdChange?.(n),t({presetId:n})},onSelectionModeChange:n=>{e.onSelectionModeChange?.(n),t({selectionMode:n})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}})}),(0,_.jsxs)(s,{as:`p`,className:`marginBlockSm`,children:[`Активный presetId: `,(0,_.jsx)(s,{as:`code`,children:e.presetId??`null`})]})]})),x={render:b},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
2
+ render: renderPresetRangeDateInputStory
3
+ }`,...x.parameters?.docs?.source},description:{story:`Демонстрирует совместную работу пресета и ручного диапазона.`,...x.parameters?.docs?.description}}},S=[`Default`]})))()}export{g as n,C as r,x as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{n,t as r}from"./Select-BIYQ3HYq.js";function i(e,t,n=[]){if(!Array.isArray(e))return[...n];let r=[];for(let n of e)!t(n)||r.includes(n)||r.push(n);return r}function a(e,t){let n=new Map(t.map(e=>[e.id,e])),r=[],i=new Set;for(let t of e){if(i.has(t))continue;let e=n.get(t);e&&(r.push(e),i.add(t))}return r}function o(e,t){return e?t.find(t=>t.id===e)??null:null}function s(){return(s=e((()=>{})))()}function c({options:e,value:t,onChange:n,getOptionDisabled:i,getOptionCode:a,getOptionAriaLabel:s,renderOption:c,renderValue:u,className:d,buttonClassName:f,optionsClassName:p,clearable:m,...h}){let g=o(t,e)??void 0;return(0,l.jsx)(r,{...h,options:e,value:g,onChange:e=>n(e?.id),getOptionKey:e=>e.id,getOptionLabel:e=>e.label,getOptionCode:a,getOptionDisabled:i,getOptionAriaLabel:s,renderOption:c,renderValue:u,className:d,buttonClassName:f,optionsClassName:p,clearable:m})}var l;function u(){return(u=e((()=>{n(),l=t(),c.__docgenInfo={description:"Базовый Select для пресетов с контрактом `id/label`.",methods:[],displayName:`PresetSelect`,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:``},options:{required:!0,tsType:{name:`unknown`},description:``},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`boolean`}}},description:``},getOptionCode:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionAriaLabel:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},renderOption:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption, state: SelectOptionState) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`},{type:{name:`signature`,type:`object`,raw:`{
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{n,t as r}from"./Select-DgPcfbEp.js";function i(e,t,n=[]){if(!Array.isArray(e))return[...n];let r=[];for(let n of e)!t(n)||r.includes(n)||r.push(n);return r}function a(e,t){let n=new Map(t.map(e=>[e.id,e])),r=[],i=new Set;for(let t of e){if(i.has(t))continue;let e=n.get(t);e&&(r.push(e),i.add(t))}return r}function o(e,t){return e?t.find(t=>t.id===e)??null:null}function s(){return(s=e((()=>{})))()}function c({options:e,value:t,onChange:n,getOptionDisabled:i,getOptionCode:a,getOptionAriaLabel:s,renderOption:c,renderValue:u,className:d,buttonClassName:f,optionsClassName:p,clearable:m,...h}){let g=o(t,e)??void 0;return(0,l.jsx)(r,{...h,options:e,value:g,onChange:e=>n(e?.id),getOptionKey:e=>e.id,getOptionLabel:e=>e.label,getOptionCode:a,getOptionDisabled:i,getOptionAriaLabel:s,renderOption:c,renderValue:u,className:d,buttonClassName:f,optionsClassName:p,clearable:m})}var l;function u(){return(u=e((()=>{n(),l=t(),c.__docgenInfo={description:"Базовый Select для пресетов с контрактом `id/label`.",methods:[],displayName:`PresetSelect`,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:``},options:{required:!0,tsType:{name:`unknown`},description:``},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`boolean`}}},description:``},getOptionCode:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionAriaLabel:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},renderOption:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption, state: SelectOptionState) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`},{type:{name:`signature`,type:`object`,raw:`{
2
2
  active: boolean;
3
3
  selected: boolean;
4
4
  disabled: boolean;
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.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 API/OData/OData V2 and SAP Gateway`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.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 API/OData/OData V2 and SAP Gateway`}),`
2
2
  `,(0,c.jsx)(t.h1,{id:`odata-v2-и-sap-gateway`,children:`OData V2 и SAP Gateway`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Entrypoint `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-api/odata`}),` — основной API-модуль для browser-приложений, работающих с SAP Gateway и OData V2.`]}),`
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-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.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 API/Errors/Error Report Delivery`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.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 API/Errors/Error Report Delivery`}),`
2
2
  `,(0,c.jsxs)(t.h1,{id:`доставка-error-reports-через-ryuzaki13react-foundation-apierror-report`,children:[`Доставка error reports через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-api/error-report`})]}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль превращает сохранённый черновик отчёта из `,(0,c.jsx)(t.code,{children:`foundation-lib`}),` в delivery body, вызывает adapter приложения и обновляет статус черновика.`]}),`
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-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.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-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.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,11 +1,10 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.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/Data/Bounded Copy Stack`}),`
2
- `,(0,c.jsxs)(t.h1,{id:`ограниченный-стек-копий-через-ryuzaki13react-foundation-libbounded-copy-stack`,children:[`Ограниченный стек копий через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/bounded-copy-stack`})]}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.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/Data/Bounded Copy Stack`}),`
2
+ `,(0,c.jsx)(t.h1,{id:`ограниченный-стек-копий`,children:`Ограниченный стек копий`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль хранит небольшой список последних скопированных сущностей. Новый элемент помещается в начало, повтор по `,(0,c.jsx)(t.code,{children:`fingerprint`}),` обновляет существующую запись, а старые записи удаляются при превышении лимита.`]}),`
4
- `,(0,c.jsxs)(t.p,{children:[`Документ рассчитан на разработчика без доступа к исходникам пакета. Ниже объясняются структура элемента, различие `,(0,c.jsx)(t.code,{children:`id`}),` и `,(0,c.jsx)(t.code,{children:`fingerprint`}),`, порядок записей, ссылки на payload и все граничные случаи.`]}),`
5
4
  `,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
6
5
  `,(0,c.jsxs)(t.ul,{children:[`
7
6
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B`,children:`Назначение и границы`})}),`
8
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Установка и импорт`})}),`
7
+ `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Импорт`})}),`
9
8
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D1%8F`,children:`Основные понятия`})}),`
10
9
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9-%D1%81%D1%82%D0%B0%D1%80%D1%82`,children:`Быстрый старт`})}),`
11
10
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#pushboundedcopystackitem`,children:(0,c.jsx)(t.code,{children:`pushBoundedCopyStackItem`})})}),`
@@ -33,20 +32,18 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K
33
32
  `,(0,c.jsx)(t.li,{children:`не выполняет вставку выбранного кандидата.`}),`
34
33
  `]}),`
35
34
  `,(0,c.jsxs)(t.p,{children:[`Clipboard helpers находятся в `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/copy`}),`. Владелец state/storage находится в host-приложении.`]}),`
36
- `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
37
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-bash`,children:`npm install @ryuzaki13/react-foundation-lib
38
- `})}),`
35
+ `,(0,c.jsx)(t.h2,{id:`импорт`,children:`Импорт`}),`
39
36
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
40
37
  DEFAULT_BOUNDED_COPY_STACK_SIZE,
41
38
  getBoundedCopyStackCandidates,
42
39
  pushBoundedCopyStackItem
43
40
  } from "@ryuzaki13/react-foundation-lib/bounded-copy-stack";
44
41
 
45
- import type {
46
- BoundedCopyStackItem,
47
- BoundedCopyStackOptions,
48
- BoundedCopyStackPushInput,
49
- BoundedCopyStackPushResult
42
+ import {
43
+ type BoundedCopyStackItem,
44
+ type BoundedCopyStackOptions,
45
+ type BoundedCopyStackPushInput,
46
+ type BoundedCopyStackPushResult
50
47
  } from "@ryuzaki13/react-foundation-lib/bounded-copy-stack";
51
48
  `})}),`
52
49
  `,(0,c.jsx)(t.p,{children:`Корневой и глубокий импорты не поддерживаются. Модуль ESM, не зависит от React и browser APIs.`}),`
@@ -1,5 +1,5 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,h4:`h4`,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/Array`}),`
2
- `,(0,c.jsxs)(t.h1,{id:`работа-с-массивами-через-ryuzaki13react-foundation-libarray`,children:[`Работа с массивами через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/array`})]}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,h4:`h4`,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/Array`}),`
2
+ `,(0,c.jsx)(t.h1,{id:`работа-с-массивами`,children:`Работа с массивами`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль `,(0,c.jsx)(t.code,{children:`array`}),` содержит небольшие типизированные функции для типовых операций с массивами:`]}),`
4
4
  `,(0,c.jsxs)(t.ul,{children:[`
5
5
  `,(0,c.jsx)(t.li,{children:`группировки элементов;`}),`
@@ -11,10 +11,9 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K
11
11
  `,(0,c.jsx)(t.li,{children:`нормализации строковых идентификаторов и объектов.`}),`
12
12
  `]}),`
13
13
  `,(0,c.jsx)(t.p,{children:`Функции не зависят от React, браузерного DOM, TanStack или других внешних runtime-библиотек. Их можно использовать в обычном TypeScript/JavaScript-коде, React-компонентах, store, mapper, validator и на границах сохранения или восстановления конфигурации.`}),`
14
- `,(0,c.jsx)(t.p,{children:`README рассчитан на разработчика, который использует опубликованный пакет и не читает его исходный код. Здесь отдельно объясняются базовые понятия JavaScript/TypeScript, точное поведение каждой функции, ограничения и типовые ошибки.`}),`
15
14
  `,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
16
15
  `,(0,c.jsxs)(t.ul,{children:[`
17
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Установка и импорт`})}),`
16
+ `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Импорт`})}),`
18
17
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D1%8F-javascript-%D0%B8-typescript`,children:`Минимальные понятия JavaScript и TypeScript`})}),`
19
18
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BA%D0%B0%D0%BA-%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8E`,children:`Как выбрать функцию`})}),`
20
19
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9-%D1%81%D1%82%D0%B0%D1%80%D1%82`,children:`Быстрый старт`})}),`
@@ -31,14 +30,11 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K
31
30
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BA%D1%80%D0%B0%D1%82%D0%BA%D0%B8%D0%B9-%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA-api`,children:`Краткий справочник API`})}),`
32
31
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B-%D0%B8-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%8B`,children:`Вопросы и ответы`})}),`
33
32
  `]}),`
34
- `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
35
- `,(0,c.jsx)(t.p,{children:`Установите пакет в приложении:`}),`
36
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-bash`,children:`npm install @ryuzaki13/react-foundation-lib
37
- `})}),`
33
+ `,(0,c.jsx)(t.h2,{id:`импорт`,children:`Импорт`}),`
38
34
  `,(0,c.jsxs)(t.p,{children:[`Импортируйте функции только из точечного entrypoint `,(0,c.jsx)(t.code,{children:`/array`}),`:`]}),`
39
35
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { arrayGroupBy, arrayToMap, arrayUniqueBy, moveArrayItem } from "@ryuzaki13/react-foundation-lib/array";
40
36
 
41
- import type { ReorderAction } from "@ryuzaki13/react-foundation-lib/array";
37
+ import { type ReorderAction } from "@ryuzaki13/react-foundation-lib/array";
42
38
  `})}),`
43
39
  `,(0,c.jsx)(t.p,{children:`Корневой импорт пакета не поддерживается:`}),`
44
40
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`// Неправильно: у пакета нет корневого export.
@@ -1,10 +1,10 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.js";function o(e){let t={a:`a`,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/Data/XML`}),`
2
- `,(0,c.jsxs)(t.h1,{id:`простые-xml-helpers-через-ryuzaki13react-foundation-libxml`,children:[`Простые XML helpers через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/xml`})]}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.js";function o(e){let t={a:`a`,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/Data/XML`}),`
2
+ `,(0,c.jsx)(t.h1,{id:`простые-xml-helpers`,children:`Простые XML helpers`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль экранирует XML-текст, строит последовательность простых полей и читает текст первого тега через `,(0,c.jsx)(t.code,{children:`DOMParser`}),`.`]}),`
4
4
  `,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
5
5
  `,(0,c.jsxs)(t.ul,{children:[`
6
6
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B`,children:`Назначение и границы`})}),`
7
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Установка и импорт`})}),`
7
+ `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Импорт`})}),`
8
8
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#escapexmlvalue`,children:(0,c.jsx)(t.code,{children:`escapeXmlValue`})})}),`
9
9
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#buildxmlfields`,children:(0,c.jsx)(t.code,{children:`buildXmlFields`})})}),`
10
10
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#getxmltagtext`,children:(0,c.jsx)(t.code,{children:`getXmlTagText`})})}),`
@@ -24,7 +24,7 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K
24
24
  `,(0,c.jsx)(t.li,{children:`не проверяет parser errors;`}),`
25
25
  `,(0,c.jsx)(t.li,{children:`не выполняет network request.`}),`
26
26
  `]}),`
27
- `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
27
+ `,(0,c.jsx)(t.h2,{id:`импорт`,children:`Импорт`}),`
28
28
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { buildXmlFields, escapeXmlValue, getXmlTagText } from "@ryuzaki13/react-foundation-lib/xml";
29
29
 
30
30
  import type { XmlPrimitive } from "@ryuzaki13/react-foundation-lib/xml";
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.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/Formatters/Number`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.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/Formatters/Number`}),`
2
2
  `,(0,c.jsx)(t.h1,{id:`числовые-форматтеры`,children:`Числовые форматтеры`}),`
3
3
  `,(0,c.jsx)(t.p,{children:`Модуль форматирует числа для интерфейса, читает распространённые SAP-подобные числовые строки и управляет реестром именованных presets.`}),`
4
4
  `,(0,c.jsx)(t.p,{children:`Все API доступны через один публичный entrypoint:`}),`
@@ -1,7 +1,7 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.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/Session Storage ID`}),`
2
- `,(0,c.jsxs)(t.h1,{id:`идентификатор-вкладочной-сессии-через-ryuzaki13react-foundation-libsession-storage`,children:[`Идентификатор вкладочной сессии через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/session-storage`})]}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.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/Session Storage ID`}),`
2
+ `,(0,c.jsx)(t.h1,{id:`идентификатор-вкладочной-сессии`,children:`Идентификатор вкладочной сессии`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`getSessionStorageId`}),` возвращает стабильный id в пределах одной browser-вкладки. При первом вызове id создаётся и сохраняется в `,(0,c.jsx)(t.code,{children:`sessionStorage`}),`, при следующих — читается по тому же ключу.`]}),`
4
- `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
4
+ `,(0,c.jsx)(t.h2,{id:`импорт`,children:`Импорт`}),`
5
5
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { getSessionStorageId } from "@ryuzaki13/react-foundation-lib/session-storage";
6
6
  `})}),`
7
7
  `,(0,c.jsxs)(t.p,{children:[`Default generator — `,(0,c.jsx)(t.code,{children:`uuidv4`}),` из `,(0,c.jsx)(t.code,{children:`/crypto`}),`.`]}),`
@@ -1,12 +1,12 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.js";function o(e){let t={a:`a`,blockquote:`blockquote`,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/Validation/Runtime Guards`}),`
2
- `,(0,c.jsxs)(t.h1,{id:`runtime-guards-и-validators-через-ryuzaki13react-foundation-libvalidators`,children:[`Runtime guards и validators через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/validators`})]}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.js";function o(e){let t={a:`a`,blockquote:`blockquote`,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/Validation/Runtime Guards`}),`
2
+ `,(0,c.jsx)(t.h1,{id:`runtime-guards-и-validators`,children:`Runtime guards и validators`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль содержит небольшие проверки для `,(0,c.jsx)(t.code,{children:`unknown`}),`, object-like значений, image extensions, positive integer, URL и Floating UI DOM reference.`]}),`
4
4
  `,(0,c.jsxs)(t.blockquote,{children:[`
5
5
  `,(0,c.jsxs)(t.p,{children:[`Название функции не расширяет её контракт. Например, `,(0,c.jsx)(t.code,{children:`isSafe`}),` проверяет только отсутствие `,(0,c.jsx)(t.code,{children:`null`}),`/`,(0,c.jsx)(t.code,{children:`undefined`}),`, а `,(0,c.jsx)(t.code,{children:`isRecord`}),` допускает `,(0,c.jsx)(t.code,{children:`Date`}),` и `,(0,c.jsx)(t.code,{children:`Map`}),`. Ниже указано точное поведение каждой проверки.`]}),`
6
6
  `]}),`
7
7
  `,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
8
8
  `,(0,c.jsxs)(t.ul,{children:[`
9
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Установка и импорт`})}),`
9
+ `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Импорт`})}),`
10
10
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BA%D0%B0%D0%BA-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%8E%D1%82-type-guards`,children:`Как работают type guards`})}),`
11
11
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#issafe`,children:(0,c.jsx)(t.code,{children:`isSafe`})})}),`
12
12
  `,(0,c.jsx)(t.li,{children:(0,c.jsxs)(t.a,{href:`#isobject-isrecord-asrecord`,children:[(0,c.jsx)(t.code,{children:`isObject`}),`, `,(0,c.jsx)(t.code,{children:`isRecord`}),`, `,(0,c.jsx)(t.code,{children:`asRecord`})]})}),`
@@ -18,7 +18,7 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K
18
18
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#security-boundary`,children:`Security boundary`})}),`
19
19
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%B9-api`,children:`Полный API`})}),`
20
20
  `]}),`
21
- `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
21
+ `,(0,c.jsx)(t.h2,{id:`импорт`,children:`Импорт`}),`
22
22
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
23
23
  asRecord,
24
24
  IMAGE_EXTENSIONS,
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.js";function o(e){let t={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 API/Orchestration/Async Tasks`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.js";function o(e){let t={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 API/Orchestration/Async Tasks`}),`
2
2
  `,(0,c.jsxs)(t.h1,{id:`асинхронные-задачи-через-ryuzaki13react-foundation-apiasync`,children:[`Асинхронные задачи через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-api/async`})]}),`
3
3
  `,(0,c.jsx)(t.p,{children:`Модуль запускает независимые Promise-задачи, сохраняет связь результата с исходным элементом и формирует удобную сводку для UI/логов.`}),`
4
4
  `,(0,c.jsx)(t.h2,{id:`какой-runner-выбрать`,children:`Какой runner выбрать`}),`
@@ -1,8 +1,8 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.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
- `,(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`})]}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.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
+ `,(0,c.jsx)(t.h1,{id:`client-fingerprint`,children:`Client 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
- `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
5
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-bash`,children:`npm install @ryuzaki13/react-foundation-lib @fingerprintjs/fingerprintjs
4
+ `,(0,c.jsx)(t.h2,{id:`импорт`,children:`Импорт`}),`
5
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-bash`,children:`npm install @fingerprintjs/fingerprintjs
6
6
  `})}),`
7
7
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { getClientFingerprint } from "@ryuzaki13/react-foundation-lib/fingerprint";
8
8
  `})}),`
@@ -1,5 +1,5 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.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
- `,(0,c.jsxs)(t.h1,{id:`работа-с-пользовательскими-файлами-через-ryuzaki13react-foundation-libfile`,children:[`Работа с пользовательскими файлами через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/file`})]}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.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
+ `,(0,c.jsx)(t.h1,{id:`работа-с-пользовательскими-файлами`,children:`Работа с пользовательскими файлами`}),`
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:[`
5
5
  `,(0,c.jsxs)(t.li,{children:[`прочитать выбранный пользователем `,(0,c.jsx)(t.code,{children:`File`}),` как data URL или `,(0,c.jsx)(t.code,{children:`ArrayBuffer`}),`;`]}),`
@@ -8,11 +8,10 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K
8
8
  `,(0,c.jsxs)(t.li,{children:[`определить MIME по расширению и безопаснее сформировать HTTP-заголовок `,(0,c.jsx)(t.code,{children:`Content-Disposition`}),` с Unicode-именем файла.`]}),`
9
9
  `]}),`
10
10
  `,(0,c.jsxs)(t.p,{children:[`Модуль является низкоуровневым foundation-слоем. Он не рисует `,(0,c.jsx)(t.code,{children:`<input type="file">`}),`, не отправляет файл на backend, не показывает preview или progress, не проверяет реальное содержимое файла и не заменяет серверную валидацию.`]}),`
11
- `,(0,c.jsx)(t.p,{children:`README рассчитан на разработчика, который использует опубликованный пакет без доступа к исходному коду. Поэтому ниже отдельно объясняются базовые понятия JavaScript/TypeScript, точный порядок проверок, структура результатов, все публичные функции и типы, фактические классы ошибок, ограничения безопасности и известные особенности текущей реализации.`}),`
12
11
  `,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
13
12
  `,(0,c.jsxs)(t.ul,{children:[`
14
13
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F`,children:`Назначение и границы модуля`})}),`
15
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Установка и импорт`})}),`
14
+ `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Импорт`})}),`
16
15
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#runtime-%D0%B8-browser-boundary`,children:`Runtime и browser boundary`})}),`
17
16
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D1%8F`,children:`Минимальные понятия`})}),`
18
17
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BA%D0%B0%D0%BA-%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C-api`,children:`Как выбрать API`})}),`
@@ -71,10 +70,7 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K
71
70
  `,(0,c.jsx)(t.h3,{id:`соседние-модули`,children:`Соседние модули`}),`
72
71
  `,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Задача`}),(0,c.jsx)(t.th,{children:`Предпочтительный владелец`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsxs)(t.td,{children:[`Прочитать выбранный пользователем `,(0,c.jsx)(t.code,{children:`File`})]}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/file`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsxs)(t.td,{children:[`Base64/data URL → `,(0,c.jsx)(t.code,{children:`Blob`})]}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/binary`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsxs)(t.td,{children:[`Скачать готовый `,(0,c.jsx)(t.code,{children:`Blob`}),`, JSON или object URL`]}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/dom`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Скопировать обычный текст в clipboard`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/copy`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Прочитать файл через готовый React UI`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-ui/input-file`}),` или `,(0,c.jsx)(t.code,{children:`drop-zone`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Выбрать изображение через готовый React UI`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-ui/input-image`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Проверить формат по реальному содержимому`}),(0,c.jsx)(t.td,{children:`Специализированный parser на доверенной boundary`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Выполнить окончательную проверку перед сохранением`}),(0,c.jsx)(t.td,{children:`Backend`})]})]})]}),`
73
72
  `,(0,c.jsxs)(t.p,{children:[`Если нужен только обычный upload через `,(0,c.jsx)(t.code,{children:`multipart/form-data`}),`, браузерный `,(0,c.jsx)(t.code,{children:`File`}),` можно положить в `,(0,c.jsx)(t.code,{children:`FormData`}),` напрямую. Предварительное чтение всего файла через `,(0,c.jsx)(t.code,{children:`readFile`}),` для этого не обязательно.`]}),`
74
- `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
75
- `,(0,c.jsx)(t.p,{children:`Установите пакет:`}),`
76
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-bash`,children:`npm install @ryuzaki13/react-foundation-lib
77
- `})}),`
73
+ `,(0,c.jsx)(t.h2,{id:`импорт`,children:`Импорт`}),`
78
74
  `,(0,c.jsxs)(t.p,{children:[`Импортируйте API только из опубликованного subpath `,(0,c.jsx)(t.code,{children:`/file`}),`:`]}),`
79
75
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { createContentDispositionHeader, readFile, readImageFile, resolveMimeTypeByExtension } from "@ryuzaki13/react-foundation-lib/file";
80
76
 
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.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 Lib/API/OData Service`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.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 Lib/API/OData Service`}),`
2
2
  `,(0,c.jsx)(t.h1,{id:`odata-service`,children:`OData Service`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/odata-service`}),` — единая библиотечная точка входа для работы с техническими контрактами OData V2:`]}),`
4
4
  `,(0,c.jsxs)(t.ul,{children:[`
@@ -11,14 +11,14 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K
11
11
  `,(0,c.jsx)(t.li,{children:`поиска пар «код + текст» в справочных коллекциях;`}),`
12
12
  `,(0,c.jsx)(t.li,{children:`хранения общих настроек OData-справочников.`}),`
13
13
  `]}),`
14
- `,(0,c.jsx)(t.p,{children:`README рассчитан на разработчика без доступа к исходному коду и с минимальным знанием JavaScript/TypeScript. В примерах объясняется не только вызов функции, но и смысл входных данных, результат, ограничения и типичные ошибки.`}),`
14
+ `,(0,c.jsx)(t.p,{children:`В примерах объясняется не только вызов функции, но и смысл входных данных, результат, ограничения и типичные ошибки.`}),`
15
15
  `,(0,c.jsxs)(t.blockquote,{children:[`
16
16
  `,(0,c.jsxs)(t.p,{children:[`Ранее helpers справочных коллекций публиковались через отдельный subpath `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/odata`}),`. Теперь этот код входит в `,(0,c.jsx)(t.code,{children:`odata-service`}),`. Старый subpath удалён без compatibility alias.`]}),`
17
17
  `]}),`
18
18
  `,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
19
19
  `,(0,c.jsxs)(t.ul,{children:[`
20
20
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%87%D1%82%D0%BE-%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82-%D0%B8-%D1%87%D0%B5%D0%B3%D0%BE-%D0%BD%D0%B5-%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C`,children:`Что делает и чего не делает модуль`})}),`
21
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Установка и импорт`})}),`
21
+ `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Импорт`})}),`
22
22
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8-%D0%B8-%D1%81%D1%80%D0%B5%D0%B4%D0%B0-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F`,children:`Зависимости и среда выполнения`})}),`
23
23
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#odata-v2-%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%8B%D0%BC%D0%B8-%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D0%BC%D0%B8`,children:`OData V2 простыми словами`})}),`
24
24
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9-%D1%81%D1%82%D0%B0%D1%80%D1%82`,children:`Быстрый старт`})}),`
@@ -82,10 +82,7 @@ react-foundation-api/odata
82
82
  host entity / feature / widget
83
83
  бизнес-правила, экран, пользовательский сценарий
84
84
  `})}),`
85
- `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
86
- `,(0,c.jsx)(t.p,{children:`Установите пакет:`}),`
87
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-bash`,children:`npm install @ryuzaki13/react-foundation-lib
88
- `})}),`
85
+ `,(0,c.jsx)(t.h2,{id:`импорт`,children:`Импорт`}),`
89
86
  `,(0,c.jsx)(t.p,{children:`Для полного entrypoint также разрешите совместимые peer dependencies, если package manager не сделал этого автоматически:`}),`
90
87
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-bash`,children:`npm install zod zustand immer @tanstack/react-query
91
88
  `})}),`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.js";function o(e){let t={a:`a`,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 API/Query/Persisted Records`}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.js";function o(e){let t={a:`a`,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 API/Query/Persisted Records`}),`
2
2
  `,(0,c.jsxs)(t.h1,{id:`сохранённые-записи-через-ryuzaki13react-foundation-apipersisted`,children:[`Сохранённые записи через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-api/persisted`})]}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`persisted`}),` — специализированный слой поверх TanStack Query для данных, которые пользователь сохраняет и позднее восстанавливает: presets, variants, view configs и другие versioned records.`]}),`
4
4
  `,(0,c.jsxs)(t.p,{children:[`Слово `,(0,c.jsx)(t.code,{children:`persisted`}),` здесь означает backend-сущности «сохранённая запись». Это не то же самое, что persistence TanStack Query cache в IndexedDB.`]}),`
@@ -1,11 +1,11 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BohMQTSj.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/Date/Segments`}),`
2
- `,(0,c.jsxs)(t.h1,{id:`сегменты-даты-и-времени-через-ryuzaki13react-foundation-libdate-segments`,children:[`Сегменты даты и времени через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/date-segments`})]}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-DNj8uFSt.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/Date/Segments`}),`
2
+ `,(0,c.jsx)(t.h1,{id:`сегменты-даты-и-времени`,children:`Сегменты даты и времени`}),`
3
3
  `,(0,c.jsxs)(t.p,{children:[`Модуль разбирает строковую маску на редактируемые сегменты и литералы, преобразует `,(0,c.jsx)(t.code,{children:`Date`}),` в значения полей и строго собирает `,(0,c.jsx)(t.code,{children:`Date`}),` обратно. Он предназначен для segment-based date/time inputs.`]}),`
4
4
  `,(0,c.jsx)(t.p,{children:`Документ объясняет маски, индексы, local time, двухзначный год, неполный ввод и все публичные типы.`}),`
5
5
  `,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
6
6
  `,(0,c.jsxs)(t.ul,{children:[`
7
7
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B`,children:`Назначение и границы`})}),`
8
- `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Установка и импорт`})}),`
8
+ `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Импорт`})}),`
9
9
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D1%8F`,children:`Базовые понятия`})}),`
10
10
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5-tokens`,children:`Поддерживаемые tokens`})}),`
11
11
  `,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#parsedatesegmentmask`,children:(0,c.jsx)(t.code,{children:`parseDateSegmentMask`})})}),`
@@ -30,7 +30,7 @@ Map { 0:"03", 2:"03", 4:"2026", 6:"18", 8:"03" }
30
30
  new Date(2026, 2, 3, 18, 3)
31
31
  `})}),`
32
32
  `,(0,c.jsxs)(t.p,{children:[`Модуль не рендерит input, не управляет focus/caret, не форматирует итоговую дату для UI/backend и не парсит ISO/OData строку. Для общего парсинга/форматирования используйте `,(0,c.jsx)(t.code,{children:`/formatters`}),`.`]}),`
33
- `,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
33
+ `,(0,c.jsx)(t.h2,{id:`импорт`,children:`Импорт`}),`
34
34
  `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
35
35
  areAllDateSegmentsEmpty,
36
36
  dateToIndexedSegmentValues,