@ryuzaki13/react-foundation-ui 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/COLOR_TOKENS_MIGRATION.md +224 -0
  2. package/README.md +14 -18
  3. package/dist/advanced-search/index.js +8 -8
  4. package/dist/badge/index.js +1 -1
  5. package/dist/barcode-scanner/index.js +2 -2
  6. package/dist/base-table/index.js +1 -1
  7. package/dist/button/index.js +1 -1
  8. package/dist/check-box/index.js +1 -1
  9. package/dist/chunks/{CalendarView-Bhaov_XE.js → CalendarView-Dm55k0bN.js} +2 -2
  10. package/dist/chunks/CalendarView-Dm55k0bN.js.map +1 -0
  11. package/dist/chunks/ImageViewerRuntime-HGBWp9NM.js.map +1 -1
  12. package/dist/chunks/{TextEditorLexicalClient-CSXZQOYo.js → TextEditorLexicalClient-D46Zed55.js} +6 -6
  13. package/dist/chunks/TextEditorLexicalClient-D46Zed55.js.map +1 -0
  14. package/dist/chunks/{badge-DUI2ET6q.js → badge-6mXO9BWP.js} +2 -2
  15. package/dist/chunks/badge-6mXO9BWP.js.map +1 -0
  16. package/dist/chunks/{base-table-BqW1n7tv.js → base-table-BWvKfI2W.js} +2 -2
  17. package/dist/chunks/{base-table-BqW1n7tv.js.map → base-table-BWvKfI2W.js.map} +1 -1
  18. package/dist/chunks/{button-BaUlN-nt.js → button-DF21yxVp.js} +3 -3
  19. package/dist/chunks/{button-BaUlN-nt.js.map → button-DF21yxVp.js.map} +1 -1
  20. package/dist/chunks/{check-box-CC8CDnSR.js → check-box-CZyhzmR0.js} +3 -3
  21. package/dist/chunks/{check-box-CC8CDnSR.js.map → check-box-CZyhzmR0.js.map} +1 -1
  22. package/dist/chunks/{context-menu-Dj6MXgv6.js → context-menu-DgvXGCuI.js} +3 -3
  23. package/dist/chunks/context-menu-DgvXGCuI.js.map +1 -0
  24. package/dist/chunks/{date-input-DkLfO3Ng.js → date-input-BwLOiGXp.js} +5 -5
  25. package/dist/chunks/{date-input-DkLfO3Ng.js.map → date-input-BwLOiGXp.js.map} +1 -1
  26. package/dist/chunks/{input-D1jOxm0t.js → input-DSPKgiCK.js} +2 -2
  27. package/dist/chunks/input-DSPKgiCK.js.map +1 -0
  28. package/dist/chunks/{input-files-CDGpJaUm.js → input-files-tIS17-zX.js} +3 -3
  29. package/dist/chunks/input-files-tIS17-zX.js.map +1 -0
  30. package/dist/chunks/{input-search-Ci1ubGox.js → input-search-Cat4c7SM.js} +2 -2
  31. package/dist/chunks/{input-search-Ci1ubGox.js.map → input-search-Cat4c7SM.js.map} +1 -1
  32. package/dist/chunks/misc-DeGboAt-.js.map +1 -1
  33. package/dist/chunks/{modal-CbAwLHlM.js → modal-dplfAaER.js} +2 -2
  34. package/dist/chunks/{modal-CbAwLHlM.js.map → modal-dplfAaER.js.map} +1 -1
  35. package/dist/chunks/{multi-select-V7SLAduU.js → multi-select-BZ9N6Dal.js} +4 -4
  36. package/dist/chunks/{multi-select-V7SLAduU.js.map → multi-select-BZ9N6Dal.js.map} +1 -1
  37. package/dist/chunks/{picker-DZ4-1BvK.js → picker-lvm82d0A.js} +3 -3
  38. package/dist/chunks/picker-lvm82d0A.js.map +1 -0
  39. package/dist/chunks/popover-Bne-Ljbs.js.map +1 -1
  40. package/dist/chunks/{radio-group-DhpP7JSJ.js → radio-group-CRk_1ODZ.js} +2 -2
  41. package/dist/chunks/radio-group-CRk_1ODZ.js.map +1 -0
  42. package/dist/chunks/{select-B7cWlJxL.js → select-aTGupQan.js} +4 -4
  43. package/dist/chunks/{select-B7cWlJxL.js.map → select-aTGupQan.js.map} +1 -1
  44. package/dist/chunks/{table-DMLFUBlb.js → table-DxoSOvQK.js} +2 -2
  45. package/dist/chunks/table-DxoSOvQK.js.map +1 -0
  46. package/dist/chunks/{ui.module-BsDio9A3.js → ui.module-oRwY3Zli.js} +2 -1
  47. package/dist/chunks/ui.module-oRwY3Zli.js.map +1 -0
  48. package/dist/chunks/{uiClasses-BVwFzzsr.js → uiClasses-CQj47jkF.js} +11 -2
  49. package/dist/chunks/uiClasses-CQj47jkF.js.map +1 -0
  50. package/dist/chunks/wheel-picker-FS58cRsQ.js.map +1 -1
  51. package/dist/context-menu/index.js +1 -1
  52. package/dist/date-input/index.js +2 -2
  53. package/dist/date-time-input/index.js +3 -3
  54. package/dist/disclosure/index.js +2 -2
  55. package/dist/disclosure/index.js.map +1 -1
  56. package/dist/drop-zone/index.js +1 -1
  57. package/dist/drop-zone/index.js.map +1 -1
  58. package/dist/errors/index.js +4 -4
  59. package/dist/errors/index.js.map +1 -1
  60. package/dist/expandable-action-panel/index.js +1 -1
  61. package/dist/image/index.js +5 -5
  62. package/dist/image/index.js.map +1 -1
  63. package/dist/input/index.js +1 -1
  64. package/dist/input-date-time/index.js +2 -2
  65. package/dist/input-file/index.js +2 -2
  66. package/dist/input-files/index.js +1 -1
  67. package/dist/input-image/index.js +2 -2
  68. package/dist/input-search/index.js +1 -1
  69. package/dist/layout-picker/index.js +1 -1
  70. package/dist/layout-picker/index.js.map +1 -1
  71. package/dist/listbox/index.js +1 -1
  72. package/dist/modal/index.js +1 -1
  73. package/dist/multi-select/index.js +1 -1
  74. package/dist/notifications/index.js +1 -1
  75. package/dist/notifications/index.js.map +1 -1
  76. package/dist/option/index.js +1 -1
  77. package/dist/picker/index.js +1 -1
  78. package/dist/preset-range-date-input/index.js +1 -1
  79. package/dist/preset-select/index.js +1 -1
  80. package/dist/radio-button/index.js +2 -2
  81. package/dist/radio-group/index.js +1 -1
  82. package/dist/select/index.js +1 -1
  83. package/dist/simple-table/index.js +1 -1
  84. package/dist/slider/index.js +3 -3
  85. package/dist/slider/index.js.map +1 -1
  86. package/dist/state-select/index.js +1 -1
  87. package/dist/status-indicator/StatusIndicator.d.ts.map +1 -1
  88. package/dist/status-indicator/index.js +2 -0
  89. package/dist/status-indicator/index.js.map +1 -1
  90. package/dist/styles.css +1 -1
  91. package/dist/switch/index.js +1 -1
  92. package/dist/table/index.js +1 -1
  93. package/dist/table-sorting/index.js +1 -1
  94. package/dist/tabs/index.js +2 -2
  95. package/dist/tabs/index.js.map +1 -1
  96. package/dist/tag-input/index.js +2 -2
  97. package/dist/tag-input/index.js.map +1 -1
  98. package/dist/text-editor/index.js +1 -1
  99. package/dist/textarea/index.js +2 -2
  100. package/dist/toggle/index.js +1 -1
  101. package/dist/toggle/index.js.map +1 -1
  102. package/dist/tree-select/index.js +3 -3
  103. package/dist/tree-select/index.js.map +1 -1
  104. package/dist/tree-table/index.js +1 -1
  105. package/dist/tree-table/index.js.map +1 -1
  106. package/dist/types.d.ts +3 -3
  107. package/dist/types.d.ts.map +1 -1
  108. package/dist/uiClasses.d.ts.map +1 -1
  109. package/package.json +2 -1
  110. package/src/styles/_border.scss +2 -2
  111. package/src/styles/_color.scss +8 -8
  112. package/src/styles/_components.scss +2 -2
  113. package/src/styles/_normalize.scss +4 -4
  114. package/src/styles/config/_index.scss +95 -182
  115. package/src/styles/mixins/_controls.scss +43 -26
  116. package/src/styles/mixins/_mixin.scss +0 -187
  117. package/src/styles/mixins/controls.test.ts +28 -6
  118. package/src/styles/themes/_interactive-surface.scss +12 -12
  119. package/src/styles/themes/_theme.scss +21 -157
  120. package/src/styles/themes/theme.test.ts +66 -48
  121. package/storybook-static/assets/{Badge-BXbiidny.js → Badge-S6BbyfeX.js} +8 -2
  122. package/storybook-static/assets/{Badge.stories-DCOkVsyk.js → Badge.stories-mio0RhpX.js} +7 -1
  123. package/storybook-static/assets/{BadgeList-CD5894x5.css → BadgeList-DbjeNuw0.css} +1 -1
  124. package/storybook-static/assets/{BadgeList-DgUScGRc.js → BadgeList-rtyargPY.js} +2 -2
  125. package/storybook-static/assets/{BarcodeScannerDialog.stories-7Bv_TejN.js → BarcodeScannerDialog.stories-DRdXaVuW.js} +1 -1
  126. package/storybook-static/assets/{Button-0UDcBhBt.js → Button-CNH5M6QU.js} +12 -2
  127. package/storybook-static/assets/{Button-BpQRrzrS.js → Button-EVzvXVPh.js} +4 -2
  128. package/storybook-static/assets/Button.stories-VUvnWRnm.js +106 -0
  129. package/storybook-static/assets/{CalendarView-B93LI4f_.js → CalendarView-CfSvCqCr.js} +1 -1
  130. package/storybook-static/assets/CalendarView-dgpVDRJR.css +1 -0
  131. package/storybook-static/assets/{CheckBox-CFusvDS8.js → CheckBox-Bynxp5UW.js} +1 -1
  132. package/storybook-static/assets/{CheckBox-BaAouU5d.js → CheckBox-C3n5T66c.js} +2 -2
  133. package/storybook-static/assets/{CheckBox.stories-Bdr_GC0M.js → CheckBox.stories-BoF97wxK.js} +1 -1
  134. package/storybook-static/assets/{Color-6AOWCN3U-B8A6Hc7V.js → Color-6AOWCN3U-D-Jlgqzt.js} +1 -1
  135. package/storybook-static/assets/{ContextMenu-BcNU89-b.js → ContextMenu-Dg65Ha7g.js} +1 -1
  136. package/storybook-static/assets/{ContextMenu-CvHpWBGV.js → ContextMenu-DwwW3EyB.js} +1 -1
  137. package/storybook-static/assets/ContextMenu-yhWq2uJ3.css +1 -0
  138. package/storybook-static/assets/{ContextMenu.stories-DQDlVNxB.js → ContextMenu.stories-D-jRdIZD.js} +1 -1
  139. package/storybook-static/assets/{CustomOptionButton-DkGlBvWP.js → CustomOptionButton-vfj1vLJM.js} +1 -1
  140. package/storybook-static/assets/{DateInput-CWsb-NhT.js → DateInput-BpuC_NWD.js} +1 -1
  141. package/storybook-static/assets/{DateInput-NkrPSWMl.js → DateInput-DJdh5B2X.js} +1 -1
  142. package/storybook-static/assets/{DateInput.stories-Bvz465d-.js → DateInput.stories-C9hB_vFy.js} +1 -1
  143. package/storybook-static/assets/{DateRangePresetSelect-DC6_r8SQ.js → DateRangePresetSelect-CDgQfOdZ.js} +1 -1
  144. package/storybook-static/assets/{DateRangePresetSelect-DQlphKzc.js → DateRangePresetSelect-DYPoeqC2.js} +1 -1
  145. package/storybook-static/assets/{DateRangePresetSelect.stories-DVfqPYN5.js → DateRangePresetSelect.stories-Bx40H_O0.js} +1 -1
  146. package/storybook-static/assets/{Detail-CXQYyd94.js → Detail-DWFfdNJH.js} +1 -1
  147. package/storybook-static/assets/{Detail.stories-BEXByYXt.js → Detail.stories-C9y_rsbc.js} +1 -1
  148. package/storybook-static/assets/{Dialog-CyYTYgbp.js → Dialog-D8GPZi6H.js} +1 -1
  149. package/storybook-static/assets/{Dialog-B2UTbDCv.js → Dialog-XbR8HVsJ.js} +1 -1
  150. package/storybook-static/assets/{Dialog.stories-BWluB4Ya.js → Dialog.stories-CoU_PusF.js} +1 -1
  151. package/storybook-static/assets/{Disclosure-Dv5XOsna.js → Disclosure-DrGfFwQt.js} +1 -1
  152. package/storybook-static/assets/{Disclosure.stories-BxK_fmJE.js → Disclosure.stories-CsR1_XK7.js} +1 -1
  153. package/storybook-static/assets/DisclosureGroup-D_ldcGgp.css +1 -0
  154. package/storybook-static/assets/{DisclosureGroup-B2O8D8CG.js → DisclosureGroup-DvB5K7gZ.js} +1 -1
  155. package/storybook-static/assets/{DocsRenderer-JROSPFPF-7N0jH0Oi.js → DocsRenderer-JROSPFPF-B7AkTp2I.js} +1 -1
  156. package/storybook-static/assets/{DropZone-C7HIN5ml.css → DropZone-C4gPTIz0.css} +1 -1
  157. package/storybook-static/assets/{DropZone-ZlPjdEuO.js → DropZone-DZi2WVu9.js} +1 -1
  158. package/storybook-static/assets/{DropZone-DL34ooyF.js → DropZone-DesGY4BW.js} +1 -1
  159. package/storybook-static/assets/{DropZone.stories-BT9JvF9d.js → DropZone.stories-KVDb6pHQ.js} +1 -1
  160. package/storybook-static/assets/{DropdownMenu-BhC5f2Qc.js → DropdownMenu-CRoQARS5.js} +1 -1
  161. package/storybook-static/assets/{ExpandableActionPanel-C77qVHBP.js → ExpandableActionPanel-CWKJIcbQ.js} +1 -1
  162. package/storybook-static/assets/{ExpandableActionPanel.stories-D1MJEw6F.js → ExpandableActionPanel.stories-D-MYdCJ4.js} +1 -1
  163. package/storybook-static/assets/{Flex-BHt3-yoh.js → Flex-CMPSlVVy.js} +1 -1
  164. package/storybook-static/assets/{Flex.stories-M8QVGuVA.js → Flex.stories-DQH0Q5EF.js} +1 -1
  165. package/storybook-static/assets/{FloatingPopover-Dch6_6e0.js → FloatingPopover-CBWu6Gxj.js} +1 -1
  166. package/storybook-static/assets/FloatingPopover-Di16BZj-.css +1 -0
  167. package/storybook-static/assets/{FormattedTableCell-CXyG4Yj2.js → FormattedTableCell-CIp2ULPe.js} +1 -1
  168. package/storybook-static/assets/FormattedTableCell-CTIL_ueu.css +1 -0
  169. package/storybook-static/assets/{Grid-CcyaioK_.js → Grid-BlQE5E_9.js} +1 -1
  170. package/storybook-static/assets/{Grid.stories-CTHcYkKa.js → Grid.stories-CwUCPClP.js} +1 -1
  171. package/storybook-static/assets/{ImageCropper.stories-B84lQIPy.js → ImageCropper.stories-DjaRavSL.js} +1 -1
  172. package/storybook-static/assets/{ImageRenderer-kTsPC-b5.js → ImageRenderer-JGxgpvv2.js} +1 -1
  173. package/storybook-static/assets/{ImageRenderer.stories-pozsCEPL.js → ImageRenderer.stories-DwH6FgEc.js} +1 -1
  174. package/storybook-static/assets/{ImageView.stories-CNttofCE.js → ImageView.stories-DgYPiNil.js} +1 -1
  175. package/storybook-static/assets/{ImageViewer.stories-D_7oQpyX.js → ImageViewer.stories-_y7d3coa.js} +2 -2
  176. package/storybook-static/assets/{ImageViewerRuntime-Dnc70fBS.js → ImageViewerRuntime-CA6JhQ31.js} +1 -1
  177. package/storybook-static/assets/ImageViewerRuntime-MxAd4mC-.css +1 -0
  178. package/storybook-static/assets/{Input-BO9q-b1i.js → Input-95LKm7aK.js} +1 -1
  179. package/storybook-static/assets/{Input-DvRmrrtj.js → Input-CET6HfZH.js} +1 -1
  180. package/storybook-static/assets/{Input-CYgnggvb.css → Input-CIA3PkB4.css} +1 -1
  181. package/storybook-static/assets/{Input.stories-DeKdGxIC.js → Input.stories-BDTI2nIV.js} +1 -1
  182. package/storybook-static/assets/{InputDateTime-hqRtizlN.js → InputDateTime-DsRJZVCO.js} +1 -1
  183. package/storybook-static/assets/{InputDateTime.stories-BpGhWbRp.js → InputDateTime.stories-Dah3F9Fq.js} +1 -1
  184. package/storybook-static/assets/{InputFile-CExDbGYJ.js → InputFile-CF3DRyTX.js} +1 -1
  185. package/storybook-static/assets/{InputFile-CTDHdo2g.js → InputFile-_65sKWXa.js} +1 -1
  186. package/storybook-static/assets/{InputFile.stories-BIinoG-U.js → InputFile.stories-B1PFNFPf.js} +1 -1
  187. package/storybook-static/assets/{InputFiles-BWeRuTCh.js → InputFiles-CUYGDig8.js} +1 -1
  188. package/storybook-static/assets/{InputFiles-Cvdn_5IV.js → InputFiles-RV6K6GmT.js} +1 -1
  189. package/storybook-static/assets/{InputFiles.stories-J2bb48sN.js → InputFiles.stories-ZCzYnboY.js} +1 -1
  190. package/storybook-static/assets/{InputFilesList-ByK52qUe.css → InputFilesList-BbwB0oHE.css} +1 -1
  191. package/storybook-static/assets/{InputFilesList-DO6IJW98.js → InputFilesList-Co__UO8B.js} +1 -1
  192. package/storybook-static/assets/{InputImage-BtsIbqEc.js → InputImage-900lIdui.js} +1 -1
  193. package/storybook-static/assets/{InputImage-C7zaIkCa.js → InputImage-De56Jwx9.js} +1 -1
  194. package/storybook-static/assets/{InputImage.stories--ewdBKin.js → InputImage.stories-B_R_kcCD.js} +1 -1
  195. package/storybook-static/assets/{InteractiveComponents-Cy9Y2J_q.js → InteractiveComponents-DGTx8enm.js} +1 -1
  196. package/storybook-static/assets/{InteractiveComponents.stories-CgC4nhd3.js → InteractiveComponents.stories-CDZsFUga.js} +1 -1
  197. package/storybook-static/assets/{LayoutPicker-DhJgMxdf.js → LayoutPicker-BMO8qfbL.js} +1 -1
  198. package/storybook-static/assets/{LayoutPicker-CfgWKTDC.js → LayoutPicker-CllhDO8J.js} +1 -1
  199. package/storybook-static/assets/{LayoutPicker-BY4-fUQa.css → LayoutPicker-DaPDA0_s.css} +1 -1
  200. package/storybook-static/assets/{LayoutPicker.stories-Bli7rQRh.js → LayoutPicker.stories-F7K4tSxT.js} +1 -1
  201. package/storybook-static/assets/{Listbox-_MNXWNW7.js → Listbox-0kjmvCe-.js} +1 -1
  202. package/storybook-static/assets/{Listbox-bq5sSQnZ.js → Listbox-D_2t3NpM.js} +1 -1
  203. package/storybook-static/assets/{Listbox.stories-BP9mqHoo.js → Listbox.stories-Cp1Eq7Bz.js} +1 -1
  204. package/storybook-static/assets/{Modal-CNt7-iWI.js → Modal-vdSwQ6xw.js} +1 -1
  205. package/storybook-static/assets/{Modal-Dwqp7agw.js → Modal-zf0JQ124.js} +1 -1
  206. package/storybook-static/assets/{Modal.stories-D2Hj75pl.js → Modal.stories-Cz47rY2B.js} +1 -1
  207. package/storybook-static/assets/{ModalManagerProvider-BoCpnUex.js → ModalManagerProvider-C_zd0fqC.js} +1 -1
  208. package/storybook-static/assets/{MultiSelect-CTfbXQVD.js → MultiSelect-Bl3q6kCP.js} +1 -1
  209. package/storybook-static/assets/{MultiSelect-B1BckUGX.js → MultiSelect-DE13Ak4N.js} +1 -1
  210. package/storybook-static/assets/{MultiSelect.stories-BdMJk22c.js → MultiSelect.stories-DG6LGTC9.js} +1 -1
  211. package/storybook-static/assets/{NoData-CNK8-UBc.js → NoData-B4AGZs5Q.js} +1 -1
  212. package/storybook-static/assets/NotificationsHost-BIyd1XQ0.css +1 -0
  213. package/storybook-static/assets/{NotificationsHost-Cczj_pFY.js → NotificationsHost-CFD2_BpZ.js} +1 -1
  214. package/storybook-static/assets/{NotificationsHost.stories-BPB6hfSI.js → NotificationsHost.stories-CiSu7Vly.js} +1 -1
  215. package/storybook-static/assets/{ODataMultiSelect-CahWMsCQ.js → ODataMultiSelect-PcZYhXlN.js} +1 -1
  216. package/storybook-static/assets/{ODataMultiSelect.stories-Dnyu2-gz.js → ODataMultiSelect.stories-xodpVftn.js} +1 -1
  217. package/storybook-static/assets/{ODataSelect-DxbjbdNx.js → ODataSelect-BuuZhINP.js} +1 -1
  218. package/storybook-static/assets/{ODataSelect.stories-DfK9yHK7.js → ODataSelect.stories-nr7GqOTz.js} +1 -1
  219. package/storybook-static/assets/{ODataTreeMultiSelect-DOgHyKon.js → ODataTreeMultiSelect-BRNITq-6.js} +1 -1
  220. package/storybook-static/assets/{ODataTreeMultiSelect.stories-Dv0-ackb.js → ODataTreeMultiSelect.stories-Baxtdxte.js} +1 -1
  221. package/storybook-static/assets/{ODataTreeSelect-DIoygv27.js → ODataTreeSelect-BKcyKJr8.js} +1 -1
  222. package/storybook-static/assets/{ODataTreeSelect.stories-D4mZcW9Z.js → ODataTreeSelect.stories-n6LATF6z.js} +1 -1
  223. package/storybook-static/assets/{OneStepScroller-DNTilSDM.js → OneStepScroller-DXykOSPw.js} +1 -1
  224. package/storybook-static/assets/{Option-qcKM13Ly.js → Option-Cr3vYgCL.js} +1 -1
  225. package/storybook-static/assets/Option-DD2t6DLq.css +1 -0
  226. package/storybook-static/assets/{OptionButton-DrNo-DMV.js → OptionButton-v-MO3VgJ.js} +1 -1
  227. package/storybook-static/assets/{PeriodSelect-DjzmUohy.js → PeriodSelect-BQ9_EM63.js} +1 -1
  228. package/storybook-static/assets/{PeriodSelect-Dk-_iKeR.js → PeriodSelect-DQXZWIBX.js} +1 -1
  229. package/storybook-static/assets/{PeriodSelect.stories-d58Lz3DJ.js → PeriodSelect.stories-S2ndHVEQ.js} +1 -1
  230. package/storybook-static/assets/{PickerField-Dv1S8Wit.js → PickerField-BeAXSQmp.js} +1 -1
  231. package/storybook-static/assets/{PickerTriggerActions-dbXPGPRy.js → PickerTriggerActions-D6BjZkrN.js} +1 -1
  232. package/storybook-static/assets/{Popover-DMrefrsO.js → Popover-BAp50b4b.js} +1 -1
  233. package/storybook-static/assets/{Popover-tPH8grZD.js → Popover-CTCfa72M.js} +1 -1
  234. package/storybook-static/assets/{Popover.stories-BGgMddUi.js → Popover.stories-CZIBppwE.js} +1 -1
  235. package/storybook-static/assets/{PresetRangeDateInput-Bi5D7AvA.js → PresetRangeDateInput-BLAAcq8Y.js} +1 -1
  236. package/storybook-static/assets/{PresetRangeDateInput-Bi01AT1-.js → PresetRangeDateInput-EIlQEGr0.js} +1 -1
  237. package/storybook-static/assets/{PresetRangeDateInput.stories-BK9PG5Us.js → PresetRangeDateInput.stories-CShR-Eub.js} +1 -1
  238. package/storybook-static/assets/{PresetSelect-Bo_urWXj.js → PresetSelect-BcD8EsSb.js} +1 -1
  239. package/storybook-static/assets/{README-DRTv3qN5.js → README-5i5ZfRuh.js} +1 -1
  240. package/storybook-static/assets/{README-DNkooR8C.js → README-6iRo8dKK.js} +1 -1
  241. package/storybook-static/assets/{README-G5BEMzLO.js → README-6vpPfmdC.js} +1 -1
  242. package/storybook-static/assets/{README-D7IkoGLE.js → README-B2J2ATaW.js} +1 -1
  243. package/storybook-static/assets/{README-Bccm-jZn.js → README-B8qFKwiq.js} +1 -1
  244. package/storybook-static/assets/{README-CHOXjCGT.js → README-BBS739kV.js} +1 -1
  245. package/storybook-static/assets/{README-Bsm0nJfv.js → README-BDMWo0qS.js} +1 -1
  246. package/storybook-static/assets/{README-DqTSHU_3.js → README-BIpHKVKI.js} +1 -1
  247. package/storybook-static/assets/{README-DnE0W6xN.js → README-BQHgBs-J.js} +1 -1
  248. package/storybook-static/assets/{README-iy7SbqPS.js → README-BUlc8wGR.js} +1 -1
  249. package/storybook-static/assets/{README-CSkB_qWo.js → README-BW1oyMu_.js} +1 -1
  250. package/storybook-static/assets/{README-C9LAWG5A.js → README-BdBeQtXQ.js} +1 -1
  251. package/storybook-static/assets/{README-DXV0j4Y9.js → README-BkX7iDLJ.js} +1 -1
  252. package/storybook-static/assets/{README-CLfxQA5V.js → README-BnTk0DyO.js} +1 -1
  253. package/storybook-static/assets/{README-WDknu02X.js → README-Bwv6SU5o.js} +1 -1
  254. package/storybook-static/assets/{README-CiRdh2G1.js → README-CLiuh-fF.js} +1 -1
  255. package/storybook-static/assets/{README-cmKi-NfO.js → README-CLv4OeWw.js} +1 -1
  256. package/storybook-static/assets/{README-BatM3k6o.js → README-CMBk39py.js} +1 -1
  257. package/storybook-static/assets/{README-CDXBNJlU.js → README-CQUlYRLa.js} +1 -1
  258. package/storybook-static/assets/{README-CIy0Pj6l.js → README-CVX-4uJ_.js} +1 -1
  259. package/storybook-static/assets/{README-BOY9oCZ5.js → README-CWeupyTO.js} +1 -1
  260. package/storybook-static/assets/{README-CgvojwYv.js → README-CZJvbdGv.js} +1 -1
  261. package/storybook-static/assets/{README-DJeVd42x.js → README-CaECsCl2.js} +1 -1
  262. package/storybook-static/assets/{README-Bzz8tDjY.js → README-Cntj7my4.js} +1 -1
  263. package/storybook-static/assets/{README-DQzhOQJs.js → README-CuGPdc3G.js} +1 -1
  264. package/storybook-static/assets/{README-B2NTIwVC.js → README-D7pP2Sxx.js} +1 -1
  265. package/storybook-static/assets/{README-CAYUX5Nb.js → README-D9Og-Y7l.js} +1 -1
  266. package/storybook-static/assets/{README-DI6PuVn_.js → README-DDtdZa9N.js} +1 -1
  267. package/storybook-static/assets/{README-C1EYYUCN.js → README-DLQvRDdd.js} +1 -1
  268. package/storybook-static/assets/{README-DnjCb77l.js → README-DQpji8GH.js} +1 -1
  269. package/storybook-static/assets/{README-CUw7AGFv.js → README-DUfqdm0p.js} +1 -1
  270. package/storybook-static/assets/{README-oTjX8jJr.js → README-Dd3MCsf2.js} +1 -1
  271. package/storybook-static/assets/{README-BRxnSb_H.js → README-DehKWpx2.js} +1 -1
  272. package/storybook-static/assets/{README-CvomZuv4.js → README-DgFtCu8B.js} +1 -1
  273. package/storybook-static/assets/{README-BCXhBI3h.js → README-DhZbllv1.js} +1 -1
  274. package/storybook-static/assets/{README-lyLRoc9A.js → README-Dj9EXnja.js} +1 -1
  275. package/storybook-static/assets/{README-BO0pPMhH.js → README-DkCWpyid.js} +1 -1
  276. package/storybook-static/assets/{README-BPDYLPfh.js → README-Dn2AIjeS.js} +1 -1
  277. package/storybook-static/assets/{README-BTCDTs4l.js → README-DoZCaKAx.js} +1 -1
  278. package/storybook-static/assets/{README-CsYvQc-H.js → README-DsLoV4ax.js} +1 -1
  279. package/storybook-static/assets/{README-DENkRq75.js → README-DwvyizD7.js} +1 -1
  280. package/storybook-static/assets/{README-DSx__uJY.js → README-DwyqrR4I.js} +1 -1
  281. package/storybook-static/assets/{README-BxY8B5jC.js → README-N-Gy0UYM.js} +1 -1
  282. package/storybook-static/assets/{README-XlmyqVIs.js → README-Wd5wEw-J.js} +1 -1
  283. package/storybook-static/assets/{README-DCitesDJ.js → README-Y4OGhQbo.js} +1 -1
  284. package/storybook-static/assets/{README-ChyNimpn.js → README-ZZiicHm9.js} +1 -1
  285. package/storybook-static/assets/{README-5MsrC0tc.js → README-bAu0Uk5O.js} +1 -1
  286. package/storybook-static/assets/{README-BrnWLQ7I.js → README-cuvbXAuG.js} +1 -1
  287. package/storybook-static/assets/{README-BbwNWG_A.js → README-jHuA2mq2.js} +1 -1
  288. package/storybook-static/assets/{README-DLL_V1qq.js → README-pvA4fK1E.js} +1 -1
  289. package/storybook-static/assets/{README-BIYrg5Jw.js → README-sEbspuLw.js} +1 -1
  290. package/storybook-static/assets/{README-qyGL-RQj.js → README-v3TOC_aE.js} +1 -1
  291. package/storybook-static/assets/{README-DOqinQqt.js → README-wizqrRgs.js} +1 -1
  292. package/storybook-static/assets/{RadioButton-_-grgF60.js → RadioButton-BUPEsqwH.js} +1 -1
  293. package/storybook-static/assets/{RadioButton-C5lYvVIl.js → RadioButton-Ca0kZdMV.js} +1 -1
  294. package/storybook-static/assets/{RadioButton.stories-BNifE29D.js → RadioButton.stories-aBnizEak.js} +1 -1
  295. package/storybook-static/assets/{RadioGroup-DWfHyBaQ.js → RadioGroup-34jH28Sk.js} +1 -1
  296. package/storybook-static/assets/{RadioGroup-BU95Hbl0.css → RadioGroup-DHnDIEgi.css} +1 -1
  297. package/storybook-static/assets/{RadioGroup-CmDrRqLi.js → RadioGroup-dq6CbxB6.js} +1 -1
  298. package/storybook-static/assets/{RadioGroup.stories-1PW9Krj9.js → RadioGroup.stories--lDrmS8V.js} +1 -1
  299. package/storybook-static/assets/{Scrollable-CWkMU4wH.js → Scrollable-BJRiyp9q.js} +1 -1
  300. package/storybook-static/assets/{Select-BCGnO525.js → Select-CwNDJSmq.js} +1 -1
  301. package/storybook-static/assets/{Select-DYtEG5uI.js → Select-DmwCwS8a.js} +1 -1
  302. package/storybook-static/assets/{Select.stories-CgldXYRU.js → Select.stories-BXj7A2gM.js} +1 -1
  303. package/storybook-static/assets/{SerializableSelect-MmvKHZiv.js → SerializableSelect-IAtBSK9P.js} +1 -1
  304. package/storybook-static/assets/{SerializableSelect.stories-Di0iM37P.js → SerializableSelect.stories-D8F5WGtk.js} +1 -1
  305. package/storybook-static/assets/{SingleDateTimeInput-Ds5YsLHg.js → SingleDateTimeInput-CbyyGlmi.js} +1 -1
  306. package/storybook-static/assets/{SingleDateTimeInput-Cz2Y7KEq.js → SingleDateTimeInput-oN2P3eYx.js} +1 -1
  307. package/storybook-static/assets/{SingleDateTimeInput.stories-BnuERNSZ.js → SingleDateTimeInput.stories-BU_wyTmo.js} +1 -1
  308. package/storybook-static/assets/{Slider-CiZ7R_NX.js → Slider-CDJhhSWj.js} +1 -1
  309. package/storybook-static/assets/{Slider-Csaz4BeY.js → Slider-ClZTrtRk.js} +1 -1
  310. package/storybook-static/assets/Slider-DxdPx1Pb.css +1 -0
  311. package/storybook-static/assets/{Slider.stories-7Heg0Pgz.js → Slider.stories-PfQf9es7.js} +1 -1
  312. package/storybook-static/assets/{SliderInput-qWpLFzxj.js → SliderInput-BxFUjetO.js} +1 -1
  313. package/storybook-static/assets/{SliderInput-bTh2JTHG.js → SliderInput-C7TRql6-.js} +1 -1
  314. package/storybook-static/assets/{SliderInput.stories-DR_zyE-u.js → SliderInput.stories-yX8DU5pZ.js} +1 -1
  315. package/storybook-static/assets/{Sortable-P86Ancoa.js → Sortable-D8cVwatT.js} +1 -1
  316. package/storybook-static/assets/{Sortable.stories-iiOkIM-G.js → Sortable.stories-BI6_E5k7.js} +1 -1
  317. package/storybook-static/assets/{Splitter-mG3bB-U4.js → Splitter-B958Wj4G.js} +1 -1
  318. package/storybook-static/assets/{Splitter.stories-WhQOQVRq.js → Splitter.stories-Dl2YOk9H.js} +1 -1
  319. package/storybook-static/assets/{StateSelect-u1kaZwdD.js → StateSelect-Cs9-kDRC.js} +1 -1
  320. package/storybook-static/assets/{StateSelect-De2PQDzp.js → StateSelect-DbV1mGhQ.js} +1 -1
  321. package/storybook-static/assets/{StateSelect.stories-BO-C9UTF.js → StateSelect.stories-D6atguQ6.js} +1 -1
  322. package/storybook-static/assets/{StatusIndicator-BiTbPB5o.js → StatusIndicator--Y-QdjQI.js} +1 -1
  323. package/storybook-static/assets/StatusIndicator-CpCGmnO7.css +1 -0
  324. package/storybook-static/assets/StatusIndicator.stories-DxkpP6C1.js +31 -0
  325. package/storybook-static/assets/{StringToggle.stories-CBt8bXzz.js → StringToggle.stories-C3mdK5Wx.js} +1 -1
  326. package/storybook-static/assets/{Switch-BC2KYLX2.js → Switch-BTFpnXV9.js} +1 -1
  327. package/storybook-static/assets/{Switch-BRKFbtp4.js → Switch-OPzpWcJw.js} +1 -1
  328. package/storybook-static/assets/{Switch.stories-BAmX4W8J.js → Switch.stories-C0rVHcRq.js} +1 -1
  329. package/storybook-static/assets/{Table-D1OJnVmO.js → Table-bWKgagHH.js} +1 -1
  330. package/storybook-static/assets/Table-j_3ID7Xq.css +1 -0
  331. package/storybook-static/assets/{Table.stories-C_JSdhJl.js → Table.stories-DOuV4G3p.js} +1 -1
  332. package/storybook-static/assets/{Tabs-DiUKiz-h.js → Tabs-ae4daDEA.js} +1 -1
  333. package/storybook-static/assets/{Tabs.stories-DGys1vSD.js → Tabs.stories-Br4RCZKR.js} +1 -1
  334. package/storybook-static/assets/{TabsBox-D-bkJX9j.css → TabsBox-B3REnb6D.css} +1 -1
  335. package/storybook-static/assets/{TabsBox-D4yfPiDY.js → TabsBox-X_7yoTw3.js} +1 -1
  336. package/storybook-static/assets/{TagInput-ZyC-89b3.js → TagInput-B2w5W05Z.js} +1 -1
  337. package/storybook-static/assets/{TagInput-ChmW4s9O.css → TagInput-RJbbcfoR.css} +1 -1
  338. package/storybook-static/assets/{TagInput.stories-hVoLW5qr.js → TagInput.stories-Db9DaNpW.js} +1 -1
  339. package/storybook-static/assets/{Text-CMJA_7QZ.js → Text-BT0cn3Bk.js} +1 -1
  340. package/storybook-static/assets/{Textarea-DjKw5r4e.js → Textarea-B9MNOgmF.js} +1 -1
  341. package/storybook-static/assets/{Textarea-Du012ObX.js → Textarea-C_6iOQ3k.js} +1 -1
  342. package/storybook-static/assets/{Textarea.stories-ShFda4o7.js → Textarea.stories-Ctjb3d47.js} +1 -1
  343. package/storybook-static/assets/{TimePanel-Bfkpbjrx.js → TimePanel-C5AucKln.js} +1 -1
  344. package/storybook-static/assets/{TimePanel-Bh98qsCo.css → TimePanel-D9_hb7w4.css} +1 -1
  345. package/storybook-static/assets/{TimePanel.stories-4pV3fQVB.js → TimePanel.stories-CiQAJcB_.js} +1 -1
  346. package/storybook-static/assets/Toggle-ClE8Zovo.css +1 -0
  347. package/storybook-static/assets/{Toggle-CPohFihI.js → Toggle-DxA-Q1KZ.js} +1 -1
  348. package/storybook-static/assets/{Toggle-ChC8G1Et.js → Toggle-q8hxq-LP.js} +1 -1
  349. package/storybook-static/assets/{Toggle.stories-B3H1M8Ra.js → Toggle.stories-C6Jf_KTc.js} +1 -1
  350. package/storybook-static/assets/{TreeMultiSelect-BpuHCHgJ.js → TreeMultiSelect-BKF7COzn.js} +1 -1
  351. package/storybook-static/assets/{TreeMultiSelect-CbNz09Jk.js → TreeMultiSelect-BfduPrgB.js} +1 -1
  352. package/storybook-static/assets/{TreeMultiSelect.stories-Cmt05HgT.js → TreeMultiSelect.stories-C-uztFex.js} +1 -1
  353. package/storybook-static/assets/{TreePickerBase-B6DED6Hz.css → TreePickerBase-CmFF9pWE.css} +1 -1
  354. package/storybook-static/assets/{TreePickerBase-DGvBAQiy.js → TreePickerBase-SVDNn9QY.js} +1 -1
  355. package/storybook-static/assets/{TreeSelect-C_GCYsA3.js → TreeSelect-Bu9HRTvX.js} +1 -1
  356. package/storybook-static/assets/{TreeSelect-DvAlRur3.js → TreeSelect-ClJGLBA8.js} +1 -1
  357. package/storybook-static/assets/{TreeSelect.stories-Cch2A2z5.js → TreeSelect.stories-C0TeLbpZ.js} +1 -1
  358. package/storybook-static/assets/{TreeTable-CmVxMvld.js → TreeTable-BXia_Imm.js} +1 -1
  359. package/storybook-static/assets/TreeTable-BvB3kj4h.css +1 -0
  360. package/storybook-static/assets/{TreeTable.stories-B46N8o8E.js → TreeTable.stories-Cwo8yjNI.js} +1 -1
  361. package/storybook-static/assets/{blocks-Bu5I-6jJ.js → blocks-BmNU_R5E.js} +3 -3
  362. package/storybook-static/assets/{check-BdRTIK6S.js → check-HCQdrq3c.js} +1 -1
  363. package/storybook-static/assets/{chevron-down-EtmpBUf8.js → chevron-down-DHrZ_6vS.js} +1 -1
  364. package/storybook-static/assets/{chevron-left-CTLa8HIb.js → chevron-left-CaIBhYcr.js} +1 -1
  365. package/storybook-static/assets/{chevron-right-D_c_Cvi0.js → chevron-right-BpmEWiwv.js} +1 -1
  366. package/storybook-static/assets/{chunk-W22LQPXL-B7ERYz6B.js → chunk-W22LQPXL-DSMfJqhe.js} +1 -1
  367. package/storybook-static/assets/{circle-alert-Dj1kZNNX.js → circle-alert-DuupFIr9.js} +1 -1
  368. package/storybook-static/assets/{circle-check-B1w7Ls8y.js → circle-check-LYBfAR-E.js} +1 -1
  369. package/storybook-static/assets/{components-DqRn1i2k.js → components-CBnjb8pL.js} +3 -3
  370. package/storybook-static/assets/{contextMenu-ylNgC9hS.js → contextMenu-BZ-iSJtD.js} +1 -1
  371. package/storybook-static/assets/{download-dw_WzNlC.js → download-CsLGqkEl.js} +1 -1
  372. package/storybook-static/assets/{floating-ui.react-C9sdi3nv.js → floating-ui.react-VNDOEKPt.js} +1 -1
  373. package/storybook-static/assets/{foundationApi-BJETphYp.js → foundationApi-BMy7_pDS.js} +1 -1
  374. package/storybook-static/assets/{foundationLib-DfRlYoD7.js → foundationLib-o95OqhXl.js} +1 -1
  375. package/storybook-static/assets/{hooks-B-ZW7F36.js → hooks-DMFMD13m.js} +1 -1
  376. package/storybook-static/assets/iframe-BT_jngkf.css +1 -0
  377. package/storybook-static/assets/{iframe-D0R9pFj7.js → iframe-BaXmcmyl.js} +3 -3
  378. package/storybook-static/assets/iframe-D5qmKm51.js +1 -0
  379. package/storybook-static/assets/{info-B0qzF0Mr.js → info-ZuWgcD4m.js} +1 -1
  380. package/storybook-static/assets/{odata-tqjAk19x.js → odata-Brls3R5b.js} +1 -1
  381. package/storybook-static/assets/{odataStoryFixtures-D2yHs_jK.js → odataStoryFixtures-BmQo4rAJ.js} +2 -2
  382. package/storybook-static/assets/{react-ClkCNz5L.js → react-BnjGKE7V.js} +1 -1
  383. package/storybook-static/assets/{refresh-cw-K68D1zRy.js → refresh-cw-vj55o5c3.js} +1 -1
  384. package/storybook-static/assets/{settings-2-D0jFfhpt.js → settings-2-PPom9XND.js} +1 -1
  385. package/storybook-static/assets/{sortable-fWu4d9fl.js → sortable-CztGPJOI.js} +1 -1
  386. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-Cs3Bxe3I.js → syntaxhighlighter-QEQV7K2Y-uXmnHQP7.js} +1 -1
  387. package/storybook-static/assets/{trash-2-Bj60L0sq.js → trash-2-DEnKoJjZ.js} +1 -1
  388. package/storybook-static/assets/{triangle-alert-CmzQ-r9i.js → triangle-alert-D-oyPLJL.js} +1 -1
  389. package/storybook-static/assets/ui-DSS1yTEO.css +1 -0
  390. package/storybook-static/assets/ui.module-SH8ehXul.js +1 -0
  391. package/storybook-static/assets/uiClasses-e9OQfdw2.js +1 -0
  392. package/storybook-static/assets/{useODataSelectBase-CC4MnYeK.js → useODataSelectBase-DxsvigTC.js} +1 -1
  393. package/storybook-static/assets/{useODataTreeData-DsQmGQij.js → useODataTreeData-Dzxb75-h.js} +1 -1
  394. package/storybook-static/assets/{usePickerQuery-Qg7qGfmP.js → usePickerQuery-SCKPS_0f.js} +1 -1
  395. package/storybook-static/assets/{usePickerTriggerController-D-mhhmpS.js → usePickerTriggerController-DMA4hla_.js} +1 -1
  396. package/storybook-static/assets/{x-DU3Tpzms.js → x-C5QCK6Ts.js} +1 -1
  397. package/storybook-static/iframe.html +3 -3
  398. package/storybook-static/project.json +1 -1
  399. package/dist/chunks/CalendarView-Bhaov_XE.js.map +0 -1
  400. package/dist/chunks/TextEditorLexicalClient-CSXZQOYo.js.map +0 -1
  401. package/dist/chunks/badge-DUI2ET6q.js.map +0 -1
  402. package/dist/chunks/context-menu-Dj6MXgv6.js.map +0 -1
  403. package/dist/chunks/input-D1jOxm0t.js.map +0 -1
  404. package/dist/chunks/input-files-CDGpJaUm.js.map +0 -1
  405. package/dist/chunks/picker-DZ4-1BvK.js.map +0 -1
  406. package/dist/chunks/radio-group-DhpP7JSJ.js.map +0 -1
  407. package/dist/chunks/table-DMLFUBlb.js.map +0 -1
  408. package/dist/chunks/ui.module-BsDio9A3.js.map +0 -1
  409. package/dist/chunks/uiClasses-BVwFzzsr.js.map +0 -1
  410. package/storybook-static/assets/Button.stories-CLMnxj3w.js +0 -93
  411. package/storybook-static/assets/CalendarView-DKvrkS40.css +0 -1
  412. package/storybook-static/assets/ContextMenu-CFPrlO2u.css +0 -1
  413. package/storybook-static/assets/DisclosureGroup-CVFMwx22.css +0 -1
  414. package/storybook-static/assets/FloatingPopover-jwILx9b0.css +0 -1
  415. package/storybook-static/assets/FormattedTableCell-AZc2IHfK.css +0 -1
  416. package/storybook-static/assets/ImageViewerRuntime-CRmlrtpL.css +0 -1
  417. package/storybook-static/assets/NotificationsHost-D5Pvn4eu.css +0 -1
  418. package/storybook-static/assets/Option-DXh7BISz.css +0 -1
  419. package/storybook-static/assets/Slider-CK-W2ZTO.css +0 -1
  420. package/storybook-static/assets/StatusIndicator-CU9ICMrC.css +0 -1
  421. package/storybook-static/assets/StatusIndicator.stories-COaZnrFa.js +0 -31
  422. package/storybook-static/assets/Table-BGvRn9y0.css +0 -1
  423. package/storybook-static/assets/Toggle-fKG2dFY0.css +0 -1
  424. package/storybook-static/assets/TreeTable--ZoksUiw.css +0 -1
  425. package/storybook-static/assets/iframe-COgZ5GwG.js +0 -1
  426. package/storybook-static/assets/iframe-IhWQT6NX.css +0 -1
  427. package/storybook-static/assets/ui-C3BskXT9.css +0 -1
  428. package/storybook-static/assets/ui.module-31LPbZGK.js +0 -1
  429. package/storybook-static/assets/uiClasses-Bz6cvlDQ.js +0 -1
@@ -1 +1 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-D0R9pFj7.js";import{o as i,s as a}from"./Modal-CNt7-iWI.js";function o({children:e,compensateScrollbar:t=!1}){let[n,r]=(0,s.useState)([]),a=(0,s.useRef)(0),o=(0,s.useRef)(0),l=(0,s.useRef)(``),u=(0,s.useRef)(!1),d=(0,s.useCallback)(e=>{r(t=>[...t,e])},[]),f=(0,s.useCallback)(e=>{r(t=>t.filter(t=>t!==e))},[]),p=(0,s.useCallback)(e=>n[n.length-1]===e,[n]);return(0,s.useEffect)(()=>{let e=a.current===0;if(e&&n.length>0){let e=window.scrollY,r=document.querySelector(`#app-root`);o.current=Math.max(0,window.innerWidth-document.documentElement.clientWidth),l.current=document.body.style.paddingRight,document.body.style.position=`fixed`,document.body.style.top=`-${e}px`,document.body.style.width=`100%`,t&&(document.body.style.paddingRight=`${o.current}px`,u.current=!0),r?.setAttribute(`inert`,`true`),a.current=n.length;return}if(!e&&n.length>0&&t!==u.current&&(document.body.style.paddingRight=t?`${o.current}px`:l.current,u.current=t),!e&&n.length===0){let e=document.querySelector(`#app-root`),t=parseInt(document.body.style.top||`0`)*-1;document.body.style.position=``,document.body.style.top=``,document.body.style.width=``,u.current&&=(document.body.style.paddingRight=l.current,!1),e?.removeAttribute(`inert`),window.scrollTo({top:t,left:0,behavior:`instant`})}a.current=n.length},[t,n.length]),(0,c.jsx)(i.Provider,{value:{modals:n,openModal:d,closeModal:f,isTopModal:p},children:e})}var s,c;function l(){return(l=t((()=>{s=e(n(),1),a(),c=r(),o.__docgenInfo={description:`Провайдер для централизованного управления стеком модальных окон. Дает вложенным компонентам доступ к открытию и закрытию модалок через контекст.`,methods:[],displayName:`ModalManagerProvider`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},compensateScrollbar:{required:!1,tsType:{name:`boolean`},description:`Компенсирует исчезновение скроллбара правым padding у body.`,defaultValue:{value:`false`,computed:!1}}}}})))()}export{l as n,o as t};
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-BaXmcmyl.js";import{o as i,s as a}from"./Modal-vdSwQ6xw.js";function o({children:e,compensateScrollbar:t=!1}){let[n,r]=(0,s.useState)([]),a=(0,s.useRef)(0),o=(0,s.useRef)(0),l=(0,s.useRef)(``),u=(0,s.useRef)(!1),d=(0,s.useCallback)(e=>{r(t=>[...t,e])},[]),f=(0,s.useCallback)(e=>{r(t=>t.filter(t=>t!==e))},[]),p=(0,s.useCallback)(e=>n[n.length-1]===e,[n]);return(0,s.useEffect)(()=>{let e=a.current===0;if(e&&n.length>0){let e=window.scrollY,r=document.querySelector(`#app-root`);o.current=Math.max(0,window.innerWidth-document.documentElement.clientWidth),l.current=document.body.style.paddingRight,document.body.style.position=`fixed`,document.body.style.top=`-${e}px`,document.body.style.width=`100%`,t&&(document.body.style.paddingRight=`${o.current}px`,u.current=!0),r?.setAttribute(`inert`,`true`),a.current=n.length;return}if(!e&&n.length>0&&t!==u.current&&(document.body.style.paddingRight=t?`${o.current}px`:l.current,u.current=t),!e&&n.length===0){let e=document.querySelector(`#app-root`),t=parseInt(document.body.style.top||`0`)*-1;document.body.style.position=``,document.body.style.top=``,document.body.style.width=``,u.current&&=(document.body.style.paddingRight=l.current,!1),e?.removeAttribute(`inert`),window.scrollTo({top:t,left:0,behavior:`instant`})}a.current=n.length},[t,n.length]),(0,c.jsx)(i.Provider,{value:{modals:n,openModal:d,closeModal:f,isTopModal:p},children:e})}var s,c;function l(){return(l=t((()=>{s=e(n(),1),a(),c=r(),o.__docgenInfo={description:`Провайдер для централизованного управления стеком модальных окон. Дает вложенным компонентам доступ к открытию и закрытию модалок через контекст.`,methods:[],displayName:`ModalManagerProvider`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},compensateScrollbar:{required:!1,tsType:{name:`boolean`},description:`Компенсирует исчезновение скроллбара правым padding у body.`,defaultValue:{value:`false`,computed:!1}}}}})))()}export{l as n,o as t};
@@ -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,t as i}from"./CheckBox-BaAouU5d.js";import{n as a}from"./iframe-D0R9pFj7.js";import{n as o,t as ee}from"./OptionButton-DrNo-DMV.js";import{n as s,t as c}from"./Text-CMJA_7QZ.js";import{n as l,t as u}from"./ui.module-31LPbZGK.js";import{l as te,n as d,t as f,u as p}from"./Option-qcKM13Ly.js";import{n as m,t as h}from"./PickerField-Dv1S8Wit.js";import{c as g,i as _,l as v,n as y,r as b,s as ne,t as x,u as S}from"./usePickerTriggerController-D-mhhmpS.js";import{i as C,n as re,r as w,t as T}from"./usePickerQuery-Qg7qGfmP.js";import{n as ie,t as ae}from"./usePickerDefaultFilter-BMBLqfz8.js";import{a as oe,i as E,n as se,o as D,s as ce,t as le}from"./defaultRenderers-CyUQG_f-.js";var O,k,A;function j(){return(j=t((()=>{O=`_9oSdQi`,k=`d9SDKQ`,A={multiSelect:O,optionCheckBox:k}})))()}function M({text:e,isError:t}){return(0,N.jsxs)(`div`,{className:l.uiPopupOption,children:[(0,N.jsx)(`span`,{className:l.uiPopupOptionIcon}),(0,N.jsx)(c,{color:t?`error`:`primary`,children:e})]})}var N;function P(){return(P=t((()=>{s(),u(),N=a(),M.__docgenInfo={description:"Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.",methods:[],displayName:`MultiSelectOptionSkeleton`,props:{text:{required:!0,tsType:{name:`string`},description:``},isError:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function ue({isNoData:e,error:t,children:n}){return e?(0,L.jsx)(w,{emptyState:(0,L.jsx)(M,{text:`Нет данных`})}):t?(0,L.jsx)(w,{errorState:(0,L.jsx)(M,{isError:!0,text:`Ошибка загрузки`})}):(0,L.jsx)(L.Fragment,{children:n})}function F(e,t){return e[t]}function de(e,t,n){return Array.from(new Set([e[n],e[t],...Object.values(e)]))}function fe(e,t,n){if(e.length!==t.length)return!1;let r=new Set(t.map(e=>F(e,n)));return e.every(e=>r.has(F(e,n)))}function pe({entries:e,listId:t,activeIndex:n,selectedKeys:r,codeKey:a,query:o,highlightQuery:s,getOptionDisabled:c,getOptionId:l,setOptionRef:u,toggleOption:te,selectOnlyOption:d,renderItem:p}){return e.map(({item:e,index:m})=>{let h=m===n,g=F(e,a),_=r.has(g),v=c?.(e)??!1,y=p(e,{selected:_,active:h,disabled:v,query:o,highlightQuery:s});return(0,L.jsxs)(f,{id:l(t,m),ref:e=>u(m,e),role:`option`,"aria-selected":_,"aria-disabled":v||void 0,selected:_,active:h,disabled:v,children:[(0,L.jsx)(`div`,{className:A.optionCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,L.jsx)(i,{value:_,disabled:v,"aria-label":`Выбрать ${s??g}`,onChange:()=>te(e)})}),(0,L.jsx)(ee,{tabIndex:-1,disabled:v,text:y.text,code:y.code,searchText:s,onMouseDown:e=>e.preventDefault(),onClick:()=>d(e)})]},`${g}-${m}`)})}var I,L,R,z;function B(){return(B=t((()=>{I=e(n(),1),r(),d(),o(),m(),S(),C(),g(),ae(),b(),T(),D(),x(),p(),E(),j(),P(),L=a(),R=[],z=(0,I.forwardRef)(({codeKey:e,textKey:t,hideCode:n,items:r,value:i,onChange:a,label:o,description:ee,placeholder:s,size:c,query:l,defaultQuery:u,highlightQuery:d,onQuery:f,defaultFilter:p=!0,onOpen:m,onClose:g,getOptionDisabled:b,disabled:x,error:S,isLoading:C,renderToken:w,renderToolbar:T,renderItem:ae},E)=>{let D=(0,I.useRef)(null),[O,k]=(0,I.useState)(!1),j=`search-multi`,M=i??R,N=(0,I.useMemo)(()=>new Set(M.map(t=>F(t,e))),[e,M]),P=(0,I.useMemo)(()=>r.filter(t=>!N.has(F(t,e))),[e,N,r]),z=(0,I.useMemo)(()=>oe([...M,...r],e,t),[e,M,r,t]),{query:B,setQuery:V,resetQueryOnClose:me}=re({query:l,defaultQuery:u,onQuery:f,triggerMode:j}),he=e=>{O&&!e&&me&&V(``),k(e)},H=ie({options:M,query:B,enabled:p,getSearchText:t=>de(t,e,z)}),U=ie({options:P,query:B,enabled:p,getSearchText:t=>de(t,e,z)}),W=(0,I.useMemo)(()=>[...H,...U],[U,H]),ge=H.length>0?0:-1,{draftValue:G,setDraftValue:K,prepareOpen:_e}=ce({value:M,open:O,onCommit:a,onOpen:m,onClose:g,isEqual:(t,n)=>fe(t,n,e)}),q=(0,I.useMemo)(()=>new Set(G.map(t=>F(t,e))),[e,G]),ve=(0,I.useMemo)(()=>({selectedItems:G,committedSelectedItems:M,selectedKeys:q,open:O}),[M,G,O,q]),J=(0,I.useCallback)(e=>b?.(e,ve)??!1,[b,ve]),{activeIndex:Y,context:ye,floatingStyles:be,getFloatingProps:xe,setReference:Se,setFloating:Ce,setOptionRef:we,close:Te,openList:Ee,toggleOpen:De,selectActiveOption:Oe,handleReferenceKeyDown:ke,handleFloatingKeyDown:Ae,getOptionId:je,getActiveOptionId:Me}=_({options:W,selectedIndex:ge,open:O,onOpenChange:he,onSelect:void 0,disabled:x,getOptionDisabled:J,closeOnSelect:!1,allowOpenWithoutOptions:!0,triggerMode:j}),Ne=d??B,X=t=>{let n=F(t,e);K(r=>r.some(t=>F(t,e)===n)?r.filter(t=>F(t,e)!==n):J(t)?r:[...r,t])},Pe=e=>{if(D.current=e,typeof E==`function`){E(e);return}E&&(E.current=e)},Fe=()=>{K([]),O||a([])},Ie=()=>{K(t=>{let n=[...t],r=new Set(t.map(t=>F(t,e)));for(let t of W){let i=F(t,e);!r.has(i)&&!J(t)&&(r.add(i),n.push(t))}return n})},Le=()=>{K([])},Re=e=>{J(e)||(K([e]),Te())},ze=O?G:M,Z=ze.length>0,Be={selectedItems:ze,committedSelectedItems:M,availableItems:U,query:B,open:O,clearSelection:Fe,selectAll:Ie,deselectAll:Le},Ve=w===void 0?se({codeKey:e,textKey:z}):w,He=ae??le({codeKey:e,textKey:z,hideCode:n}),Ue=typeof Ve==`function`?Ve(Be):null,We=typeof T==`function`?T(Be):T,Q=H.map((e,t)=>({item:e,index:t})),Ge=U.map((e,t)=>({item:e,index:t+Q.length})),Ke=!C&&!S&&W.length===0,$=y({mode:j,open:O,currentQuery:B,hasDisplayValue:!1,inputRef:D,setQuery:V,openList:Ee,close:Te,toggleOpen:De,onBeforeOpen:()=>{O||_e()}});return(0,L.jsx)(h,{label:o,description:ee,disabled:x,size:c,className:A.multiSelect,children:({controlId:t,labelId:n,describedBy:i})=>{let a=`${t}-listbox`;return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(ne,{ref:Pe,rootRef:Se,id:t,type:`text`,role:`combobox`,autoComplete:`off`,isLoading:C,disabled:x,open:O,optionCount:r.length,label:o,placeholder:s,placeholderFallback:`Выберите значения`,value:B,selectedValue:Ue,hasSelection:Z,showSelectedValue:Z&&B.length===0,clearable:!0,onClear:Fe,clearAriaLabel:`Очистить все`,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,"aria-labelledby":n,"aria-describedby":i,"aria-haspopup":`listbox`,"aria-expanded":O,"aria-controls":O?a:void 0,"aria-autocomplete":`list`,"aria-activedescendant":O?Me(a):void 0,rootClassName:`flex alignItemsCenter`,onChange:e=>{$.handleTriggerInputChange(e.target.value)},onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{ke(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{if(Y>=0){let e=W[Y];if(e){X(e);return}}Oe()},enableClosedArrowDownOpen:!0,suppressClosedArrowUp:!0})}}),(0,L.jsx)(v,{open:O,context:ye,floatingStyles:be,listId:a,labelId:n,descriptionId:i,activeOptionId:O?Me(a):void 0,setFloating:Ce,getFloatingProps:xe,onKeyDown:Ae,initialFocus:-1,returnFocus:!1,tabIndex:-1,toolbar:We,selectionActions:T===void 0?{onSelectAll:Ie,onDeselectAll:Le}:void 0,children:(0,L.jsx)(ue,{isNoData:Ke,error:S,children:(0,L.jsxs)(`div`,{className:`scrollable overscroll h100`,children:[(0,L.jsx)(pe,{entries:Q,listId:a,activeIndex:Y,selectedKeys:q,codeKey:e,query:B,highlightQuery:Ne,getOptionDisabled:J,getOptionId:je,setOptionRef:we,toggleOption:X,selectOnlyOption:Re,renderItem:He}),Q.length>0&&P.length>0&&(0,L.jsx)(te,{className:`marginBlockSm`}),(0,L.jsx)(pe,{entries:Ge,listId:a,activeIndex:Y,selectedKeys:q,codeKey:e,query:B,highlightQuery:Ne,getOptionDisabled:J,getOptionId:je,setOptionRef:we,toggleOption:X,selectOnlyOption:Re,renderItem:He})]})})})]})}})}),z.displayName=`MultiSelect`,z.__docgenInfo={description:`Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./CheckBox-C3n5T66c.js";import{n as a}from"./iframe-BaXmcmyl.js";import{n as o,t as ee}from"./OptionButton-v-MO3VgJ.js";import{n as s,t as c}from"./Text-BT0cn3Bk.js";import{n as l,t as u}from"./ui.module-SH8ehXul.js";import{l as te,n as d,t as f,u as p}from"./Option-Cr3vYgCL.js";import{n as m,t as h}from"./PickerField-BeAXSQmp.js";import{c as g,i as _,l as v,n as y,r as b,s as ne,t as x,u as S}from"./usePickerTriggerController-DMA4hla_.js";import{i as C,n as re,r as w,t as T}from"./usePickerQuery-SCKPS_0f.js";import{n as ie,t as ae}from"./usePickerDefaultFilter-BMBLqfz8.js";import{a as oe,i as E,n as se,o as D,s as ce,t as le}from"./defaultRenderers-CyUQG_f-.js";var O,k,A;function j(){return(j=t((()=>{O=`_9oSdQi`,k=`d9SDKQ`,A={multiSelect:O,optionCheckBox:k}})))()}function M({text:e,isError:t}){return(0,N.jsxs)(`div`,{className:l.uiPopupOption,children:[(0,N.jsx)(`span`,{className:l.uiPopupOptionIcon}),(0,N.jsx)(c,{color:t?`error`:`primary`,children:e})]})}var N;function P(){return(P=t((()=>{s(),u(),N=a(),M.__docgenInfo={description:"Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.",methods:[],displayName:`MultiSelectOptionSkeleton`,props:{text:{required:!0,tsType:{name:`string`},description:``},isError:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function ue({isNoData:e,error:t,children:n}){return e?(0,L.jsx)(w,{emptyState:(0,L.jsx)(M,{text:`Нет данных`})}):t?(0,L.jsx)(w,{errorState:(0,L.jsx)(M,{isError:!0,text:`Ошибка загрузки`})}):(0,L.jsx)(L.Fragment,{children:n})}function F(e,t){return e[t]}function de(e,t,n){return Array.from(new Set([e[n],e[t],...Object.values(e)]))}function fe(e,t,n){if(e.length!==t.length)return!1;let r=new Set(t.map(e=>F(e,n)));return e.every(e=>r.has(F(e,n)))}function pe({entries:e,listId:t,activeIndex:n,selectedKeys:r,codeKey:a,query:o,highlightQuery:s,getOptionDisabled:c,getOptionId:l,setOptionRef:u,toggleOption:te,selectOnlyOption:d,renderItem:p}){return e.map(({item:e,index:m})=>{let h=m===n,g=F(e,a),_=r.has(g),v=c?.(e)??!1,y=p(e,{selected:_,active:h,disabled:v,query:o,highlightQuery:s});return(0,L.jsxs)(f,{id:l(t,m),ref:e=>u(m,e),role:`option`,"aria-selected":_,"aria-disabled":v||void 0,selected:_,active:h,disabled:v,children:[(0,L.jsx)(`div`,{className:A.optionCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,L.jsx)(i,{value:_,disabled:v,"aria-label":`Выбрать ${s??g}`,onChange:()=>te(e)})}),(0,L.jsx)(ee,{tabIndex:-1,disabled:v,text:y.text,code:y.code,searchText:s,onMouseDown:e=>e.preventDefault(),onClick:()=>d(e)})]},`${g}-${m}`)})}var I,L,R,z;function B(){return(B=t((()=>{I=e(n(),1),r(),d(),o(),m(),S(),C(),g(),ae(),b(),T(),D(),x(),p(),E(),j(),P(),L=a(),R=[],z=(0,I.forwardRef)(({codeKey:e,textKey:t,hideCode:n,items:r,value:i,onChange:a,label:o,description:ee,placeholder:s,size:c,query:l,defaultQuery:u,highlightQuery:d,onQuery:f,defaultFilter:p=!0,onOpen:m,onClose:g,getOptionDisabled:b,disabled:x,error:S,isLoading:C,renderToken:w,renderToolbar:T,renderItem:ae},E)=>{let D=(0,I.useRef)(null),[O,k]=(0,I.useState)(!1),j=`search-multi`,M=i??R,N=(0,I.useMemo)(()=>new Set(M.map(t=>F(t,e))),[e,M]),P=(0,I.useMemo)(()=>r.filter(t=>!N.has(F(t,e))),[e,N,r]),z=(0,I.useMemo)(()=>oe([...M,...r],e,t),[e,M,r,t]),{query:B,setQuery:V,resetQueryOnClose:me}=re({query:l,defaultQuery:u,onQuery:f,triggerMode:j}),he=e=>{O&&!e&&me&&V(``),k(e)},H=ie({options:M,query:B,enabled:p,getSearchText:t=>de(t,e,z)}),U=ie({options:P,query:B,enabled:p,getSearchText:t=>de(t,e,z)}),W=(0,I.useMemo)(()=>[...H,...U],[U,H]),ge=H.length>0?0:-1,{draftValue:G,setDraftValue:K,prepareOpen:_e}=ce({value:M,open:O,onCommit:a,onOpen:m,onClose:g,isEqual:(t,n)=>fe(t,n,e)}),q=(0,I.useMemo)(()=>new Set(G.map(t=>F(t,e))),[e,G]),ve=(0,I.useMemo)(()=>({selectedItems:G,committedSelectedItems:M,selectedKeys:q,open:O}),[M,G,O,q]),J=(0,I.useCallback)(e=>b?.(e,ve)??!1,[b,ve]),{activeIndex:Y,context:ye,floatingStyles:be,getFloatingProps:xe,setReference:Se,setFloating:Ce,setOptionRef:we,close:Te,openList:Ee,toggleOpen:De,selectActiveOption:Oe,handleReferenceKeyDown:ke,handleFloatingKeyDown:Ae,getOptionId:je,getActiveOptionId:Me}=_({options:W,selectedIndex:ge,open:O,onOpenChange:he,onSelect:void 0,disabled:x,getOptionDisabled:J,closeOnSelect:!1,allowOpenWithoutOptions:!0,triggerMode:j}),Ne=d??B,X=t=>{let n=F(t,e);K(r=>r.some(t=>F(t,e)===n)?r.filter(t=>F(t,e)!==n):J(t)?r:[...r,t])},Pe=e=>{if(D.current=e,typeof E==`function`){E(e);return}E&&(E.current=e)},Fe=()=>{K([]),O||a([])},Ie=()=>{K(t=>{let n=[...t],r=new Set(t.map(t=>F(t,e)));for(let t of W){let i=F(t,e);!r.has(i)&&!J(t)&&(r.add(i),n.push(t))}return n})},Le=()=>{K([])},Re=e=>{J(e)||(K([e]),Te())},ze=O?G:M,Z=ze.length>0,Be={selectedItems:ze,committedSelectedItems:M,availableItems:U,query:B,open:O,clearSelection:Fe,selectAll:Ie,deselectAll:Le},Ve=w===void 0?se({codeKey:e,textKey:z}):w,He=ae??le({codeKey:e,textKey:z,hideCode:n}),Ue=typeof Ve==`function`?Ve(Be):null,We=typeof T==`function`?T(Be):T,Q=H.map((e,t)=>({item:e,index:t})),Ge=U.map((e,t)=>({item:e,index:t+Q.length})),Ke=!C&&!S&&W.length===0,$=y({mode:j,open:O,currentQuery:B,hasDisplayValue:!1,inputRef:D,setQuery:V,openList:Ee,close:Te,toggleOpen:De,onBeforeOpen:()=>{O||_e()}});return(0,L.jsx)(h,{label:o,description:ee,disabled:x,size:c,className:A.multiSelect,children:({controlId:t,labelId:n,describedBy:i})=>{let a=`${t}-listbox`;return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(ne,{ref:Pe,rootRef:Se,id:t,type:`text`,role:`combobox`,autoComplete:`off`,isLoading:C,disabled:x,open:O,optionCount:r.length,label:o,placeholder:s,placeholderFallback:`Выберите значения`,value:B,selectedValue:Ue,hasSelection:Z,showSelectedValue:Z&&B.length===0,clearable:!0,onClear:Fe,clearAriaLabel:`Очистить все`,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,"aria-labelledby":n,"aria-describedby":i,"aria-haspopup":`listbox`,"aria-expanded":O,"aria-controls":O?a:void 0,"aria-autocomplete":`list`,"aria-activedescendant":O?Me(a):void 0,rootClassName:`flex alignItemsCenter`,onChange:e=>{$.handleTriggerInputChange(e.target.value)},onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{ke(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{if(Y>=0){let e=W[Y];if(e){X(e);return}}Oe()},enableClosedArrowDownOpen:!0,suppressClosedArrowUp:!0})}}),(0,L.jsx)(v,{open:O,context:ye,floatingStyles:be,listId:a,labelId:n,descriptionId:i,activeOptionId:O?Me(a):void 0,setFloating:Ce,getFloatingProps:xe,onKeyDown:Ae,initialFocus:-1,returnFocus:!1,tabIndex:-1,toolbar:We,selectionActions:T===void 0?{onSelectAll:Ie,onDeselectAll:Le}:void 0,children:(0,L.jsx)(ue,{isNoData:Ke,error:S,children:(0,L.jsxs)(`div`,{className:`scrollable overscroll h100`,children:[(0,L.jsx)(pe,{entries:Q,listId:a,activeIndex:Y,selectedKeys:q,codeKey:e,query:B,highlightQuery:Ne,getOptionDisabled:J,getOptionId:je,setOptionRef:we,toggleOption:X,selectOnlyOption:Re,renderItem:He}),Q.length>0&&P.length>0&&(0,L.jsx)(te,{className:`marginBlockSm`}),(0,L.jsx)(pe,{entries:Ge,listId:a,activeIndex:Y,selectedKeys:q,codeKey:e,query:B,highlightQuery:Ne,getOptionDisabled:J,getOptionId:je,setOptionRef:we,toggleOption:X,selectOnlyOption:Re,renderItem:He})]})})})]})}})}),z.displayName=`MultiSelect`,z.__docgenInfo={description:`Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.
2
2
  Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.`,methods:[],displayName:`MultiSelect`,props:{renderToken:{required:!1,tsType:{name:`union`,raw:`((context: TContext) => React.ReactNode) | null | false`,elements:[{name:`unknown`},{name:`null`},{name:`literal`,value:`false`}]},description:``},renderToolbar:{required:!1,tsType:{name:`union`,raw:`((context: TContext) => React.ReactNode) | null | false`,elements:[{name:`unknown`},{name:`null`},{name:`literal`,value:`false`}]},description:``},renderItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: CollectionItem, state: MultiSelectItemState) => MultiSelectOptionContent`,signature:{arguments:[{type:{name:`CollectionItem`},name:`item`},{type:{name:`MultiSelectItemState`},name:`state`}],return:{name:`MultiSelectOptionContent`}}},description:``},label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},codeKey:{required:!0,tsType:{name:`string`},description:``},textKey:{required:!1,tsType:{name:`string`},description:``},hideCode:{required:!1,tsType:{name:`boolean`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},highlightQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},defaultFilter:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TOption`}],raw:`TOption[]`},description:``},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: TOption, context: MultiSelectOptionDisableContext) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`item`},{type:{name:`MultiSelectOptionDisableContext`},name:`context`}],return:{name:`boolean`}}},description:``},onOpen:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onClose:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: TOption[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TOption`}],raw:`TOption[]`},name:`value`}],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}export{B as n,z as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-D0R9pFj7.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-Bu5I-6jJ.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./MultiSelect.stories-BdMJk22c.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BaXmcmyl.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-BmNU_R5E.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./MultiSelect.stories-DG6LGTC9.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(u,{children:`MultiSelect`}),`
3
3
  `,(0,x.jsx)(o,{children:`Мультиселект для локальных коллекций с токенами, поиском и состояниями загрузки`}),`
4
4
  `,(0,x.jsx)(t.p,{children:`MultiSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,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-D0R9pFj7.js";import{n as i,t as a}from"./MultiSelect-CTfbXQVD.js";var o=t({Basic:()=>p,Empty:()=>g,ErrorState:()=>h,Loading:()=>m,__namedExportsOrder:()=>_,default:()=>f}),s,c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{s=n(),i(),c=r(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=[{code:`MOW`,label:`Москва`},{code:`SPB`,label:`Санкт-Петербург`},{code:`EKB`,label:`Екатеринбург`},{code:`KZN`,label:`Казань`},{code:`NSK`,label:`Новосибирск`}],f={title:`UI/MultiSelect`,component:a,args:{label:`Города`,description:`Выберите несколько значений.`,placeholder:`Начните вводить`,value:[],onChange:u(),codeKey:`code`,textKey:`label`,items:d,query:``,onQuery:u(),onOpen:()=>{},onClose:u(),size:`md`,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст пустого поля.`,control:`text`},value:{description:`Контролируемый набор выбранных option.`,control:!1},onChange:{description:`Вызывается после подтверждения набора option.`,control:!1},codeKey:{description:`Имя поля option с уникальным ключом.`,control:`text`},textKey:{description:`Имя поля option с отображаемым текстом.`,control:`text`},hideCode:{description:`Скрывает код option в токенах и списке.`,control:`boolean`},items:{description:`Набор доступных option.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},highlightQuery:{description:`Текст, который подсвечивается в option.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},defaultFilter:{description:`Включает встроенную фильтрацию option.`,control:`boolean`},getOptionDisabled:{description:`Блокирует отдельные option с учетом текущего выбора.`,control:!1},onOpen:{description:`Вызывается при открытии списка.`,control:!1},onClose:{description:`Вызывается при закрытии списка после commit.`,control:!1},error:{description:`Текст ошибки загрузки option.`,control:`text`},isLoading:{description:`Показывает состояние загрузки option.`,control:`boolean`},renderToken:{description:`Кастомный рендер выбранных токенов.`,control:!1},renderToolbar:{description:`Кастомный рендер toolbar popup.`,control:!1},renderItem:{description:`Возвращает text, code и searchText для общей композиции OptionButton.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},p={render:function(e){let[,t]=l(),n=e.value??[d[1]],r=e.query??``,i=(0,s.useMemo)(()=>{let e=r.trim().toLowerCase();return e?d.filter(t=>t.label.toLowerCase().includes(e)||t.code.toLowerCase().includes(e)):d},[r]);return(0,c.jsx)(a,{...e,value:n,items:i,query:r,onQuery:n=>{e.onQuery?.(n),t({query:n})},onChange:n=>{e.onChange(n),t({value:n})}})}},m={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],isLoading:!0,onChange:n=>{e.onChange(n),t({value:n})}})}},h={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],error:`Ошибка загрузки`,onChange:n=>{e.onChange(n),t({value:n})}})}},g={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],onChange:n=>{e.onChange(n),t({value:n})}})}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
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-BaXmcmyl.js";import{n as i,t as a}from"./MultiSelect-Bl3q6kCP.js";var o=t({Basic:()=>p,Empty:()=>g,ErrorState:()=>h,Loading:()=>m,__namedExportsOrder:()=>_,default:()=>f}),s,c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{s=n(),i(),c=r(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=[{code:`MOW`,label:`Москва`},{code:`SPB`,label:`Санкт-Петербург`},{code:`EKB`,label:`Екатеринбург`},{code:`KZN`,label:`Казань`},{code:`NSK`,label:`Новосибирск`}],f={title:`UI/MultiSelect`,component:a,args:{label:`Города`,description:`Выберите несколько значений.`,placeholder:`Начните вводить`,value:[],onChange:u(),codeKey:`code`,textKey:`label`,items:d,query:``,onQuery:u(),onOpen:()=>{},onClose:u(),size:`md`,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст пустого поля.`,control:`text`},value:{description:`Контролируемый набор выбранных option.`,control:!1},onChange:{description:`Вызывается после подтверждения набора option.`,control:!1},codeKey:{description:`Имя поля option с уникальным ключом.`,control:`text`},textKey:{description:`Имя поля option с отображаемым текстом.`,control:`text`},hideCode:{description:`Скрывает код option в токенах и списке.`,control:`boolean`},items:{description:`Набор доступных option.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},highlightQuery:{description:`Текст, который подсвечивается в option.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},defaultFilter:{description:`Включает встроенную фильтрацию option.`,control:`boolean`},getOptionDisabled:{description:`Блокирует отдельные option с учетом текущего выбора.`,control:!1},onOpen:{description:`Вызывается при открытии списка.`,control:!1},onClose:{description:`Вызывается при закрытии списка после commit.`,control:!1},error:{description:`Текст ошибки загрузки option.`,control:`text`},isLoading:{description:`Показывает состояние загрузки option.`,control:`boolean`},renderToken:{description:`Кастомный рендер выбранных токенов.`,control:!1},renderToolbar:{description:`Кастомный рендер toolbar popup.`,control:!1},renderItem:{description:`Возвращает text, code и searchText для общей композиции OptionButton.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},p={render:function(e){let[,t]=l(),n=e.value??[d[1]],r=e.query??``,i=(0,s.useMemo)(()=>{let e=r.trim().toLowerCase();return e?d.filter(t=>t.label.toLowerCase().includes(e)||t.code.toLowerCase().includes(e)):d},[r]);return(0,c.jsx)(a,{...e,value:n,items:i,query:r,onQuery:n=>{e.onQuery?.(n),t({query:n})},onChange:n=>{e.onChange(n),t({value:n})}})}},m={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],isLoading:!0,onChange:n=>{e.onChange(n),t({value:n})}})}},h={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],error:`Ошибка загрузки`,onChange:n=>{e.onChange(n),t({value:n})}})}},g={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],onChange:n=>{e.onChange(n),t({value:n})}})}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
2
2
  render: function Render(args) {
3
3
  const [, updateArgs] = useArgs<React.ComponentProps<typeof MultiSelect>>();
4
4
  const value = args.value ?? [catalog[1]!];
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-D0R9pFj7.js";import{a as n,i as r}from"./utils-tg3ibbzi.js";import{n as i,t as a}from"./Text-CMJA_7QZ.js";var o,s;function c(){return(c=e((()=>{r(),o=t(),s=({className:e,minHeight:t,children:r,style:i,...a})=>{let s=t===void 0?i:{...i,minHeight:t};return(0,o.jsx)(`div`,{...a,className:n(`flexCenter h100`,e),style:s,children:r})},s.__docgenInfo={description:``,methods:[],displayName:`FlexCenter`,props:{children:{required:!1,tsType:{name:`ReactNode`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``}},composes:[`Omit`]}})))()}var l,u;function d(){return(d=e((()=>{l=`qgIKVo`,u={componentLoader:l}})))()}function f({className:e,children:t,color:r=`muted`,role:i,minHeight:o,uppercase:c=!0}){return(0,p.jsx)(s,{className:n(`paddingMd textCenter`,e),minHeight:o,children:(0,p.jsx)(a,{as:`p`,weight:`bold`,color:r,uppercase:c,role:i,children:t})})}var p;function m(){return(m=e((()=>{r(),c(),i(),p=t(),f.__docgenInfo={description:``,methods:[],displayName:`Message`,props:{className:{required:!1,tsType:{name:`string`},description:``},color:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "muted" | "error" | "warning" | "success" | "info" | "brand" | "accent"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"muted"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"accent"`}]},description:``,defaultValue:{value:`"muted"`,computed:!1}},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``},uppercase:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},role:{required:!1,tsType:{name:`AriaRole`},description:``}},composes:[`PropsWithChildren`]}})))()}function h({className:e,logo:t,text:r}){return(0,g.jsxs)(f,{className:n(u.componentLoader,t?void 0:`skeletonLine`,e),children:[t,r||`Загрузка...`]})}var g;function _(){return(_=e((()=>{r(),d(),m(),g=t(),h.__docgenInfo={description:``,methods:[],displayName:`LoadingMessage`,props:{className:{required:!1,tsType:{name:`string`},description:``},logo:{required:!1,tsType:{name:`ReactNode`},description:`Готовый брендовый знак, которым host-проект при необходимости дополняет сообщение о загрузке.`},text:{required:!1,tsType:{name:`string`},description:``}}}})))()}function v({className:e,text:t,role:n,minHeight:r=`5em`}){return(0,y.jsx)(f,{className:e,color:`muted`,minHeight:r,role:n,children:t||`Нет данных`})}var y;function b(){return(b=e((()=>{m(),y=t(),v.__docgenInfo={description:``,methods:[],displayName:`NoData`,props:{className:{required:!1,tsType:{name:`string`},description:``},text:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``,defaultValue:{value:`"5em"`,computed:!1}},role:{required:!1,tsType:{name:`AriaRole`},description:``}}}})))()}export{_ as i,b as n,h as r,v as t};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BaXmcmyl.js";import{a as n,i as r}from"./utils-tg3ibbzi.js";import{n as i,t as a}from"./Text-BT0cn3Bk.js";var o,s;function c(){return(c=e((()=>{r(),o=t(),s=({className:e,minHeight:t,children:r,style:i,...a})=>{let s=t===void 0?i:{...i,minHeight:t};return(0,o.jsx)(`div`,{...a,className:n(`flexCenter h100`,e),style:s,children:r})},s.__docgenInfo={description:``,methods:[],displayName:`FlexCenter`,props:{children:{required:!1,tsType:{name:`ReactNode`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``}},composes:[`Omit`]}})))()}var l,u;function d(){return(d=e((()=>{l=`qgIKVo`,u={componentLoader:l}})))()}function f({className:e,children:t,color:r=`muted`,role:i,minHeight:o,uppercase:c=!0}){return(0,p.jsx)(s,{className:n(`paddingMd textCenter`,e),minHeight:o,children:(0,p.jsx)(a,{as:`p`,weight:`bold`,color:r,uppercase:c,role:i,children:t})})}var p;function m(){return(m=e((()=>{r(),c(),i(),p=t(),f.__docgenInfo={description:``,methods:[],displayName:`Message`,props:{className:{required:!1,tsType:{name:`string`},description:``},color:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "muted" | "error" | "warning" | "success" | "info" | "brand" | "accent"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"muted"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"accent"`}]},description:``,defaultValue:{value:`"muted"`,computed:!1}},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``},uppercase:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},role:{required:!1,tsType:{name:`AriaRole`},description:``}},composes:[`PropsWithChildren`]}})))()}function h({className:e,logo:t,text:r}){return(0,g.jsxs)(f,{className:n(u.componentLoader,t?void 0:`skeletonLine`,e),children:[t,r||`Загрузка...`]})}var g;function _(){return(_=e((()=>{r(),d(),m(),g=t(),h.__docgenInfo={description:``,methods:[],displayName:`LoadingMessage`,props:{className:{required:!1,tsType:{name:`string`},description:``},logo:{required:!1,tsType:{name:`ReactNode`},description:`Готовый брендовый знак, которым host-проект при необходимости дополняет сообщение о загрузке.`},text:{required:!1,tsType:{name:`string`},description:``}}}})))()}function v({className:e,text:t,role:n,minHeight:r=`5em`}){return(0,y.jsx)(f,{className:e,color:`muted`,minHeight:r,role:n,children:t||`Нет данных`})}var y;function b(){return(b=e((()=>{m(),y=t(),v.__docgenInfo={description:``,methods:[],displayName:`NoData`,props:{className:{required:!1,tsType:{name:`string`},description:``},text:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``,defaultValue:{value:`"5em"`,computed:!1}},role:{required:!1,tsType:{name:`AriaRole`},description:``}}}})))()}export{_ as i,b as n,h as r,v as t};
@@ -0,0 +1 @@
1
+ .STGQ3g{z-index:var(--z-notify);gap:var(--space-sm);padding:var(--space-lg);width:min(28em, 100dvw - var(--space-lg) * 2);pointer-events:none;display:grid;position:fixed;bottom:0;left:0}.RaiISE{--notify-accent:var(--border-1);--notify-accent-surface:var(--surface-1);--notify-accent-text:var(--accent-text);pointer-events:auto;width:100%;padding:var(--space-md);border-left:.3125em solid var(--notify-accent);border-radius:var(--radius-md);background:linear-gradient(37deg, var(--notify-accent-surface), var(--surface-0));color:var(--content-0);box-shadow:var(--shadow-md);position:relative;overflow:hidden}.cM81wO{--notify-accent:var(--info-border);--notify-accent-surface:color-mix(in srgb, var(--info-fill) 12%, var(--surface-0));--notify-accent-text:var(--info-text)}.nH2cuZ{--notify-accent:var(--success-border);--notify-accent-surface:color-mix(in srgb, var(--success-fill) 12%, var(--surface-0));--notify-accent-text:var(--success-text)}.A2glD7{--notify-accent:var(--warning-border);--notify-accent-surface:color-mix(in srgb, var(--warning-fill) 12%, var(--surface-0));--notify-accent-text:var(--warning-text)}.yWjijS{--notify-accent:var(--error-border);--notify-accent-surface:color-mix(in srgb, var(--error-fill) 12%, var(--surface-0));--notify-accent-text:var(--error-text)}._1HO2ne,.OyRJpj,.vrCrow{min-width:0}.OyRJpj{flex:1;min-width:0}.A0X-ma{width:var(--control-height);height:var(--control-height);background-color:var(--notify-accent-surface);color:var(--notify-accent-text);border:var(--border-width) solid color-mix(in srgb, var(--notify-accent) 22%, transparent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.A0X-ma svg{width:1.125em;height:1.125em}.AkHvPV{margin-bottom:var(--space-xs);color:var(--notify-accent-text);font-size:var(--font-size-xs);font-variation-settings:"wght" 600;letter-spacing:.04em;text-transform:uppercase;font-weight:600}._4YDLB5{color:var(--notify-accent-text);font-variation-settings:"wght" 600;font-weight:600}.CK3Bqv{margin-top:var(--space-xs);color:var(--content-0);white-space:pre-wrap;word-break:break-word}.nLmQut{gap:var(--space-xs);margin-top:var(--space-sm);flex-wrap:wrap;display:flex}@media (max-width:47.9988em){.STGQ3g{padding:var(--space-md);width:min(100dvw, 100dvw - var(--space-md) * 2)}}
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{i as t,n,r,t as i}from"./NotificationsHost.stories-BPB6hfSI.js";import{n as a}from"./iframe-D0R9pFj7.js";import{i as o,r as s}from"./react-Bl2r1tuC.js";import{a as c,d as l,f as u,l as d,m as f,n as p,p as m,r as h,u as g}from"./blocks-Bu5I-6jJ.js";function _(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...o(),...e.components};return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(d,{of:n,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{i as t,n,r,t as i}from"./NotificationsHost.stories-CiSu7Vly.js";import{n as a}from"./iframe-BaXmcmyl.js";import{i as o,r as s}from"./react-Bl2r1tuC.js";import{a as c,d as l,f as u,l as d,m as f,n as p,p as m,r as h,u as g}from"./blocks-BmNU_R5E.js";function _(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...o(),...e.components};return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(d,{of:n,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,y.jsx)(m,{children:`NotificationsHost`}),`
3
3
  `,(0,y.jsx)(u,{children:`Хост глобальных уведомлений для очереди toast-сообщений и длинных пользовательских операций`}),`
4
4
  `,(0,y.jsx)(t.p,{children:`NotificationsHost уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./check-BdRTIK6S.js";import{n as a,t as o}from"./circle-alert-Dj1kZNNX.js";import{n as s,t as c}from"./circle-check-B1w7Ls8y.js";import{i as l,n as ee,r as u,t as d}from"./info-B0qzF0Mr.js";import{n as te,t as f}from"./refresh-cw-K68D1zRy.js";import{n as ne,t as re}from"./trash-2-Bj60L0sq.js";import{n as p,t as m}from"./triangle-alert-CmzQ-r9i.js";import{n as ie,t as ae}from"./x-DU3Tpzms.js";import{i as oe,n as h,r as se}from"./iframe-D0R9pFj7.js";import{a as ce,i as le}from"./utils-tg3ibbzi.js";import{a as ue,i as de,n as fe,r as g}from"./react-GkniIHEK.js";import{n as pe}from"./error-De9R4E_F.js";import{n as me,t as _}from"./FlexContainer-BWyPlTMB.js";import{n as he,t as v}from"./Button-BpQRrzrS.js";var y,b;function x(){return(x=e((()=>{oe(),y=[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]],b=se(`bell-ring`,y)})))()}var S,C;function w(){return(w=e((()=>{oe(),S=[[`path`,{d:`M10 2h4`,key:`n1abiw`}],[`path`,{d:`M12 14v-4`,key:`1evpnu`}],[`path`,{d:`M4 13a8 8 0 0 1 8-7 8 8 0 1 1-5.3 14L4 17.6`,key:`1ts96g`}],[`path`,{d:`M9 17H4v5`,key:`8t5av`}]],C=se(`timer-reset`,S)})))()}var T,E,D,O,k,A,j;function M(){return(M=e((()=>{ue(),T=null,E=e=>(T=e,()=>{T===e&&(T=null)}),D=()=>{if(!T)throw Error(`Notifications store is not bound. Wrap app with NotificationsProvider.`);return T},O=Object.freeze({push:e=>D().getState().actions.push(e),upsert:e=>D().getState().actions.upsert(e),update:(e,t)=>D().getState().actions.update(e,t),dismiss:e=>D().getState().actions.dismiss(e),clear:()=>D().getState().actions.clear(),success:(e,t)=>D().getState().actions.push({type:`success`,message:e,...t}),info:(e,t)=>D().getState().actions.push({type:`info`,message:e,...t}),warning:(e,t)=>D().getState().actions.push({type:`warning`,message:e,...t}),error:(e,t)=>D().getState().actions.push({type:`error`,message:e,...t}),progress:(e,t)=>{let n=D(),r=t?.id;r&&n.getState().actions.upsert({id:r,type:`info`,title:t?.title,message:e,dismissible:!1});let i=r??n.getState().actions.push({type:`info`,title:t?.title,message:e,dismissible:!1});return{id:i,update:e=>O.update(i,{message:e}),success:(e,t=2500)=>O.update(i,{type:`success`,message:e,dismissible:!0,ttlMs:t}),error:(e,t=5e3)=>O.update(i,{type:`error`,message:e,dismissible:!0,ttlMs:t}),dismiss:()=>O.dismiss(i)}}}),k=()=>`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,9)}`,A=6,j=()=>{let e=new Map,t=t=>{let n=e.get(t);n&&(window.clearTimeout(n),e.delete(t))},n=(n,r,i=1e4)=>{if(t(r),i<=0)return;let a=window.setTimeout(()=>{n.getState().actions.dismiss(r)},i);e.set(r,a)},r=de()((i,a)=>({items:[],actions:{push:e=>{let t=e.id??k(),a=Date.now(),o={id:t,type:e.type,title:e.title,message:e.message,createdAt:a,ttlMs:e.ttlMs,dismissible:e.dismissible??!0,actions:e.actions};return i(e=>({items:[o,...e.items.filter(e=>e.id!==t)].slice(0,A)})),n(r,t,o.ttlMs),t},update:(e,t)=>{let{items:o}=a(),s=o.findIndex(t=>t.id===e);if(s===-1)return!1;let c=o[s],l={...c,...t,id:c.id,createdAt:c.createdAt};return i(t=>({items:t.items.map(t=>t.id===e?l:t)})),`ttlMs`in t&&n(r,e,l.ttlMs),!0},upsert:e=>a().actions.update(e.id,{type:e.type,title:e.title,message:e.message,ttlMs:e.ttlMs,dismissible:e.dismissible})?e.id:a().actions.push(e),dismiss:e=>{t(e),i(t=>({items:t.items.filter(t=>t.id!==e)}))},clear:()=>{e.forEach(e=>window.clearTimeout(e)),e.clear(),i({items:[]})}}}));return r}})))()}function N({children:e}){let t=(0,I.useMemo)(()=>j(),[]);return(0,I.useEffect)(()=>E(t),[t]),(0,L.jsx)(R.Provider,{value:t,children:e})}function P(){let e=(0,I.useContext)(R);if(!e)throw pe({hookName:`useNotificationApi`,providerName:`NotificationsProvider`});return e}function ge(){let e=P();return g(e,e=>e.items)}function F(){let e=P(),t=g(e,e=>e.actions),n=e=>(n,r)=>t.push({type:e,message:n,...r});return{...t,success:n(`success`),info:n(`info`),warning:n(`warning`),error:n(`error`)}}var I,L,R;function z(){return(z=e((()=>{I=n(),M(),fe(),L=h(),R=(0,I.createContext)(null),N.__docgenInfo={description:`Провайдер уведомлений приложения. Хранит состояние списка уведомлений и предоставляет хуки доступа к нему.`,methods:[],displayName:`NotificationsProvider`}})))()}var B,V,H,U,_e,ve,ye,be,xe,Se,Ce,we,Te,Ee,W;function De(){return(De=e((()=>{B=`STGQ3g`,V=`RaiISE`,H=`cM81wO`,U=`nH2cuZ`,_e=`A2glD7`,ve=`yWjijS`,ye=`_1HO2ne`,be=`OyRJpj`,xe=`vrCrow`,Se=`A0X-ma`,Ce=`AkHvPV`,we=`_4YDLB5`,Te=`CK3Bqv`,Ee=`nLmQut`,W={container:B,card:V,info:H,success:U,warning:_e,error:ve,header:ye,content:be,copy:xe,icon:Se,kicker:Ce,title:we,message:Te,actions:Ee}})))()}function G(){let e=ge(),{dismiss:t}=F();return(0,K.jsx)(`div`,{className:W.container,"aria-label":`Область уведомлений`,"aria-live":`polite`,"aria-relevant":`additions text`,children:e.map(e=>{let n=Oe[e.type],r=e.title??n.title,i=n.Icon;return(0,K.jsx)(`article`,{role:e.type===`error`?`alert`:`status`,"aria-atomic":`true`,className:ce(W.card,W[e.type]),children:(0,K.jsxs)(_,{align:`start`,justify:`between`,gap:`sm`,className:W.header,children:[(0,K.jsxs)(_,{align:`start`,gap:`sm`,className:W.content,children:[(0,K.jsx)(`span`,{className:W.icon,"aria-hidden":`true`,children:(0,K.jsx)(i,{})}),(0,K.jsxs)(`div`,{className:W.copy,children:[(0,K.jsx)(`div`,{className:W.kicker,children:n.title}),e.title?(0,K.jsx)(`div`,{className:W.title,children:r}):null,(0,K.jsx)(`div`,{className:W.message,children:e.message}),e.actions?.length?(0,K.jsx)(`div`,{className:W.actions,children:e.actions.map(t=>(0,K.jsx)(v,{tone:t.tone??e.type,appearance:`outline`,"data-ui":`notification-action-button`,"data-action":`notification-action`,onClick:()=>void t.onClick(),children:t.label},t.label))}):null]})]}),e.dismissible===!1?null:(0,K.jsx)(v,{icon:(0,K.jsx)(ae,{}),appearance:`ghost`,tone:e.type,onClick:()=>t(e.id),"aria-label":`Закрыть уведомление`,"data-ui":`notification-dismiss-button`,"data-action":`dismiss-notification`})]})},e.id)})})}var K,Oe;function ke(){return(ke=e((()=>{le(),a(),s(),ee(),p(),ie(),he(),me(),z(),De(),K=h(),Oe={info:{title:`Информация`,Icon:d},success:{title:`Успешно`,Icon:c},warning:{title:`Предупреждение`,Icon:m},error:{title:`Ошибка`,Icon:o}},G.__docgenInfo={description:`Хост для визуального отображения очереди уведомлений.
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./check-HCQdrq3c.js";import{n as a,t as o}from"./circle-alert-DuupFIr9.js";import{n as s,t as c}from"./circle-check-LYBfAR-E.js";import{i as l,n as ee,r as u,t as d}from"./info-ZuWgcD4m.js";import{n as te,t as f}from"./refresh-cw-vj55o5c3.js";import{n as ne,t as re}from"./trash-2-DEnKoJjZ.js";import{n as p,t as m}from"./triangle-alert-D-oyPLJL.js";import{n as ie,t as ae}from"./x-C5QCK6Ts.js";import{i as oe,n as h,r as se}from"./iframe-BaXmcmyl.js";import{a as ce,i as le}from"./utils-tg3ibbzi.js";import{a as ue,i as de,n as fe,r as g}from"./react-GkniIHEK.js";import{n as pe}from"./error-De9R4E_F.js";import{n as me,t as _}from"./FlexContainer-BWyPlTMB.js";import{n as he,t as v}from"./Button-EVzvXVPh.js";var y,b;function x(){return(x=e((()=>{oe(),y=[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]],b=se(`bell-ring`,y)})))()}var S,C;function w(){return(w=e((()=>{oe(),S=[[`path`,{d:`M10 2h4`,key:`n1abiw`}],[`path`,{d:`M12 14v-4`,key:`1evpnu`}],[`path`,{d:`M4 13a8 8 0 0 1 8-7 8 8 0 1 1-5.3 14L4 17.6`,key:`1ts96g`}],[`path`,{d:`M9 17H4v5`,key:`8t5av`}]],C=se(`timer-reset`,S)})))()}var T,E,D,O,k,A,j;function M(){return(M=e((()=>{ue(),T=null,E=e=>(T=e,()=>{T===e&&(T=null)}),D=()=>{if(!T)throw Error(`Notifications store is not bound. Wrap app with NotificationsProvider.`);return T},O=Object.freeze({push:e=>D().getState().actions.push(e),upsert:e=>D().getState().actions.upsert(e),update:(e,t)=>D().getState().actions.update(e,t),dismiss:e=>D().getState().actions.dismiss(e),clear:()=>D().getState().actions.clear(),success:(e,t)=>D().getState().actions.push({type:`success`,message:e,...t}),info:(e,t)=>D().getState().actions.push({type:`info`,message:e,...t}),warning:(e,t)=>D().getState().actions.push({type:`warning`,message:e,...t}),error:(e,t)=>D().getState().actions.push({type:`error`,message:e,...t}),progress:(e,t)=>{let n=D(),r=t?.id;r&&n.getState().actions.upsert({id:r,type:`info`,title:t?.title,message:e,dismissible:!1});let i=r??n.getState().actions.push({type:`info`,title:t?.title,message:e,dismissible:!1});return{id:i,update:e=>O.update(i,{message:e}),success:(e,t=2500)=>O.update(i,{type:`success`,message:e,dismissible:!0,ttlMs:t}),error:(e,t=5e3)=>O.update(i,{type:`error`,message:e,dismissible:!0,ttlMs:t}),dismiss:()=>O.dismiss(i)}}}),k=()=>`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,9)}`,A=6,j=()=>{let e=new Map,t=t=>{let n=e.get(t);n&&(window.clearTimeout(n),e.delete(t))},n=(n,r,i=1e4)=>{if(t(r),i<=0)return;let a=window.setTimeout(()=>{n.getState().actions.dismiss(r)},i);e.set(r,a)},r=de()((i,a)=>({items:[],actions:{push:e=>{let t=e.id??k(),a=Date.now(),o={id:t,type:e.type,title:e.title,message:e.message,createdAt:a,ttlMs:e.ttlMs,dismissible:e.dismissible??!0,actions:e.actions};return i(e=>({items:[o,...e.items.filter(e=>e.id!==t)].slice(0,A)})),n(r,t,o.ttlMs),t},update:(e,t)=>{let{items:o}=a(),s=o.findIndex(t=>t.id===e);if(s===-1)return!1;let c=o[s],l={...c,...t,id:c.id,createdAt:c.createdAt};return i(t=>({items:t.items.map(t=>t.id===e?l:t)})),`ttlMs`in t&&n(r,e,l.ttlMs),!0},upsert:e=>a().actions.update(e.id,{type:e.type,title:e.title,message:e.message,ttlMs:e.ttlMs,dismissible:e.dismissible})?e.id:a().actions.push(e),dismiss:e=>{t(e),i(t=>({items:t.items.filter(t=>t.id!==e)}))},clear:()=>{e.forEach(e=>window.clearTimeout(e)),e.clear(),i({items:[]})}}}));return r}})))()}function N({children:e}){let t=(0,I.useMemo)(()=>j(),[]);return(0,I.useEffect)(()=>E(t),[t]),(0,L.jsx)(R.Provider,{value:t,children:e})}function P(){let e=(0,I.useContext)(R);if(!e)throw pe({hookName:`useNotificationApi`,providerName:`NotificationsProvider`});return e}function ge(){let e=P();return g(e,e=>e.items)}function F(){let e=P(),t=g(e,e=>e.actions),n=e=>(n,r)=>t.push({type:e,message:n,...r});return{...t,success:n(`success`),info:n(`info`),warning:n(`warning`),error:n(`error`)}}var I,L,R;function z(){return(z=e((()=>{I=n(),M(),fe(),L=h(),R=(0,I.createContext)(null),N.__docgenInfo={description:`Провайдер уведомлений приложения. Хранит состояние списка уведомлений и предоставляет хуки доступа к нему.`,methods:[],displayName:`NotificationsProvider`}})))()}var B,V,H,U,_e,ve,ye,be,xe,Se,Ce,we,Te,Ee,W;function De(){return(De=e((()=>{B=`STGQ3g`,V=`RaiISE`,H=`cM81wO`,U=`nH2cuZ`,_e=`A2glD7`,ve=`yWjijS`,ye=`_1HO2ne`,be=`OyRJpj`,xe=`vrCrow`,Se=`A0X-ma`,Ce=`AkHvPV`,we=`_4YDLB5`,Te=`CK3Bqv`,Ee=`nLmQut`,W={container:B,card:V,info:H,success:U,warning:_e,error:ve,header:ye,content:be,copy:xe,icon:Se,kicker:Ce,title:we,message:Te,actions:Ee}})))()}function G(){let e=ge(),{dismiss:t}=F();return(0,K.jsx)(`div`,{className:W.container,"aria-label":`Область уведомлений`,"aria-live":`polite`,"aria-relevant":`additions text`,children:e.map(e=>{let n=Oe[e.type],r=e.title??n.title,i=n.Icon;return(0,K.jsx)(`article`,{role:e.type===`error`?`alert`:`status`,"aria-atomic":`true`,className:ce(W.card,W[e.type]),children:(0,K.jsxs)(_,{align:`start`,justify:`between`,gap:`sm`,className:W.header,children:[(0,K.jsxs)(_,{align:`start`,gap:`sm`,className:W.content,children:[(0,K.jsx)(`span`,{className:W.icon,"aria-hidden":`true`,children:(0,K.jsx)(i,{})}),(0,K.jsxs)(`div`,{className:W.copy,children:[(0,K.jsx)(`div`,{className:W.kicker,children:n.title}),e.title?(0,K.jsx)(`div`,{className:W.title,children:r}):null,(0,K.jsx)(`div`,{className:W.message,children:e.message}),e.actions?.length?(0,K.jsx)(`div`,{className:W.actions,children:e.actions.map(t=>(0,K.jsx)(v,{tone:t.tone??e.type,appearance:`outline`,"data-ui":`notification-action-button`,"data-action":`notification-action`,onClick:()=>void t.onClick(),children:t.label},t.label))}):null]})]}),e.dismissible===!1?null:(0,K.jsx)(v,{icon:(0,K.jsx)(ae,{}),appearance:`ghost`,tone:e.type,onClick:()=>t(e.id),"aria-label":`Закрыть уведомление`,"data-ui":`notification-dismiss-button`,"data-action":`dismiss-notification`})]})},e.id)})})}var K,Oe;function ke(){return(ke=e((()=>{le(),a(),s(),ee(),p(),ie(),he(),me(),z(),De(),K=h(),Oe={info:{title:`Информация`,Icon:d},success:{title:`Успешно`,Icon:c},warning:{title:`Предупреждение`,Icon:m},error:{title:`Ошибка`,Icon:o}},G.__docgenInfo={description:`Хост для визуального отображения очереди уведомлений.
2
2
  Обычно монтируется один раз на уровне приложения рядом с провайдером уведомлений.`,methods:[],displayName:`NotificationsHost`}})))()}var Ae=t({InteractivePlayground:()=>Q,Showcase:()=>Z,__namedExportsOrder:()=>Be,default:()=>Fe});function je(){let{clear:e}=F();return(0,q.useEffect)(()=>(e(),()=>{e()}),[e]),null}function Me({children:e,hostProps:t}){return(0,J.jsxs)(N,{children:[(0,J.jsx)(je,{}),(0,J.jsx)(`div`,{style:Ie,children:(0,J.jsxs)(`div`,{style:Le,children:[(0,J.jsxs)(`div`,{style:Re,children:[(0,J.jsx)(`h2`,{style:{margin:0,fontSize:`var(--font-size-xl)`},children:`Демонстрация очереди уведомлений`}),(0,J.jsx)(`p`,{style:{margin:`12px 0 0`,color:`var(--content-1)`},children:"Хост закреплён в левом нижнем углу и использует общие токены проекта: `surface`, `content`, `status` и семантические `tone-*`. Внутри историй можно проверить лимит очереди, sticky-уведомления и сценарий длительной операции с обновлением одного уведомления."})]}),e]})}),(0,J.jsx)(G,{...t})]})}function Ne(){let{clear:e,push:t}=F();return(0,q.useEffect)(()=>(e(),t({type:`info`,title:`Сетевой статус`,message:`Подключение к серверу восстановлено.`,ttlMs:6e3}),t({type:`success`,title:`Профиль обновлён`,message:`Изменения сохранены и отправлены в очередь на синхронизацию.`,ttlMs:4500}),t({type:`warning`,title:`Требуется внимание`,message:`Срок действия сессии истекает через 5 минут.`}),t({type:`error`,title:`Ошибка импорта`,message:`Не удалось загрузить журнал операций.
3
3
  Повторите запрос или обратитесь к администратору.`}),()=>{e()}),[e,t]),(0,J.jsxs)(`div`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Снимок состояний`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:`История сразу заполняет очередь всеми типами уведомлений, чтобы оценить цвет, иконки, контраст и читаемость текста.`})]})}function Pe(){let e=F(),t=(0,q.useRef)(null),[n,r]=(0,q.useState)(!1),a=()=>{t.current=null,r(!1)},o=(n,r)=>{let i=t.current;i&&(!e.update(i,{message:n,...r})||r?.type)&&a()};return(0,J.jsxs)(`div`,{style:ze,children:[(0,J.jsxs)(`section`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Базовые сценарии`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:"Вызовы через `useNotify` подходят для UI-логики внутри React-компонентов."}),(0,J.jsxs)(`div`,{style:X,children:[(0,J.jsx)(v,{tone:`info`,appearance:`outline`,icon:(0,J.jsx)(d,{}),onClick:()=>e.info(`Справочник обновлён по расписанию.`,{title:`Информация`,ttlMs:3500}),children:`Info`}),(0,J.jsx)(v,{tone:`success`,appearance:`solid`,icon:(0,J.jsx)(i,{}),onClick:()=>e.success(`Изменения сохранены.`,{title:`Операция завершена`,ttlMs:2500}),children:`Success`}),(0,J.jsx)(v,{tone:`warning`,appearance:`outline`,icon:(0,J.jsx)(m,{}),onClick:()=>e.warning(`Подтвердите действие в течение 2 минут.`,{title:`Требуется подтверждение`,dismissible:!1}),children:`Sticky warning`}),(0,J.jsx)(v,{tone:`error`,appearance:`solid`,icon:(0,J.jsx)(u,{}),onClick:()=>e.error(`Сервис проверки подписей недоступен.`,{title:`Критическая ошибка`}),children:`Error`})]})]}),(0,J.jsxs)(`section`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Долгая операция`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:"Сценарий имитирует `notify.progress`: создаёт одно sticky-уведомление и затем обновляет его по тому же `id`."}),(0,J.jsxs)(`div`,{style:X,children:[(0,J.jsx)(v,{variant:`neutralOutline`,icon:(0,J.jsx)(b,{}),onClick:()=>{let n=e.push({type:`info`,title:`Экспорт архива`,message:`Подготавливаю пакет документов...`,dismissible:!1});t.current=n,r(!0)},children:`Запустить`}),(0,J.jsx)(v,{variant:`neutralOutline`,icon:(0,J.jsx)(f,{}),onClick:()=>{o(`Обработано 68% записей. Формирую итоговый архив...`)},disabled:!n,children:`Обновить прогресс`}),(0,J.jsx)(v,{tone:`success`,appearance:`outline`,icon:(0,J.jsx)(i,{}),onClick:()=>{o(`Архив подготовлен и доступен для скачивания.`,{type:`success`,ttlMs:2500,dismissible:!0})},disabled:!n,children:`Завершить успешно`}),(0,J.jsx)(v,{tone:`error`,appearance:`outline`,icon:(0,J.jsx)(u,{}),onClick:()=>{o(`Не удалось собрать архив из-за ошибки чтения вложений.`,{type:`error`,ttlMs:5e3,dismissible:!0})},disabled:!n,children:`Завершить ошибкой`})]})]}),(0,J.jsxs)(`section`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Очередь и очистка`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:`Стор сохраняет не более 6 уведомлений. Кнопка ниже специально создаёт 8 элементов, чтобы проверить отсечение старых записей.`}),(0,J.jsxs)(`div`,{style:X,children:[(0,J.jsx)(v,{variant:`neutralOutline`,icon:(0,J.jsx)(f,{}),onClick:()=>{for(let t=1;t<=8;t+=1)e.info(`Пакет ${t} поставлен в очередь на обработку.`,{title:`Задача ${t}`,ttlMs:8e3})},children:`Заполнить очередь`}),(0,J.jsx)(v,{tone:`info`,appearance:`outline`,icon:(0,J.jsx)(C,{}),onClick:()=>e.info(`Это уведомление исчезнет автоматически через 2 секунды.`,{title:`TTL = 2000 мс`,ttlMs:2e3}),children:`Проверить TTL`}),(0,J.jsx)(v,{variant:`transparent`,icon:(0,J.jsx)(re,{}),onClick:()=>{a(),e.clear()},children:`Очистить всё`})]})]})]})}var q,J,Fe,Ie,Le,Re,ze,Y,X,Z,Q,Be;function $(){return($=e((()=>{q=n(),x(),r(),ee(),te(),w(),ne(),p(),l(),he(),z(),ke(),J=h(),Fe={title:`UI/Notifications`,component:G,args:{},argTypes:{},parameters:{atomicCanvas:!0,layout:`fullscreen`,docs:{description:{component:`Компонент отображает очередь глобальных уведомлений поверх интерфейса. Истории ниже показывают внешний вид для разных статусов, работу автозакрытия, ограничение очереди и сценарий длительной операции с обновлением одного уведомления.`}}}},Ie={minHeight:`100vh`,padding:`32px 24px 160px`,background:`linear-gradient(180deg, color-mix(in srgb, var(--surface-1) 82%, transparent) 0%, var(--surface-0) 100%)`,color:`var(--content-0)`},Le={maxWidth:1120,margin:`0 auto`,display:`grid`,gap:16},Re={padding:20,border:`var(--border)`,borderRadius:`var(--radius-md)`,background:`var(--surface-0)`,boxShadow:`var(--shadow-sm)`},ze={display:`grid`,gap:16,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`},Y={padding:20,border:`var(--border)`,borderRadius:`var(--radius-md)`,background:`var(--surface-0)`,boxShadow:`var(--shadow-sm)`,display:`grid`,gap:12,alignContent:`start`},X={display:`flex`,flexWrap:`wrap`,gap:10},Z={render:function(e){return(0,J.jsx)(Me,{hostProps:e,children:(0,J.jsx)(Ne,{})})},parameters:{docs:{description:{story:`Быстрый визуальный обзор: все статусы сразу добавляются в очередь после открытия истории.`}}}},Q={render:function(e){return(0,J.jsx)(Me,{hostProps:e,children:(0,J.jsx)(Pe,{})})},parameters:{docs:{description:{story:`Интерактивный сценарий для проверки базовых уведомлений, длительной операции, лимита очереди и автозакрытия.`}}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
4
4
  render: function Render(args) {
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-D0R9pFj7.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-Bu5I-6jJ.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x,u as S}from"./ODataMultiSelect.stories-Dnyu2-gz.js";function C(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(s,{of:b,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BaXmcmyl.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-BmNU_R5E.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x,u as S}from"./ODataMultiSelect.stories-xodpVftn.js";function C(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(s,{of:b,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,T.jsx)(u,{children:`ODataMultiSelect`}),`
3
3
  `,(0,T.jsx)(o,{children:`Мультиселект с загрузкой коллекций по OData и зависимостями от внешних фильтров`}),`
4
4
  `,(0,T.jsx)(t.p,{children:`ODataMultiSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -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-D0R9pFj7.js";import{a as i,s as a,t as o}from"./odata-tqjAk19x.js";import{n as s,t as c}from"./createControlledStoryRender-BouhvX-R.js";import{a as l,i as u,n as d,r as f,t as p}from"./useODataSelectBase-CC4MnYeK.js";import{n as m,t as h}from"./MultiSelect-CTfbXQVD.js";import{a as g,c as _,i as v,l as y,n as b,o as x,r as S,s as C,t as w,u as T}from"./odataStoryFixtures-D2yHs_jK.js";function E({odata:e,segment:t,model:n,value:r,dependencies:i,onChange:a}){let o=f({odata:e,segment:t,model:n,value:r,dependencies:i}),s=e=>{a(d(e,o.selectionKey))};return{...o,handleChange:s}}function D(){return(D=e((()=>{p()})))()}var O,k;function A(){return(A=e((()=>{n(),i(),D(),m(),O=r(),k=({odata:e,segment:t,model:n,label:r,description:i,disabled:o,value:s,dependencies:c,onChange:l,size:u})=>{let d=E({odata:e,segment:t,model:a(n),value:s,dependencies:c,onChange:l});return(0,O.jsx)(h,{label:r,description:i,size:u,codeKey:d.codeKey,textKey:d.textKey,hideCode:t.hideCode??e.hideCode,items:d.filteredItems,value:d.selectedItems,onChange:d.handleChange,onQuery:d.setQuery,query:d.query,defaultFilter:!1,highlightQuery:d.debouncedQuery,isLoading:d.isLoading,disabled:o,placeholder:d.placeholder,error:d.isError?`Ошибка загрузки`:void 0})},k.__docgenInfo={description:``,methods:[],displayName:`ODataMultiSelect`}})))()}function j(e){let{item:t,disabled:n,label:r,description:i,size:a,width:o=15}=e,s=l(e),{updateSegment:c}=s,u=`calc(${o}em + var(--width-add))`,d=(0,M.useCallback)(e=>{c(t.id,e)},[t.id,c]);return(0,N.jsx)(`div`,{style:{maxWidth:u,minWidth:u},children:(0,N.jsx)(k,{odata:t.odata,segment:t.segment,model:t.model,dependencies:s.values,value:s.values[t.id],onChange:d,disabled:n||s.isSegmentDisabled(t.id),label:r,description:i,size:a})})}var M,N;function P(){return(P=e((()=>{M=n(),u(),A(),N=r(),j.__docgenInfo={description:``,methods:[],displayName:`ODataDependentSegmentMultiSelect`,props:{values:{required:!1,tsType:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},description:`Внешний снимок значений. При наличии включает controlled-режим.`},defaultValues:{required:!1,tsType:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},description:`Начальный снимок для uncontrolled-режима.`},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(values: ODataDependentSelectionValues) => void`,signature:{arguments:[{type:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},name:`values`}],return:{name:`void`}}},description:`Получает полный снимок после каждого изменения сегмента.`},item:{required:!0,tsType:{name:`ODataDependentSegmentItem`},description:`Развёрнутое описание конкретного OData-сегмента.`},disabled:{required:!1,tsType:{name:`boolean`},description:`Дополнительная внешняя блокировка поверх sequential-policy.`},label:{required:!1,tsType:{name:`ReactNode`},description:`Заголовок поля.`},description:{required:!1,tsType:{name:`string`},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:`Размер базового Select или MultiSelect.`},width:{required:!1,tsType:{name:`number`},description:`Ширина элемента в \`em\` без служебной добавки базового input.
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-BaXmcmyl.js";import{a as i,s as a,t as o}from"./odata-Brls3R5b.js";import{n as s,t as c}from"./createControlledStoryRender-BouhvX-R.js";import{a as l,i as u,n as d,r as f,t as p}from"./useODataSelectBase-DxsvigTC.js";import{n as m,t as h}from"./MultiSelect-Bl3q6kCP.js";import{a as g,c as _,i as v,l as y,n as b,o as x,r as S,s as C,t as w,u as T}from"./odataStoryFixtures-BmQo4rAJ.js";function E({odata:e,segment:t,model:n,value:r,dependencies:i,onChange:a}){let o=f({odata:e,segment:t,model:n,value:r,dependencies:i}),s=e=>{a(d(e,o.selectionKey))};return{...o,handleChange:s}}function D(){return(D=e((()=>{p()})))()}var O,k;function A(){return(A=e((()=>{n(),i(),D(),m(),O=r(),k=({odata:e,segment:t,model:n,label:r,description:i,disabled:o,value:s,dependencies:c,onChange:l,size:u})=>{let d=E({odata:e,segment:t,model:a(n),value:s,dependencies:c,onChange:l});return(0,O.jsx)(h,{label:r,description:i,size:u,codeKey:d.codeKey,textKey:d.textKey,hideCode:t.hideCode??e.hideCode,items:d.filteredItems,value:d.selectedItems,onChange:d.handleChange,onQuery:d.setQuery,query:d.query,defaultFilter:!1,highlightQuery:d.debouncedQuery,isLoading:d.isLoading,disabled:o,placeholder:d.placeholder,error:d.isError?`Ошибка загрузки`:void 0})},k.__docgenInfo={description:``,methods:[],displayName:`ODataMultiSelect`}})))()}function j(e){let{item:t,disabled:n,label:r,description:i,size:a,width:o=15}=e,s=l(e),{updateSegment:c}=s,u=`calc(${o}em + var(--width-add))`,d=(0,M.useCallback)(e=>{c(t.id,e)},[t.id,c]);return(0,N.jsx)(`div`,{style:{maxWidth:u,minWidth:u},children:(0,N.jsx)(k,{odata:t.odata,segment:t.segment,model:t.model,dependencies:s.values,value:s.values[t.id],onChange:d,disabled:n||s.isSegmentDisabled(t.id),label:r,description:i,size:a})})}var M,N;function P(){return(P=e((()=>{M=n(),u(),A(),N=r(),j.__docgenInfo={description:``,methods:[],displayName:`ODataDependentSegmentMultiSelect`,props:{values:{required:!1,tsType:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},description:`Внешний снимок значений. При наличии включает controlled-режим.`},defaultValues:{required:!1,tsType:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},description:`Начальный снимок для uncontrolled-режима.`},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(values: ODataDependentSelectionValues) => void`,signature:{arguments:[{type:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},name:`values`}],return:{name:`void`}}},description:`Получает полный снимок после каждого изменения сегмента.`},item:{required:!0,tsType:{name:`ODataDependentSegmentItem`},description:`Развёрнутое описание конкретного OData-сегмента.`},disabled:{required:!1,tsType:{name:`boolean`},description:`Дополнительная внешняя блокировка поверх sequential-policy.`},label:{required:!1,tsType:{name:`ReactNode`},description:`Заголовок поля.`},description:{required:!1,tsType:{name:`string`},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:`Размер базового Select или MultiSelect.`},width:{required:!1,tsType:{name:`number`},description:`Ширина элемента в \`em\` без служебной добавки базового input.
2
2
 
3
3
  @default 15`}}}})))()}var F=t({BasicDivision:()=>U,CollectionError:()=>X,HideCode:()=>W,LinkedFilters:()=>q,LoadingState:()=>J,MetadataError:()=>Y,SelectTextValue:()=>G,StaticDependency:()=>K,__namedExportsOrder:()=>Z,default:()=>H});function I({args:e,updateArgs:t}){return(0,R.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,R.jsx)(k,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,R.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,e.value.length?e.value.join(`, `):`пусто`]})]})}function L(){let e=l({selectionMode:`sequential`,segmentOrder:B});return(0,R.jsxs)(`div`,{style:{display:`grid`,gap:16,maxWidth:720},children:[z.map((t,n)=>(0,R.jsx)(j,{item:t,values:e.values,onChange:e.updateValues,selectionMode:`sequential`,segmentOrder:B,label:t.segment.placeholder,description:n===0?`Первый уровень доступен сразу.`:`Уровень включается после заполнения всего предыдущего пути.`,width:30},t.id)),(0,R.jsx)(`div`,{style:{display:`grid`,gap:4,fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:(0,R.jsxs)(`div`,{children:[`Общий снимок: `,JSON.stringify(e.values)]})})]})}var R,z,B,V,H,U,W,G,K,q,J,Y,X,Z;function Q(){return(Q=e((()=>{i(),s(),u(),v(),P(),A(),R=r(),z=o([{odata:b,segments:_,model:w}]),B=z.map(e=>e.id),V=c((e,t)=>(0,R.jsx)(I,{args:e,updateArgs:t})),H={title:`UI/ODataMultiSelect`,component:k,decorators:[T],beforeEach:g,parameters:{atomicCanvas:!0,layout:`padded`,odataMockMode:`success`},args:{label:`Регион`,description:`Пример OData MultiSelect на основе конфигурации ui control.`,odata:b,model:w,segment:S,value:[],onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},odata:{description:`Конфигурация OData-источника.`,control:!1},model:{description:`Модель OData-коллекции и codeKey.`,control:!1},segment:{description:`Конфигурация отображения сегмента.`,control:!1},dependencies:{description:`Выбранные значения upstream-сегментов.`,control:!1},value:{description:`Контролируемый набор выбранных кодов или текстов.`,control:!1},onChange:{description:`Вызывается с новым набором выбранных значений.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},U={name:`Базовый регион`,render:V,args:{label:`Регион`,description:`Базовая настройка из multiSelectConfig: выбор кодов REGION с текстовым отображением.`,model:{...w,codeKey:`REGION`},segment:{placeholder:`Регион`},value:[C.region]}},W={name:`Скрытый код`,render:V,args:{label:`Подразделение`,description:`Сценарий segment.hideCode: в списке и токене показывается только текст без кода.`,model:{...w,codeKey:`BRANCH`},segment:{placeholder:`Подразделение`,hideCode:!0},value:[C.branch,C.branchAlt]}},G={name:`Выбор текста вместо кода`,render:V,args:{label:`Регион по тексту`,description:`Сценарий segment.selectText: наружу возвращаются текстовые значения, а не коды.`,model:{...w,codeKey:`REGION`},segment:{placeholder:`Регион`,selectText:!0},value:[C.regionText]}},K={name:`Зависимость от региона`,render:V,args:{label:`Подразделение c зависимостью`,description:`Фильтрация подразделений по уже выбранному региону через props.dependencies.`,model:{...w,codeKey:`BRANCH`},segment:{placeholder:`Подразделение`},dependencies:{REGION:[C.region]},value:[C.branch]}},q={name:`Связанная цепочка фильтров`,render:()=>(0,R.jsx)(L,{})},J={name:`Состояние загрузки`,parameters:{odataMockMode:`loading`},render:V,args:{odata:x.loading,label:`Команда`,description:`Mock с задержкой ответа, чтобы проверить loading-state и skeleton.`,model:{...w,codeKey:`TEAM`},segment:{placeholder:`Команда`}}},Y={name:`Ошибка metadata`,decorators:[y],parameters:{odataMockMode:`metadataError`},render:V,args:{odata:x.metadataError,label:`Регион`,description:`Сервис возвращает ошибку metadata. Полезно для проверки поведения хука useODataEntity.`,model:{...w,codeKey:`REGION`},segment:{placeholder:`Регион`}}},X={name:`Деградация при ошибке коллекции`,parameters:{odataMockMode:`collectionError`},render:V,args:{odata:x.collectionError,label:`Ответственный`,description:`Transport возвращает 500, а текущий API-контракт безопасно показывает пустой список.`,model:{...w,codeKey:`OWNER`},segment:{placeholder:`Ответственный`}}},U.parameters={...U.parameters,docs:{...U.parameters?.docs,source:{originalSource:`{
4
4
  name: "Базовый регион",
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-D0R9pFj7.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-Bu5I-6jJ.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x,u as S}from"./ODataSelect.stories-DfK9yHK7.js";function C(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(s,{of:b,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BaXmcmyl.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-BmNU_R5E.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x,u as S}from"./ODataSelect.stories-nr7GqOTz.js";function C(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(s,{of:b,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,T.jsx)(u,{children:`ODataSelect`}),`
3
3
  `,(0,T.jsx)(o,{children:`Single-select с загрузкой OData-справочника, поиском и зависимостями от внешних фильтров`}),`
4
4
  `,(0,T.jsx)(t.p,{children:`ODataSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -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-D0R9pFj7.js";import{a as i,s as a,t as o}from"./odata-tqjAk19x.js";import{a as s,i as c}from"./utils-tg3ibbzi.js";import{a as l,c as u,l as d,o as f,s as p,u as m}from"./OptionButton-DrNo-DMV.js";import{n as h,t as g}from"./createControlledStoryRender-BouhvX-R.js";import{c as _,l as v}from"./Input-BO9q-b1i.js";import{n as ee,t as te}from"./Select-BCGnO525.js";import{a as y,i as b,r as ne,t as re}from"./useODataSelectBase-CC4MnYeK.js";import{a as ie,c as ae,i as oe,l as se,n as x,o as S,r as ce,s as C,t as w,u as le}from"./odataStoryFixtures-D2yHs_jK.js";function ue({odata:e,segment:t,model:n,value:r,dependencies:i,onChange:a}){let o=ne({odata:e,segment:t,model:n,value:r?[r]:[],dependencies:i}),s=o.selectedItems[0],c=(0,T.useMemo)(()=>s?[s,...o.filteredItems]:o.filteredItems,[o.filteredItems,s]),l=e=>{a(e?.[o.selectionKey])};return{...o,selectedItem:s,options:c,handleChange:l}}var T;function E(){return(E=e((()=>{T=n(),re()})))()}function D({label:e,code:t,highlight:n,labelClassName:r,codeClassName:i}){return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(l,{className:s(`flexEllipsis`,r),children:(0,O.jsx)(d,{text:e,highlight:n})}),t&&(0,O.jsx)(p,{className:i,children:(0,O.jsx)(d,{text:t,highlight:n})})]})}var O;function k(){return(k=e((()=>{c(),u(),f(),m(),O=r(),D.__docgenInfo={description:`Универсальный рендерер опции. Используется и в single-select, и в multi-select.`,methods:[],displayName:`SelectOptionContent`,props:{label:{required:!0,tsType:{name:`string`},description:``},code:{required:!1,tsType:{name:`string`},description:``},highlight:{required:!1,tsType:{name:`string`},description:``},labelClassName:{required:!1,tsType:{name:`string`},description:`Приватный визуальный modifier label для специализированного владельца option.`},codeClassName:{required:!1,tsType:{name:`string`},description:`Отдельный modifier code, потому что code задаёт собственный variable-font weight.`}}}})))()}function A(e,t,n){return e?t||Object.keys(e).find(e=>e!==n)||n:t||n}var j,M;function N(){return(N=e((()=>{n(),i(),v(),E(),ee(),k(),j=r(),M=({odata:e,segment:t,model:n,size:r,label:i,description:o,disabled:s,value:c,dependencies:l,onChange:u,clearable:d})=>{let f=ue({odata:e,segment:t,model:a(n),value:c,dependencies:l,onChange:u});if(f.isLoading)return(0,j.jsx)(_,{size:r,label:i,description:o});let p=t.hideCode??e.hideCode,m=A(f.selectedItem??f.options[0],f.textKey,f.codeKey);return(0,j.jsx)(te,{size:r,label:i,description:o,options:f.options,value:f.selectedItem,onChange:f.handleChange,getOptionKey:e=>e[f.codeKey],getOptionLabel:e=>e[m],getOptionCode:p?void 0:e=>e[f.codeKey],getOptionAriaLabel:e=>p||e[m]===e[f.codeKey]?String(e[m]):`${e[m]} ${e[f.codeKey]}`,renderValue:e=>(0,j.jsx)(D,{label:e[m],code:p?void 0:e[f.codeKey]}),renderOption:e=>(0,j.jsx)(D,{label:e[m],code:p?void 0:e[f.codeKey],highlight:f.debouncedQuery}),searchable:!0,query:f.query,onQuery:f.setQuery,defaultFilter:!1,disabled:s||f.isLoading,placeholder:f.placeholder,isLoading:f.isLoading,errorState:f.isError?`Ошибка загрузки`:void 0,emptyState:!f.isLoading&&!f.isError?`Нет данных`:void 0,clearable:d})},M.__docgenInfo={description:``,methods:[],displayName:`ODataSelect`,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:``},clearable:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function P(e){let{item:t,disabled:n,label:r,description:i,size:a,width:o=15,clearable:s}=e,c=y(e),{updateSegment:l}=c,u=`calc(${o}em + var(--width-add))`,d=(0,F.useCallback)(e=>{l(t.id,e===void 0?[]:[e])},[t.id,l]);return(0,I.jsx)(`div`,{style:{maxWidth:u,minWidth:u},children:(0,I.jsx)(M,{odata:t.odata,segment:t.segment,model:t.model,dependencies:c.values,value:c.values[t.id]?.[0],onChange:d,disabled:n||c.isSegmentDisabled(t.id),label:r,description:i,size:a,clearable:s})})}var F,I;function L(){return(L=e((()=>{F=n(),b(),N(),I=r(),P.__docgenInfo={description:`Адаптирует один развёрнутый зависимый OData-сегмент к single-select UI.
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-BaXmcmyl.js";import{a as i,s as a,t as o}from"./odata-Brls3R5b.js";import{a as s,i as c}from"./utils-tg3ibbzi.js";import{a as l,c as u,l as d,o as f,s as p,u as m}from"./OptionButton-v-MO3VgJ.js";import{n as h,t as g}from"./createControlledStoryRender-BouhvX-R.js";import{c as _,l as v}from"./Input-95LKm7aK.js";import{n as ee,t as te}from"./Select-CwNDJSmq.js";import{a as y,i as b,r as ne,t as re}from"./useODataSelectBase-DxsvigTC.js";import{a as ie,c as ae,i as oe,l as se,n as x,o as S,r as ce,s as C,t as w,u as le}from"./odataStoryFixtures-BmQo4rAJ.js";function ue({odata:e,segment:t,model:n,value:r,dependencies:i,onChange:a}){let o=ne({odata:e,segment:t,model:n,value:r?[r]:[],dependencies:i}),s=o.selectedItems[0],c=(0,T.useMemo)(()=>s?[s,...o.filteredItems]:o.filteredItems,[o.filteredItems,s]),l=e=>{a(e?.[o.selectionKey])};return{...o,selectedItem:s,options:c,handleChange:l}}var T;function E(){return(E=e((()=>{T=n(),re()})))()}function D({label:e,code:t,highlight:n,labelClassName:r,codeClassName:i}){return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(l,{className:s(`flexEllipsis`,r),children:(0,O.jsx)(d,{text:e,highlight:n})}),t&&(0,O.jsx)(p,{className:i,children:(0,O.jsx)(d,{text:t,highlight:n})})]})}var O;function k(){return(k=e((()=>{c(),u(),f(),m(),O=r(),D.__docgenInfo={description:`Универсальный рендерер опции. Используется и в single-select, и в multi-select.`,methods:[],displayName:`SelectOptionContent`,props:{label:{required:!0,tsType:{name:`string`},description:``},code:{required:!1,tsType:{name:`string`},description:``},highlight:{required:!1,tsType:{name:`string`},description:``},labelClassName:{required:!1,tsType:{name:`string`},description:`Приватный визуальный modifier label для специализированного владельца option.`},codeClassName:{required:!1,tsType:{name:`string`},description:`Отдельный modifier code, потому что code задаёт собственный variable-font weight.`}}}})))()}function A(e,t,n){return e?t||Object.keys(e).find(e=>e!==n)||n:t||n}var j,M;function N(){return(N=e((()=>{n(),i(),v(),E(),ee(),k(),j=r(),M=({odata:e,segment:t,model:n,size:r,label:i,description:o,disabled:s,value:c,dependencies:l,onChange:u,clearable:d})=>{let f=ue({odata:e,segment:t,model:a(n),value:c,dependencies:l,onChange:u});if(f.isLoading)return(0,j.jsx)(_,{size:r,label:i,description:o});let p=t.hideCode??e.hideCode,m=A(f.selectedItem??f.options[0],f.textKey,f.codeKey);return(0,j.jsx)(te,{size:r,label:i,description:o,options:f.options,value:f.selectedItem,onChange:f.handleChange,getOptionKey:e=>e[f.codeKey],getOptionLabel:e=>e[m],getOptionCode:p?void 0:e=>e[f.codeKey],getOptionAriaLabel:e=>p||e[m]===e[f.codeKey]?String(e[m]):`${e[m]} ${e[f.codeKey]}`,renderValue:e=>(0,j.jsx)(D,{label:e[m],code:p?void 0:e[f.codeKey]}),renderOption:e=>(0,j.jsx)(D,{label:e[m],code:p?void 0:e[f.codeKey],highlight:f.debouncedQuery}),searchable:!0,query:f.query,onQuery:f.setQuery,defaultFilter:!1,disabled:s||f.isLoading,placeholder:f.placeholder,isLoading:f.isLoading,errorState:f.isError?`Ошибка загрузки`:void 0,emptyState:!f.isLoading&&!f.isError?`Нет данных`:void 0,clearable:d})},M.__docgenInfo={description:``,methods:[],displayName:`ODataSelect`,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:``},clearable:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function P(e){let{item:t,disabled:n,label:r,description:i,size:a,width:o=15,clearable:s}=e,c=y(e),{updateSegment:l}=c,u=`calc(${o}em + var(--width-add))`,d=(0,F.useCallback)(e=>{l(t.id,e===void 0?[]:[e])},[t.id,l]);return(0,I.jsx)(`div`,{style:{maxWidth:u,minWidth:u},children:(0,I.jsx)(M,{odata:t.odata,segment:t.segment,model:t.model,dependencies:c.values,value:c.values[t.id]?.[0],onChange:d,disabled:n||c.isSegmentDisabled(t.id),label:r,description:i,size:a,clearable:s})})}var F,I;function L(){return(L=e((()=>{F=n(),b(),N(),I=r(),P.__docgenInfo={description:`Адаптирует один развёрнутый зависимый OData-сегмент к single-select UI.
2
2
  Общий снимок остаётся массивным, поэтому совместим с \`dependencies\` и
3
3
  может совместно использоваться с segment-level MultiSelect-контролами.`,methods:[],displayName:`ODataDependentSegmentSelect`,props:{values:{required:!1,tsType:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},description:`Внешний снимок значений. При наличии включает controlled-режим.`},defaultValues:{required:!1,tsType:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},description:`Начальный снимок для uncontrolled-режима.`},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(values: ODataDependentSelectionValues) => void`,signature:{arguments:[{type:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},name:`values`}],return:{name:`void`}}},description:`Получает полный снимок после каждого изменения сегмента.`},item:{required:!0,tsType:{name:`ODataDependentSegmentItem`},description:`Развёрнутое описание конкретного OData-сегмента.`},disabled:{required:!1,tsType:{name:`boolean`},description:`Дополнительная внешняя блокировка поверх sequential-policy.`},label:{required:!1,tsType:{name:`ReactNode`},description:`Заголовок поля.`},description:{required:!1,tsType:{name:`string`},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:`Размер базового Select или MultiSelect.`},width:{required:!1,tsType:{name:`number`},description:`Ширина элемента в \`em\` без служебной добавки базового input.
4
4
 
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-D0R9pFj7.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-Bu5I-6jJ.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x}from"./ODataTreeMultiSelect.stories-Dv0-ackb.js";function S(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s,{of:b,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BaXmcmyl.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-BmNU_R5E.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x}from"./ODataTreeMultiSelect.stories-Baxtdxte.js";function S(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s,{of:b,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,w.jsx)(u,{children:`ODataTreeMultiSelect`}),`
3
3
  `,(0,w.jsx)(o,{children:`Мультивыбор по одной OData-цепочке в виде дерева`}),`
4
4
  `,(0,w.jsxs)(t.p,{children:[(0,w.jsx)(t.code,{children:`ODataTreeMultiSelect`}),` строит дерево из одной OData-цепочки и отдает наружу канонизированный выбор в формате `,(0,w.jsx)(t.code,{children:`Record<string, string[]>`}),`.`]}),`
@@ -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-D0R9pFj7.js";import{n as i,t as a}from"./createControlledStoryRender-BouhvX-R.js";import{n as o,t as s}from"./TreeMultiSelect-BpuHCHgJ.js";import{n as c,t as l}from"./useODataTreeData-DsQmGQij.js";import{a as u,c as d,i as f,l as p,n as m,o as h,s as g,u as _}from"./odataStoryFixtures-D2yHs_jK.js";function v({label:e,description:t,disabled:n,size:r,placeholder:i,query:a,defaultQuery:o,onQuery:l,optionsLayout:u,value:d,onChange:f,odata:p,segments:m,model:h,defaultExpandedCodeKeys:g,segmentOrder:_,allowEmptyCodeKeys:v,transformNodes:x}){let S=c({odata:p,segments:m,model:h,segmentOrder:_,allowEmptyCodeKeys:v}),C=(0,y.useMemo)(()=>x?.(S.nodes,{orderedCodeKeys:S.orderedCodeKeys})??S.nodes,[x,S.nodes,S.orderedCodeKeys]);return(0,b.jsx)(s,{label:e,description:t,disabled:n||S.isLoading,size:r,placeholder:i??S.placeholder,nodes:C,value:d,onChange:f,query:a,defaultQuery:o,onQuery:l,optionsLayout:u,defaultExpandedCodeKeys:g,isLoading:S.isLoading,error:S.isError?`Ошибка загрузки`:void 0})}var y,b;function x(){return(x=e((()=>{y=n(),l(),o(),b=r(),v.__docgenInfo={description:``,methods:[],displayName:`ODataTreeMultiSelect`,props:{model:{required:!1,tsType:{name:`ODataDependentBaseProps["model"]`,raw:`ODataDependentBaseProps["model"]`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:`Переключает способ показа загруженного OData-дерева, не меняя формат value и запросов.`},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи OData-уровней, раскрываемых после появления загруженных узлов.\nВ режиме `columns` дерево по-прежнему отображается полностью раскрытым."},segmentOrder:{required:!1,tsType:{name:`unknown`},description:`Явный порядок уровней поверх порядка, автоматически полученного из metadata-chain.`},allowEmptyCodeKeys:{required:!1,tsType:{name:`unknown`},description:`Уровни, на которых пустой код не обрывает последующие уровни дерева.`},transformNodes:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(
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-BaXmcmyl.js";import{n as i,t as a}from"./createControlledStoryRender-BouhvX-R.js";import{n as o,t as s}from"./TreeMultiSelect-BKF7COzn.js";import{n as c,t as l}from"./useODataTreeData-Dzxb75-h.js";import{a as u,c as d,i as f,l as p,n as m,o as h,s as g,u as _}from"./odataStoryFixtures-BmQo4rAJ.js";function v({label:e,description:t,disabled:n,size:r,placeholder:i,query:a,defaultQuery:o,onQuery:l,optionsLayout:u,value:d,onChange:f,odata:p,segments:m,model:h,defaultExpandedCodeKeys:g,segmentOrder:_,allowEmptyCodeKeys:v,transformNodes:x}){let S=c({odata:p,segments:m,model:h,segmentOrder:_,allowEmptyCodeKeys:v}),C=(0,y.useMemo)(()=>x?.(S.nodes,{orderedCodeKeys:S.orderedCodeKeys})??S.nodes,[x,S.nodes,S.orderedCodeKeys]);return(0,b.jsx)(s,{label:e,description:t,disabled:n||S.isLoading,size:r,placeholder:i??S.placeholder,nodes:C,value:d,onChange:f,query:a,defaultQuery:o,onQuery:l,optionsLayout:u,defaultExpandedCodeKeys:g,isLoading:S.isLoading,error:S.isError?`Ошибка загрузки`:void 0})}var y,b;function x(){return(x=e((()=>{y=n(),l(),o(),b=r(),v.__docgenInfo={description:``,methods:[],displayName:`ODataTreeMultiSelect`,props:{model:{required:!1,tsType:{name:`ODataDependentBaseProps["model"]`,raw:`ODataDependentBaseProps["model"]`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:`Переключает способ показа загруженного OData-дерева, не меняя формат value и запросов.`},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи OData-уровней, раскрываемых после появления загруженных узлов.\nВ режиме `columns` дерево по-прежнему отображается полностью раскрытым."},segmentOrder:{required:!1,tsType:{name:`unknown`},description:`Явный порядок уровней поверх порядка, автоматически полученного из metadata-chain.`},allowEmptyCodeKeys:{required:!1,tsType:{name:`unknown`},description:`Уровни, на которых пустой код не обрывает последующие уровни дерева.`},transformNodes:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(
2
2
  nodes: readonly TreeSelectNode[],
3
3
  context: ODataTreeMultiSelectNodesTransformContext
4
4
  ) => readonly TreeSelectNode[]`,signature:{arguments:[{type:{name:`unknown`},name:`nodes`},{type:{name:`signature`,type:`object`,raw:`{
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-D0R9pFj7.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-Bu5I-6jJ.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./ODataTreeSelect.stories-D4mZcW9Z.js";function b(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BaXmcmyl.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-BmNU_R5E.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./ODataTreeSelect.stories-n6LATF6z.js";function b(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,S.jsx)(u,{children:`ODataTreeSelect`}),`
3
3
  `,(0,S.jsx)(o,{children:`Single-select по одной OData-цепочке в виде дерева`}),`
4
4
  `,(0,S.jsxs)(t.p,{children:[(0,S.jsx)(t.code,{children:`ODataTreeSelect`}),` загружает одну OData-коллекцию, строит дерево по цепочке codeKey и позволяет выбрать любой узел.`]}),`
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-D0R9pFj7.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./useODataTreeData-DsQmGQij.js";import{n as s,t as c}from"./TreeSelect-DvAlRur3.js";import{a as l,c as u,i as d,l as f,n as p,o as m,s as h,u as g}from"./odataStoryFixtures-D2yHs_jK.js";function _({label:e,description:t,disabled:n,size:r,placeholder:i,query:o,defaultQuery:s,onQuery:l,value:u,onChange:d,odata:f,segments:p,model:m,clearable:h,defaultExpandedCodeKeys:g}){let _=a({odata:f,segments:p,model:m});return(0,v.jsx)(c,{label:e,description:t,disabled:n||_.isLoading,size:r,placeholder:i??_.placeholder,nodes:_.nodes,value:u,onChange:d,query:o,defaultQuery:s,onQuery:l,defaultExpandedCodeKeys:g,isLoading:_.isLoading,error:_.isError?`Ошибка загрузки`:void 0,clearable:h})}var v;function y(){return(y=e((()=>{o(),s(),v=n(),_.__docgenInfo={description:``,methods:[],displayName:`ODataTreeSelect`,props:{model:{required:!1,tsType:{name:`ODataDependentBaseProps["model"]`,raw:`ODataDependentBaseProps["model"]`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:`Ключи OData-уровней, раскрываемых после появления загруженных узлов.
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-BaXmcmyl.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./useODataTreeData-Dzxb75-h.js";import{n as s,t as c}from"./TreeSelect-ClJGLBA8.js";import{a as l,c as u,i as d,l as f,n as p,o as m,s as h,u as g}from"./odataStoryFixtures-BmQo4rAJ.js";function _({label:e,description:t,disabled:n,size:r,placeholder:i,query:o,defaultQuery:s,onQuery:l,value:u,onChange:d,odata:f,segments:p,model:m,clearable:h,defaultExpandedCodeKeys:g}){let _=a({odata:f,segments:p,model:m});return(0,v.jsx)(c,{label:e,description:t,disabled:n||_.isLoading,size:r,placeholder:i??_.placeholder,nodes:_.nodes,value:u,onChange:d,query:o,defaultQuery:s,onQuery:l,defaultExpandedCodeKeys:g,isLoading:_.isLoading,error:_.isError?`Ошибка загрузки`:void 0,clearable:h})}var v;function y(){return(y=e((()=>{o(),s(),v=n(),_.__docgenInfo={description:``,methods:[],displayName:`ODataTreeSelect`,props:{model:{required:!1,tsType:{name:`ODataDependentBaseProps["model"]`,raw:`ODataDependentBaseProps["model"]`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:`Ключи OData-уровней, раскрываемых после появления загруженных узлов.
2
2
  Настройка влияет только на представление и не изменяет OData-запросы.`}},composes:[`Omit`]}})))()}var b=t({Basic:()=>T,ErrorState:()=>k,LoadingState:()=>O,OnlySecondLevelExpanded:()=>D,SelectParent:()=>E,__namedExportsOrder:()=>A,default:()=>w});function x({args:e,updateArgs:t}){return(0,S.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,S.jsx)(_,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,S.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,e.value?`${e.value.codeKey}=${e.value.value}`:`пусто`]})]})}var S,C,w,T,E,D,O,k,A;function j(){return(j=e((()=>{r(),d(),y(),S=n(),C=i((e,t)=>(0,S.jsx)(x,{args:e,updateArgs:t})),w={title:`UI/ODataTreeSelect`,component:_,decorators:[g],beforeEach:l,parameters:{atomicCanvas:!0,layout:`padded`,odataMockMode:`success`},args:{label:`OData дерево`,description:`Single-select поверх одной OData-цепочки.`,odata:p,segments:u,value:void 0,onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст без выбранного узла.`,control:`text`},odata:{description:`Конфигурация OData-источника.`,control:!1},segments:{description:`Конфигурация уровней OData-дерева.`,control:!1},model:{description:`Опциональная модель OData-коллекции.`,control:!1},value:{description:`Выбранный узел в формате codeKey/value.`,control:!1},onChange:{description:`Вызывается при выборе узла.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},clearable:{description:`Показывает действие очистки выбора.`,control:`boolean`},defaultExpandedCodeKeys:{description:`Ключи уровней, раскрываемых после загрузки.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},T={render:C,args:{value:{codeKey:`OWNER`,value:h.owner}}},E={render:C,args:{label:`Выбор родителя`,description:`Проверка выбора узла верхнего уровня из OData-дерева.`,value:{codeKey:`REGION`,value:h.region}}},D={render:C,args:{label:`Раскрывается только второй уровень`,description:`REGION остаётся закрытым. После его ручного открытия узлы BRANCH уже раскрыты по умолчанию.`,defaultExpandedCodeKeys:[`BRANCH`]}},O={parameters:{odataMockMode:`loading`},render:C,args:{odata:m.loading,description:`Сценарий загрузки дерева.`}},k={decorators:[f],parameters:{odataMockMode:`metadataError`},render:C,args:{odata:m.metadataError,description:`Сценарий ошибки metadata дерева.`}},T.parameters={...T.parameters,docs:{...T.parameters?.docs,source:{originalSource:`{
3
3
  render: renderODataTreeSelectStory,
4
4
  args: {
@@ -1,4 +1,4 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./chevron-left-CTLa8HIb.js";import{n as a,t as o}from"./chevron-right-D_c_Cvi0.js";import{n as s}from"./iframe-D0R9pFj7.js";import{a as c,i as l}from"./utils-tg3ibbzi.js";var u,d,f,p,m;function h(){return(h=t((()=>{u=`_7xUQBN`,d=`AonLqg`,f=`j-5yFn`,p=`pOIq63`,m={oneStepScroller:u,ossViewport:d,ossScroller:f,ossButton:p}})))()}function g(e){return Math.max(0,e.scrollWidth-e.clientWidth)}var _,v,y,b;function x(){return(x=t((()=>{_=e(n(),1),l(),r(),a(),h(),v=s(),y=1,b=({children:e,className:t,itemSelector:n,scrollPadding:r=6,smooth:a=!0})=>{let s=(0,_.useRef)(null),l=(0,_.useRef)(null),[u,d]=(0,_.useState)(!1),[f,p]=(0,_.useState)(!1),h=(0,_.useCallback)(()=>{let e=s.current;return e?n?Array.from(e.querySelectorAll(n)):Array.from(e.children).filter(e=>e instanceof HTMLElement):[]},[n]),b=(0,_.useCallback)(e=>{let t=s.current;if(!t)return null;if(n){let r=e.closest(n);return r&&t.contains(r)?r:null}let r=e;for(;r&&r.parentElement&&r.parentElement!==t;)r=r.parentElement;return r&&r.parentElement===t?r:null},[n]),x=(0,_.useCallback)(()=>{let e=s.current;if(!e){d(!1),p(!1);return}let t=Math.max(0,e.scrollWidth-e.clientWidth),n=Math.max(0,Math.min(e.scrollLeft,t)),r=n>y,i=n<t-y;d(e=>e===r?e:r),p(e=>e===i?e:i)},[]),S=(0,_.useCallback)(()=>{l.current===null&&(l.current=requestAnimationFrame(()=>{l.current=null,x()}))},[x]),C=(0,_.useCallback)(e=>{let t=s.current;if(!t)return;let n=h()[0];if(!n)return;let r=n.getBoundingClientRect().width;if(!r)return;let i=Math.round(e*r),o=Math.max(0,t.scrollWidth-t.clientWidth),c=Math.max(0,Math.min(t.scrollLeft+i,o));t.scrollTo({left:c,behavior:a?`smooth`:`auto`})},[h,a]),w=(0,_.useCallback)(e=>{let t=s.current;if(!t)return;let n=t.getBoundingClientRect(),i=e.getBoundingClientRect(),o=i.left-n.left+t.scrollLeft,c=o+i.width,l=t.scrollLeft,u=t.scrollLeft+t.clientWidth;if(o>=l+y&&c<=u-y)return;let d=t.scrollLeft;o<l?d=Math.max(0,o-r):c>u&&(d=Math.min(g(t),c-t.clientWidth+r)),t.scrollTo({left:Math.round(d),behavior:a?`smooth`:`auto`})},[r,a]);(0,_.useEffect)(()=>{let e=s.current;if(!e)return;let t=e=>{let t=e.target;if(!(t instanceof HTMLElement))return;let n=b(t);n&&w(n)};return e.addEventListener(`focusin`,t),()=>e.removeEventListener(`focusin`,t)},[w,b]),(0,_.useEffect)(()=>{let e=s.current;if(!e)return;let t=()=>S();e.addEventListener(`scroll`,t,{passive:!0});let n=null;typeof ResizeObserver<`u`&&(n=new ResizeObserver(S),n.observe(e));let r=null;return typeof MutationObserver<`u`&&(r=new MutationObserver(S),r.observe(e,{childList:!0,subtree:!1})),S(),()=>{e.removeEventListener(`scroll`,t),n?.disconnect(),r?.disconnect(),l.current!==null&&(cancelAnimationFrame(l.current),l.current=null)}},[S]),(0,_.useEffect)(()=>{S()},[e,S]);let T=()=>C(-1),E=()=>C(1),D=e=>{e.key===`ArrowLeft`?(e.preventDefault(),T()):e.key===`ArrowRight`&&(e.preventDefault(),E())},O=u||f;return(0,v.jsxs)(`div`,{className:c(m.oneStepScroller,t),style:{position:`relative`},children:[O&&(0,v.jsx)(`button`,{type:`button`,"aria-label":`Прокрутить шаг влево`,className:m.ossButton,onClick:T,disabled:!u,children:(0,v.jsx)(i,{})}),(0,v.jsx)(`div`,{className:m.ossViewport,onKeyDown:D,role:`group`,"aria-label":`Элементы прокрутки`,children:(0,v.jsx)(`div`,{className:m.ossScroller,ref:s,"aria-live":`polite`,children:e})}),O&&(0,v.jsx)(`button`,{type:`button`,"aria-label":`Прокрутить шаг вправо`,className:m.ossButton,onClick:E,disabled:!f,children:(0,v.jsx)(o,{})})]})},b.__docgenInfo={description:`Горизонтальный скроллер "по одному элементу".
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./chevron-left-CaIBhYcr.js";import{n as a,t as o}from"./chevron-right-BpmEWiwv.js";import{n as s}from"./iframe-BaXmcmyl.js";import{a as c,i as l}from"./utils-tg3ibbzi.js";var u,d,f,p,m;function h(){return(h=t((()=>{u=`_7xUQBN`,d=`AonLqg`,f=`j-5yFn`,p=`pOIq63`,m={oneStepScroller:u,ossViewport:d,ossScroller:f,ossButton:p}})))()}function g(e){return Math.max(0,e.scrollWidth-e.clientWidth)}var _,v,y,b;function x(){return(x=t((()=>{_=e(n(),1),l(),r(),a(),h(),v=s(),y=1,b=({children:e,className:t,itemSelector:n,scrollPadding:r=6,smooth:a=!0})=>{let s=(0,_.useRef)(null),l=(0,_.useRef)(null),[u,d]=(0,_.useState)(!1),[f,p]=(0,_.useState)(!1),h=(0,_.useCallback)(()=>{let e=s.current;return e?n?Array.from(e.querySelectorAll(n)):Array.from(e.children).filter(e=>e instanceof HTMLElement):[]},[n]),b=(0,_.useCallback)(e=>{let t=s.current;if(!t)return null;if(n){let r=e.closest(n);return r&&t.contains(r)?r:null}let r=e;for(;r&&r.parentElement&&r.parentElement!==t;)r=r.parentElement;return r&&r.parentElement===t?r:null},[n]),x=(0,_.useCallback)(()=>{let e=s.current;if(!e){d(!1),p(!1);return}let t=Math.max(0,e.scrollWidth-e.clientWidth),n=Math.max(0,Math.min(e.scrollLeft,t)),r=n>y,i=n<t-y;d(e=>e===r?e:r),p(e=>e===i?e:i)},[]),S=(0,_.useCallback)(()=>{l.current===null&&(l.current=requestAnimationFrame(()=>{l.current=null,x()}))},[x]),C=(0,_.useCallback)(e=>{let t=s.current;if(!t)return;let n=h()[0];if(!n)return;let r=n.getBoundingClientRect().width;if(!r)return;let i=Math.round(e*r),o=Math.max(0,t.scrollWidth-t.clientWidth),c=Math.max(0,Math.min(t.scrollLeft+i,o));t.scrollTo({left:c,behavior:a?`smooth`:`auto`})},[h,a]),w=(0,_.useCallback)(e=>{let t=s.current;if(!t)return;let n=t.getBoundingClientRect(),i=e.getBoundingClientRect(),o=i.left-n.left+t.scrollLeft,c=o+i.width,l=t.scrollLeft,u=t.scrollLeft+t.clientWidth;if(o>=l+y&&c<=u-y)return;let d=t.scrollLeft;o<l?d=Math.max(0,o-r):c>u&&(d=Math.min(g(t),c-t.clientWidth+r)),t.scrollTo({left:Math.round(d),behavior:a?`smooth`:`auto`})},[r,a]);(0,_.useEffect)(()=>{let e=s.current;if(!e)return;let t=e=>{let t=e.target;if(!(t instanceof HTMLElement))return;let n=b(t);n&&w(n)};return e.addEventListener(`focusin`,t),()=>e.removeEventListener(`focusin`,t)},[w,b]),(0,_.useEffect)(()=>{let e=s.current;if(!e)return;let t=()=>S();e.addEventListener(`scroll`,t,{passive:!0});let n=null;typeof ResizeObserver<`u`&&(n=new ResizeObserver(S),n.observe(e));let r=null;return typeof MutationObserver<`u`&&(r=new MutationObserver(S),r.observe(e,{childList:!0,subtree:!1})),S(),()=>{e.removeEventListener(`scroll`,t),n?.disconnect(),r?.disconnect(),l.current!==null&&(cancelAnimationFrame(l.current),l.current=null)}},[S]),(0,_.useEffect)(()=>{S()},[e,S]);let T=()=>C(-1),E=()=>C(1),D=e=>{e.key===`ArrowLeft`?(e.preventDefault(),T()):e.key===`ArrowRight`&&(e.preventDefault(),E())},O=u||f;return(0,v.jsxs)(`div`,{className:c(m.oneStepScroller,t),style:{position:`relative`},children:[O&&(0,v.jsx)(`button`,{type:`button`,"aria-label":`Прокрутить шаг влево`,className:m.ossButton,onClick:T,disabled:!u,children:(0,v.jsx)(i,{})}),(0,v.jsx)(`div`,{className:m.ossViewport,onKeyDown:D,role:`group`,"aria-label":`Элементы прокрутки`,children:(0,v.jsx)(`div`,{className:m.ossScroller,ref:s,"aria-live":`polite`,children:e})}),O&&(0,v.jsx)(`button`,{type:`button`,"aria-label":`Прокрутить шаг вправо`,className:m.ossButton,onClick:E,disabled:!f,children:(0,v.jsx)(o,{})})]})},b.__docgenInfo={description:`Горизонтальный скроллер "по одному элементу".
2
2
 
3
3
  Ожидает элементы фиксированной ширины (или близкой к фиксированной),
4
4
  чтобы шаг скролла соответствовал ширине одного элемента.`,methods:[],displayName:`OneStepScroller`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``},itemSelector:{required:!1,tsType:{name:`string`},description:`CSS-селектор элементов, которые считаются "шагами" скролла.
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-D0R9pFj7.js";import{a as r,i}from"./utils-tg3ibbzi.js";import{n as a,t as o}from"./ui.module-31LPbZGK.js";import{n as s,t as c}from"./Grid-CzO0Ae1r.js";var l,u;function d(){return(d=e((()=>{l=t(),u=({as:e,children:t,...n})=>(0,l.createElement)(e||`div`,{...n},t),u.__docgenInfo={description:``,methods:[],displayName:`PolymorphicComponent`,props:{as:{required:!1,tsType:{name:`E`},description:``}}}})))()}var f,p;function m(){return(m=e((()=>{t(),i(),d(),f=n(),p=({as:e,orientation:t=`horizontal`,className:n,...i})=>(0,f.jsx)(u,{as:e,"aria-orientation":t,className:r(n,t===`horizontal`?`separator`:`separatorVertical`),...i}),p.__docgenInfo={description:``,methods:[],displayName:`Separator`,props:{as:{required:!1,tsType:{name:`E`},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}var h,g,_,v,y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{h=`_81qOBF`,g=`Fj-KxT`,_=`tCn0CX`,v=`pP2yXa`,y=`bupTWA`,b=`GkeyGF`,x=`_8F667e`,S=`RMwzIX`,C=`wvU2oL`,w=`efKX6F`,T=`OGMk6I`,E={popupPositioner:h,options:g,optionsToolbar:_,optionsBody:v,status:y,statusError:b,triggerContainer:x,triggerHasClear:S,selectedToken:C,selectedTokenText:w,selectionActionButton:T}})))()}function O({onSelectAll:e,onDeselectAll:t,selectAllButtonRef:n}){return(0,k.jsxs)(c.Container,{gap:`xs`,templateColumns:`1fr 1fr`,children:[(0,k.jsx)(`button`,{ref:n,type:`button`,className:E.selectionActionButton,onClick:e,"data-ui":`picker-select-all`,"data-action":`select-all`,children:`Выбрать все`}),(0,k.jsx)(`button`,{type:`button`,className:E.selectionActionButton,onClick:t,"data-ui":`picker-deselect-all`,"data-action":`deselect-all`,children:`Снять выбор`})]})}var k;function A(){return(A=e((()=>{s(),D(),k=n(),O.__docgenInfo={description:`Общая панель массовых действий для picker-компонентов с множественным выбором.
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-BaXmcmyl.js";import{a as r,i}from"./utils-tg3ibbzi.js";import{n as a,t as o}from"./ui.module-SH8ehXul.js";import{n as s,t as c}from"./Grid-CzO0Ae1r.js";var l,u;function d(){return(d=e((()=>{l=t(),u=({as:e,children:t,...n})=>(0,l.createElement)(e||`div`,{...n},t),u.__docgenInfo={description:``,methods:[],displayName:`PolymorphicComponent`,props:{as:{required:!1,tsType:{name:`E`},description:``}}}})))()}var f,p;function m(){return(m=e((()=>{t(),i(),d(),f=n(),p=({as:e,orientation:t=`horizontal`,className:n,...i})=>(0,f.jsx)(u,{as:e,"aria-orientation":t,className:r(n,t===`horizontal`?`separator`:`separatorVertical`),...i}),p.__docgenInfo={description:``,methods:[],displayName:`Separator`,props:{as:{required:!1,tsType:{name:`E`},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}var h,g,_,v,y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{h=`_81qOBF`,g=`Fj-KxT`,_=`tCn0CX`,v=`pP2yXa`,y=`bupTWA`,b=`GkeyGF`,x=`_8F667e`,S=`RMwzIX`,C=`wvU2oL`,w=`efKX6F`,T=`OGMk6I`,E={popupPositioner:h,options:g,optionsToolbar:_,optionsBody:v,status:y,statusError:b,triggerContainer:x,triggerHasClear:S,selectedToken:C,selectedTokenText:w,selectionActionButton:T}})))()}function O({onSelectAll:e,onDeselectAll:t,selectAllButtonRef:n}){return(0,k.jsxs)(c.Container,{gap:`xs`,templateColumns:`1fr 1fr`,children:[(0,k.jsx)(`button`,{ref:n,type:`button`,className:E.selectionActionButton,onClick:e,"data-ui":`picker-select-all`,"data-action":`select-all`,children:`Выбрать все`}),(0,k.jsx)(`button`,{type:`button`,className:E.selectionActionButton,onClick:t,"data-ui":`picker-deselect-all`,"data-action":`deselect-all`,children:`Снять выбор`})]})}var k;function A(){return(A=e((()=>{s(),D(),k=n(),O.__docgenInfo={description:`Общая панель массовых действий для picker-компонентов с множественным выбором.
2
2
  Компонент не знает формат значения и делегирует изменение владельцу selection-модели.`,methods:[],displayName:`PickerSelectionToolbar`,props:{onSelectAll:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onDeselectAll:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},selectAllButtonRef:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLButtonElement`}],raw:`Ref<HTMLButtonElement>`},description:``}}}})))()}function j({rootRef:e,children:t,toolbar:n,selectionActions:i,layoutClassName:a,bodyClassName:o,scrollable:s=!0,className:c,...l}){let u=n===void 0&&i?(0,M.jsx)(O,{...i}):n||null;return(0,M.jsxs)(`div`,{...l,ref:e,className:r(E.options,a,c),"data-ui":`picker-options`,"data-has-toolbar":u?`true`:void 0,children:[u?(0,M.jsxs)(`div`,{className:E.optionsToolbar,children:[u,(0,M.jsx)(p,{})]}):null,(0,M.jsx)(`div`,{className:r(E.optionsBody,s?`scrollable overscroll`:`overflowHidden`,o),children:t})]})}var M;function N(){return(N=e((()=>{i(),m(),D(),A(),M=n(),j.__docgenInfo={description:`Единая оболочка списка опций для picker, listbox и menu. Если переданы
3
3
  selectionActions, но не передан toolbar, компонент показывает стандартные
4
4
  действия выбора и снятия выбора.`,methods:[],displayName:`PickerOptions`,props:{rootRef:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLDivElement`}],raw:`Ref<HTMLDivElement>`},description:``},children:{required:!0,tsType:{name:`ReactNode`},description:``},toolbar:{required:!1,tsType:{name:`union`,raw:`ReactNode | false`,elements:[{name:`ReactNode`},{name:`literal`,value:`false`}]},description:``},selectionActions:{required:!1,tsType:{name:`signature`,type:`object`,raw:`{
@@ -0,0 +1 @@
1
+ ._81qOBF,.Fj-KxT{border-radius:var(--radius-sm);grid-template-rows:minmax(0,1fr);display:grid;overflow:hidden}._81qOBF{--anchor-gap:var(--space-xs);--anchor-padding:var(--space-xs);--anchor-offset:0;min-width:0;z-index:var(--z-dropdown);box-shadow:var(--shadow-md)}.Fj-KxT{--input-width:min(100vw, var(--base-width,15em));width:100%;min-width:var(--input-width);min-height:0;max-height:75vh;padding:var(--space-sm);background-color:var(--surface-0);border:var(--border)}.Fj-KxT:empty{visibility:hidden}.Fj-KxT[data-has-toolbar=true]{grid-template-rows:auto minmax(0,1fr)}.tCn0CX{gap:var(--space-xs);padding:var(--space-xs);display:grid}.pP2yXa{min-height:0}.bupTWA{padding:var(--space-xs) var(--space-sm);color:var(--content-2)}.GkeyGF{color:var(--error-text)}._8F667e{position:relative}._8F667e[data-has-overlay=true] input{--ui-color:transparent;--ui-color-hover:transparent;--ui-color-active:transparent;color:#0000;caret-color:#0000;-webkit-text-fill-color:transparent}.RMwzIX{--trigger-count:2;--input-end-adornment-width:calc(var(--control-height) * 2)}.wvU2oL{inset:0 calc(var(--control-height) * var(--trigger-count,1) + var(--space-sm)) 0 var(--space-sm);pointer-events:none;justify-content:flex-end;align-items:center;min-width:0;display:flex;position:absolute}.efKX6F{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@media (max-width:47.9988em){.Fj-KxT{--input-width:calc(100dvw - var(--space-xl))}}.OGMk6I{padding-block:var(--space-xs);border-radius:var(--radius-sm)}.OGMk6I:hover{background-color:var(--surface-2)}
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-D0R9pFj7.js";import{a as n,i as r}from"./utils-tg3ibbzi.js";import{n as i,t as a}from"./ui.module-31LPbZGK.js";var o,s;function c(){return(c=e((()=>{o=t(),s=({text:e,highlight:t})=>t?e.split(RegExp(`(${t})`,`gi`)).map((e,n)=>e.toLowerCase()===t.toLowerCase()?(0,o.jsx)(`mark`,{children:e},n):e):e})))()}function l(e){return(0,u.jsx)(`span`,{...e,className:n(i.uiOptionCode,e.className)})}var u;function d(){return(d=e((()=>{r(),a(),u=t(),l.__docgenInfo={description:``,methods:[],displayName:`OptionCode`,props:{children:{required:!0,tsType:{name:`ReactNode`},description:``}},composes:[`HTMLAttributes`]}})))()}function f(e){return(0,p.jsx)(`kbd`,{...e,className:n(i.keyboard,e.className)})}var p;function m(){return(m=e((()=>{r(),a(),p=t(),f.__docgenInfo={description:``,methods:[],displayName:`OptionHotkey`,props:{children:{required:!0,tsType:{name:`string`},description:``}},composes:[`HTMLAttributes`]}})))()}function h(e){return(0,g.jsx)(`span`,{...e,className:n(i.uiPopupOptionIcon,e.className)})}var g;function _(){return(_=e((()=>{r(),a(),g=t(),h.__docgenInfo={description:``,methods:[],displayName:`OptionIcon`,props:{children:{required:!0,tsType:{name:`ReactNode`},description:``}},composes:[`HTMLAttributes`]}})))()}function v(e){return(0,y.jsx)(`span`,{...e,className:n(i.uiOptionText,e.className)})}var y;function b(){return(b=e((()=>{r(),a(),y=t(),v.__docgenInfo={description:``,methods:[],displayName:`OptionText`,props:{children:{required:!0,tsType:{name:`ReactNode`},description:``}},composes:[`HTMLAttributes`]}})))()}function x({icon:e,text:t,searchText:n,emphasizeContent:r,code:a,hotkey:o}){return(0,S.jsxs)(S.Fragment,{children:[e==null?null:(0,S.jsx)(h,{children:e}),(0,S.jsx)(v,{className:r?i.uiOptionContentEmphasize:void 0,children:(0,S.jsx)(s,{text:t,highlight:n})}),a==null?o?(0,S.jsx)(f,{children:o}):null:(0,S.jsx)(l,{className:r?i.uiOptionContentEmphasize:void 0,children:(0,S.jsx)(s,{text:a,highlight:n})})]})}var S;function C(){return(C=e((()=>{c(),a(),d(),m(),_(),b(),S=t(),x.__docgenInfo={description:`Общая фиксированная композиция содержимого button/link опции.`,methods:[],displayName:`OptionContent`,props:{icon:{required:!1,tsType:{name:`ReactNode`},description:``},text:{required:!0,tsType:{name:`string`},description:``},searchText:{required:!1,tsType:{name:`string`},description:``},emphasizeContent:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function w({ref:e,icon:t,text:r,searchText:a,code:o,hotkey:s,emphasizeContent:c,...l}){return(0,T.jsx)(`button`,{...l,ref:e,type:`button`,className:n(i.uiOptionButton,l.className),children:(0,T.jsx)(x,{icon:t,text:r,searchText:a,emphasizeContent:c,...o===void 0?{hotkey:s}:{code:o}})})}var T;function E(){return(E=e((()=>{r(),a(),C(),T=t(),w.__docgenInfo={description:`Основное button-действие внутри внешней оболочки Option.`,methods:[],displayName:`OptionButton`,props:{icon:{required:!1,tsType:{name:`ReactNode`},description:``},text:{required:!0,tsType:{name:`string`},description:``},searchText:{required:!1,tsType:{name:`string`},description:``},emphasizeContent:{required:!1,tsType:{name:`boolean`},description:``},ref:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLButtonElement`}],raw:`Ref<HTMLButtonElement>`},description:``}}}})))()}export{v as a,d as c,C as i,s as l,E as n,b as o,x as r,l as s,w as t,c as u};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BaXmcmyl.js";import{a as n,i as r}from"./utils-tg3ibbzi.js";import{n as i,t as a}from"./ui.module-SH8ehXul.js";var o,s;function c(){return(c=e((()=>{o=t(),s=({text:e,highlight:t})=>t?e.split(RegExp(`(${t})`,`gi`)).map((e,n)=>e.toLowerCase()===t.toLowerCase()?(0,o.jsx)(`mark`,{children:e},n):e):e})))()}function l(e){return(0,u.jsx)(`span`,{...e,className:n(i.uiOptionCode,e.className)})}var u;function d(){return(d=e((()=>{r(),a(),u=t(),l.__docgenInfo={description:``,methods:[],displayName:`OptionCode`,props:{children:{required:!0,tsType:{name:`ReactNode`},description:``}},composes:[`HTMLAttributes`]}})))()}function f(e){return(0,p.jsx)(`kbd`,{...e,className:n(i.keyboard,e.className)})}var p;function m(){return(m=e((()=>{r(),a(),p=t(),f.__docgenInfo={description:``,methods:[],displayName:`OptionHotkey`,props:{children:{required:!0,tsType:{name:`string`},description:``}},composes:[`HTMLAttributes`]}})))()}function h(e){return(0,g.jsx)(`span`,{...e,className:n(i.uiPopupOptionIcon,e.className)})}var g;function _(){return(_=e((()=>{r(),a(),g=t(),h.__docgenInfo={description:``,methods:[],displayName:`OptionIcon`,props:{children:{required:!0,tsType:{name:`ReactNode`},description:``}},composes:[`HTMLAttributes`]}})))()}function v(e){return(0,y.jsx)(`span`,{...e,className:n(i.uiOptionText,e.className)})}var y;function b(){return(b=e((()=>{r(),a(),y=t(),v.__docgenInfo={description:``,methods:[],displayName:`OptionText`,props:{children:{required:!0,tsType:{name:`ReactNode`},description:``}},composes:[`HTMLAttributes`]}})))()}function x({icon:e,text:t,searchText:n,emphasizeContent:r,code:a,hotkey:o}){return(0,S.jsxs)(S.Fragment,{children:[e==null?null:(0,S.jsx)(h,{children:e}),(0,S.jsx)(v,{className:r?i.uiOptionContentEmphasize:void 0,children:(0,S.jsx)(s,{text:t,highlight:n})}),a==null?o?(0,S.jsx)(f,{children:o}):null:(0,S.jsx)(l,{className:r?i.uiOptionContentEmphasize:void 0,children:(0,S.jsx)(s,{text:a,highlight:n})})]})}var S;function C(){return(C=e((()=>{c(),a(),d(),m(),_(),b(),S=t(),x.__docgenInfo={description:`Общая фиксированная композиция содержимого button/link опции.`,methods:[],displayName:`OptionContent`,props:{icon:{required:!1,tsType:{name:`ReactNode`},description:``},text:{required:!0,tsType:{name:`string`},description:``},searchText:{required:!1,tsType:{name:`string`},description:``},emphasizeContent:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function w({ref:e,icon:t,text:r,searchText:a,code:o,hotkey:s,emphasizeContent:c,...l}){return(0,T.jsx)(`button`,{...l,ref:e,type:`button`,className:n(i.uiOptionButton,l.className),children:(0,T.jsx)(x,{icon:t,text:r,searchText:a,emphasizeContent:c,...o===void 0?{hotkey:s}:{code:o}})})}var T;function E(){return(E=e((()=>{r(),a(),C(),T=t(),w.__docgenInfo={description:`Основное button-действие внутри внешней оболочки Option.`,methods:[],displayName:`OptionButton`,props:{icon:{required:!1,tsType:{name:`ReactNode`},description:``},text:{required:!0,tsType:{name:`string`},description:``},searchText:{required:!1,tsType:{name:`string`},description:``},emphasizeContent:{required:!1,tsType:{name:`boolean`},description:``},ref:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLButtonElement`}],raw:`Ref<HTMLButtonElement>`},description:``}}}})))()}export{v as a,d as c,C as i,s as l,E as n,b as o,x as r,l as s,w as t,c as u};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-D0R9pFj7.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-Bu5I-6jJ.js";import{a as p,c as m,i as h,n as g,o as _,r as v,s as y,t as b}from"./PeriodSelect.stories-d58Lz3DJ.js";function x(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(s,{of:y,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BaXmcmyl.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-BmNU_R5E.js";import{a as p,c as m,i as h,n as g,o as _,r as v,s as y,t as b}from"./PeriodSelect.stories-S2ndHVEQ.js";function x(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(s,{of:y,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,C.jsx)(u,{children:`PeriodSelect`}),`
3
3
  `,(0,C.jsx)(o,{children:`Выбор периода детализации дат с ограничением вариантов по связанному диапазону`}),`
4
4
  `,(0,C.jsxs)(t.p,{children:[`PeriodSelect используется для выбора уровня детализации: `,(0,C.jsx)(t.code,{children:`day`}),`, `,(0,C.jsx)(t.code,{children:`week`}),`, `,(0,C.jsx)(t.code,{children:`month`}),` или `,(0,C.jsx)(t.code,{children:`year`}),`. Компонент хранит только id выбранного периода, а недоступность вариантов вычисляет по переданному `,(0,C.jsx)(t.code,{children:`dateRange`}),` и порогам `,(0,C.jsx)(t.code,{children:`maxDayRangeDays`}),` / `,(0,C.jsx)(t.code,{children:`maxWeekRangeWeeks`}),`.`]}),`
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-D0R9pFj7.js";import{g as r,m as i}from"./odata-service-CWkHASdw-DAt28ZWr.js";import{h as a,i as o}from"./formatters-DVE1YVNQ-CMsbb5-m.js";import{l as s,o as c}from"./DateInput-CWsb-NhT.js";import{n as l,t as u}from"./PresetSelect-Bo_urWXj.js";function d(e){return typeof e==`string`&&y.has(e)}function f(e,t=v){let n=c(e,d,t),r=n.length>0?n:v,i=new Set(r);return v.filter(e=>i.has(e))}function p(e,t=_){return s(e,t)}function m({maxDayRangeDays:e,maxWeekRangeWeeks:t,labels:n}={}){let r=i(e),a=i(t);return _.map(e=>{let t={...e,label:n?.[e.id]??e.label};return e.id===`day`&&r!==void 0?{...t,maxRangeDays:r}:e.id===`week`&&a!==void 0?{...t,maxRangeDays:a*7}:t})}function h(e,t){let n=i(e.maxRangeDays);if(n===void 0||t===void 0)return!1;let r=o(t);return r!==null&&r>n}function g(e,t,n){if(t.length===0)return;let r=e===void 0?-1:t.findIndex(t=>t.id===e),i=r>=0?t[r]:void 0;return i&&!h(i,n)?i.id:(r>=0?t.slice(r+1):t).find(e=>!h(e,n))?.id??t.find(e=>!h(e,n))?.id}var _,v,y;function b(){return(b=e((()=>{a(),r(),_=Object.freeze([{id:`day`,label:`по дням`},{id:`week`,label:`по неделям`},{id:`month`,label:`по месяцам`},{id:`year`,label:`по годам`}]),v=Object.freeze([`day`,`week`,`month`,`year`]),y=new Set(_.map(e=>e.id))})))()}function x({value:e,onChange:t,options:n,labels:r,presetIds:i,dateRange:a,maxDayRangeDays:o,maxWeekRangeWeeks:s,...c}){let l=(0,S.useMemo)(()=>n??p(f(i),m({maxDayRangeDays:o,maxWeekRangeWeeks:s,labels:r})),[r,o,s,n,i]),d=(0,S.useMemo)(()=>g(e,l,a),[a,l,e]),_=(0,S.useRef)(null),v=(0,S.useEffectEvent)(()=>{if(d===void 0||d===e){_.current=null;return}let n=_.current;n&&n.value===e&&n.availableValue===d||(_.current={value:e,availableValue:d},t(d))});return(0,S.useEffect)(()=>{v()},[d,e]),(0,C.jsx)(u,{...c,options:l,value:d,onChange:t,getOptionDisabled:e=>h(e,a)})}var S,C;function w(){return(w=e((()=>{S=t(),l(),b(),C=n(),x.__docgenInfo={description:`Select периода детализации, который может ограничивать доступные варианты по диапазону дат.`,methods:[],displayName:`PeriodSelect`,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:!1,tsType:{name:`unknown`},description:"Полный список custom options с высшим приоритетом. При его передаче\nвстроенные `presetIds`, `labels` и пороги диапазона не применяются."},labels:{required:!1,tsType:{name:`Partial`,elements:[{name:`Readonly`,elements:[{name:`Record`,elements:[{name:`union`,raw:`"day" | "week" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"week"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},{name:`string`}],raw:`Record<PeriodSelectPresetId, string>`}],raw:`Readonly<Record<PeriodSelectPresetId, string>>`}],raw:`Partial<PeriodSelectLabels>`},description:`Частично заменяет подписи встроенных вариантов, не изменяя их id,
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-BaXmcmyl.js";import{g as r,m as i}from"./odata-service-CWkHASdw-DAt28ZWr.js";import{h as a,i as o}from"./formatters-DVE1YVNQ-CMsbb5-m.js";import{l as s,o as c}from"./DateInput-BpuC_NWD.js";import{n as l,t as u}from"./PresetSelect-BcD8EsSb.js";function d(e){return typeof e==`string`&&y.has(e)}function f(e,t=v){let n=c(e,d,t),r=n.length>0?n:v,i=new Set(r);return v.filter(e=>i.has(e))}function p(e,t=_){return s(e,t)}function m({maxDayRangeDays:e,maxWeekRangeWeeks:t,labels:n}={}){let r=i(e),a=i(t);return _.map(e=>{let t={...e,label:n?.[e.id]??e.label};return e.id===`day`&&r!==void 0?{...t,maxRangeDays:r}:e.id===`week`&&a!==void 0?{...t,maxRangeDays:a*7}:t})}function h(e,t){let n=i(e.maxRangeDays);if(n===void 0||t===void 0)return!1;let r=o(t);return r!==null&&r>n}function g(e,t,n){if(t.length===0)return;let r=e===void 0?-1:t.findIndex(t=>t.id===e),i=r>=0?t[r]:void 0;return i&&!h(i,n)?i.id:(r>=0?t.slice(r+1):t).find(e=>!h(e,n))?.id??t.find(e=>!h(e,n))?.id}var _,v,y;function b(){return(b=e((()=>{a(),r(),_=Object.freeze([{id:`day`,label:`по дням`},{id:`week`,label:`по неделям`},{id:`month`,label:`по месяцам`},{id:`year`,label:`по годам`}]),v=Object.freeze([`day`,`week`,`month`,`year`]),y=new Set(_.map(e=>e.id))})))()}function x({value:e,onChange:t,options:n,labels:r,presetIds:i,dateRange:a,maxDayRangeDays:o,maxWeekRangeWeeks:s,...c}){let l=(0,S.useMemo)(()=>n??p(f(i),m({maxDayRangeDays:o,maxWeekRangeWeeks:s,labels:r})),[r,o,s,n,i]),d=(0,S.useMemo)(()=>g(e,l,a),[a,l,e]),_=(0,S.useRef)(null),v=(0,S.useEffectEvent)(()=>{if(d===void 0||d===e){_.current=null;return}let n=_.current;n&&n.value===e&&n.availableValue===d||(_.current={value:e,availableValue:d},t(d))});return(0,S.useEffect)(()=>{v()},[d,e]),(0,C.jsx)(u,{...c,options:l,value:d,onChange:t,getOptionDisabled:e=>h(e,a)})}var S,C;function w(){return(w=e((()=>{S=t(),l(),b(),C=n(),x.__docgenInfo={description:`Select периода детализации, который может ограничивать доступные варианты по диапазону дат.`,methods:[],displayName:`PeriodSelect`,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:!1,tsType:{name:`unknown`},description:"Полный список custom options с высшим приоритетом. При его передаче\nвстроенные `presetIds`, `labels` и пороги диапазона не применяются."},labels:{required:!1,tsType:{name:`Partial`,elements:[{name:`Readonly`,elements:[{name:`Record`,elements:[{name:`union`,raw:`"day" | "week" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"week"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},{name:`string`}],raw:`Record<PeriodSelectPresetId, string>`}],raw:`Readonly<Record<PeriodSelectPresetId, string>>`}],raw:`Partial<PeriodSelectLabels>`},description:`Частично заменяет подписи встроенных вариантов, не изменяя их id,
2
2
  канонический порядок и правила доступности.
3
3
  Не применяется, когда передан собственный \`options\`.`},presetIds:{required:!1,tsType:{name:`unknown`},description:`Разрешенные встроенные варианты периода. Значение нормализуется в канонический
4
4
  порядок, а пустой либо невалидный список безопасно заменяется полным набором.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-D0R9pFj7.js";import{n as r,t as i}from"./Text-CMJA_7QZ.js";import{h as a,i as o,s}from"./formatters-DVE1YVNQ-CMsbb5-m.js";import{n as c,t as l}from"./GridContainer-fKYgDsLl.js";import{n as u,t as d}from"./createControlledStoryRender-BouhvX-R.js";import{r as f,t as p}from"./DateInput-CWsb-NhT.js";import{i as m,n as h,r as g,t as _}from"./PeriodSelect-Dk-_iKeR.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&&s(e)?e:null}var b,x,S,C,w,T,E,D,O,k,A,j,M;function N(){return(N=e((()=>{a(),f(),u(),c(),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=d((e,t)=>{let n=y(e.dateRange),r=o(e.dateRange??null);return(0,b.jsxs)(l,{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:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-BaXmcmyl.js";import{n as r,t as i}from"./Text-BT0cn3Bk.js";import{h as a,i as o,s}from"./formatters-DVE1YVNQ-CMsbb5-m.js";import{n as c,t as l}from"./GridContainer-fKYgDsLl.js";import{n as u,t as d}from"./createControlledStoryRender-BouhvX-R.js";import{r as f,t as p}from"./DateInput-BpuC_NWD.js";import{i as m,n as h,r as g,t as _}from"./PeriodSelect-DQXZWIBX.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&&s(e)?e:null}var b,x,S,C,w,T,E,D,O,k,A,j,M;function N(){return(N=e((()=>{a(),f(),u(),c(),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=d((e,t)=>{let n=y(e.dateRange),r=o(e.dateRange??null);return(0,b.jsxs)(l,{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
2
  name: "Контролируемый выбор",
3
3
  render: renderPeriodSelectStory
4
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:`{
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-D0R9pFj7.js";import{d as n,l as r,s as i,u as a}from"./Input-BO9q-b1i.js";function o({id:e,label:t,description:r,disabled:a,size:o,className:c,error:l,children:u}){let{controlId:d,labelId:f,descriptionId:p,errorId:m,describedBy:h}=n({id:e,hasLabel:t!=null,hasDescription:!!r,hasError:!!l});return(0,s.jsx)(i,{label:t,description:r,disabled:a,size:o,className:c,error:l,controlId:d,labelId:f,descriptionId:p,errorId:m,children:u({controlId:d,labelId:f,descriptionId:p,errorId:m,describedBy:h})})}var s;function c(){return(c=e((()=>{r(),a(),s=t(),o.__docgenInfo={description:``,methods:[],displayName:`PickerField`,props:{id:{required:!1,tsType:{name:`string`},description:``},className:{required:!1,tsType:{name:`string`},description:``},error:{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(context: PickerFieldContext) => ReactNode`,signature:{arguments:[{type:{name:`PickerFieldContext`},name:`context`}],return:{name:`ReactNode`}}},description:``}},composes:[`Omit`]}})))()}export{c as n,o as t};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BaXmcmyl.js";import{d as n,l as r,s as i,u as a}from"./Input-95LKm7aK.js";function o({id:e,label:t,description:r,disabled:a,size:o,className:c,error:l,children:u}){let{controlId:d,labelId:f,descriptionId:p,errorId:m,describedBy:h}=n({id:e,hasLabel:t!=null,hasDescription:!!r,hasError:!!l});return(0,s.jsx)(i,{label:t,description:r,disabled:a,size:o,className:c,error:l,controlId:d,labelId:f,descriptionId:p,errorId:m,children:u({controlId:d,labelId:f,descriptionId:p,errorId:m,describedBy:h})})}var s;function c(){return(c=e((()=>{r(),a(),s=t(),o.__docgenInfo={description:``,methods:[],displayName:`PickerField`,props:{id:{required:!1,tsType:{name:`string`},description:``},className:{required:!1,tsType:{name:`string`},description:``},error:{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(context: PickerFieldContext) => ReactNode`,signature:{arguments:[{type:{name:`PickerFieldContext`},name:`context`}],return:{name:`ReactNode`}}},description:``}},composes:[`Omit`]}})))()}export{c as n,o as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t,t as n}from"./chevron-down-EtmpBUf8.js";import{n as r}from"./iframe-D0R9pFj7.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-31LPbZGK.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-DHrZ_6vS.js";import{n as r}from"./iframe-BaXmcmyl.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-SH8ehXul.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,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-D0R9pFj7.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{_ as o,a as s,f as c,g as l,h as u,m as d,n as f,r as p,u as m}from"./floating-ui.react-C9sdi3nv.js";import{a as h,i as g,n as _,r as v}from"./dom-DBd_DWF8.js";import{i as y,r as b}from"./FloatingPopover-Dch6_6e0.js";import{n as x}from"./error-De9R4E_F.js";function S({availableWidth:e,availableHeight:t,floating:n}){n.style.setProperty(`--popover-available-width`,`${Math.max(0,e)}px`),n.style.setProperty(`--popover-available-height`,`${Math.max(0,t)}px`)}var C,w,T,E;function D(){return(D=t((()=>{C=`JK2Y7t`,w=`_5QtpCJ`,T=`hZuysP`,E={popover:C,primary:w,secondary:T}})))()}function O(){let e=(0,k.useContext)(A);if(!e)throw x({hookName:`usePopoverContext`,providerName:`Popover`});return e}var k,A;function j(){return(j=t((()=>{k=n(),A=(0,k.createContext)(null)})))()}var M,N,P;function F(){return(F=t((()=>{M=e(n(),1),p(),v(),a(),y(),D(),j(),N=r(),P=({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:d,placement:p,arrowRef:m}=O(),v=(0,M.useRef)(null),y=(0,M.useCallback)(e=>{v.current=e,l.setFloating(e)},[l]),x=h({active:s,initialFocus:`container`,restoreFocus:!0,containerRef:v}),S=(0,M.useCallback)(()=>{s&&(c(!1),t?.())},[c,t,s]);_({active:s,enabled:r,onDismiss:S,containerRef:x});let C=(0,M.useCallback)(()=>{!s||a||n&&S()},[s,a,n,S]);return g([l.floating,l.reference],C),s?(0,N.jsx)(f,{children:(0,N.jsxs)(`div`,{ref:y,style:u,className:i(E.popover,E[o]),role:`dialog`,"aria-modal":`true`,tabIndex:-1,children:[typeof e==`function`?e({setClose:S}):e,(0,N.jsx)(b,{ref:m,placement:p,middlewareData:d})]})}):null},P.__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 I,L;function R(){return(R=t((()=>{I=n(),j(),L=({passive:e,children:t})=>{let{open:n,setOpen:r,refs:i}=O(),a=(0,I.useCallback)(n=>{t.props.onClick&&t.props.onClick(n),!n.defaultPrevented&&(n.preventDefault(),n.stopPropagation(),!e&&r(e=>!e))},[t,r,e]);return(0,I.cloneElement)(t,{ref:i.setReference,"aria-expanded":n,onClick:a})},L.__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 z,B,V,H,U;function W(){return(W=t((()=>{z=e(n(),1),p(),F(),j(),R(),B=r(),V=16,H=({children:e,open:t,defaultOpen:n,onOpenChange:r,placement:i=`bottom`})=>{let[a,f]=(0,z.useState)(n??!1),p=t!==void 0,h=p?t:a,g=(0,z.useCallback)(e=>{let t=typeof e==`function`?e(h):e;p||f(t),r?.(t)},[p,r,h]),_=(0,z.useRef)(null),{refs:v,floatingStyles:y,middlewareData:b,placement:x}=s({open:h,onOpenChange:g,placement:i,middleware:[d(8),c({padding:V}),u({padding:V}),l({padding:V,apply({availableWidth:e,availableHeight:t,elements:n}){S({availableWidth:e,availableHeight:t,floating:n.floating})}}),m({element:_.current})],whileElementsMounted:o});return(0,B.jsx)(A.Provider,{value:{open:h,setOpen:g,refs:v,floatingStyles:y,placement:x,middlewareData:b,arrowRef:_},children:e})},U=Object.assign(H,{Trigger:L,Content:P}),H.__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-BaXmcmyl.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{_ as o,a as s,f as c,g as l,h as u,m as d,n as f,r as p,u as m}from"./floating-ui.react-VNDOEKPt.js";import{a as h,i as g,n as _,r as v}from"./dom-DBd_DWF8.js";import{i as y,r as b}from"./FloatingPopover-CBWu6Gxj.js";import{n as x}from"./error-De9R4E_F.js";function S({availableWidth:e,availableHeight:t,floating:n}){n.style.setProperty(`--popover-available-width`,`${Math.max(0,e)}px`),n.style.setProperty(`--popover-available-height`,`${Math.max(0,t)}px`)}var C,w,T,E;function D(){return(D=t((()=>{C=`JK2Y7t`,w=`_5QtpCJ`,T=`hZuysP`,E={popover:C,primary:w,secondary:T}})))()}function O(){let e=(0,k.useContext)(A);if(!e)throw x({hookName:`usePopoverContext`,providerName:`Popover`});return e}var k,A;function j(){return(j=t((()=>{k=n(),A=(0,k.createContext)(null)})))()}var M,N,P;function F(){return(F=t((()=>{M=e(n(),1),p(),v(),a(),y(),D(),j(),N=r(),P=({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:d,placement:p,arrowRef:m}=O(),v=(0,M.useRef)(null),y=(0,M.useCallback)(e=>{v.current=e,l.setFloating(e)},[l]),x=h({active:s,initialFocus:`container`,restoreFocus:!0,containerRef:v}),S=(0,M.useCallback)(()=>{s&&(c(!1),t?.())},[c,t,s]);_({active:s,enabled:r,onDismiss:S,containerRef:x});let C=(0,M.useCallback)(()=>{!s||a||n&&S()},[s,a,n,S]);return g([l.floating,l.reference],C),s?(0,N.jsx)(f,{children:(0,N.jsxs)(`div`,{ref:y,style:u,className:i(E.popover,E[o]),role:`dialog`,"aria-modal":`true`,tabIndex:-1,children:[typeof e==`function`?e({setClose:S}):e,(0,N.jsx)(b,{ref:m,placement:p,middlewareData:d})]})}):null},P.__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 I,L;function R(){return(R=t((()=>{I=n(),j(),L=({passive:e,children:t})=>{let{open:n,setOpen:r,refs:i}=O(),a=(0,I.useCallback)(n=>{t.props.onClick&&t.props.onClick(n),!n.defaultPrevented&&(n.preventDefault(),n.stopPropagation(),!e&&r(e=>!e))},[t,r,e]);return(0,I.cloneElement)(t,{ref:i.setReference,"aria-expanded":n,onClick:a})},L.__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 z,B,V,H,U;function W(){return(W=t((()=>{z=e(n(),1),p(),F(),j(),R(),B=r(),V=16,H=({children:e,open:t,defaultOpen:n,onOpenChange:r,placement:i=`bottom`})=>{let[a,f]=(0,z.useState)(n??!1),p=t!==void 0,h=p?t:a,g=(0,z.useCallback)(e=>{let t=typeof e==`function`?e(h):e;p||f(t),r?.(t)},[p,r,h]),_=(0,z.useRef)(null),{refs:v,floatingStyles:y,middlewareData:b,placement:x}=s({open:h,onOpenChange:g,placement:i,middleware:[d(8),c({padding:V}),u({padding:V}),l({padding:V,apply({availableWidth:e,availableHeight:t,elements:n}){S({availableWidth:e,availableHeight:t,floating:n.floating})}}),m({element:_.current})],whileElementsMounted:o});return(0,B.jsx)(A.Provider,{value:{open:h,setOpen:g,refs:v,floatingStyles:y,placement:x,middlewareData:b,arrowRef:_},children:e})},U=Object.assign(H,{Trigger:L,Content:P}),H.__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{W as n,U as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-D0R9pFj7.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-Bu5I-6jJ.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Popover.stories-BGgMddUi.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-BaXmcmyl.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-BmNU_R5E.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Popover.stories-CZIBppwE.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.