@ryuzaki13/react-foundation-ui 1.8.2 → 1.8.3

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 (423) hide show
  1. package/dist/advanced-search/index.js +8 -8
  2. package/dist/badge/index.js +1 -1
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/button/index.js +1 -1
  5. package/dist/check-box/index.js +1 -1
  6. package/dist/chunks/{CalendarView-DGElHRTJ.js → CalendarView-BJx6akIp.js} +2 -2
  7. package/dist/chunks/{CalendarView-DGElHRTJ.js.map → CalendarView-BJx6akIp.js.map} +1 -1
  8. package/dist/chunks/CheckBox.module-C5SjPwSj.js.map +1 -1
  9. package/dist/chunks/{TextEditorLexicalClient-C6b5N8AO.js → TextEditorLexicalClient-Ca89d-Db.js} +6 -6
  10. package/dist/chunks/{TextEditorLexicalClient-C6b5N8AO.js.map → TextEditorLexicalClient-Ca89d-Db.js.map} +1 -1
  11. package/dist/chunks/{badge-DMM8cOHd.js → badge-DUI2ET6q.js} +2 -2
  12. package/dist/chunks/{badge-DMM8cOHd.js.map → badge-DUI2ET6q.js.map} +1 -1
  13. package/dist/chunks/{base-table-DNSYOO9t.js → base-table-CsnUiMTe.js} +2 -2
  14. package/dist/chunks/{base-table-DNSYOO9t.js.map → base-table-CsnUiMTe.js.map} +1 -1
  15. package/dist/chunks/{button-BsvHGWPc.js → button-C53OkqTg.js} +3 -3
  16. package/dist/chunks/{button-BsvHGWPc.js.map → button-C53OkqTg.js.map} +1 -1
  17. package/dist/chunks/{check-box-sfGjYczQ.js → check-box-CC8CDnSR.js} +3 -3
  18. package/dist/chunks/{check-box-sfGjYczQ.js.map → check-box-CC8CDnSR.js.map} +1 -1
  19. package/dist/chunks/context-menu-C8sA7xCN.js +525 -0
  20. package/dist/chunks/context-menu-C8sA7xCN.js.map +1 -0
  21. package/dist/chunks/{date-input-C4GcKul6.js → date-input-g6l1iDmf.js} +5 -5
  22. package/dist/chunks/{date-input-C4GcKul6.js.map → date-input-g6l1iDmf.js.map} +1 -1
  23. package/dist/chunks/defaultRenderers-Dbhg2hHc.js +38 -0
  24. package/dist/chunks/defaultRenderers-Dbhg2hHc.js.map +1 -0
  25. package/dist/chunks/{input-CCdBtl-C.js → input-d08WN5FV.js} +2 -2
  26. package/dist/chunks/{input-CCdBtl-C.js.map → input-d08WN5FV.js.map} +1 -1
  27. package/dist/chunks/{input-files-TXdXrSAs.js → input-files-_NdSQM_3.js} +3 -3
  28. package/dist/chunks/{input-files-TXdXrSAs.js.map → input-files-_NdSQM_3.js.map} +1 -1
  29. package/dist/chunks/{input-search-Ca8iqeK2.js → input-search-BjtTMoRu.js} +2 -2
  30. package/dist/chunks/{input-search-Ca8iqeK2.js.map → input-search-BjtTMoRu.js.map} +1 -1
  31. package/dist/chunks/{modal-DLRYn-Lr.js → modal-Bar-j5a4.js} +2 -2
  32. package/dist/chunks/{modal-DLRYn-Lr.js.map → modal-Bar-j5a4.js.map} +1 -1
  33. package/dist/chunks/multi-select-Cvjz9W07.js +466 -0
  34. package/dist/chunks/multi-select-Cvjz9W07.js.map +1 -0
  35. package/dist/chunks/picker-0I1yMKIY.js +435 -0
  36. package/dist/chunks/picker-0I1yMKIY.js.map +1 -0
  37. package/dist/chunks/{radio-group-BAeJjyZ5.js → radio-group-DhpP7JSJ.js} +2 -2
  38. package/dist/chunks/{radio-group-BAeJjyZ5.js.map → radio-group-DhpP7JSJ.js.map} +1 -1
  39. package/dist/chunks/select-CUQ91FIc.js +363 -0
  40. package/dist/chunks/select-CUQ91FIc.js.map +1 -0
  41. package/dist/chunks/{table-RO4dfMAj.js → table-z9kyd9U3.js} +2 -2
  42. package/dist/chunks/{table-RO4dfMAj.js.map → table-z9kyd9U3.js.map} +1 -1
  43. package/dist/chunks/{ui.module-DHVTOqZ0.js → ui.module-BsDio9A3.js} +4 -3
  44. package/dist/chunks/ui.module-BsDio9A3.js.map +1 -0
  45. package/dist/chunks/{uiClasses-UkaejTdf.js → uiClasses-BVwFzzsr.js} +2 -2
  46. package/dist/chunks/{uiClasses-UkaejTdf.js.map → uiClasses-BVwFzzsr.js.map} +1 -1
  47. package/dist/chunks/useODataSelectBase-DR4PrY1j.js +117 -0
  48. package/dist/chunks/useODataSelectBase-DR4PrY1j.js.map +1 -0
  49. package/dist/context-menu/components/ContextMenu.d.ts +2 -1
  50. package/dist/context-menu/components/ContextMenu.d.ts.map +1 -1
  51. package/dist/context-menu/components/DropdownMenu.d.ts +2 -1
  52. package/dist/context-menu/components/DropdownMenu.d.ts.map +1 -1
  53. package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
  54. package/dist/context-menu/components/MenuItem.d.ts +6 -6
  55. package/dist/context-menu/components/MenuItem.d.ts.map +1 -1
  56. package/dist/context-menu/components/MenuRoot.d.ts +1 -1
  57. package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
  58. package/dist/context-menu/index.js +1 -1
  59. package/dist/date-input/index.js +2 -2
  60. package/dist/date-time-input/index.js +3 -3
  61. package/dist/disclosure/index.js +2 -2
  62. package/dist/drop-zone/index.js +1 -1
  63. package/dist/expandable-action-panel/index.js +1 -1
  64. package/dist/image/index.js +4 -4
  65. package/dist/input/index.js +1 -1
  66. package/dist/input-date-time/index.js +2 -2
  67. package/dist/input-file/index.js +2 -2
  68. package/dist/input-files/index.js +1 -1
  69. package/dist/input-image/index.js +2 -2
  70. package/dist/input-search/index.js +1 -1
  71. package/dist/layout-picker/index.js +66 -68
  72. package/dist/layout-picker/index.js.map +1 -1
  73. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  74. package/dist/listbox/Listbox.d.ts +1 -1
  75. package/dist/listbox/Listbox.d.ts.map +1 -1
  76. package/dist/listbox/index.js +71 -59
  77. package/dist/listbox/index.js.map +1 -1
  78. package/dist/modal/index.js +1 -1
  79. package/dist/multi-select/index.js +2 -2
  80. package/dist/multi-select/ui/MultiSelect.d.ts +11 -1
  81. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  82. package/dist/multi-select/ui/defaultRenderers.d.ts +6 -4
  83. package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
  84. package/dist/multi-select/ui/index.d.ts +0 -1
  85. package/dist/multi-select/ui/index.d.ts.map +1 -1
  86. package/dist/notifications/index.js +1 -1
  87. package/dist/option/CustomOptionButton.d.ts +6 -0
  88. package/dist/option/CustomOptionButton.d.ts.map +1 -0
  89. package/dist/option/Option.d.ts +14 -0
  90. package/dist/option/Option.d.ts.map +1 -0
  91. package/dist/option/OptionButton.d.ts +8 -0
  92. package/dist/option/OptionButton.d.ts.map +1 -0
  93. package/dist/option/OptionCode.d.ts +6 -0
  94. package/dist/option/OptionCode.d.ts.map +1 -0
  95. package/dist/option/OptionContent.d.ts +19 -0
  96. package/dist/option/OptionContent.d.ts.map +1 -0
  97. package/dist/option/OptionHotkey.d.ts +6 -0
  98. package/dist/option/OptionHotkey.d.ts.map +1 -0
  99. package/dist/option/OptionIcon.d.ts +6 -0
  100. package/dist/option/OptionIcon.d.ts.map +1 -0
  101. package/dist/option/OptionLink.d.ts +8 -0
  102. package/dist/option/OptionLink.d.ts.map +1 -0
  103. package/dist/option/OptionText.d.ts +6 -0
  104. package/dist/option/OptionText.d.ts.map +1 -0
  105. package/dist/option/index.d.ts +10 -0
  106. package/dist/option/index.d.ts.map +1 -0
  107. package/dist/option/index.js +112 -0
  108. package/dist/option/index.js.map +1 -0
  109. package/dist/picker/PickerClearButton.d.ts +9 -0
  110. package/dist/picker/PickerClearButton.d.ts.map +1 -0
  111. package/dist/picker/PickerOptions.d.ts +22 -0
  112. package/dist/picker/PickerOptions.d.ts.map +1 -0
  113. package/dist/picker/PickerPlaceholder.d.ts +14 -0
  114. package/dist/picker/PickerPlaceholder.d.ts.map +1 -0
  115. package/dist/picker/PickerPopup.d.ts +4 -3
  116. package/dist/picker/PickerPopup.d.ts.map +1 -1
  117. package/dist/picker/PickerSelectedToken.d.ts +7 -0
  118. package/dist/picker/PickerSelectedToken.d.ts.map +1 -0
  119. package/dist/picker/PickerTrigger.d.ts +29 -0
  120. package/dist/picker/PickerTrigger.d.ts.map +1 -0
  121. package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
  122. package/dist/picker/PickerTriggerInput.d.ts +1 -2
  123. package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
  124. package/dist/picker/index.d.ts +5 -0
  125. package/dist/picker/index.d.ts.map +1 -1
  126. package/dist/picker/index.js +2 -2
  127. package/dist/picker/model/extractPickerTextContent.d.ts +1 -1
  128. package/dist/picker/model/extractPickerTextContent.d.ts.map +1 -1
  129. package/dist/preset-range-date-input/index.js +1 -1
  130. package/dist/preset-select/PresetSelect.d.ts +1 -1
  131. package/dist/preset-select/PresetSelect.d.ts.map +1 -1
  132. package/dist/preset-select/index.js +1 -1
  133. package/dist/preset-select/index.js.map +1 -1
  134. package/dist/radio-button/index.js +2 -2
  135. package/dist/radio-group/index.js +1 -1
  136. package/dist/select/Select.d.ts +4 -2
  137. package/dist/select/Select.d.ts.map +1 -1
  138. package/dist/select/SelectOptionGroup.d.ts +1 -1
  139. package/dist/select/SelectOptionGroup.d.ts.map +1 -1
  140. package/dist/select/index.js +1 -1
  141. package/dist/simple-table/index.js +1 -1
  142. package/dist/slider/index.js +3 -3
  143. package/dist/state-select/StateSelect.d.ts +1 -1
  144. package/dist/state-select/StateSelect.d.ts.map +1 -1
  145. package/dist/state-select/index.js +1 -1
  146. package/dist/state-select/index.js.map +1 -1
  147. package/dist/styles.css +1 -1
  148. package/dist/switch/index.js +1 -1
  149. package/dist/table/index.js +1 -1
  150. package/dist/table-sorting/index.js +1 -1
  151. package/dist/tabs/index.js +2 -2
  152. package/dist/tag-input/index.js +2 -2
  153. package/dist/text-editor/index.js +1 -1
  154. package/dist/textarea/index.js +2 -2
  155. package/dist/toggle/index.js +1 -1
  156. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  157. package/dist/tree-select/TreeNodeContent.d.ts +2 -1
  158. package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
  159. package/dist/tree-select/TreePickerBase.d.ts +4 -1
  160. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  161. package/dist/tree-select/index.js +322 -353
  162. package/dist/tree-select/index.js.map +1 -1
  163. package/dist/tree-table/index.js +1 -1
  164. package/package.json +5 -1
  165. package/src/styles/themes/_interactive-surface.scss +67 -0
  166. package/storybook-static/assets/{Badge-Dis0WdSI.js → Badge-Wsl03RiZ.js} +1 -1
  167. package/storybook-static/assets/{Badge.stories-DKUJOyg3.js → Badge.stories-C5FJ05zx.js} +1 -1
  168. package/storybook-static/assets/{BadgeList-C_ImRsat.js → BadgeList-DHcmb--r.js} +1 -1
  169. package/storybook-static/assets/{Button-BSsRzaxX.js → Button-9Vdg-8pF.js} +1 -1
  170. package/storybook-static/assets/{Button-DxGg9rB3.js → Button-CEzU6vMY.js} +1 -1
  171. package/storybook-static/assets/{Button.stories-fHvDvt2w.js → Button.stories-BfDF7T_l.js} +1 -1
  172. package/storybook-static/assets/{CalendarView-BFcwl9Vq.js → CalendarView-DCLQ6cmR.js} +1 -1
  173. package/storybook-static/assets/{CheckBox-CSbi2BEU.js → CheckBox-BJ3STl44.js} +1 -1
  174. package/storybook-static/assets/CheckBox-DWrG0yT0.css +1 -0
  175. package/storybook-static/assets/{CheckBox-SuVeN-FY.js → CheckBox-UlZDcbgz.js} +1 -1
  176. package/storybook-static/assets/{CheckBox.stories-C6PF0zG1.js → CheckBox.stories-Pt5RIIb4.js} +1 -1
  177. package/storybook-static/assets/{Color-6AOWCN3U-DX3p6XEG.js → Color-6AOWCN3U-3Ir6qwTW.js} +1 -1
  178. package/storybook-static/assets/ContextMenu-BrYtLHPB.css +1 -0
  179. package/storybook-static/assets/{ContextMenu-f0QZPgBQ.js → ContextMenu-CU7qp0QU.js} +1 -1
  180. package/storybook-static/assets/ContextMenu-teXimUtT.js +1 -0
  181. package/storybook-static/assets/ContextMenu.stories-BhkVXZCg.js +37 -0
  182. package/storybook-static/assets/CustomOptionButton-BWYYtI_M.js +1 -0
  183. package/storybook-static/assets/{DateInput-BmL4c3wO.js → DateInput-B0xrPmg8.js} +1 -1
  184. package/storybook-static/assets/{DateInput-C0K0JvWe.js → DateInput-CRNvZef4.js} +1 -1
  185. package/storybook-static/assets/{DateInput.stories-65WMYAML.js → DateInput.stories-CrMRn_FQ.js} +1 -1
  186. package/storybook-static/assets/{DateRangePresetSelect-DdpNa-Yj.js → DateRangePresetSelect-B96SINg3.js} +1 -1
  187. package/storybook-static/assets/{DateRangePresetSelect-DVAqXJt1.js → DateRangePresetSelect-BGdt7rCz.js} +1 -1
  188. package/storybook-static/assets/DateRangePresetSelect.stories-B20eqYGr.js +19 -0
  189. package/storybook-static/assets/{Detail-1rmVP04K.js → Detail-CUNNfYz6.js} +1 -1
  190. package/storybook-static/assets/{Detail.stories-CW2YXAPy.js → Detail.stories-DPp7roXv.js} +1 -1
  191. package/storybook-static/assets/{Dialog-DcdGv_Bv.js → Dialog-B7eTlIWU.js} +1 -1
  192. package/storybook-static/assets/{Dialog-CszRheXL.js → Dialog-DdONtJUb.js} +1 -1
  193. package/storybook-static/assets/{Dialog.stories-CN9vtGuI.js → Dialog.stories-CF6Q0tJ-.js} +1 -1
  194. package/storybook-static/assets/{Disclosure-DWeZZ2i8.js → Disclosure-BI4KMSDK.js} +1 -1
  195. package/storybook-static/assets/{Disclosure.stories-pZXR5BOM.js → Disclosure.stories-BaTneJlv.js} +1 -1
  196. package/storybook-static/assets/{DisclosureGroup-BWba17wI.js → DisclosureGroup-Dx2-SHha.js} +1 -1
  197. package/storybook-static/assets/{DocsRenderer-JROSPFPF-BYN3Mg4U.js → DocsRenderer-JROSPFPF-mMjwDILp.js} +1 -1
  198. package/storybook-static/assets/{DropZone-ByDIyQgI.js → DropZone-BizNinsQ.js} +1 -1
  199. package/storybook-static/assets/{DropZone-BCe20YiO.js → DropZone-D93x3skJ.js} +1 -1
  200. package/storybook-static/assets/{DropZone.stories-CLXe7D8H.js → DropZone.stories-Dn72HUME.js} +1 -1
  201. package/storybook-static/assets/{DropdownMenu-BD-pc32j.js → DropdownMenu-Bpjyamf_.js} +1 -1
  202. package/storybook-static/assets/{ExpandableActionPanel-v-DZaEKX.js → ExpandableActionPanel-Q4xXTfPB.js} +1 -1
  203. package/storybook-static/assets/{ExpandableActionPanel.stories-BhHYM4mJ.js → ExpandableActionPanel.stories-Dr40xqrz.js} +1 -1
  204. package/storybook-static/assets/{Flex-DukB58MF.js → Flex-Qj0CmbNT.js} +1 -1
  205. package/storybook-static/assets/{Flex.stories-DQmoW5jb.js → Flex.stories-CMB4ZAgy.js} +1 -1
  206. package/storybook-static/assets/{FloatingPopover-fnwAyZil.js → FloatingPopover-jH57LEGX.js} +1 -1
  207. package/storybook-static/assets/{FormattedTableCell-CK1yXePp.js → FormattedTableCell-vbqJ5gib.js} +1 -1
  208. package/storybook-static/assets/{Grid-BoLaxbR_.js → Grid-AZBb1w5n.js} +1 -1
  209. package/storybook-static/assets/{Grid.stories-CSuOTbao.js → Grid.stories-BaeYzAP-.js} +1 -1
  210. package/storybook-static/assets/{ImageCropper.stories-BRi_qlO4.js → ImageCropper.stories-Da9IaNLO.js} +1 -1
  211. package/storybook-static/assets/{ImageRenderer-BiV2g53B.js → ImageRenderer-CNFqjqvE.js} +1 -1
  212. package/storybook-static/assets/{ImageRenderer.stories-Da7QE7_Q.js → ImageRenderer.stories-8pPWqLHi.js} +1 -1
  213. package/storybook-static/assets/{ImageView.stories-DSFBxOa6.js → ImageView.stories-P0OBwcHv.js} +1 -1
  214. package/storybook-static/assets/{ImageViewer.stories-D2rcovap.js → ImageViewer.stories-A8gBQaCk.js} +2 -2
  215. package/storybook-static/assets/{ImageViewerRuntime-B2CS1UFL.js → ImageViewerRuntime-C2LHl9xa.js} +1 -1
  216. package/storybook-static/assets/{Input-BIy4zhlA.js → Input-LI8Ij2VV.js} +1 -1
  217. package/storybook-static/assets/{Input-CVs7SVMJ.js → Input-X5FLaExp.js} +1 -1
  218. package/storybook-static/assets/{Input.stories-BBXrateo.js → Input.stories-r4hSNMWI.js} +1 -1
  219. package/storybook-static/assets/{InputDateTime-VUiW2Znv.js → InputDateTime-B9IQGLxQ.js} +1 -1
  220. package/storybook-static/assets/{InputDateTime.stories-lqECZY7T.js → InputDateTime.stories-t-IFoW6A.js} +1 -1
  221. package/storybook-static/assets/{InputFile-DEeRFq2f.js → InputFile-YhjpMsir.js} +1 -1
  222. package/storybook-static/assets/{InputFile-D0aHVW1q.js → InputFile-yUYuRSfc.js} +1 -1
  223. package/storybook-static/assets/{InputFile.stories-9fBhIus4.js → InputFile.stories-DvMCOp6p.js} +1 -1
  224. package/storybook-static/assets/{InputFiles-DTy038xW.js → InputFiles-Dq9QZAWM.js} +1 -1
  225. package/storybook-static/assets/{InputFiles-C_KIqiN9.js → InputFiles-b6Ne7Ph9.js} +1 -1
  226. package/storybook-static/assets/{InputFiles.stories-CspkI6-Y.js → InputFiles.stories-Q7rdTg-e.js} +1 -1
  227. package/storybook-static/assets/{InputFilesList-BQdSFOI1.js → InputFilesList-u59R9lsq.js} +1 -1
  228. package/storybook-static/assets/{InputImage-VJaqApEh.js → InputImage-BTap4i1_.js} +1 -1
  229. package/storybook-static/assets/{InputImage-C0kyUtT0.js → InputImage-_b_bmfXz.js} +1 -1
  230. package/storybook-static/assets/{InputImage.stories-DKXeva5i.js → InputImage.stories-F08TWbxk.js} +1 -1
  231. package/storybook-static/assets/{InteractiveComponents-B8zzCcZ_.js → InteractiveComponents-CpJd5e3W.js} +1 -1
  232. package/storybook-static/assets/{InteractiveComponents.stories-DP0Jma43.js → InteractiveComponents.stories-CM9yNzcF.js} +1 -1
  233. package/storybook-static/assets/LayoutPicker-8Q1MpMYR.js +376 -0
  234. package/storybook-static/assets/LayoutPicker-BY4-fUQa.css +1 -0
  235. package/storybook-static/assets/{LayoutPicker-BpcPcCDz.js → LayoutPicker-vwoAIGrk.js} +1 -1
  236. package/storybook-static/assets/{LayoutPicker.stories-POpVHww7.js → LayoutPicker.stories-BW8B8i8S.js} +1 -1
  237. package/storybook-static/assets/{Listbox-gHitzePa.js → Listbox-Cf_DMAva.js} +1 -1
  238. package/storybook-static/assets/Listbox-D7r9R1Of.js +1 -0
  239. package/storybook-static/assets/{Listbox.stories-Dw3IdYZA.js → Listbox.stories-CxYyfkFU.js} +1 -1
  240. package/storybook-static/assets/{Modal-CY7qfD1u.js → Modal-BaprwyBJ.js} +1 -1
  241. package/storybook-static/assets/{Modal.stories-Boa7oW-a.js → Modal.stories-Rn_bgNdm.js} +1 -1
  242. package/storybook-static/assets/{ModalManagerProvider-GYXaQe-7.js → ModalManagerProvider-BoJChAx2.js} +1 -1
  243. package/storybook-static/assets/MultiSelect-CILXhKyj.js +2 -0
  244. package/storybook-static/assets/{MultiSelect-DToMWi-I.js → MultiSelect-CU7avopN.js} +1 -1
  245. package/storybook-static/assets/MultiSelect-DI_UD1B-.css +1 -0
  246. package/storybook-static/assets/{MultiSelect.stories-DLuXOl9Q.js → MultiSelect.stories-DFtFExi3.js} +1 -1
  247. package/storybook-static/assets/{NoData-Bzj7vNCz.js → NoData-u6T3MI60.js} +1 -1
  248. package/storybook-static/assets/{NotificationsHost-Bs93X8Nv.js → NotificationsHost-63IJh9Kr.js} +1 -1
  249. package/storybook-static/assets/{NotificationsHost.stories-DxVOVOf8.js → NotificationsHost.stories-CRKVOYWB.js} +1 -1
  250. package/storybook-static/assets/{ODataMultiSelect-Dh33YJP6.js → ODataMultiSelect-tfqbyVgv.js} +1 -1
  251. package/storybook-static/assets/ODataMultiSelect.stories-DuC1gg-Q.js +126 -0
  252. package/storybook-static/assets/{ODataSelect-lpN9sKth.js → ODataSelect-0ax3OIQy.js} +1 -1
  253. package/storybook-static/assets/ODataSelect.stories-aGZEvBIO.js +148 -0
  254. package/storybook-static/assets/{ODataTreeMultiSelect-DFY2FJBX.js → ODataTreeMultiSelect-C4ZN4DaL.js} +1 -1
  255. package/storybook-static/assets/ODataTreeMultiSelect.stories-BThoYYsE.js +74 -0
  256. package/storybook-static/assets/{ODataTreeSelect-DdniMRRE.js → ODataTreeSelect-DvrUSJsi.js} +1 -1
  257. package/storybook-static/assets/ODataTreeSelect.stories-B9582VZ6.js +46 -0
  258. package/storybook-static/assets/{OneStepScroller-CHvIHlYx.js → OneStepScroller-BoIh7KcH.js} +1 -1
  259. package/storybook-static/assets/Option-CJBK9i2B.css +1 -0
  260. package/storybook-static/assets/Option-DqmRqyOQ.js +10 -0
  261. package/storybook-static/assets/OptionButton-CQVIwI2y.js +1 -0
  262. package/storybook-static/assets/{PeriodSelect-BgAak8GG.js → PeriodSelect-CdTxjZC3.js} +1 -1
  263. package/storybook-static/assets/{PeriodSelect-T1qaj11S.js → PeriodSelect-Dw3EsMrL.js} +1 -1
  264. package/storybook-static/assets/{PeriodSelect.stories-DYEtD47p.js → PeriodSelect.stories-DYinImmY.js} +1 -1
  265. package/storybook-static/assets/PickerTriggerActions-B0z5qfFF.js +1 -0
  266. package/storybook-static/assets/{Popover-DQKHL6wc.js → Popover-0xwjVe6K.js} +1 -1
  267. package/storybook-static/assets/{Popover-BVP-wMdK.js → Popover-ijEoQcUp.js} +1 -1
  268. package/storybook-static/assets/{Popover.stories-Pt4-7Aof.js → Popover.stories-CMNjjwu5.js} +1 -1
  269. package/storybook-static/assets/{PresetRangeDateInput-DQ3rlCp5.js → PresetRangeDateInput-CdvdO4mf.js} +1 -1
  270. package/storybook-static/assets/{PresetRangeDateInput-C4_NegG_.js → PresetRangeDateInput-DysqM_NV.js} +1 -1
  271. package/storybook-static/assets/{PresetRangeDateInput.stories-3AzmySZv.js → PresetRangeDateInput.stories-nVojLSRm.js} +1 -1
  272. package/storybook-static/assets/{PresetSelect-BTh53LoO.js → PresetSelect-mjBaMbt6.js} +1 -1
  273. package/storybook-static/assets/{RadioButton-Ci25eUL_.js → RadioButton-CVGKMhGV.js} +1 -1
  274. package/storybook-static/assets/{RadioButton-BfBSX73Y.js → RadioButton-jB744vXz.js} +1 -1
  275. package/storybook-static/assets/{RadioButton.stories-JVGXFlz8.js → RadioButton.stories-CJsU4D3L.js} +1 -1
  276. package/storybook-static/assets/{RadioGroup-CL7EHd6O.js → RadioGroup-BGF3aoOc.js} +1 -1
  277. package/storybook-static/assets/{RadioGroup-CW39hD_-.js → RadioGroup-DbqvBGw3.js} +1 -1
  278. package/storybook-static/assets/{RadioGroup.stories-MS9Jl6AT.js → RadioGroup.stories-Bkny6-9V.js} +1 -1
  279. package/storybook-static/assets/{Scrollable-Bo4197LC.js → Scrollable-DZp3ByoS.js} +1 -1
  280. package/storybook-static/assets/{Select-CxQqH8H5.js → Select-BJcT2K35.js} +1 -1
  281. package/storybook-static/assets/Select-CcuhYAW8.js +12 -0
  282. package/storybook-static/assets/{Select.stories-DfjNWXba.js → Select.stories-BowB7kdj.js} +1 -1
  283. package/storybook-static/assets/{SerializableSelect-BktENdyg.js → SerializableSelect-DRczsfxk.js} +1 -1
  284. package/storybook-static/assets/{SerializableSelect.stories-B8zxcu66.js → SerializableSelect.stories-BcYeXF_R.js} +1 -1
  285. package/storybook-static/assets/{SingleDateTimeInput-DZBRm3dM.js → SingleDateTimeInput-HDsmYVP2.js} +1 -1
  286. package/storybook-static/assets/{SingleDateTimeInput-DvpU1DkI.js → SingleDateTimeInput-pHA1ci5g.js} +1 -1
  287. package/storybook-static/assets/{SingleDateTimeInput.stories-Bku5Zc05.js → SingleDateTimeInput.stories-KUrLpnh_.js} +1 -1
  288. package/storybook-static/assets/{Slider-BN2xXBOi.js → Slider-DaJGOEf-.js} +1 -1
  289. package/storybook-static/assets/{Slider-BJkB6IoW.js → Slider-XnQRU_In.js} +1 -1
  290. package/storybook-static/assets/{Slider.stories-CM3yNojO.js → Slider.stories-ByS4Bo7v.js} +1 -1
  291. package/storybook-static/assets/{SliderInput-CPX2bJK3.js → SliderInput-BjyCba0D.js} +1 -1
  292. package/storybook-static/assets/{SliderInput-2ZiuvbpQ.js → SliderInput-Dan5pyQh.js} +1 -1
  293. package/storybook-static/assets/{SliderInput.stories-dJX-tRtA.js → SliderInput.stories-d4F5pqct.js} +1 -1
  294. package/storybook-static/assets/{Sortable-Bkr-xnO4.js → Sortable-Bdzx4D0R.js} +1 -1
  295. package/storybook-static/assets/{Sortable.stories-BPEg99e5.js → Sortable.stories-BIhgYQ1m.js} +1 -1
  296. package/storybook-static/assets/{Splitter-D4en_f5n.js → Splitter-B3hepEkw.js} +1 -1
  297. package/storybook-static/assets/{Splitter.stories-Cynn_kHV.js → Splitter.stories-L6R3ImTr.js} +1 -1
  298. package/storybook-static/assets/{StateSelect-BgbwMGGc.js → StateSelect-C4oHSG2B.js} +1 -1
  299. package/storybook-static/assets/{StateSelect-PcH0VuO_.js → StateSelect-CylM2NVF.js} +3 -3
  300. package/storybook-static/assets/{StateSelect.stories-CShqVH9Y.js → StateSelect.stories-Djw_nuLJ.js} +1 -1
  301. package/storybook-static/assets/{StringToggle.stories-CypR3oB_.js → StringToggle.stories-pqZzNPRQ.js} +1 -1
  302. package/storybook-static/assets/{Switch-D-cSDh8j.js → Switch-BK5DQYpV.js} +1 -1
  303. package/storybook-static/assets/{Switch-BVN6TcVZ.js → Switch-BkHwzkeD.js} +1 -1
  304. package/storybook-static/assets/{Switch.stories-C0s7gvBf.js → Switch.stories-BG1MHajd.js} +1 -1
  305. package/storybook-static/assets/{Table-CwXJDDe6.js → Table-BQPiMPmF.js} +1 -1
  306. package/storybook-static/assets/{Table.stories-vqttnROX.js → Table.stories-b5gmGDu_.js} +1 -1
  307. package/storybook-static/assets/{Tabs-BRSEvQpk.js → Tabs-B13rDpZt.js} +1 -1
  308. package/storybook-static/assets/{Tabs.stories-R_7jiTQc.js → Tabs.stories-D0sg-2Nx.js} +1 -1
  309. package/storybook-static/assets/{TabsBox-CqSxAUdJ.js → TabsBox-DZwTlYNa.js} +1 -1
  310. package/storybook-static/assets/{TagInput-C3ahaF-B.js → TagInput-RYhIr0kM.js} +1 -1
  311. package/storybook-static/assets/{TagInput.stories-C3O2gBUY.js → TagInput.stories-7iTWdjmj.js} +1 -1
  312. package/storybook-static/assets/{Text-b8fMr5Hd.js → Text-5-YdhIB8.js} +1 -1
  313. package/storybook-static/assets/{Textarea-CCgxNL6F.js → Textarea-0L2M-xFG.js} +1 -1
  314. package/storybook-static/assets/{Textarea-BDL_MwcM.js → Textarea-pQp1ju2W.js} +1 -1
  315. package/storybook-static/assets/{Textarea.stories-kc_LXBix.js → Textarea.stories-pJFWbXcf.js} +1 -1
  316. package/storybook-static/assets/{TimePanel-BCotjEKQ.js → TimePanel-DlfW-4Rv.js} +1 -1
  317. package/storybook-static/assets/{TimePanel.stories-B8paqA-_.js → TimePanel.stories-DpXHb66k.js} +1 -1
  318. package/storybook-static/assets/{Toggle-CT4IyZPI.js → Toggle-CwgQ0NbP.js} +1 -1
  319. package/storybook-static/assets/{Toggle-CbsKNs_c.js → Toggle-Q04RQyAN.js} +1 -1
  320. package/storybook-static/assets/{Toggle.stories-YsQZk4DA.js → Toggle.stories-DOYwhorJ.js} +1 -1
  321. package/storybook-static/assets/{TreeMultiSelect-DRLoUCXF.js → TreeMultiSelect--Z9jdUna.js} +1 -1
  322. package/storybook-static/assets/TreeMultiSelect-CcBXMmXH.js +1 -0
  323. package/storybook-static/assets/{TreeMultiSelect.stories-CV65ZVUo.js → TreeMultiSelect.stories-CSlNe1qA.js} +1 -1
  324. package/storybook-static/assets/TreePickerBase-B6DED6Hz.css +1 -0
  325. package/storybook-static/assets/TreePickerBase-BBHbtNFV.js +34 -0
  326. package/storybook-static/assets/{TreeSelect-FhEH7bMx.js → TreeSelect-BMcChauO.js} +1 -1
  327. package/storybook-static/assets/{TreeSelect-CsYGUC6s.js → TreeSelect-DMC-rviy.js} +1 -1
  328. package/storybook-static/assets/TreeSelect.stories-68LYkP9A.js +32 -0
  329. package/storybook-static/assets/{TreeTable-Bajr80HM.js → TreeTable-DNArfw0m.js} +1 -1
  330. package/storybook-static/assets/{TreeTable.stories-DDCGoB2u.js → TreeTable.stories-GybZTfJf.js} +1 -1
  331. package/storybook-static/assets/{async-CWrFMaux.js → async-BpUNPciD.js} +1 -1
  332. package/storybook-static/assets/{blocks-CrYcG0WD.js → blocks-CdL0FBl-.js} +3 -3
  333. package/storybook-static/assets/{browserAndReact-DSxaVMjM.js → browserAndReact-DJiCma8q.js} +1 -1
  334. package/storybook-static/assets/{check-Cnuffb78.js → check-Bff_8tRJ.js} +1 -1
  335. package/storybook-static/assets/{chevron-down-ChPfAmdy.js → chevron-down-D9beWxJi.js} +1 -1
  336. package/storybook-static/assets/{chevron-left-CEB5eAVk.js → chevron-left-0YewhZTT.js} +1 -1
  337. package/storybook-static/assets/{chevron-right-DHw2yjh1.js → chevron-right-_-7FrDV5.js} +1 -1
  338. package/storybook-static/assets/{chunk-W22LQPXL-i9Cm4c-p.js → chunk-W22LQPXL-O2d-a7Cd.js} +1 -1
  339. package/storybook-static/assets/{circle-alert-B0REyiCt.js → circle-alert-Ch96LToC.js} +1 -1
  340. package/storybook-static/assets/{circle-check-D6WZ24rj.js → circle-check-a4WDWsNJ.js} +1 -1
  341. package/storybook-static/assets/{components-BCe0UvQp.js → components-DdhcMCr2.js} +3 -3
  342. package/storybook-static/assets/{contextMenu-De66k1si.js → contextMenu-BGjkv4UB.js} +1 -1
  343. package/storybook-static/assets/defaultRenderers-V5HI39JH.js +1 -0
  344. package/storybook-static/assets/{download-C1DiezfA.js → download-CX1IvM3C.js} +1 -1
  345. package/storybook-static/assets/{filesAndExcel-BVMGH9OS.js → filesAndExcel-dK5pwBOD.js} +1 -1
  346. package/storybook-static/assets/{floating-ui.react-BswSORmJ.js → floating-ui.react-CxLdvcYS.js} +1 -1
  347. package/storybook-static/assets/{formatters-D27XMzPd.js → formatters-j9sx7DvH.js} +1 -1
  348. package/storybook-static/assets/{formatters-runtime-B_C8yQOS.js → formatters-runtime-CHMYu4ZC.js} +1 -1
  349. package/storybook-static/assets/{foundationLib-BmwSyi1e.js → foundationLib-C_06ZSSf.js} +1 -1
  350. package/storybook-static/assets/{hooks-CXlVTo5i.js → hooks-Bykafh9C.js} +1 -1
  351. package/storybook-static/assets/{iframe-Baz8D-0E.css → iframe-BIt4o49Q.css} +1 -1
  352. package/storybook-static/assets/{iframe-Bbj4T0X2.js → iframe-CIzkWNwp.js} +3 -3
  353. package/storybook-static/assets/iframe-sQ6b5u6U.js +1 -0
  354. package/storybook-static/assets/{info-D_YlGthq.js → info-DmoUv3Za.js} +1 -1
  355. package/storybook-static/assets/{odata-CDuIqs1a.js → odata-BOmzCjsk.js} +1 -1
  356. package/storybook-static/assets/{odataAndTables-D4R4KHZc.js → odataAndTables-CCmlxLmc.js} +1 -1
  357. package/storybook-static/assets/{odataFetchFn-Sw0FicJe.js → odataFetchFn-CTQe0sIR.js} +1 -1
  358. package/storybook-static/assets/{odataStoryFixtures-z1HaQHNb.js → odataStoryFixtures-BSZ-qA-M.js} +2 -2
  359. package/storybook-static/assets/{persisted-TRx901TV.js → persisted--WJ7KKPs.js} +1 -1
  360. package/storybook-static/assets/{pureUtilities-B8KVYaZx.js → pureUtilities-GyB4PF6P.js} +1 -1
  361. package/storybook-static/assets/{react-CTGFMmtV.js → react-BBjpR4Fr.js} +1 -1
  362. package/storybook-static/assets/{refresh-cw-BuhtDwqw.js → refresh-cw-Bc5fTdGR.js} +1 -1
  363. package/storybook-static/assets/{runtimeAndState-DDPlVhTs.js → runtimeAndState-B2HA42QC.js} +1 -1
  364. package/storybook-static/assets/{settings-2-DESCgIcH.js → settings-2-Cm9uvgs-.js} +1 -1
  365. package/storybook-static/assets/{sortable-BxGw7kip.js → sortable-U9GPAzJm.js} +1 -1
  366. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-B0d7LXTh.js → syntaxhighlighter-T5IQBZDB-Do8Zvv4y.js} +1 -1
  367. package/storybook-static/assets/{trash-2-D0Ed43_3.js → trash-2-D6H0PpPX.js} +1 -1
  368. package/storybook-static/assets/{triangle-alert-CpgcfVSf.js → triangle-alert-5r13MQCo.js} +1 -1
  369. package/storybook-static/assets/{ui-BMhMvV6y.css → ui-CatTcSJL.css} +1 -1
  370. package/storybook-static/assets/ui.module-D4CuGr8r.js +1 -0
  371. package/storybook-static/assets/{uiClasses-DiXn3Hc-.js → uiClasses-CVGbL980.js} +1 -1
  372. package/storybook-static/assets/{useODataSelectBase-CFR7eJND.js → useODataSelectBase-bY7vnHqq.js} +1 -1
  373. package/storybook-static/assets/{useODataTreeData-DgEKknmd.js → useODataTreeData-Dsp1d8h5.js} +1 -1
  374. package/storybook-static/assets/usePickerQuery-BfayEntP.js +1 -0
  375. package/storybook-static/assets/usePickerTriggerController-B1Mub3-v.js +6 -0
  376. package/storybook-static/assets/{x-_GQ6nyHW.js → x-DpV1OV1-.js} +1 -1
  377. package/storybook-static/iframe.html +3 -3
  378. package/storybook-static/project.json +1 -1
  379. package/dist/chunks/context-menu-6nJkPmKV.js +0 -535
  380. package/dist/chunks/context-menu-6nJkPmKV.js.map +0 -1
  381. package/dist/chunks/multi-select-Clsst6DE.js +0 -538
  382. package/dist/chunks/multi-select-Clsst6DE.js.map +0 -1
  383. package/dist/chunks/picker-CrRdwdA5.js +0 -340
  384. package/dist/chunks/picker-CrRdwdA5.js.map +0 -1
  385. package/dist/chunks/select-B0xc6g81.js +0 -355
  386. package/dist/chunks/select-B0xc6g81.js.map +0 -1
  387. package/dist/chunks/ui.module-DHVTOqZ0.js.map +0 -1
  388. package/dist/chunks/useODataSelectBase-Bq36Wp1U.js +0 -141
  389. package/dist/chunks/useODataSelectBase-Bq36Wp1U.js.map +0 -1
  390. package/dist/multi-select/ui/MultiSelectOption.d.ts +0 -14
  391. package/dist/multi-select/ui/MultiSelectOption.d.ts.map +0 -1
  392. package/dist/multi-select/ui/MultiSelectToken.d.ts +0 -9
  393. package/dist/multi-select/ui/MultiSelectToken.d.ts.map +0 -1
  394. package/storybook-static/assets/CheckBox-BnO90VKX.css +0 -1
  395. package/storybook-static/assets/ContextMenu-BgzIzwzM.css +0 -1
  396. package/storybook-static/assets/ContextMenu-BhGu3QoC.js +0 -1
  397. package/storybook-static/assets/ContextMenu.stories-V9d5mjak.js +0 -37
  398. package/storybook-static/assets/DateRangePresetSelect.stories-BGgd7TOu.js +0 -19
  399. package/storybook-static/assets/LayoutPicker-DjUZ5y7M.js +0 -376
  400. package/storybook-static/assets/LayoutPicker-DudPIiwb.css +0 -1
  401. package/storybook-static/assets/Listbox-Cg1OczYK.js +0 -1
  402. package/storybook-static/assets/MultiSelect-D8qN-i5f.js +0 -2
  403. package/storybook-static/assets/ODataMultiSelect.stories-DUmFRMTU.js +0 -139
  404. package/storybook-static/assets/ODataSelect.stories-BkFs5uIY.js +0 -161
  405. package/storybook-static/assets/ODataTreeMultiSelect.stories-B_Izm4eH.js +0 -87
  406. package/storybook-static/assets/ODataTreeSelect.stories-DxNhuLVU.js +0 -55
  407. package/storybook-static/assets/PickerSelectionToolbar-DWtGYc4E.js +0 -2
  408. package/storybook-static/assets/PickerTriggerActions-BIH8_o_b.js +0 -1
  409. package/storybook-static/assets/Select-CO4ZHP9h.css +0 -1
  410. package/storybook-static/assets/Select-DBsWg0wv.js +0 -12
  411. package/storybook-static/assets/SelectOptionContent-Bie2pzia.js +0 -1
  412. package/storybook-static/assets/TreeMultiSelect-CmAa_Gin.js +0 -1
  413. package/storybook-static/assets/TreePickerBase-hyMFakp7.css +0 -1
  414. package/storybook-static/assets/TreePickerBase-rB-Q9Uwf.js +0 -24
  415. package/storybook-static/assets/TreeSelect.stories-Cw4IkrNG.js +0 -40
  416. package/storybook-static/assets/defaultRenderers-B7PDT-nL.css +0 -1
  417. package/storybook-static/assets/defaultRenderers-D0Z-7t0H.js +0 -1
  418. package/storybook-static/assets/iframe-DLZ4F2nx.js +0 -1
  419. package/storybook-static/assets/ui.module-CiLQZm_L.js +0 -1
  420. package/storybook-static/assets/usePickerQuery-Be3WSeUa.js +0 -1
  421. package/storybook-static/assets/usePickerTriggerController-BZZv-jDV.js +0 -1
  422. package/storybook-static/assets/usePickerTriggerController-DzBkX15M.css +0 -1
  423. /package/storybook-static/assets/{CheckBox.module-BNQm6HXI.js → CheckBox.module-CoYygdZx.js} +0 -0
@@ -1,4 +1,4 @@
1
- import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./chevron-left-CEB5eAVk.js";import{n as a,t as o}from"./chevron-right-DHw2yjh1.js";import{n as s}from"./iframe-Bbj4T0X2.js";import{a as c,i as l}from"./utils-DUM89eIj.js";var u,d,f,p,m;function h(){return(h=e((()=>{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=e((()=>{_=t(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{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./chevron-left-0YewhZTT.js";import{n as a,t as o}from"./chevron-right-_-7FrDV5.js";import{n as s}from"./iframe-CIzkWNwp.js";import{a as c,i as l}from"./utils-DUM89eIj.js";var u,d,f,p,m;function h(){return(h=e((()=>{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=e((()=>{_=t(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-селектор элементов, которые считаются "шагами" скролла.
@@ -0,0 +1 @@
1
+ .Fj-KxT{--anchor-gap:var(--space-xs);--anchor-padding:var(--space-xs);--anchor-offset:0;--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);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);transform-origin:top;z-index:var(--z-dropdown);grid-template-rows:minmax(0,1fr);display:grid;overflow:hidden}.Fj-KxT:empty{visibility:hidden}.Fj-KxT[data-has-toolbar=true]{grid-template-rows:auto minmax(0,1fr)}._81qOBF{min-width:0;z-index:var(--z-dropdown)}.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(--status-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}.wvU2oL{inset:0 calc(var(--control-height) * var(--trigger-count,1) + var(--space-sm)) 0 var(--space-sm);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;justify-content:flex-end;align-items:center;min-width:0;display:flex;position:absolute;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)}
@@ -0,0 +1,10 @@
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-CIzkWNwp.js";import{a as r,i}from"./utils-DUM89eIj.js";import{n as a,t as o}from"./ui.module-D4CuGr8r.js";import{n as s,t as c}from"./Grid-BCzygAqy.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;function E(){return(E=e((()=>{h=`Fj-KxT`,g=`_81qOBF`,_=`tCn0CX`,v=`pP2yXa`,y=`bupTWA`,b=`GkeyGF`,x=`_8F667e`,S=`RMwzIX`,C=`wvU2oL`,w=`OGMk6I`,T={options:h,popupPositioner:g,optionsToolbar:_,optionsBody:v,status:y,statusError:b,triggerContainer:x,triggerHasClear:S,selectedToken:C,selectionActionButton:w}})))()}function D({onSelectAll:e,onDeselectAll:t,selectAllButtonRef:n}){return(0,O.jsxs)(c.Container,{gap:`xs`,templateColumns:`1fr 1fr`,children:[(0,O.jsx)(`button`,{ref:n,type:`button`,className:T.selectionActionButton,onClick:e,"data-ui":`picker-select-all`,"data-action":`select-all`,children:`Выбрать все`}),(0,O.jsx)(`button`,{type:`button`,className:T.selectionActionButton,onClick:t,"data-ui":`picker-deselect-all`,"data-action":`deselect-all`,children:`Снять выбор`})]})}var O;function k(){return(k=e((()=>{s(),E(),O=n(),D.__docgenInfo={description:`Общая панель массовых действий для picker-компонентов с множественным выбором.
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 A({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,j.jsx)(D,{...i}):n||null;return(0,j.jsxs)(`div`,{...l,ref:e,className:r(T.options,a,c),"data-ui":`picker-options`,"data-has-toolbar":u?`true`:void 0,children:[u?(0,j.jsxs)(`div`,{className:T.optionsToolbar,children:[u,(0,j.jsx)(p,{})]}):null,(0,j.jsx)(`div`,{className:r(T.optionsBody,s&&`scrollable`,o),children:t})]})}var j;function M(){return(M=e((()=>{i(),m(),E(),k(),j=n(),A.__docgenInfo={description:`Единая оболочка списка опций для picker, listbox и menu. Если переданы
3
+ selectionActions, но не передан toolbar, компонент показывает стандартные
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:`{
5
+ onSelectAll: () => void;
6
+ onDeselectAll: () => void;
7
+ selectAllButtonRef?: Ref<HTMLButtonElement>;
8
+ }`,signature:{properties:[{key:`onSelectAll`,value:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}},required:!0}},{key:`onDeselectAll`,value:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}},required:!0}},{key:`selectAllButtonRef`,value:{name:`Ref`,elements:[{name:`HTMLButtonElement`}],raw:`Ref<HTMLButtonElement>`,required:!1}}]}},description:``},layoutClassName:{required:!1,tsType:{name:`string`},description:``},bodyClassName:{required:!1,tsType:{name:`string`},description:``},scrollable:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}}},composes:[`Omit`]}})))()}function N({ref:e,active:t,selected:n,disabled:i,className:o,...s}){return(0,P.jsx)(`div`,{...s,ref:e,"aria-disabled":s[`aria-disabled`]??(i||void 0),className:r(a.uiPopupOption,t&&a.uiPopupOptionActive,n&&a.selected,i&&a.disabled,o)})}var P;function F(){return(F=e((()=>{i(),o(),P=n(),N.__docgenInfo={description:`Общая внешняя оболочка опции. Она владеет фоном, отступами и состояниями строки,
9
+ а вложенные OptionButton, OptionLink, checkbox и expander остаются независимыми
10
+ интерактивными элементами.`,methods:[],displayName:`Option`,props:{ref:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLDivElement`}],raw:`Ref<HTMLDivElement>`},description:``},active:{required:!1,tsType:{name:`boolean`},description:``},selected:{required:!1,tsType:{name:`boolean`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`HTMLAttributes`]}})))()}export{D as a,E as c,M as i,p as l,F as n,k as o,A as r,T as s,N as t,m as u};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CIzkWNwp.js";import{a as n,i as r}from"./utils-DUM89eIj.js";import{n as i,t as a}from"./ui.module-D4CuGr8r.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-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CrYcG0WD.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-DYEtD47p.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-C0FnF6B9.js";import{n as t}from"./iframe-CIzkWNwp.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CdL0FBl-.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-DYinImmY.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-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-Bbj4T0X2.js";import{l as r,s as i}from"./odata-service-B6TxBSLm-BW9QLSrS.js";import{a,y as o}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{n as s,o as c,r as l,t as u}from"./PresetSelect-BTh53LoO.js";function d(e){return typeof e==`string`&&y.has(e)}function f(e,t=v){let n=l(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 c(e,t)}function m({maxDayRangeDays:e,maxWeekRangeWeeks:t,labels:n}={}){let i=r(e),a=r(t);return _.map(e=>{let t={...e,label:n?.[e.id]??e.label};return e.id===`day`&&i!==void 0?{...t,maxRangeDays:i}:e.id===`week`&&a!==void 0?{...t,maxRangeDays:a*7}:t})}function h(e,t){let n=r(e.maxRangeDays);if(n===void 0||t===void 0)return!1;let i=a(t);return i!==null&&i>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((()=>{o(),i(),_=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(),s(),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-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-CIzkWNwp.js";import{l as r,s as i}from"./odata-service-B6TxBSLm-BW9QLSrS.js";import{a,y as o}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{n as s,o as c,r as l,t as u}from"./PresetSelect-mjBaMbt6.js";function d(e){return typeof e==`string`&&y.has(e)}function f(e,t=v){let n=l(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 c(e,t)}function m({maxDayRangeDays:e,maxWeekRangeWeeks:t,labels:n}={}){let i=r(e),a=r(t);return _.map(e=>{let t={...e,label:n?.[e.id]??e.label};return e.id===`day`&&i!==void 0?{...t,maxRangeDays:i}:e.id===`week`&&a!==void 0?{...t,maxRangeDays:a*7}:t})}function h(e,t){let n=r(e.maxRangeDays);if(n===void 0||t===void 0)return!1;let i=a(t);return i!==null&&i>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((()=>{o(),i(),_=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(),s(),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-C0FnF6B9.js";import{n}from"./iframe-Bbj4T0X2.js";import{n as r,t as i}from"./Text-b8fMr5Hd.js";import{a,b as o,y as s}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{n as c,t as l}from"./createControlledStoryRender-DHsyXc1B.js";import{r as u,t as d}from"./DateInput-BmL4c3wO.js";import{n as f,t as p}from"./GridContainer-qDguE1HS.js";import{i as m,n as h,r as g,t as _}from"./PeriodSelect-T1qaj11S.js";var v=t({AllAllowedOptionsDisabled:()=>A,AlternativeLabels:()=>k,AutoSwitchByRange:()=>D,Controlled:()=>E,Disabled:()=>j,MonthAndYear:()=>O,__namedExportsOrder:()=>M,default:()=>w});function y(e){return e!==void 0&&o(e)?e:null}var b,x,S,C,w,T,E,D,O,k,A,j,M;function N(){return(N=e((()=>{s(),u(),c(),f(),r(),m(),h(),b=n(),{fn:x}=__STORYBOOK_MODULE_TEST__,S=[new Date(2026,2,1,0,0,0),new Date(2026,2,14,23,59,59)],C=[new Date(2026,0,1,0,0,0),new Date(2026,4,20,23,59,59)],w={title:`Shared/UI/PeriodSelect`,component:_,args:{label:`Период детализации`,description:`Выберите уровень группировки дат.`,placeholder:`Выберите период`,value:`day`,onChange:x(),presetIds:g,dateRange:S,maxDayRangeDays:31,maxWeekRangeWeeks:26,disabled:!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Select периода детализации дат. Компонент работает с id периода и может блокировать слишком детальные варианты по переданному диапазону дат.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда период не выбран.`,control:`text`},value:{description:`Текущий id периода.`,control:`select`,options:g},onChange:{description:`Вызывается с id выбранного периода.`,control:!1},options:{description:"Кастомный список периодов по контракту `PeriodSelectOption`; имеет приоритет над `presetIds`, `labels` и порогами диапазона.",control:!1},labels:{description:`Частичные подписи встроенных периодов поверх канонического каталога.`,control:`object`},presetIds:{description:"Разрешенные встроенные периоды. Порядок отображения остается `day → week → month → year`.",control:`check`,options:g},dateRange:{description:`Диапазон дат, по которому вычисляются заблокированные периоды.`,control:!1},maxDayRangeDays:{description:"Максимальное количество дней, при котором доступен период `day`.",control:{type:`number`,min:1,step:1}},maxWeekRangeWeeks:{description:"Максимальное количество недель, при котором доступен период `week`.",control:{type:`number`,min:1,step:1}},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},T=l((e,t)=>{let n=y(e.dateRange),r=a(e.dateRange??null);return(0,b.jsxs)(p,{gap:`md`,children:[(0,b.jsx)(_,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,b.jsx)(d,{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-C0FnF6B9.js";import{n}from"./iframe-CIzkWNwp.js";import{n as r,t as i}from"./Text-5-YdhIB8.js";import{a,b as o,y as s}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{n as c,t as l}from"./createControlledStoryRender-DHsyXc1B.js";import{n as u,t as d}from"./GridContainer-qDguE1HS.js";import{r as f,t as p}from"./DateInput-B0xrPmg8.js";import{i as m,n as h,r as g,t as _}from"./PeriodSelect-Dw3EsMrL.js";var v=t({AllAllowedOptionsDisabled:()=>A,AlternativeLabels:()=>k,AutoSwitchByRange:()=>D,Controlled:()=>E,Disabled:()=>j,MonthAndYear:()=>O,__namedExportsOrder:()=>M,default:()=>w});function y(e){return e!==void 0&&o(e)?e:null}var b,x,S,C,w,T,E,D,O,k,A,j,M;function N(){return(N=e((()=>{s(),f(),c(),u(),r(),m(),h(),b=n(),{fn:x}=__STORYBOOK_MODULE_TEST__,S=[new Date(2026,2,1,0,0,0),new Date(2026,2,14,23,59,59)],C=[new Date(2026,0,1,0,0,0),new Date(2026,4,20,23,59,59)],w={title:`Shared/UI/PeriodSelect`,component:_,args:{label:`Период детализации`,description:`Выберите уровень группировки дат.`,placeholder:`Выберите период`,value:`day`,onChange:x(),presetIds:g,dateRange:S,maxDayRangeDays:31,maxWeekRangeWeeks:26,disabled:!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Select периода детализации дат. Компонент работает с id периода и может блокировать слишком детальные варианты по переданному диапазону дат.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда период не выбран.`,control:`text`},value:{description:`Текущий id периода.`,control:`select`,options:g},onChange:{description:`Вызывается с id выбранного периода.`,control:!1},options:{description:"Кастомный список периодов по контракту `PeriodSelectOption`; имеет приоритет над `presetIds`, `labels` и порогами диапазона.",control:!1},labels:{description:`Частичные подписи встроенных периодов поверх канонического каталога.`,control:`object`},presetIds:{description:"Разрешенные встроенные периоды. Порядок отображения остается `day → week → month → year`.",control:`check`,options:g},dateRange:{description:`Диапазон дат, по которому вычисляются заблокированные периоды.`,control:!1},maxDayRangeDays:{description:"Максимальное количество дней, при котором доступен период `day`.",control:{type:`number`,min:1,step:1}},maxWeekRangeWeeks:{description:"Максимальное количество недель, при котором доступен период `week`.",control:{type:`number`,min:1,step:1}},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},T=l((e,t)=>{let n=y(e.dateRange),r=a(e.dateRange??null);return(0,b.jsxs)(d,{gap:`md`,children:[(0,b.jsx)(_,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,b.jsx)(p,{label:`Связанный диапазон дат`,placeholder:`дд.мм.гггг - дд.мм.гггг`,value:n,onChange:e=>t({dateRange:e??void 0})}),(0,b.jsxs)(i,{as:`p`,color:`secondary`,"aria-live":`polite`,children:[`Выбрано: `,(0,b.jsx)(i,{as:`code`,children:e.value??`не выбрано`}),`. Дней в диапазоне:`,` `,(0,b.jsx)(i,{as:`code`,children:r??`не задано`}),`.`]})]})}),E={name:`Контролируемый выбор`,render:T},D={name:`Автопереключение по диапазону`,args:{value:`day`,dateRange:C,maxDayRangeDays:31,maxWeekRangeWeeks:8},render:T},O={name:`Только месяцы и годы`,args:{value:`month`,presetIds:[`month`,`year`]},render:T},k={name:`Альтернативные подписи`,args:{value:`month`,labels:{day:`за день`,week:`за неделю`,month:`за месяц`,year:`за год`}},render:T},A={name:`Все разрешенные варианты недоступны`,args:{value:`day`,presetIds:[`day`,`week`],dateRange:C,maxDayRangeDays:31,maxWeekRangeWeeks:8},render:T},j={name:`Заблокированный контрол`,args:{disabled:!0,value:`week`}},E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
2
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:`{
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t,t as n}from"./chevron-down-D9beWxJi.js";import{n as r}from"./iframe-CIzkWNwp.js";import{a as i,i as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-D4CuGr8r.js";function c({open:e,disabled:t,children:r,onToggleMouseDown:a,onToggleClick:s,openAriaLabel:c=`Открыть список`,closeAriaLabel:u=`Закрыть список`}){return(0,l.jsxs)(`div`,{className:o.uiToggleButtonContainer,"data-disabled":t||void 0,children:[r,(0,l.jsx)(`div`,{className:o.uiButtonSeparator}),(0,l.jsx)(`button`,{type:`button`,disabled:t,"aria-label":e?u:c,className:o.uiToggleButton,onMouseDown:a,onClick:s,children:(0,l.jsx)(n,{className:i(o.uiToggleIcon,e&&o.uiToggleIconOpen)})})]})}var l;function u(){return(u=e((()=>{a(),t(),s(),l=r(),c.__docgenInfo={description:``,methods:[],displayName:`PickerTriggerActions`,props:{open:{required:!0,tsType:{name:`boolean`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},children:{required:!1,tsType:{name:`ReactNode`},description:``},onToggleMouseDown:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(event: MouseEvent<HTMLButtonElement>) => void`,signature:{arguments:[{type:{name:`MouseEvent`,elements:[{name:`HTMLButtonElement`}],raw:`MouseEvent<HTMLButtonElement>`},name:`event`}],return:{name:`void`}}},description:``},onToggleClick:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},openAriaLabel:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Открыть список"`,computed:!1}},closeAriaLabel:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Закрыть список"`,computed:!1}}}}})))()}export{u as n,c as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CrYcG0WD.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Popover.stories-Pt4-7Aof.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-C0FnF6B9.js";import{n as t}from"./iframe-CIzkWNwp.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CdL0FBl-.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Popover.stories-CMNjjwu5.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.
@@ -1,2 +1,2 @@
1
- import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-Bbj4T0X2.js";import{a as i,i as a}from"./utils-DUM89eIj.js";import{a as o,d as s,g as c,l,m as u,n as d,p as f,r as p}from"./floating-ui.react-BswSORmJ.js";import{a as m,i as h,n as g,r as _}from"./dom-B3G_GtJw.js";import{i as v,r as y}from"./FloatingPopover-fnwAyZil.js";import{n as b}from"./error-BZrNlEUO.js";var x,S,C,w;function T(){return(T=e((()=>{x=`JK2Y7t`,S=`_5QtpCJ`,C=`hZuysP`,w={popover:x,primary:S,secondary:C}})))()}function E(){let e=(0,D.useContext)(O);if(!e)throw b({hookName:`usePopoverContext`,providerName:`Popover`});return e}var D,O;function k(){return(k=e((()=>{D=n(),O=(0,D.createContext)(null)})))()}var A,j,M;function N(){return(N=e((()=>{A=t(n(),1),p(),_(),a(),v(),T(),k(),j=r(),M=({children:e,onClose:t,closeOnOutside:n=!0,closeOnEscape:r=!0,disableOutsideClick:a=!1,background:o=`secondary`})=>{let{open:s,setOpen:c,refs:l,floatingStyles:u,middlewareData:f,placement:p,arrowRef:_}=E(),v=(0,A.useRef)(null),b=(0,A.useCallback)(e=>{v.current=e,l.setFloating(e)},[l]),x=m({active:s,initialFocus:`container`,restoreFocus:!0,containerRef:v}),S=(0,A.useCallback)(()=>{s&&(c(!1),t?.())},[c,t,s]);g({active:s,enabled:r,onDismiss:S,containerRef:x});let C=(0,A.useCallback)(()=>{!s||a||n&&S()},[s,a,n,S]);return h([l.floating,l.reference],C),s?(0,j.jsx)(d,{children:(0,j.jsxs)(`div`,{ref:b,style:u,className:i(w.popover,w[o]),role:`dialog`,"aria-modal":`true`,tabIndex:-1,children:[typeof e==`function`?e({setClose:S}):e,(0,j.jsx)(y,{ref:_,placement:p,middlewareData:f})]})}):null},M.__docgenInfo={description:`Содержимое Popover, отображаемое в портале.`,methods:[],displayName:`PopoverContent`,props:{children:{required:!0,tsType:{name:`union`,raw:`React.ReactNode | ((ctx: { setClose: () => void }) => React.ReactNode)`,elements:[{name:`ReactReactNode`,raw:`React.ReactNode`},{name:`unknown`}]},description:``},onClose:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},closeOnOutside:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},closeOnEscape:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},disableOutsideClick:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},background:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`}]},description:``,defaultValue:{value:`"secondary"`,computed:!1}}}}})))()}var P,F;function I(){return(I=e((()=>{P=n(),k(),F=({passive:e,children:t})=>{let{open:n,setOpen:r,refs:i}=E(),a=(0,P.useCallback)(n=>{t.props.onClick&&t.props.onClick(n),!n.defaultPrevented&&(n.preventDefault(),n.stopPropagation(),!e&&r(e=>!e))},[t,r,e]);return(0,P.cloneElement)(t,{ref:i.setReference,"aria-expanded":n,onClick:a})},F.__docgenInfo={description:``,methods:[],displayName:`PopoverTrigger`,props:{passive:{required:!1,tsType:{name:`literal`,value:`true`},description:``},children:{required:!0,tsType:{name:`ReactReactElement`,raw:`React.ReactElement<React.HTMLAttributes<Element> & { ref?: React.Ref<Element> }>`,elements:[{name:`intersection`,raw:`React.HTMLAttributes<Element> & { ref?: React.Ref<Element> }`,elements:[{name:`ReactHTMLAttributes`,raw:`React.HTMLAttributes<Element>`,elements:[{name:`Element`}]},{name:`signature`,type:`object`,raw:`{ ref?: React.Ref<Element> }`,signature:{properties:[{key:`ref`,value:{name:`ReactRef`,raw:`React.Ref<Element>`,elements:[{name:`Element`}],required:!1}}]}}]}]},description:``}}}})))()}var L,R,z,B;function V(){return(V=e((()=>{L=t(n(),1),p(),N(),k(),I(),R=r(),z=({children:e,open:t,defaultOpen:n,onOpenChange:r,placement:i=`bottom`})=>{let[a,d]=(0,L.useState)(n??!1),p=t!==void 0,m=p?t:a,h=(0,L.useCallback)(e=>{let t=typeof e==`function`?e(m):e;p||d(t),r?.(t)},[p,r,m]),g=(0,L.useRef)(null),{refs:_,floatingStyles:v,middlewareData:y,placement:b}=o({open:m,onOpenChange:h,placement:i,middleware:[f(8),s(),u({padding:16}),l({element:g.current})],whileElementsMounted:c});return(0,R.jsx)(O.Provider,{value:{open:m,setOpen:h,refs:_,floatingStyles:v,placement:b,middlewareData:y,arrowRef:g},children:e})},B=Object.assign(z,{Trigger:F,Content:M}),z.__docgenInfo={description:`Контролируемый Popover.
1
+ import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CIzkWNwp.js";import{a as i,i as a}from"./utils-DUM89eIj.js";import{a as o,d as s,g as c,l,m as u,n as d,p as f,r as p}from"./floating-ui.react-CxLdvcYS.js";import{a as m,i as h,n as g,r as _}from"./dom-B3G_GtJw.js";import{i as v,r as y}from"./FloatingPopover-jH57LEGX.js";import{n as b}from"./error-BZrNlEUO.js";var x,S,C,w;function T(){return(T=e((()=>{x=`JK2Y7t`,S=`_5QtpCJ`,C=`hZuysP`,w={popover:x,primary:S,secondary:C}})))()}function E(){let e=(0,D.useContext)(O);if(!e)throw b({hookName:`usePopoverContext`,providerName:`Popover`});return e}var D,O;function k(){return(k=e((()=>{D=n(),O=(0,D.createContext)(null)})))()}var A,j,M;function N(){return(N=e((()=>{A=t(n(),1),p(),_(),a(),v(),T(),k(),j=r(),M=({children:e,onClose:t,closeOnOutside:n=!0,closeOnEscape:r=!0,disableOutsideClick:a=!1,background:o=`secondary`})=>{let{open:s,setOpen:c,refs:l,floatingStyles:u,middlewareData:f,placement:p,arrowRef:_}=E(),v=(0,A.useRef)(null),b=(0,A.useCallback)(e=>{v.current=e,l.setFloating(e)},[l]),x=m({active:s,initialFocus:`container`,restoreFocus:!0,containerRef:v}),S=(0,A.useCallback)(()=>{s&&(c(!1),t?.())},[c,t,s]);g({active:s,enabled:r,onDismiss:S,containerRef:x});let C=(0,A.useCallback)(()=>{!s||a||n&&S()},[s,a,n,S]);return h([l.floating,l.reference],C),s?(0,j.jsx)(d,{children:(0,j.jsxs)(`div`,{ref:b,style:u,className:i(w.popover,w[o]),role:`dialog`,"aria-modal":`true`,tabIndex:-1,children:[typeof e==`function`?e({setClose:S}):e,(0,j.jsx)(y,{ref:_,placement:p,middlewareData:f})]})}):null},M.__docgenInfo={description:`Содержимое Popover, отображаемое в портале.`,methods:[],displayName:`PopoverContent`,props:{children:{required:!0,tsType:{name:`union`,raw:`React.ReactNode | ((ctx: { setClose: () => void }) => React.ReactNode)`,elements:[{name:`ReactReactNode`,raw:`React.ReactNode`},{name:`unknown`}]},description:``},onClose:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},closeOnOutside:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},closeOnEscape:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},disableOutsideClick:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},background:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`}]},description:``,defaultValue:{value:`"secondary"`,computed:!1}}}}})))()}var P,F;function I(){return(I=e((()=>{P=n(),k(),F=({passive:e,children:t})=>{let{open:n,setOpen:r,refs:i}=E(),a=(0,P.useCallback)(n=>{t.props.onClick&&t.props.onClick(n),!n.defaultPrevented&&(n.preventDefault(),n.stopPropagation(),!e&&r(e=>!e))},[t,r,e]);return(0,P.cloneElement)(t,{ref:i.setReference,"aria-expanded":n,onClick:a})},F.__docgenInfo={description:``,methods:[],displayName:`PopoverTrigger`,props:{passive:{required:!1,tsType:{name:`literal`,value:`true`},description:``},children:{required:!0,tsType:{name:`ReactReactElement`,raw:`React.ReactElement<React.HTMLAttributes<Element> & { ref?: React.Ref<Element> }>`,elements:[{name:`intersection`,raw:`React.HTMLAttributes<Element> & { ref?: React.Ref<Element> }`,elements:[{name:`ReactHTMLAttributes`,raw:`React.HTMLAttributes<Element>`,elements:[{name:`Element`}]},{name:`signature`,type:`object`,raw:`{ ref?: React.Ref<Element> }`,signature:{properties:[{key:`ref`,value:{name:`ReactRef`,raw:`React.Ref<Element>`,elements:[{name:`Element`}],required:!1}}]}}]}]},description:``}}}})))()}var L,R,z,B;function V(){return(V=e((()=>{L=t(n(),1),p(),N(),k(),I(),R=r(),z=({children:e,open:t,defaultOpen:n,onOpenChange:r,placement:i=`bottom`})=>{let[a,d]=(0,L.useState)(n??!1),p=t!==void 0,m=p?t:a,h=(0,L.useCallback)(e=>{let t=typeof e==`function`?e(m):e;p||d(t),r?.(t)},[p,r,m]),g=(0,L.useRef)(null),{refs:_,floatingStyles:v,middlewareData:y,placement:b}=o({open:m,onOpenChange:h,placement:i,middleware:[f(8),s(),u({padding:16}),l({element:g.current})],whileElementsMounted:c});return(0,R.jsx)(O.Provider,{value:{open:m,setOpen:h,refs:_,floatingStyles:v,placement:b,middlewareData:y,arrowRef:g},children:e})},B=Object.assign(z,{Trigger:F,Content:M}),z.__docgenInfo={description:`Контролируемый Popover.
2
2
  Используется в связке с Popover.Trigger и Popover.Content.`,methods:[],displayName:`PopoverRoot`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},placement:{required:!1,tsType:{name:`Placement`},description:``,defaultValue:{value:`"bottom"`,computed:!1}},open:{required:!1,tsType:{name:`boolean`},description:``},defaultOpen:{required:!1,tsType:{name:`boolean`},description:``},onOpenChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(open: boolean) => void`,signature:{arguments:[{type:{name:`boolean`},name:`open`}],return:{name:`void`}}},description:``}}}})))()}export{V as n,B as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-Bbj4T0X2.js";import{n as i,t as a}from"./Popover-BVP-wMdK.js";import{n as o,t as s}from"./Button-DxGg9rB3.js";import{n as c,t as l}from"./createControlledStoryRender-DHsyXc1B.js";import{l as u,t as d}from"./Input-CVs7SVMJ.js";var f=t({AnchorPlacement:()=>w,Controlled:()=>C,Default:()=>S,WithInteractiveContent:()=>T,__namedExportsOrder:()=>E,default:()=>x});function p({args:e,updateArgs:t,trigger:n,children:r}){return(0,_.jsxs)(a,{placement:e.placement,open:e.open,defaultOpen:e.defaultOpen,onOpenChange:n=>{e.onOpenChange?.(n),t({open:n})},children:[(0,_.jsx)(a.Trigger,{passive:e.passive,children:n(e.open===!0)}),(0,_.jsx)(a.Content,{onClose:()=>e.onClose?.(),closeOnOutside:e.closeOnOutside,closeOnEscape:e.closeOnEscape,disableOutsideClick:e.disableOutsideClick,background:e.background,children:r})]})}function m(e,t){return l((n,r)=>(0,_.jsx)(p,{args:n,updateArgs:r,trigger:e,children:t}))}function h({args:e,updateArgs:t}){let[n,r]=(0,g.useState)(``);return(0,_.jsx)(p,{args:e,updateArgs:t,trigger:()=>(0,_.jsx)(`button`,{type:`button`,children:`Форма`}),children:e=>(0,_.jsxs)(`form`,{onSubmit:t=>{t.preventDefault(),e.setClose()},style:{display:`flex`,flexDirection:`column`,gap:8,padding:12,width:180},children:[(0,_.jsx)(d,{label:`Имя`,placeholder:`Введите имя`,value:n,onChange:r}),(0,_.jsx)(s,{children:`Отправить`})]})})}var g,_,v,y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{g=n(),o(),c(),u(),i(),_=r(),{useArgs:v}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:y}=__STORYBOOK_MODULE_TEST__,b=[`top`,`top-start`,`top-end`,`right`,`right-start`,`right-end`,`bottom`,`bottom-start`,`bottom-end`,`left`,`left-start`,`left-end`],x={title:`Shared/UI/Popover`,component:a,args:{children:null,placement:`bottom`,open:!1,defaultOpen:!1,onOpenChange:y(),onClose:y(),closeOnOutside:!0,closeOnEscape:!0,disableOutsideClick:!1,background:`secondary`},parameters:{atomicCanvas:!0,layout:`centered`},argTypes:{children:{description:"Композиция из `Popover.Trigger` и `Popover.Content`.",control:!1},placement:{description:`Предпочтительное положение панели относительно trigger.`,control:`select`,options:b},open:{description:`Контролируемая видимость popover.`,control:`boolean`},defaultOpen:{description:`Начальная видимость в uncontrolled-режиме.`,control:`boolean`},onOpenChange:{description:`Вызывается при открытии и закрытии popover.`,control:!1},passive:{description:`Оставляет trigger пассивным: он получает reference, но не переключает popover по клику.`,control:`boolean`},onClose:{description:"Вызывается после закрытия Content через Escape, клик снаружи или `setClose`.",control:!1},closeOnOutside:{description:`Закрывает Content по клику снаружи.`,control:`boolean`},closeOnEscape:{description:`Закрывает Content по клавише Escape.`,control:`boolean`},disableOutsideClick:{description:`Игнорирует клики снаружи Content.`,control:`boolean`},background:{description:`Тема фона Content.`,control:`inline-radio`,options:[`primary`,`secondary`]}}},S={render:m(()=>(0,_.jsx)(`button`,{type:`button`,children:`Открыть`}),e=>(0,_.jsxs)(`div`,{style:{padding:12,maxWidth:160},children:[(0,_.jsx)(`p`,{children:`Пример простого поповера`}),(0,_.jsx)(`button`,{type:`button`,onClick:e.setClose,children:`Закрыть`})]}))},C={render:m(e=>(0,_.jsx)(`button`,{type:`button`,children:e?`Закрыть`:`Открыть`}),(0,_.jsx)(`div`,{style:{padding:12},children:`Контролируемый режим`}))},w={render:function(){let[e,t]=v(),n=(n,r)=>{e.onOpenChange?.(n),t(n?{open:!0,placement:r}:{open:!1})};return(0,_.jsx)(`div`,{style:{display:`flex`,gap:32,flexWrap:`wrap`,justifyContent:`center`},children:b.map(t=>(0,_.jsxs)(a,{placement:t,open:e.open===!0&&e.placement===t,defaultOpen:e.defaultOpen,onOpenChange:e=>n(e,t),children:[(0,_.jsx)(a.Trigger,{passive:e.passive,children:(0,_.jsx)(`button`,{type:`button`,children:t})}),(0,_.jsx)(a.Content,{onClose:()=>e.onClose?.(),closeOnOutside:e.closeOnOutside,closeOnEscape:e.closeOnEscape,disableOutsideClick:e.disableOutsideClick,background:e.background,children:(0,_.jsx)(`div`,{style:{padding:8},children:t})})]},t))})}},T={render:l((e,t)=>(0,_.jsx)(h,{args:e,updateArgs:t}))},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CIzkWNwp.js";import{n as i,t as a}from"./Popover-ijEoQcUp.js";import{n as o,t as s}from"./Button-CEzU6vMY.js";import{n as c,t as l}from"./createControlledStoryRender-DHsyXc1B.js";import{l as u,t as d}from"./Input-X5FLaExp.js";var f=t({AnchorPlacement:()=>w,Controlled:()=>C,Default:()=>S,WithInteractiveContent:()=>T,__namedExportsOrder:()=>E,default:()=>x});function p({args:e,updateArgs:t,trigger:n,children:r}){return(0,_.jsxs)(a,{placement:e.placement,open:e.open,defaultOpen:e.defaultOpen,onOpenChange:n=>{e.onOpenChange?.(n),t({open:n})},children:[(0,_.jsx)(a.Trigger,{passive:e.passive,children:n(e.open===!0)}),(0,_.jsx)(a.Content,{onClose:()=>e.onClose?.(),closeOnOutside:e.closeOnOutside,closeOnEscape:e.closeOnEscape,disableOutsideClick:e.disableOutsideClick,background:e.background,children:r})]})}function m(e,t){return l((n,r)=>(0,_.jsx)(p,{args:n,updateArgs:r,trigger:e,children:t}))}function h({args:e,updateArgs:t}){let[n,r]=(0,g.useState)(``);return(0,_.jsx)(p,{args:e,updateArgs:t,trigger:()=>(0,_.jsx)(`button`,{type:`button`,children:`Форма`}),children:e=>(0,_.jsxs)(`form`,{onSubmit:t=>{t.preventDefault(),e.setClose()},style:{display:`flex`,flexDirection:`column`,gap:8,padding:12,width:180},children:[(0,_.jsx)(d,{label:`Имя`,placeholder:`Введите имя`,value:n,onChange:r}),(0,_.jsx)(s,{children:`Отправить`})]})})}var g,_,v,y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{g=n(),o(),c(),u(),i(),_=r(),{useArgs:v}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:y}=__STORYBOOK_MODULE_TEST__,b=[`top`,`top-start`,`top-end`,`right`,`right-start`,`right-end`,`bottom`,`bottom-start`,`bottom-end`,`left`,`left-start`,`left-end`],x={title:`Shared/UI/Popover`,component:a,args:{children:null,placement:`bottom`,open:!1,defaultOpen:!1,onOpenChange:y(),onClose:y(),closeOnOutside:!0,closeOnEscape:!0,disableOutsideClick:!1,background:`secondary`},parameters:{atomicCanvas:!0,layout:`centered`},argTypes:{children:{description:"Композиция из `Popover.Trigger` и `Popover.Content`.",control:!1},placement:{description:`Предпочтительное положение панели относительно trigger.`,control:`select`,options:b},open:{description:`Контролируемая видимость popover.`,control:`boolean`},defaultOpen:{description:`Начальная видимость в uncontrolled-режиме.`,control:`boolean`},onOpenChange:{description:`Вызывается при открытии и закрытии popover.`,control:!1},passive:{description:`Оставляет trigger пассивным: он получает reference, но не переключает popover по клику.`,control:`boolean`},onClose:{description:"Вызывается после закрытия Content через Escape, клик снаружи или `setClose`.",control:!1},closeOnOutside:{description:`Закрывает Content по клику снаружи.`,control:`boolean`},closeOnEscape:{description:`Закрывает Content по клавише Escape.`,control:`boolean`},disableOutsideClick:{description:`Игнорирует клики снаружи Content.`,control:`boolean`},background:{description:`Тема фона Content.`,control:`inline-radio`,options:[`primary`,`secondary`]}}},S={render:m(()=>(0,_.jsx)(`button`,{type:`button`,children:`Открыть`}),e=>(0,_.jsxs)(`div`,{style:{padding:12,maxWidth:160},children:[(0,_.jsx)(`p`,{children:`Пример простого поповера`}),(0,_.jsx)(`button`,{type:`button`,onClick:e.setClose,children:`Закрыть`})]}))},C={render:m(e=>(0,_.jsx)(`button`,{type:`button`,children:e?`Закрыть`:`Открыть`}),(0,_.jsx)(`div`,{style:{padding:12},children:`Контролируемый режим`}))},w={render:function(){let[e,t]=v(),n=(n,r)=>{e.onOpenChange?.(n),t(n?{open:!0,placement:r}:{open:!1})};return(0,_.jsx)(`div`,{style:{display:`flex`,gap:32,flexWrap:`wrap`,justifyContent:`center`},children:b.map(t=>(0,_.jsxs)(a,{placement:t,open:e.open===!0&&e.placement===t,defaultOpen:e.defaultOpen,onOpenChange:e=>n(e,t),children:[(0,_.jsx)(a.Trigger,{passive:e.passive,children:(0,_.jsx)(`button`,{type:`button`,children:t})}),(0,_.jsx)(a.Content,{onClose:()=>e.onClose?.(),closeOnOutside:e.closeOnOutside,closeOnEscape:e.closeOnEscape,disableOutsideClick:e.disableOutsideClick,background:e.background,children:(0,_.jsx)(`div`,{style:{padding:8},children:t})})]},t))})}},T={render:l((e,t)=>(0,_.jsx)(h,{args:e,updateArgs:t}))},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
2
2
  render: createPopoverStoryRender(() => <button type="button">Открыть</button>, ctx => <div style={{
3
3
  padding: 12,
4
4
  maxWidth: 160
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CrYcG0WD.js";import{n as p,r as m,t as h}from"./PresetRangeDateInput.stories-3AzmySZv.js";function g(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CIzkWNwp.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CdL0FBl-.js";import{n as p,r as m,t as h}from"./PresetRangeDateInput.stories-nVojLSRm.js";function g(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,v.jsx)(u,{children:`PresetRangeDateInput`}),`
3
3
  `,(0,v.jsx)(o,{children:`Составной контрол диапазона дат с синхронизацией ручного ввода и готовых пресетов`}),`
4
4
  `,(0,v.jsx)(t.p,{children:`PresetRangeDateInput уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-Bbj4T0X2.js";import{n as r,t as i}from"./FlexContainer-LmZIdhq2.js";import{r as a,t as o}from"./DateInput-BmL4c3wO.js";import{a as s,c,l,n as u,o as d,r as f,s as p,t as m}from"./DateRangePresetSelect-DVAqXJt1.js";function h(e){return e??`__empty__`}function g({value:e,onChange:t,presetId:n,onPresetIdChange:r,referenceDate:a,presetIds:s,presetOptions:u,presetLabel:g,presetDescription:y,presetPlaceholder:b=`Выберите пресет диапазона`,presetDisabled:x,...S}){let[C]=(0,_.useState)(()=>new Date),w=a??C,T=(0,_.useMemo)(()=>u??c(d(s,f)),[s,u]),E=e??null,D=(0,_.useMemo)(()=>p(E,w,T),[E,T,w]),O=n??D??void 0,k=(0,_.useRef)(``),A=(0,_.useCallback)(e=>{if(!r)return;let t=h(e);t!==k.current&&(k.current=t,r(e))},[r]),j=e=>{let n=l(e,w,T);if(!n){A(null);return}A(n.id),t(n.range)},M=e=>{t(e),A(p(e,w,T))};return(0,v.jsxs)(i,{gap:`sm`,align:`end`,children:[(0,v.jsx)(m,{size:S.size,label:g,description:y,placeholder:b,disabled:x??S.disabled,value:O,onChange:j,options:T,referenceDate:w}),(0,v.jsx)(o,{...S,value:E,onChange:M})]})}var _,v;function y(){return(y=e((()=>{_=t(),a(),u(),s(),r(),v=n(),g.__docgenInfo={description:`Составной компонент выбора диапазона дат через пресет или ручной ввод.`,methods:[],displayName:`PresetRangeDateInput`,props:{presetId:{required:!1,tsType:{name:`union`,raw:`DateRangePresetOption["id"] | null`,elements:[{name:`DateRangePresetOption["id"]`,raw:`DateRangePresetOption["id"]`},{name:`null`}]},description:``},onPresetIdChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(presetId: DateRangePresetOption["id"] | null) => void`,signature:{arguments:[{type:{name:`union`,raw:`DateRangePresetOption["id"] | null`,elements:[{name:`DateRangePresetOption["id"]`,raw:`DateRangePresetOption["id"]`},{name:`null`}]},name:`presetId`}],return:{name:`void`}}},description:``},referenceDate:{required:!1,tsType:{name:`Date`},description:``},presetIds:{required:!1,tsType:{name:`unknown`},description:``},presetOptions:{required:!1,tsType:{name:`unknown`},description:``},presetLabel:{required:!1,tsType:{name:`ReactNode`},description:``},presetDescription:{required:!1,tsType:{name:`string`},description:``},presetPlaceholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите пресет диапазона"`,computed:!1}},presetDisabled:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`Omit`]}})))()}export{y as n,g as t};
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-CIzkWNwp.js";import{n as r,t as i}from"./FlexContainer-LmZIdhq2.js";import{r as a,t as o}from"./DateInput-B0xrPmg8.js";import{a as s,c,l,n as u,o as d,r as f,s as p,t as m}from"./DateRangePresetSelect-BGdt7rCz.js";function h(e){return e??`__empty__`}function g({value:e,onChange:t,presetId:n,onPresetIdChange:r,referenceDate:a,presetIds:s,presetOptions:u,presetLabel:g,presetDescription:y,presetPlaceholder:b=`Выберите пресет диапазона`,presetDisabled:x,...S}){let[C]=(0,_.useState)(()=>new Date),w=a??C,T=(0,_.useMemo)(()=>u??c(d(s,f)),[s,u]),E=e??null,D=(0,_.useMemo)(()=>p(E,w,T),[E,T,w]),O=n??D??void 0,k=(0,_.useRef)(``),A=(0,_.useCallback)(e=>{if(!r)return;let t=h(e);t!==k.current&&(k.current=t,r(e))},[r]),j=e=>{let n=l(e,w,T);if(!n){A(null);return}A(n.id),t(n.range)},M=e=>{t(e),A(p(e,w,T))};return(0,v.jsxs)(i,{gap:`sm`,align:`end`,children:[(0,v.jsx)(m,{size:S.size,label:g,description:y,placeholder:b,disabled:x??S.disabled,value:O,onChange:j,options:T,referenceDate:w}),(0,v.jsx)(o,{...S,value:E,onChange:M})]})}var _,v;function y(){return(y=e((()=>{_=t(),a(),u(),s(),r(),v=n(),g.__docgenInfo={description:`Составной компонент выбора диапазона дат через пресет или ручной ввод.`,methods:[],displayName:`PresetRangeDateInput`,props:{presetId:{required:!1,tsType:{name:`union`,raw:`DateRangePresetOption["id"] | null`,elements:[{name:`DateRangePresetOption["id"]`,raw:`DateRangePresetOption["id"]`},{name:`null`}]},description:``},onPresetIdChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(presetId: DateRangePresetOption["id"] | null) => void`,signature:{arguments:[{type:{name:`union`,raw:`DateRangePresetOption["id"] | null`,elements:[{name:`DateRangePresetOption["id"]`,raw:`DateRangePresetOption["id"]`},{name:`null`}]},name:`presetId`}],return:{name:`void`}}},description:``},referenceDate:{required:!1,tsType:{name:`Date`},description:``},presetIds:{required:!1,tsType:{name:`unknown`},description:``},presetOptions:{required:!1,tsType:{name:`unknown`},description:``},presetLabel:{required:!1,tsType:{name:`ReactNode`},description:``},presetDescription:{required:!1,tsType:{name:`string`},description:``},presetPlaceholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите пресет диапазона"`,computed:!1}},presetDisabled:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`Omit`]}})))()}export{y as n,g as t};
@@ -1,3 +1,3 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{a as n,i as r,r as i}from"./CalendarView-BFcwl9Vq.js";import{n as a}from"./iframe-Bbj4T0X2.js";import{n as o,t as s}from"./Text-b8fMr5Hd.js";import{n as c,t as l}from"./FlexContainer-LmZIdhq2.js";import{n as u,t as d}from"./createControlledStoryRender-DHsyXc1B.js";import{a as f,r as p}from"./DateRangePresetSelect-DVAqXJt1.js";import{n as m,t as h}from"./PresetRangeDateInput-C4_NegG_.js";var g=t({Default:()=>x,__namedExportsOrder:()=>S,default:()=>y}),_,v,y,b,x,S;function C(){return(C=e((()=>{n(),f(),u(),c(),o(),m(),_=a(),{fn:v}=__STORYBOOK_MODULE_TEST__,y={title:`Shared/UI/PresetRangeDateInput`,component:h,args:{label:`Диапазон дат`,placeholder:`дд.мм.гггг - дд.мм.гггг`,value:[new Date(2026,2,10,0,0,0),new Date(2026,2,10,23,59,59)],onChange:v(),presetId:`today`,onPresetIdChange:v(),referenceDate:new Date(2026,2,10,12,0,0),presetLabel:`Быстрый диапазон`,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{presetId:{description:"Контролируемый ID выбранного быстрого пресета. `null` снимает внешний выбор.",control:`select`,options:[...p,null]},onPresetIdChange:{description:`Вызывается, когда выбор пресета меняется из-за preset или ручного диапазона.`,control:!1},referenceDate:{description:`Опорная дата для вычисления встроенных быстрых диапазонов.`,control:`date`},presetIds:{description:"Разрешённые встроенные ID пресетов, если не передан `presetOptions`.",control:`check`,options:p},presetOptions:{description:`Кастомный каталог быстрых диапазонов с функциями вычисления.`,control:!1},presetLabel:{description:`Заголовок поля быстрого выбора.`,control:`text`},presetDescription:{description:`Описание под полем быстрого выбора.`,control:`text`},presetPlaceholder:{description:`Текст до выбора быстрого диапазона.`,control:`text`},presetDisabled:{description:`Блокирует только выбор быстрого пресета.`,control:`boolean`},label:{description:`Заголовок ручного поля диапазона.`,control:`text`},description:{description:`Описание ручного поля диапазона.`,control:`text`},placeholder:{description:`Текст до выбора ручного диапазона.`,control:`text`},value:{description:`Текущий ручной диапазон дат.`,control:!1},onChange:{description:`Вызывается при изменении ручного диапазона или выборе пресета.`,control:!1},error:{description:`Текст внешней ошибки ручного поля.`,control:`text`},onClearError:{description:`Сбрасывает внешнюю ошибку после ввода или выбора.`,control:!1},minDate:{description:`Минимально доступная дата ручного диапазона.`,control:`date`},maxDate:{description:`Максимально доступная дата ручного диапазона.`,control:`date`},datePreset:{description:`Пресет форматирования выбранного ручного диапазона.`,control:`text`},datePickerLevel:{description:`Минимальный уровень навигации календаря ручного поля.`,control:`select`,options:[`day`,`month`,`year`]},selectionMode:{description:`Размер периода, который выбирает ручное поле.`,control:`select`,options:i},weekEndDay:{description:`Последний включённый день недели в режиме week.`,control:`select`,options:r},allowSelectionModeChange:{description:`Показывает runtime-переключатель размера периода.`,control:`boolean`},selectionModeOptions:{description:`Ограничивает доступные режимы в runtime-переключателе.`,control:`check`,options:i},onSelectionModeChange:{description:`Вызывается при runtime-смене размера периода.`,control:!1},disabled:{description:"Блокирует ручное поле и, если `presetDisabled` не задан, быстрый выбор.",control:`boolean`},size:{description:`Размер обоих полей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},b=d((e,t)=>(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(l,{gap:`sm`,align:`end`,children:(0,_.jsx)(h,{...e,value:e.value??null,onChange:n=>{e.onChange(n),t({value:n})},onPresetIdChange:n=>{e.onPresetIdChange?.(n),t({presetId:n})},onSelectionModeChange:n=>{e.onSelectionModeChange?.(n),t({selectionMode:n})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}})}),(0,_.jsxs)(s,{as:`p`,className:`marginBlockSm`,children:[`Активный presetId: `,(0,_.jsx)(s,{as:`code`,children:e.presetId??`null`})]})]})),x={render:b},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{a as n,i as r,r as i}from"./CalendarView-DCLQ6cmR.js";import{n as a}from"./iframe-CIzkWNwp.js";import{n as o,t as s}from"./Text-5-YdhIB8.js";import{n as c,t as l}from"./FlexContainer-LmZIdhq2.js";import{n as u,t as d}from"./createControlledStoryRender-DHsyXc1B.js";import{a as f,r as p}from"./DateRangePresetSelect-BGdt7rCz.js";import{n as m,t as h}from"./PresetRangeDateInput-DysqM_NV.js";var g=t({Default:()=>x,__namedExportsOrder:()=>S,default:()=>y}),_,v,y,b,x,S;function C(){return(C=e((()=>{n(),f(),u(),c(),o(),m(),_=a(),{fn:v}=__STORYBOOK_MODULE_TEST__,y={title:`Shared/UI/PresetRangeDateInput`,component:h,args:{label:`Диапазон дат`,placeholder:`дд.мм.гггг - дд.мм.гггг`,value:[new Date(2026,2,10,0,0,0),new Date(2026,2,10,23,59,59)],onChange:v(),presetId:`today`,onPresetIdChange:v(),referenceDate:new Date(2026,2,10,12,0,0),presetLabel:`Быстрый диапазон`,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{presetId:{description:"Контролируемый ID выбранного быстрого пресета. `null` снимает внешний выбор.",control:`select`,options:[...p,null]},onPresetIdChange:{description:`Вызывается, когда выбор пресета меняется из-за preset или ручного диапазона.`,control:!1},referenceDate:{description:`Опорная дата для вычисления встроенных быстрых диапазонов.`,control:`date`},presetIds:{description:"Разрешённые встроенные ID пресетов, если не передан `presetOptions`.",control:`check`,options:p},presetOptions:{description:`Кастомный каталог быстрых диапазонов с функциями вычисления.`,control:!1},presetLabel:{description:`Заголовок поля быстрого выбора.`,control:`text`},presetDescription:{description:`Описание под полем быстрого выбора.`,control:`text`},presetPlaceholder:{description:`Текст до выбора быстрого диапазона.`,control:`text`},presetDisabled:{description:`Блокирует только выбор быстрого пресета.`,control:`boolean`},label:{description:`Заголовок ручного поля диапазона.`,control:`text`},description:{description:`Описание ручного поля диапазона.`,control:`text`},placeholder:{description:`Текст до выбора ручного диапазона.`,control:`text`},value:{description:`Текущий ручной диапазон дат.`,control:!1},onChange:{description:`Вызывается при изменении ручного диапазона или выборе пресета.`,control:!1},error:{description:`Текст внешней ошибки ручного поля.`,control:`text`},onClearError:{description:`Сбрасывает внешнюю ошибку после ввода или выбора.`,control:!1},minDate:{description:`Минимально доступная дата ручного диапазона.`,control:`date`},maxDate:{description:`Максимально доступная дата ручного диапазона.`,control:`date`},datePreset:{description:`Пресет форматирования выбранного ручного диапазона.`,control:`text`},datePickerLevel:{description:`Минимальный уровень навигации календаря ручного поля.`,control:`select`,options:[`day`,`month`,`year`]},selectionMode:{description:`Размер периода, который выбирает ручное поле.`,control:`select`,options:i},weekEndDay:{description:`Последний включённый день недели в режиме week.`,control:`select`,options:r},allowSelectionModeChange:{description:`Показывает runtime-переключатель размера периода.`,control:`boolean`},selectionModeOptions:{description:`Ограничивает доступные режимы в runtime-переключателе.`,control:`check`,options:i},onSelectionModeChange:{description:`Вызывается при runtime-смене размера периода.`,control:!1},disabled:{description:"Блокирует ручное поле и, если `presetDisabled` не задан, быстрый выбор.",control:`boolean`},size:{description:`Размер обоих полей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},b=d((e,t)=>(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(l,{gap:`sm`,align:`end`,children:(0,_.jsx)(h,{...e,value:e.value??null,onChange:n=>{e.onChange(n),t({value:n})},onPresetIdChange:n=>{e.onPresetIdChange?.(n),t({presetId:n})},onSelectionModeChange:n=>{e.onSelectionModeChange?.(n),t({selectionMode:n})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}})}),(0,_.jsxs)(s,{as:`p`,className:`marginBlockSm`,children:[`Активный presetId: `,(0,_.jsx)(s,{as:`code`,children:e.presetId??`null`})]})]})),x={render:b},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
2
2
  render: renderPresetRangeDateInputStory
3
3
  }`,...x.parameters?.docs?.source},description:{story:`Демонстрирует совместную работу пресета и ручного диапазона.`,...x.parameters?.docs?.description}}},S=[`Default`]})))()}export{g as n,C as r,x as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{n,t as r}from"./Select-DBsWg0wv.js";function i(e,t,n=[]){if(!Array.isArray(e))return[...n];let r=[];for(let n of e)!t(n)||r.includes(n)||r.push(n);return r}function a(e,t){let n=new Map(t.map(e=>[e.id,e])),r=[],i=new Set;for(let t of e){if(i.has(t))continue;let e=n.get(t);e&&(r.push(e),i.add(t))}return r}function o(e,t){return e?t.find(t=>t.id===e)??null:null}function s(){return(s=e((()=>{})))()}function c({options:e,value:t,onChange:n,getOptionDisabled:i,getOptionCode:a,getOptionAriaLabel:s,renderOption:c,renderValue:u,className:d,buttonClassName:f,optionsClassName:p,clearable:m,...h}){let g=o(t,e)??void 0;return(0,l.jsx)(r,{...h,options:e,value:g,onChange:e=>n(e?.id),getOptionKey:e=>e.id,getOptionLabel:e=>e.label,getOptionCode:a,getOptionDisabled:i,getOptionAriaLabel:s,renderOption:c,renderValue:u,className:d,buttonClassName:f,optionsClassName:p,clearable:m})}var l;function u(){return(u=e((()=>{n(),l=t(),c.__docgenInfo={description:"Базовый Select для пресетов с контрактом `id/label`.",methods:[],displayName:`PresetSelect`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},options:{required:!0,tsType:{name:`unknown`},description:``},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`boolean`}}},description:``},getOptionCode:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`ReactNode`}}},description:``},getOptionAriaLabel:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},renderOption:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption, state: SelectOptionState) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`},{type:{name:`signature`,type:`object`,raw:`{
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CIzkWNwp.js";import{n,t as r}from"./Select-CcuhYAW8.js";function i(e,t,n=[]){if(!Array.isArray(e))return[...n];let r=[];for(let n of e)!t(n)||r.includes(n)||r.push(n);return r}function a(e,t){let n=new Map(t.map(e=>[e.id,e])),r=[],i=new Set;for(let t of e){if(i.has(t))continue;let e=n.get(t);e&&(r.push(e),i.add(t))}return r}function o(e,t){return e?t.find(t=>t.id===e)??null:null}function s(){return(s=e((()=>{})))()}function c({options:e,value:t,onChange:n,getOptionDisabled:i,getOptionCode:a,getOptionAriaLabel:s,renderOption:c,renderValue:u,className:d,buttonClassName:f,optionsClassName:p,clearable:m,...h}){let g=o(t,e)??void 0;return(0,l.jsx)(r,{...h,options:e,value:g,onChange:e=>n(e?.id),getOptionKey:e=>e.id,getOptionLabel:e=>e.label,getOptionCode:a,getOptionDisabled:i,getOptionAriaLabel:s,renderOption:c,renderValue:u,className:d,buttonClassName:f,optionsClassName:p,clearable:m})}var l;function u(){return(u=e((()=>{n(),l=t(),c.__docgenInfo={description:"Базовый Select для пресетов с контрактом `id/label`.",methods:[],displayName:`PresetSelect`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},options:{required:!0,tsType:{name:`unknown`},description:``},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`boolean`}}},description:``},getOptionCode:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionAriaLabel:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},renderOption:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption, state: SelectOptionState) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`},{type:{name:`signature`,type:`object`,raw:`{
2
2
  active: boolean;
3
3
  selected: boolean;
4
4
  disabled: boolean;
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CrYcG0WD.js";import{a as p,i as m,n as h,r as g,t as _}from"./RadioButton.stories-JVGXFlz8.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CIzkWNwp.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CdL0FBl-.js";import{a as p,i as m,n as h,r as g,t as _}from"./RadioButton.stories-CJsU4D3L.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,b.jsx)(u,{children:`RadioButton`}),`
3
3
  `,(0,b.jsx)(o,{children:`Одиночная radio-кнопка для ручной сборки наборов выбора и специальных компоновок`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`RadioButton уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1 +1 @@
1
- import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{i as r,n as i,r as a}from"./iframe-Bbj4T0X2.js";import{a as o,i as s}from"./utils-DUM89eIj.js";import{n as c,t as l}from"./ui.module-CiLQZm_L.js";import{i as u,r as d}from"./uiClasses-DiXn3Hc-.js";import{n as f,t as p}from"./CheckBox.module-BNQm6HXI.js";var m,h;function g(){return(g=e((()=>{r(),m=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]],h=a(`circle`,m)})))()}var _,v;function y(){return(y=e((()=>{_=`gu8UMB`,v={radioInput:_}})))()}var b,x,S;function C(){return(C=e((()=>{b=t(n(),1),s(),g(),f(),l(),u(),y(),x=i(),S=({label:e,description:t,placeholder:n,disabled:r,size:i,className:a,onChange:s,value:l,id:u,tone:f=`neutral`,...m})=>{let g=(0,b.useId)(),_=u??g,y=t?`${_}-description`:void 0,S=e??n,C=l??!1;return(0,x.jsxs)(`div`,{className:o(c.uiElement,i&&c.uiSizable,i&&c[i],r&&c.disabled,a),children:[(0,x.jsxs)(`div`,{className:p.row,children:[(0,x.jsxs)(`div`,{className:o(p.wrapper,d(f)),children:[(0,x.jsx)(`input`,{...m,id:_,type:`radio`,checked:C,disabled:r,"aria-disabled":r,"aria-describedby":y,className:o(c.uiSelectionControl,p.input,v.radioInput),onChange:e=>s?.(e.currentTarget.checked)}),(0,x.jsx)(`div`,{className:o(c.uiSelectionIcon,p.icon),"aria-hidden":`true`,children:(0,x.jsx)(h,{fill:`currentColor`})})]}),S&&(0,x.jsx)(`label`,{htmlFor:_,className:c.uiLabel,children:S})]}),t&&(0,x.jsx)(`p`,{id:y,className:c.uiDescription,children:t})]})},S.__docgenInfo={description:'Компонент радиокнопки для выбора одного варианта.\nНативный `input[type="radio"]` обеспечивает взаимоисключение элементов с\nобщим `name`, а controlled API продолжает публиковать булево состояние.\nПоддерживает tone + appearance и использует общие selection utility-классы из ui.module.scss.',methods:[],displayName:`RadioButton`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},tone:{required:!1,tsType:{name:`union`,raw:`"neutral" | "brand" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``,defaultValue:{value:`"neutral"`,computed:!1}}},composes:[`Omit`]}})))()}export{C as n,S as t};
1
+ import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{i as r,n as i,r as a}from"./iframe-CIzkWNwp.js";import{a as o,i as s}from"./utils-DUM89eIj.js";import{n as c,t as l}from"./ui.module-D4CuGr8r.js";import{i as u,r as d}from"./uiClasses-CVGbL980.js";import{n as f,t as p}from"./CheckBox.module-CoYygdZx.js";var m,h;function g(){return(g=e((()=>{r(),m=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]],h=a(`circle`,m)})))()}var _,v;function y(){return(y=e((()=>{_=`gu8UMB`,v={radioInput:_}})))()}var b,x,S;function C(){return(C=e((()=>{b=t(n(),1),s(),g(),f(),l(),u(),y(),x=i(),S=({label:e,description:t,placeholder:n,disabled:r,size:i,className:a,onChange:s,value:l,id:u,tone:f=`neutral`,...m})=>{let g=(0,b.useId)(),_=u??g,y=t?`${_}-description`:void 0,S=e??n,C=l??!1;return(0,x.jsxs)(`div`,{className:o(c.uiElement,i&&c.uiSizable,i&&c[i],r&&c.disabled,a),children:[(0,x.jsxs)(`div`,{className:p.row,children:[(0,x.jsxs)(`div`,{className:o(p.wrapper,d(f)),children:[(0,x.jsx)(`input`,{...m,id:_,type:`radio`,checked:C,disabled:r,"aria-disabled":r,"aria-describedby":y,className:o(c.uiSelectionControl,p.input,v.radioInput),onChange:e=>s?.(e.currentTarget.checked)}),(0,x.jsx)(`div`,{className:o(c.uiSelectionIcon,p.icon),"aria-hidden":`true`,children:(0,x.jsx)(h,{fill:`currentColor`})})]}),S&&(0,x.jsx)(`label`,{htmlFor:_,className:c.uiLabel,children:S})]}),t&&(0,x.jsx)(`p`,{id:y,className:c.uiDescription,children:t})]})},S.__docgenInfo={description:'Компонент радиокнопки для выбора одного варианта.\nНативный `input[type="radio"]` обеспечивает взаимоисключение элементов с\nобщим `name`, а controlled API продолжает публиковать булево состояние.\nПоддерживает tone + appearance и использует общие selection utility-классы из ui.module.scss.',methods:[],displayName:`RadioButton`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},tone:{required:!1,tsType:{name:`union`,raw:`"neutral" | "brand" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``,defaultValue:{value:`"neutral"`,computed:!1}}},composes:[`Omit`]}})))()}export{C as n,S as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./RadioButton-BfBSX73Y.js";import{n as a}from"./iframe-Bbj4T0X2.js";import{n as o,t as s}from"./createControlledStoryRender-DHsyXc1B.js";var c=t({Controlled:()=>p,Disabled:()=>h,Group:()=>m,__namedExportsOrder:()=>g,default:()=>f}),l,u,d,f,p,m,h,g;function _(){return(_=e((()=>{l=n(),o(),r(),u=a(),d=s((e,t)=>(0,u.jsx)(i,{...e,value:e.value??!1,onChange:n=>{e.onChange?.(n),t({value:n})}})),f={title:`Shared/UI/RadioButton`,component:i,args:{value:!1,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи радиокнопки.`,control:`text`},description:{description:`Дополнительное описание под элементом.`,control:`text`},placeholder:{description:"Резервная подпись, если `label` не задан.",control:`text`},value:{description:`Признак выбранного состояния.`,control:`boolean`},onChange:{description:`Вызывается при изменении выбранности.`,control:!1},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер визуального контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},tone:{description:`Цветовой тон радиокнопки.`,control:`inline-radio`,options:[`neutral`,`brand`,`error`,`warning`,`success`,`info`]}}},p={render:d,args:{label:`Выбрать опцию`,description:`Одиночная радиокнопка в controlled-режиме.`,value:!1,tone:`neutral`}},m={render:()=>{let[e,t]=(0,l.useState)(`email`);return(0,u.jsxs)(`div`,{role:`radiogroup`,"aria-label":`Канал уведомлений`,style:{display:`grid`,gap:12},children:[(0,u.jsx)(i,{name:`notification-channel`,label:`Email`,value:e===`email`,onChange:e=>e&&t(`email`),tone:`info`}),(0,u.jsx)(i,{name:`notification-channel`,label:`SMS`,value:e===`sms`,onChange:e=>e&&t(`sms`),tone:`info`})]})},args:{value:void 0}},h={render:d,args:{label:`Недоступная опция`,description:`Заблокировано политикой конфигурации.`,value:!0,disabled:!0,tone:`neutral`}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./RadioButton-jB744vXz.js";import{n as a}from"./iframe-CIzkWNwp.js";import{n as o,t as s}from"./createControlledStoryRender-DHsyXc1B.js";var c=t({Controlled:()=>p,Disabled:()=>h,Group:()=>m,__namedExportsOrder:()=>g,default:()=>f}),l,u,d,f,p,m,h,g;function _(){return(_=e((()=>{l=n(),o(),r(),u=a(),d=s((e,t)=>(0,u.jsx)(i,{...e,value:e.value??!1,onChange:n=>{e.onChange?.(n),t({value:n})}})),f={title:`Shared/UI/RadioButton`,component:i,args:{value:!1,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи радиокнопки.`,control:`text`},description:{description:`Дополнительное описание под элементом.`,control:`text`},placeholder:{description:"Резервная подпись, если `label` не задан.",control:`text`},value:{description:`Признак выбранного состояния.`,control:`boolean`},onChange:{description:`Вызывается при изменении выбранности.`,control:!1},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер визуального контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},tone:{description:`Цветовой тон радиокнопки.`,control:`inline-radio`,options:[`neutral`,`brand`,`error`,`warning`,`success`,`info`]}}},p={render:d,args:{label:`Выбрать опцию`,description:`Одиночная радиокнопка в controlled-режиме.`,value:!1,tone:`neutral`}},m={render:()=>{let[e,t]=(0,l.useState)(`email`);return(0,u.jsxs)(`div`,{role:`radiogroup`,"aria-label":`Канал уведомлений`,style:{display:`grid`,gap:12},children:[(0,u.jsx)(i,{name:`notification-channel`,label:`Email`,value:e===`email`,onChange:e=>e&&t(`email`),tone:`info`}),(0,u.jsx)(i,{name:`notification-channel`,label:`SMS`,value:e===`sms`,onChange:e=>e&&t(`sms`),tone:`info`})]})},args:{value:void 0}},h={render:d,args:{label:`Недоступная опция`,description:`Заблокировано политикой конфигурации.`,value:!0,disabled:!0,tone:`neutral`}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
2
2
  render: renderRadioButtonStory,
3
3
  args: {
4
4
  label: "Выбрать опцию",
@@ -1 +1 @@
1
- import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{i as r,n as i,r as a}from"./iframe-Bbj4T0X2.js";import{a as o,i as s,n as c,o as l}from"./utils-DUM89eIj.js";import{n as u,t as d}from"./ui.module-CiLQZm_L.js";var f,p;function m(){return(m=e((()=>{r(),f=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]],p=a(`circle-check-big`,f)})))()}var h,g,_,v,y,b,x,S,C;function w(){return(w=e((()=>{h=`nINbA6`,g=`GL-UWx`,_=`_6PeF-i`,v=`_5wP4aR`,y=`S3MnZI`,b=`KHJ0ja`,x=`oGmcQH`,S=`k2z8AN`,C={radioGroup:h,noWrap:g,horizontal:_,vertical:v,radioItem:y,checked:b,radioItemContent:x,radioItemIcon:S}})))()}function T({value:e,onChange:t,label:n,description:r,disabled:i,className:a,noWrap:s,orientation:c=`horizontal`,"aria-label":l,children:d}){let f=(0,D.useId)(),p=n?`${f}-label`:void 0,m=r?`${f}-description`:void 0,[h,g]=(0,D.useState)([]),_=(0,D.useCallback)(e=>t?.(e),[t]),v=(0,D.useCallback)(e=>(g(t=>t.includes(e)?t:[...t,e]),()=>{g(t=>t.filter(t=>t!==e))}),[]),y=(0,D.useMemo)(()=>({value:e,onChange:_,disabled:i,orientation:c,groupId:f,labelId:p,descriptionId:m,firstOptionId:h[0],registerOption:v}),[m,i,f,_,p,c,v,h,e]);return(0,O.jsxs)(`div`,{className:o(u.uiElement,i&&u.disabled,a),children:[n&&(0,O.jsx)(`div`,{id:p,className:u.uiLabel,children:n}),r&&(0,O.jsx)(`div`,{id:m,className:u.uiDescription,children:r}),(0,O.jsx)(k.Provider,{value:y,children:(0,O.jsx)(`div`,{role:`radiogroup`,"aria-labelledby":p,"aria-label":p?void 0:l,"aria-describedby":m,"aria-disabled":i||void 0,"data-disabled":i||void 0,className:o(u.uiInputControl,C.radioGroup,s&&C.noWrap,C[c]),children:d})})]})}function E({value:e,label:t,description:n,className:r}){let i=(0,D.useContext)(k),a=(0,D.useId)(),s=i?.registerOption;if((0,D.useLayoutEffect)(()=>{if(s)return s(a)},[s,a]),!i)return(0,O.jsxs)(`div`,{className:o(C.radioItem,r),children:[(0,O.jsx)(`p`,{className:`textNoWrap`,children:t}),n&&(0,O.jsx)(`div`,{className:`fontSizeSm content2`,children:n})]});let u=Object.is(i.value,e),d=i.disabled===!0,f=i.value===void 0&&i.firstOptionId===a,m=()=>{d||u||i.onChange?.(e)};return(0,O.jsxs)(`button`,{id:`${i.groupId}-option-${a}`,type:`button`,role:`radio`,"aria-checked":u,disabled:d,tabIndex:u||f?0:-1,className:o(C.radioItem,u&&C.checked,r),"data-ui":`radio-option`,"data-action":`select-radio-option`,onClick:m,onKeyDown:e=>{if(d||c(e,m))return;let t=e.currentTarget,n=t.closest(`[role="radiogroup"]`),r=Array.from(n?.querySelectorAll(`[role="radio"]:not([disabled])`)??[]);if(!r.length)return;let a=r.indexOf(t);if(a===-1)return;let o=l({currentIndex:a,itemCount:r.length,key:e.key,orientation:i.orientation});o!==null&&(e.preventDefault(),r[o]?.focus(),r[o]?.click())},children:[(0,O.jsxs)(`span`,{className:C.radioItemContent,children:[(0,O.jsx)(`span`,{className:`textNoWrap`,children:t}),n&&(0,O.jsx)(`span`,{className:`fontSizeSm`,children:n})]}),(0,O.jsx)(`span`,{className:C.radioItemIcon,children:(0,O.jsx)(p,{style:{display:`block`,visibility:u?`visible`:`hidden`}})})]})}var D,O,k;function A(){return(A=e((()=>{D=t(n(),1),s(),m(),d(),w(),O=i(),k=(0,D.createContext)(null),T.Option=E,T.__docgenInfo={description:`Группа радиокнопок с общим состоянием выбранного значения. Обеспечивает единый API выбора и контекст для дочерних опций.`,methods:[{name:`Option`,docblock:null,modifiers:[`static`],params:[{name:`{ value, label, description, className }: OptionProps<T>`,optional:!1,type:{name:`OptionProps`,elements:[{name:`T`}],raw:`OptionProps<T>`,alias:`OptionProps`}}],returns:null}],displayName:`RadioGroup`,props:{value:{required:!1,tsType:{name:`T`},description:``},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},label:{required:!1,tsType:{name:`string`},description:``},description:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},noWrap:{required:!1,tsType:{name:`literal`,value:`true`},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"vertical" | "horizontal"`,elements:[{name:`literal`,value:`"vertical"`},{name:`literal`,value:`"horizontal"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},"aria-label":{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}},E.__docgenInfo={description:"Опция внутри `RadioGroup`, представляющая одно выбираемое значение. Отрисовывает подпись, описание и состояние выбора.",methods:[],displayName:`Option`,props:{value:{required:!0,tsType:{name:`T`},description:``},label:{required:!0,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}export{A as n,T as t};
1
+ import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{i as r,n as i,r as a}from"./iframe-CIzkWNwp.js";import{a as o,i as s,n as c,o as l}from"./utils-DUM89eIj.js";import{n as u,t as d}from"./ui.module-D4CuGr8r.js";var f,p;function m(){return(m=e((()=>{r(),f=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]],p=a(`circle-check-big`,f)})))()}var h,g,_,v,y,b,x,S,C;function w(){return(w=e((()=>{h=`nINbA6`,g=`GL-UWx`,_=`_6PeF-i`,v=`_5wP4aR`,y=`S3MnZI`,b=`KHJ0ja`,x=`oGmcQH`,S=`k2z8AN`,C={radioGroup:h,noWrap:g,horizontal:_,vertical:v,radioItem:y,checked:b,radioItemContent:x,radioItemIcon:S}})))()}function T({value:e,onChange:t,label:n,description:r,disabled:i,className:a,noWrap:s,orientation:c=`horizontal`,"aria-label":l,children:d}){let f=(0,D.useId)(),p=n?`${f}-label`:void 0,m=r?`${f}-description`:void 0,[h,g]=(0,D.useState)([]),_=(0,D.useCallback)(e=>t?.(e),[t]),v=(0,D.useCallback)(e=>(g(t=>t.includes(e)?t:[...t,e]),()=>{g(t=>t.filter(t=>t!==e))}),[]),y=(0,D.useMemo)(()=>({value:e,onChange:_,disabled:i,orientation:c,groupId:f,labelId:p,descriptionId:m,firstOptionId:h[0],registerOption:v}),[m,i,f,_,p,c,v,h,e]);return(0,O.jsxs)(`div`,{className:o(u.uiElement,i&&u.disabled,a),children:[n&&(0,O.jsx)(`div`,{id:p,className:u.uiLabel,children:n}),r&&(0,O.jsx)(`div`,{id:m,className:u.uiDescription,children:r}),(0,O.jsx)(k.Provider,{value:y,children:(0,O.jsx)(`div`,{role:`radiogroup`,"aria-labelledby":p,"aria-label":p?void 0:l,"aria-describedby":m,"aria-disabled":i||void 0,"data-disabled":i||void 0,className:o(u.uiInputControl,C.radioGroup,s&&C.noWrap,C[c]),children:d})})]})}function E({value:e,label:t,description:n,className:r}){let i=(0,D.useContext)(k),a=(0,D.useId)(),s=i?.registerOption;if((0,D.useLayoutEffect)(()=>{if(s)return s(a)},[s,a]),!i)return(0,O.jsxs)(`div`,{className:o(C.radioItem,r),children:[(0,O.jsx)(`p`,{className:`textNoWrap`,children:t}),n&&(0,O.jsx)(`div`,{className:`fontSizeSm content2`,children:n})]});let u=Object.is(i.value,e),d=i.disabled===!0,f=i.value===void 0&&i.firstOptionId===a,m=()=>{d||u||i.onChange?.(e)};return(0,O.jsxs)(`button`,{id:`${i.groupId}-option-${a}`,type:`button`,role:`radio`,"aria-checked":u,disabled:d,tabIndex:u||f?0:-1,className:o(C.radioItem,u&&C.checked,r),"data-ui":`radio-option`,"data-action":`select-radio-option`,onClick:m,onKeyDown:e=>{if(d||c(e,m))return;let t=e.currentTarget,n=t.closest(`[role="radiogroup"]`),r=Array.from(n?.querySelectorAll(`[role="radio"]:not([disabled])`)??[]);if(!r.length)return;let a=r.indexOf(t);if(a===-1)return;let o=l({currentIndex:a,itemCount:r.length,key:e.key,orientation:i.orientation});o!==null&&(e.preventDefault(),r[o]?.focus(),r[o]?.click())},children:[(0,O.jsxs)(`span`,{className:C.radioItemContent,children:[(0,O.jsx)(`span`,{className:`textNoWrap`,children:t}),n&&(0,O.jsx)(`span`,{className:`fontSizeSm`,children:n})]}),(0,O.jsx)(`span`,{className:C.radioItemIcon,children:(0,O.jsx)(p,{style:{display:`block`,visibility:u?`visible`:`hidden`}})})]})}var D,O,k;function A(){return(A=e((()=>{D=t(n(),1),s(),m(),d(),w(),O=i(),k=(0,D.createContext)(null),T.Option=E,T.__docgenInfo={description:`Группа радиокнопок с общим состоянием выбранного значения. Обеспечивает единый API выбора и контекст для дочерних опций.`,methods:[{name:`Option`,docblock:null,modifiers:[`static`],params:[{name:`{ value, label, description, className }: OptionProps<T>`,optional:!1,type:{name:`OptionProps`,elements:[{name:`T`}],raw:`OptionProps<T>`,alias:`OptionProps`}}],returns:null}],displayName:`RadioGroup`,props:{value:{required:!1,tsType:{name:`T`},description:``},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},label:{required:!1,tsType:{name:`string`},description:``},description:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},noWrap:{required:!1,tsType:{name:`literal`,value:`true`},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"vertical" | "horizontal"`,elements:[{name:`literal`,value:`"vertical"`},{name:`literal`,value:`"horizontal"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},"aria-label":{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}},E.__docgenInfo={description:"Опция внутри `RadioGroup`, представляющая одно выбираемое значение. Отрисовывает подпись, описание и состояние выбора.",methods:[],displayName:`Option`,props:{value:{required:!0,tsType:{name:`T`},description:``},label:{required:!0,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}export{A as n,T as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CrYcG0WD.js";import{a as p,i as m,n as h,r as g,t as _}from"./RadioGroup.stories-MS9Jl6AT.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CIzkWNwp.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CdL0FBl-.js";import{a as p,i as m,n as h,r as g,t as _}from"./RadioGroup.stories-Bkny6-9V.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,b.jsx)(u,{children:`RadioGroup`}),`
3
3
  `,(0,b.jsx)(o,{children:`Группа взаимоисключающих опций с поддержкой горизонтальной и вертикальной раскладки`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`RadioGroup уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n,t as r}from"./RadioGroup-CL7EHd6O.js";import{n as i}from"./iframe-Bbj4T0X2.js";import{n as a,t as o}from"./createControlledStoryRender-DHsyXc1B.js";var s=t({Controlled:()=>g,Disabled:()=>v,Vertical:()=>_,__namedExportsOrder:()=>y,default:()=>h});function c(e){return(0,d.jsx)(r,{...e})}function l({args:e,updateArgs:t,options:n,showValue:i=!1}){return(0,d.jsxs)(`div`,{style:{display:`grid`,gap:10},children:[(0,d.jsx)(c,{...e,onChange:n=>{e.onChange?.(n),t({value:n})},children:n.map(e=>(0,d.jsx)(r.Option,{value:e.value,label:e.label,description:e.description},e.value))}),i&&(0,d.jsxs)(`div`,{children:[`Выбрано: `,e.value??`не выбрано`]})]})}function u(e,t=!1){return o((n,r)=>(0,d.jsx)(l,{args:n,updateArgs:r,options:e,showValue:t}))}var d,f,p,m,h,g,_,v,y;function b(){return(b=e((()=>{a(),n(),d=i(),f=[{value:`email`,label:`Email`,description:`Письма на корпоративную почту`},{value:`sms`,label:`SMS`,description:`Сообщения на телефон`},{value:`push`,label:`Push`,description:`Уведомления в приложении`}],p=[{value:`draft`,label:`Черновик`},{value:`review`,label:`На согласовании`},{value:`approved`,label:`Утвержден`}],m=[{value:`yes`,label:`Да`},{value:`no`,label:`Нет`}],h={title:`Shared/UI/RadioGroup`,component:c,args:{value:`email`,onChange:()=>{},orientation:`horizontal`,label:`Канал уведомлений`,description:`Выберите основной канал доставки`,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{value:{description:`Текущее выбранное значение.`,control:`text`},onChange:{description:`Вызывается при смене выбранной опции.`,control:!1},label:{description:`Заголовок группы опций.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},disabled:{description:`Блокирует выбор опций.`,control:`boolean`},noWrap:{description:`Запрещает перенос опций на новую строку.`,control:`boolean`},orientation:{description:`Ориентация расположения опций.`,control:`inline-radio`,options:[`horizontal`,`vertical`]},children:{description:"Элементы `RadioGroup.Option` внутри группы.",control:!1}}},g={render:u(f,!0),args:{}},_={render:u(p),args:{orientation:`vertical`,label:`Статус документа`,value:`draft`}},v={render:u(m),args:{disabled:!0,value:`yes`}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n,t as r}from"./RadioGroup-BGF3aoOc.js";import{n as i}from"./iframe-CIzkWNwp.js";import{n as a,t as o}from"./createControlledStoryRender-DHsyXc1B.js";var s=t({Controlled:()=>g,Disabled:()=>v,Vertical:()=>_,__namedExportsOrder:()=>y,default:()=>h});function c(e){return(0,d.jsx)(r,{...e})}function l({args:e,updateArgs:t,options:n,showValue:i=!1}){return(0,d.jsxs)(`div`,{style:{display:`grid`,gap:10},children:[(0,d.jsx)(c,{...e,onChange:n=>{e.onChange?.(n),t({value:n})},children:n.map(e=>(0,d.jsx)(r.Option,{value:e.value,label:e.label,description:e.description},e.value))}),i&&(0,d.jsxs)(`div`,{children:[`Выбрано: `,e.value??`не выбрано`]})]})}function u(e,t=!1){return o((n,r)=>(0,d.jsx)(l,{args:n,updateArgs:r,options:e,showValue:t}))}var d,f,p,m,h,g,_,v,y;function b(){return(b=e((()=>{a(),n(),d=i(),f=[{value:`email`,label:`Email`,description:`Письма на корпоративную почту`},{value:`sms`,label:`SMS`,description:`Сообщения на телефон`},{value:`push`,label:`Push`,description:`Уведомления в приложении`}],p=[{value:`draft`,label:`Черновик`},{value:`review`,label:`На согласовании`},{value:`approved`,label:`Утвержден`}],m=[{value:`yes`,label:`Да`},{value:`no`,label:`Нет`}],h={title:`Shared/UI/RadioGroup`,component:c,args:{value:`email`,onChange:()=>{},orientation:`horizontal`,label:`Канал уведомлений`,description:`Выберите основной канал доставки`,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{value:{description:`Текущее выбранное значение.`,control:`text`},onChange:{description:`Вызывается при смене выбранной опции.`,control:!1},label:{description:`Заголовок группы опций.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},disabled:{description:`Блокирует выбор опций.`,control:`boolean`},noWrap:{description:`Запрещает перенос опций на новую строку.`,control:`boolean`},orientation:{description:`Ориентация расположения опций.`,control:`inline-radio`,options:[`horizontal`,`vertical`]},children:{description:"Элементы `RadioGroup.Option` внутри группы.",control:!1}}},g={render:u(f,!0),args:{}},_={render:u(p),args:{orientation:`vertical`,label:`Статус документа`,value:`draft`}},v={render:u(m),args:{disabled:!0,value:`yes`}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
2
2
  render: createRadioGroupStoryRender(notificationOptions, true),
3
3
  args: {}
4
4
  }`,...g.parameters?.docs?.source}}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-Bbj4T0X2.js";import{a as r,i}from"./utils-DUM89eIj.js";var a,o,s,c;function l(){return(l=e((()=>{a=t(),i(),o=n(),s=(0,a.forwardRef)(({children:e,height:t,stable:n,overscroll:i,className:a},s)=>(0,o.jsx)(`div`,{ref:s,className:r(`scrollable`,n&&`stable`,i&&`overscroll`,a),style:{height:t},children:e})),c=(0,a.forwardRef)(({blockClassName:e,...t},n)=>(0,o.jsx)(`div`,{className:r(e,`overflowHidden w100 h100`),children:(0,o.jsx)(s,{ref:n,...t})})),s.__docgenInfo={description:``,methods:[],displayName:`Scrollable`,props:{className:{required:!1,tsType:{name:`string`},description:``},height:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``},stable:{required:!1,tsType:{name:`boolean`},description:``},overscroll:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`PropsWithChildren`]},c.__docgenInfo={description:``,methods:[],displayName:`ScrollableBlock`,props:{className:{required:!1,tsType:{name:`string`},description:``},height:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``},stable:{required:!1,tsType:{name:`boolean`},description:``},overscroll:{required:!1,tsType:{name:`boolean`},description:``},blockClassName:{required:!1,tsType:{name:`string`},description:``}},composes:[`PropsWithChildren`]}})))()}export{l as n,s as t};
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-CIzkWNwp.js";import{a as r,i}from"./utils-DUM89eIj.js";var a,o,s,c;function l(){return(l=e((()=>{a=t(),i(),o=n(),s=(0,a.forwardRef)(({children:e,height:t,stable:n,overscroll:i,className:a},s)=>(0,o.jsx)(`div`,{ref:s,className:r(`scrollable`,n&&`stable`,i&&`overscroll`,a),style:{height:t},children:e})),c=(0,a.forwardRef)(({blockClassName:e,...t},n)=>(0,o.jsx)(`div`,{className:r(e,`overflowHidden w100 h100`),children:(0,o.jsx)(s,{ref:n,...t})})),s.__docgenInfo={description:``,methods:[],displayName:`Scrollable`,props:{className:{required:!1,tsType:{name:`string`},description:``},height:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``},stable:{required:!1,tsType:{name:`boolean`},description:``},overscroll:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`PropsWithChildren`]},c.__docgenInfo={description:``,methods:[],displayName:`ScrollableBlock`,props:{className:{required:!1,tsType:{name:`string`},description:``},height:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``},stable:{required:!1,tsType:{name:`boolean`},description:``},overscroll:{required:!1,tsType:{name:`boolean`},description:``},blockClassName:{required:!1,tsType:{name:`string`},description:``}},composes:[`PropsWithChildren`]}})))()}export{l as n,s as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CrYcG0WD.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"./Select.stories-DfjNWXba.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-C0FnF6B9.js";import{n as t}from"./iframe-CIzkWNwp.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CdL0FBl-.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"./Select.stories-BowB7kdj.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:`Select`}),`
3
3
  `,(0,C.jsx)(o,{children:`Getter-based select для примитивов и сложных объектных option`}),`
4
4
  `,(0,C.jsx)(t.p,{children:`Select уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -0,0 +1,12 @@
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./check-Bff_8tRJ.js";import{n as i}from"./iframe-CIzkWNwp.js";import{a,i as o}from"./utils-DUM89eIj.js";import{n as s,t as ee}from"./OptionButton-CQVIwI2y.js";import{n as c,t as l}from"./ui.module-D4CuGr8r.js";import{c as u,d,f,i as te,l as ne,m as p,n as m,p as re,r as h,s as ie,t as g,u as _}from"./usePickerTriggerController-B1Mub3-v.js";import{n as v,t as y}from"./Option-DqmRqyOQ.js";import{i as b,n as ae,r as oe,t as x}from"./usePickerQuery-BfayEntP.js";import{n as se,t as S}from"./usePickerDefaultFilter-Be420WNF.js";import{n as C,t as ce}from"./CustomOptionButton-BWYYtI_M.js";function le({option:e,getOptionLabel:t,getOptionCode:n,getOptionGroup:r}){return[d(t(e)),d(n?.(e)),d(r?.(e)?.label)].filter(e=>!!e).join(` `).toLowerCase()}function w(){return(w=e((()=>{f()})))()}function ue(e,t){let n=[];return e.forEach((e,r)=>{let i=t(e),a=n.at(-1),o=a?.group?.key===i?.key;if(a&&o){a.items.push({option:e,index:r});return}n.push({group:i,items:[{option:e,index:r}]})}),n}function T(e){let{label:t,description:n,disabled:i,placeholder:o,size:s,options:l,value:u,onChange:f,getOptionKey:p,getOptionLabel:h,getOptionCode:g,getOptionSearchText:_,getOptionDisabled:v,getOptionAriaLabel:b,getOptionGroup:x,getOptionClassName:S,renderOption:C,renderValue:w,className:T,buttonClassName:O,optionsClassName:de,optionsMaxWidth:fe,optionsContentClassName:pe,searchable:k=!1,defaultFilter:me=!0,query:he,defaultQuery:ge,onQuery:_e,renderPopupHeader:ve,emptyState:ye,isLoading:be,errorState:A,placement:j=`bottom-start`,clearable:M=!1}=e,N=f,P=(0,E.useRef)(null),[F,xe]=(0,E.useState)(!1),I=k?`search-single`:`display`,L=u===void 0?void 0:p(u),R=L===void 0?void 0:l.find(e=>p(e)===L)??u,{query:z,setQuery:B,resetQueryOnClose:V}=ae({query:he,defaultQuery:ge,onQuery:_e,triggerMode:I}),Se=e=>{F&&!e&&V&&B(``),xe(e)},Ce=(0,E.useCallback)(e=>_?.(e)??le({option:e,getOptionLabel:h,getOptionCode:g,getOptionGroup:x}),[_,g,x,h]),H=se({options:l,query:z,enabled:k&&me,getSearchText:Ce}),U=(0,E.useMemo)(()=>x?ue(H,x):void 0,[x,H]),we=L===void 0?-1:H.findIndex(e=>p(e)===L),{activeIndex:Te,context:Ee,floatingStyles:De,getFloatingProps:Oe,setReference:ke,setFloating:Ae,setOptionRef:je,close:W,openList:Me,toggleOpen:Ne,selectOption:G,selectActiveOption:Pe,handleReferenceKeyDown:Fe,handleFloatingKeyDown:Ie,getOptionId:Le,getActiveOptionId:K}=te({options:H,selectedIndex:we,open:F,onOpenChange:Se,getOptionDisabled:v,onSelect:N,disabled:i,placement:j,triggerMode:I}),q=H.length>0,J=R===void 0?void 0:h(R),Y=R===void 0?void 0:w?w(R):J,Re=d(J),ze=R===void 0?void 0:d(g?.(R)),X=d(Y)??Re??ze??(L===void 0?``:String(L)),Z=k&&(F||z.length>0),Be=Z?z:R===void 0?``:X,Q=m({mode:I,open:F,currentQuery:z,hasDisplayValue:R!==void 0,inputRef:P,setQuery:B,openList:Me,close:W,toggleOpen:Ne}),Ve=e=>{P.current=e},He=()=>{M&&N(void 0),B(``),W()},$=(e,t,n)=>{let i=p(t),a=L!==void 0&&i===L,o=n===Te,s=v?.(t)??!1,c={active:o,selected:a,disabled:s};return(0,D.jsx)(y,{id:Le(e,n),ref:e=>je(n,e),role:`option`,"aria-selected":a,"aria-disabled":s||void 0,"aria-label":b?.(t),active:o,selected:a,disabled:s,className:S?.(t,c),children:C?(0,D.jsx)(ce,{tabIndex:-1,disabled:s,onMouseDown:e=>e.preventDefault(),onClick:()=>G(t),children:C(t,c)}):(0,D.jsx)(ee,{tabIndex:-1,disabled:s,icon:a?(0,D.jsx)(r,{}):(0,D.jsx)(`span`,{}),text:h(t),code:g?.(t),onMouseDown:e=>e.preventDefault(),onClick:()=>G(t)})},i)};return(0,D.jsx)(re,{label:t,description:n,disabled:i,size:s,className:T,children:({controlId:e,labelId:n,describedBy:r})=>{let s=`${e}-listbox`;return(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(ie,{ref:Ve,rootRef:ke,id:e,type:`text`,disabled:i,readOnly:!k,autoComplete:`off`,role:`combobox`,isLoading:be,open:F,optionCount:l.length,label:t,placeholder:o,value:Be,selectedValue:Y??X,hasSelection:R!==void 0,showSelectedValue:R!==void 0&&!Z,clearable:!!M,onClear:He,onToggleMouseDown:Q.handleToggleMouseDown,onToggleClick:Q.handleToggleClick,"aria-labelledby":n,"aria-describedby":r,"aria-haspopup":`listbox`,"aria-expanded":F,"aria-controls":F?s:void 0,"aria-autocomplete":k?`list`:`none`,"aria-activedescendant":F?K(s):void 0,inputClassName:a(O,`textOverflow`),onChange:e=>{k&&Q.handleTriggerInputChange(e.target.value)},onClick:Q.handleTriggerClick,onFocus:e=>{Q.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{Fe(e),!e.defaultPrevented&&Q.handleTriggerKeyDown({event:e,onActivateWhenOpen:Pe,enableSpaceActivation:!k})}}),(0,D.jsx)(ne,{open:F,context:Ee,floatingStyles:De,listId:s,labelId:n,descriptionId:r,activeOptionId:q?K(s):void 0,setFloating:Ae,getFloatingProps:Oe,onKeyDown:Ie,className:de,maxWidth:fe,toolbar:ve,children:(0,D.jsx)(`div`,{className:a(pe,`h100 scrollable`),children:q?U?U.map((e,t)=>{let n=e.group?`${s}-group-${t}`:void 0,r=e.items.map(({option:e,index:t})=>$(s,e,t));return e.group?(0,D.jsxs)(`div`,{role:`group`,"aria-labelledby":n,children:[(0,D.jsx)(`div`,{id:n,className:c.uiPopupGroupLabel,children:e.group.label}),r]},`group-${String(e.group.key)}-${t}`):(0,D.jsx)(E.Fragment,{children:r},`options-${t}`)}):H.map((e,t)=>$(s,e,t)):(0,D.jsx)(oe,{emptyState:ye,errorState:A})})})]})}})}var E,D;function O(){return(O=e((()=>{E=t(),o(),n(),C(),v(),s(),f(),p(),_(),b(),u(),S(),h(),x(),g(),l(),w(),D=i(),T.__docgenInfo={description:`Выпадающий список выбора значения из набора опций. Подходит для форм, фильтров и простых справочников.`,methods:[],displayName:`Select`,props:{options:{required:!0,tsType:{name:`unknown`},description:``},getOptionKey:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => SelectOptionKey`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionLabel:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionCode:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionSearchText:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string | readonly string[]`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`union`,raw:`string | readonly string[]`,elements:[{name:`string`},{name:`unknown`}]}}},description:`Явный поисковый текст для опции с произвольным ReactNode-render.`},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`boolean`}}},description:``},getOptionAriaLabel:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionGroup:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => SelectOptionGroup | undefined`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`union`,raw:`SelectOptionGroup | undefined`,elements:[{name:`signature`,type:`object`,raw:`{
2
+ readonly key: SelectOptionKey;
3
+ readonly label: ReactNode;
4
+ }`,signature:{properties:[{key:`key`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`ReactNode`,required:!0}}]}},{name:`undefined`}]}}},description:``},getOptionClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption, state: SelectOptionState) => string | undefined`,signature:{arguments:[{type:{name:`TOption`},name:`option`},{type:{name:`signature`,type:`object`,raw:`{
5
+ active: boolean;
6
+ selected: boolean;
7
+ disabled: boolean;
8
+ }`,signature:{properties:[{key:`active`,value:{name:`boolean`,required:!0}},{key:`selected`,value:{name:`boolean`,required:!0}},{key:`disabled`,value:{name:`boolean`,required:!0}}]}},name:`state`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:``},renderOption:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption, state: SelectOptionState) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`},{type:{name:`signature`,type:`object`,raw:`{
9
+ active: boolean;
10
+ selected: boolean;
11
+ disabled: boolean;
12
+ }`,signature:{properties:[{key:`active`,value:{name:`boolean`,required:!0}},{key:`selected`,value:{name:`boolean`,required:!0}},{key:`disabled`,value:{name:`boolean`,required:!0}}]}},name:`state`}],return:{name:`ReactNode`}}},description:``},renderValue:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`ReactNode`}}},description:``},className:{required:!1,tsType:{name:`string`},description:``},buttonClassName:{required:!1,tsType:{name:`string`},description:``},optionsClassName:{required:!1,tsType:{name:`string`},description:``},optionsMaxWidth:{required:!1,tsType:{name:`CSSProperties["maxWidth"]`,raw:`CSSProperties["maxWidth"]`},description:``},optionsContentClassName:{required:!1,tsType:{name:`string`},description:``},searchable:{required:!1,tsType:{name:`boolean`},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:``},defaultFilter:{required:!1,tsType:{name:`boolean`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},renderPopupHeader:{required:!1,tsType:{name:`ReactNode`},description:``},emptyState:{required:!1,tsType:{name:`ReactNode`},description:``},errorState:{required:!1,tsType:{name:`ReactNode`},description:``},placement:{required:!1,tsType:{name:`Placement`},description:``},clearable:{required:!1,tsType:{name:`TClearable`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`unknown`},name:`value`}],return:{name:`void`}}},description:``}}}})))()}export{O as n,T as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-Bbj4T0X2.js";import{n as i,t as a}from"./Select-DBsWg0wv.js";var o=t({ControlledObjects:()=>m,CustomOptionLayout:()=>v,Disabled:()=>y,GroupedOptions:()=>_,Placeholder:()=>g,PrimitiveOptions:()=>h,__namedExportsOrder:()=>b,default:()=>p}),s,c,l,u,d,f,p,m,h,g,_,v,y,b;function x(){return(x=e((()=>{s=n(),i(),c=r(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=[{id:1,name:`Отдел продаж`,code:`SLS`,manager:`Елена Миронова`,direction:`Коммерческий блок`},{id:2,name:`Закупки`,code:`PRC`,manager:`Антон Мелихов`,direction:`Коммерческий блок`},{id:3,name:`Логистика`,code:`LGS`,manager:`Мария Климова`,direction:`Операционный блок`,disabled:!0},{id:4,name:`Поддержка клиентов`,code:`SUP`,manager:`Ирина Белова`,direction:`Операционный блок`}],f=[`Новый`,`В работе`,`Завершён`,`Архив`],p={title:`Shared/UI/Select`,component:a,args:{label:`Подразделение`,description:`Выберите подразделение из списка.`,placeholder:`Не выбрано`,value:void 0,options:d,onChange:u(),getOptionKey:e=>e.id,getOptionLabel:e=>e.name,getOptionCode:e=>e.code,getOptionDisabled:e=>e.disabled??!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Низкоуровневый getter-based select. Подходит для произвольных структур данных, примитивов и сложного кастомного рендера. Компонент возвращает наружу саму выбранную option. Для сериализуемых конфигов и сценариев с optionKey/optionLabel используйте SerializableSelect.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда значение ещё не выбрано.`,control:`text`},value:{description:`Текущая выбранная option целиком.`,control:!1},options:{description:`Массив опций любого поддерживаемого формата.`,control:!1},onChange:{description:`Вызывается с выбранной option.`,control:!1},getOptionKey:{description:`Функция получения уникального ключа option.`,control:!1},getOptionLabel:{description:`Функция получения основного текста option.`,control:!1},getOptionCode:{description:`Опциональный рендер дополнительного кода справа.`,control:!1},getOptionDisabled:{description:`Опциональная функция блокировки отдельных option.`,control:!1},getOptionAriaLabel:{description:`Опциональная функция для aria-label option.`,control:!1},getOptionGroup:{description:`Опциональная функция, которая объединяет соседние option под доступным заголовком группы.`,control:!1},getOptionClassName:{description:`Опциональная функция CSS-класса option по её состоянию.`,control:!1},renderOption:{description:`Полностью кастомный рендер option в списке.`,control:!1},renderValue:{description:`Кастомный рендер выбранного значения в кнопке.`,control:!1},optionsMaxWidth:{description:`Максимальная ширина выпадающего списка в любом допустимом CSS-формате.`,control:`text`},buttonClassName:{description:`Класс trigger-кнопки Select без изменения корневого контейнера.`,control:`text`},optionsClassName:{description:`Класс popup со списком option.`,control:`text`},optionsContentClassName:{description:`Класс области содержимого popup, например для особой плотности списка.`,control:`text`},searchable:{description:`Включает поиск по option в trigger-поле.`,control:`boolean`},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},defaultFilter:{description:`Включает встроенную фильтрацию option.`,control:`boolean`},renderPopupHeader:{description:`Дополнительное содержимое над списком option.`,control:!1},emptyState:{description:`Содержимое при пустом списке option.`,control:!1},loadingState:{description:`Содержимое при загрузке option.`,control:!1},errorState:{description:`Содержимое при ошибке загрузки option.`,control:!1},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},placement:{description:`Позиционирование выпадающего списка.`,control:`select`,options:[`bottom-start`,`bottom-end`,`top-start`,`top-end`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},clearable:{description:`Показывает действие очистки выбранной option.`,control:`boolean`}}},m={name:`Объекты`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??d[1],onChange:n=>{e.onChange(n),t({value:n})}})},args:{value:d[1]}},h={name:`Примитивы`,render:()=>{let[e,t]=(0,s.useState)(f[1]);return(0,c.jsx)(a,{label:`Статус`,description:`Пример использования низкоуровневого Select со строковыми значениями.`,placeholder:`Выберите статус`,options:f,value:e,onChange:t,getOptionKey:e=>e,getOptionLabel:e=>e,size:`md`})}},g={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,onChange:n=>{e.onChange(n),t({value:n})}})}},_={name:`Группированные опции`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,onChange:n=>{e.onChange(n),t({value:n})},getOptionGroup:e=>({key:e.direction,label:e.direction}),optionsMaxWidth:`40rem`})}},v={name:`Кастомный рендер`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??d[0],onChange:n=>{e.onChange(n),t({value:n})},renderValue:e=>`${e.code} · ${e.name}`,renderOption:(e,t)=>(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`flexEllipsis`,children:[(0,c.jsx)(`div`,{children:e.name}),(0,c.jsx)(`div`,{className:`fontSizeSm content2`,children:e.manager})]}),(0,c.jsx)(`div`,{style:{opacity:t.selected?1:.5},children:e.code})]})})}},y={args:{disabled:!0,value:d[0]}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CIzkWNwp.js";import{n as i,t as a}from"./Select-CcuhYAW8.js";var o=t({ControlledObjects:()=>m,CustomOptionLayout:()=>v,Disabled:()=>y,GroupedOptions:()=>_,Placeholder:()=>g,PrimitiveOptions:()=>h,__namedExportsOrder:()=>b,default:()=>p}),s,c,l,u,d,f,p,m,h,g,_,v,y,b;function x(){return(x=e((()=>{s=n(),i(),c=r(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=[{id:1,name:`Отдел продаж`,code:`SLS`,manager:`Елена Миронова`,direction:`Коммерческий блок`},{id:2,name:`Закупки`,code:`PRC`,manager:`Антон Мелихов`,direction:`Коммерческий блок`},{id:3,name:`Логистика`,code:`LGS`,manager:`Мария Климова`,direction:`Операционный блок`,disabled:!0},{id:4,name:`Поддержка клиентов`,code:`SUP`,manager:`Ирина Белова`,direction:`Операционный блок`}],f=[`Новый`,`В работе`,`Завершён`,`Архив`],p={title:`Shared/UI/Select`,component:a,args:{label:`Подразделение`,description:`Выберите подразделение из списка.`,placeholder:`Не выбрано`,value:void 0,options:d,onChange:u(),getOptionKey:e=>e.id,getOptionLabel:e=>e.name,getOptionCode:e=>e.code,getOptionDisabled:e=>e.disabled??!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Низкоуровневый getter-based select. Подходит для произвольных структур данных, примитивов и сложного кастомного рендера. Компонент возвращает наружу саму выбранную option. Для сериализуемых конфигов и сценариев с optionKey/optionLabel используйте SerializableSelect.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда значение ещё не выбрано.`,control:`text`},value:{description:`Текущая выбранная option целиком.`,control:!1},options:{description:`Массив опций любого поддерживаемого формата.`,control:!1},onChange:{description:`Вызывается с выбранной option.`,control:!1},getOptionKey:{description:`Функция получения уникального ключа option.`,control:!1},getOptionLabel:{description:`Функция получения основного текста option.`,control:!1},getOptionCode:{description:`Опциональный рендер дополнительного кода справа.`,control:!1},getOptionDisabled:{description:`Опциональная функция блокировки отдельных option.`,control:!1},getOptionAriaLabel:{description:`Опциональная функция для aria-label option.`,control:!1},getOptionGroup:{description:`Опциональная функция, которая объединяет соседние option под доступным заголовком группы.`,control:!1},getOptionClassName:{description:`Опциональная функция CSS-класса option по её состоянию.`,control:!1},renderOption:{description:`Полностью кастомный рендер option в списке.`,control:!1},renderValue:{description:`Кастомный рендер выбранного значения в кнопке.`,control:!1},optionsMaxWidth:{description:`Максимальная ширина выпадающего списка в любом допустимом CSS-формате.`,control:`text`},buttonClassName:{description:`Класс trigger-кнопки Select без изменения корневого контейнера.`,control:`text`},optionsClassName:{description:`Класс popup со списком option.`,control:`text`},optionsContentClassName:{description:`Класс области содержимого popup, например для особой плотности списка.`,control:`text`},searchable:{description:`Включает поиск по option в trigger-поле.`,control:`boolean`},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},defaultFilter:{description:`Включает встроенную фильтрацию option.`,control:`boolean`},renderPopupHeader:{description:`Дополнительное содержимое над списком option.`,control:!1},emptyState:{description:`Содержимое при пустом списке option.`,control:!1},loadingState:{description:`Содержимое при загрузке option.`,control:!1},errorState:{description:`Содержимое при ошибке загрузки option.`,control:!1},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},placement:{description:`Позиционирование выпадающего списка.`,control:`select`,options:[`bottom-start`,`bottom-end`,`top-start`,`top-end`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},clearable:{description:`Показывает действие очистки выбранной option.`,control:`boolean`}}},m={name:`Объекты`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??d[1],onChange:n=>{e.onChange(n),t({value:n})}})},args:{value:d[1]}},h={name:`Примитивы`,render:()=>{let[e,t]=(0,s.useState)(f[1]);return(0,c.jsx)(a,{label:`Статус`,description:`Пример использования низкоуровневого Select со строковыми значениями.`,placeholder:`Выберите статус`,options:f,value:e,onChange:t,getOptionKey:e=>e,getOptionLabel:e=>e,size:`md`})}},g={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,onChange:n=>{e.onChange(n),t({value:n})}})}},_={name:`Группированные опции`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,onChange:n=>{e.onChange(n),t({value:n})},getOptionGroup:e=>({key:e.direction,label:e.direction}),optionsMaxWidth:`40rem`})}},v={name:`Кастомный рендер`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??d[0],onChange:n=>{e.onChange(n),t({value:n})},renderValue:e=>`${e.code} · ${e.name}`,renderOption:(e,t)=>(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`flexEllipsis`,children:[(0,c.jsx)(`div`,{children:e.name}),(0,c.jsx)(`div`,{className:`fontSizeSm content2`,children:e.manager})]}),(0,c.jsx)(`div`,{style:{opacity:t.selected?1:.5},children:e.code})]})})}},y={args:{disabled:!0,value:d[0]}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
2
2
  name: "Объекты",
3
3
  render: function Render(args) {
4
4
  const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CrYcG0WD.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./SerializableSelect.stories-B8zxcu66.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CIzkWNwp.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-CdL0FBl-.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./SerializableSelect.stories-BcYeXF_R.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,S.jsx)(u,{children:`SerializableSelect`}),`
3
3
  `,(0,S.jsx)(o,{children:`Select для сериализуемых значений и конфигурационных сценариев с key/label описанием option`}),`
4
4
  `,(0,S.jsx)(t.p,{children:`SerializableSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-Bbj4T0X2.js";import{n as i,t as a}from"./Select-DBsWg0wv.js";function o(e,t){return e[t]}function s(e,t,n){let r=e[t];if(typeof r==`string`||typeof r==`number`)return r;let i=o(e,n);return typeof i==`string`||typeof i==`number`?i:String(i)}function c({label:e,description:t,disabled:n,placeholder:r,size:i,options:c,value:u,onChange:d,optionKey:f,optionLabel:p,renderCode:m,className:h,clearable:g}){let _=u===void 0?void 0:c.find(e=>o(e,f)===u);return(0,l.jsx)(a,{label:e,description:t,disabled:n,placeholder:r,size:i,options:c,value:_,onChange:e=>d(e?o(e,f):void 0),getOptionKey:e=>o(e,f),getOptionLabel:e=>s(e,p,f),getOptionCode:m?e=>o(e,f):void 0,className:h,clearable:g})}var l;function u(){return(u=e((()=>{i(),l=r(),c.__docgenInfo={description:``,methods:[],displayName:`SerializableSelect`,props:{options:{required:!0,tsType:{name:`unknown`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: SerializableOptionValue<TOption, TOptionKey> | undefined) => void`,signature:{arguments:[{type:{name:`union`,raw:`SerializableOptionValue<TOption, TOptionKey> | undefined`,elements:[{name:`Extract`,elements:[{name:`TOption[TOptionKey]`,raw:`TOption[TOptionKey]`},{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]}],raw:`Extract<
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-CIzkWNwp.js";import{n as i,t as a}from"./Select-CcuhYAW8.js";function o(e,t){return String(e[t])}function s(e,t,n){let r=e[t];if(typeof r==`string`||typeof r==`number`)return String(r);let i=o(e,n);return String(i)}function c({label:e,description:t,disabled:n,placeholder:r,size:i,options:c,value:u,onChange:d,optionKey:f,optionLabel:p,renderCode:m,className:h,clearable:g}){let _=u===void 0?void 0:c.find(e=>o(e,f)===u);return(0,l.jsx)(a,{label:e,description:t,disabled:n,placeholder:r,size:i,options:c,value:_,onChange:e=>d(e?o(e,f):void 0),getOptionKey:e=>o(e,f),getOptionLabel:e=>s(e,p,f),getOptionCode:m?e=>o(e,f):void 0,className:h,clearable:g})}var l;function u(){return(u=e((()=>{i(),l=r(),c.__docgenInfo={description:``,methods:[],displayName:`SerializableSelect`,props:{options:{required:!0,tsType:{name:`unknown`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: SerializableOptionValue<TOption, TOptionKey> | undefined) => void`,signature:{arguments:[{type:{name:`union`,raw:`SerializableOptionValue<TOption, TOptionKey> | undefined`,elements:[{name:`Extract`,elements:[{name:`TOption[TOptionKey]`,raw:`TOption[TOptionKey]`},{name:`string`}],raw:`Extract<
2
2
  TOption[TOptionKey],
3
3
  SelectOptionKey
4
4
  >`},{name:`undefined`}]},name:`value`}],return:{name:`void`}}},description:``},optionKey:{required:!0,tsType:{name:`TOptionKey`},description:``},optionLabel:{required:!0,tsType:{name:`TOptionLabel`},description:``},renderCode:{required:!1,tsType:{name:`literal`,value:`true`},description:``},className:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`Omit`]}})))()}var d=t({AsyncReloadLike:()=>S,Controlled:()=>y,Disabled:()=>C,Placeholder:()=>b,WithCode:()=>x,__namedExportsOrder:()=>w,default:()=>v}),f,p,m,h,g,_,v,y,b,x,S,C,w;function T(){return(T=e((()=>{f=n(),u(),p=r(),{useArgs:m,useState:h}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:g}=__STORYBOOK_MODULE_TEST__,_=[{id:10,name:`Продажи`,code:`SLS`,branch:`Екатеринбург`},{id:20,name:`Закупки`,code:`PRC`,branch:`Челябинск`},{id:30,name:`Логистика`,code:`LGS`,branch:`Новосибирск`},{id:40,name:`Сервис`,code:`SRV`,branch:`Москва`}],v={title:`Shared/UI/SerializableSelect`,component:c,args:{label:`Подразделение`,description:`Сериализуемая обёртка над Select для object-options и field-based конфигурации.`,placeholder:`Выберите подразделение`,options:_,optionKey:`id`,optionLabel:`name`,value:void 0,onChange:g(),size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Высокоуровневая обёртка над low-level Select. Принимает массив объектов, получает key и label по именам полей, а наружу возвращает только значение ключа. Нужна для сериализуемых конфигов, в том числе в src/shared/ui/controls/*.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда ключ ещё не выбран.`,control:`text`},options:{description:`Массив объектных option.`,control:!1},optionKey:{description:`Поле объекта, значение которого используется как ключ и отдаётся наружу через onChange.`,control:!1},optionLabel:{description:`Поле объекта, значение которого отображается как основной текст option.`,control:!1},renderCode:{description:`Если включено, справа от текста будет показан ключ optionKey.`,control:`boolean`},value:{description:`Текущий выбранный ключ option, а не вся option целиком.`,control:!1},onChange:{description:`Вызывается с новым значением optionKey.`,control:!1},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},clearable:{description:`Показывает действие очистки выбранного ключа.`,control:`boolean`}}},y={name:`Выбор по ключу`,render:function(e){let[,t]=m();return(0,p.jsx)(c,{...e,value:e.value??20,onChange:n=>{e.onChange(n),t({value:n})}})},args:{value:20}},b={render:function(e){let[,t]=m();return(0,p.jsx)(c,{...e,onChange:n=>{e.onChange(n),t({value:n})}})}},x={name:`С кодом`,render:function(e){let[,t]=m();return(0,p.jsx)(c,{...e,value:e.value??10,renderCode:!0,onChange:n=>{e.onChange(n),t({value:n})}})},args:{value:10,renderCode:!0}},S={name:`Смена набора опций`,render:function(e){let[,t]=m(),[n,r]=h(!1),i=(0,f.useMemo)(()=>n?_.filter(e=>e.id!==20):_,[n]);return(0,p.jsxs)(`div`,{style:{display:`grid`,gap:`12px`,maxWidth:`320px`},children:[(0,p.jsx)(`button`,{type:`button`,onClick:()=>r(e=>!e),children:n?`Показать полный список`:`Скрыть одну опцию`}),(0,p.jsx)(c,{...e,options:i,value:e.value??30,onChange:n=>{e.onChange(n),t({value:n})}})]})},args:{value:30}},C={args:{disabled:!0,value:10}},y.parameters={...y.parameters,docs:{...y.parameters?.docs,source:{originalSource:`{
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{c as n,l as r,n as i,t as a}from"./CalendarView-BFcwl9Vq.js";import{i as o,n as s,r as c}from"./iframe-Bbj4T0X2.js";import{a as l,i as u}from"./utils-DUM89eIj.js";import{C as d,b as f,y as p}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{n as m,t as h}from"./Popover-BVP-wMdK.js";import{n as g,t as _}from"./ui.module-CiLQZm_L.js";import{d as v,l as y,r as b,s as x,u as S}from"./Input-CVs7SVMJ.js";import{a as C,i as w,n as ee,r as te,t as T}from"./date-segments-D3HouZ37.js";import{a as E,c as ne,d as D,i as O,l as re,n as ie,o as k,r as ae,s as A,t as oe,u as j}from"./TimePanel-BCotjEKQ.js";var M,se;function N(){return(N=e((()=>{o(),M=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6h4`,key:`135r8i`}]],se=c(`clock-3`,M)})))()}function P(e){let t=[];return e.forEach((e,n)=>{e.kind===`editable`&&t.push(n)}),t}function ce({value:e,onChange:t,onClearError:n,disabled:r,minDate:i,maxDate:a,mode:o=`date-time`}){let s=(0,F.useMemo)(()=>E(o),[o]),c=(0,F.useMemo)(()=>w(s),[s]),l=(0,F.useMemo)(()=>P(c),[c]),u=(0,F.useMemo)(()=>ee(e??null,c),[c,e]),d=e?.getTime()??null,[f,p]=(0,F.useState)(null),m=(f?.sourceValueTime===d&&f.sourceMode===o?f.values:null)??u,h=(0,F.useRef)(new Map),g=(0,F.useRef)(0),_=(0,F.useCallback)(e=>{p(e===null?null:{sourceValueTime:d,sourceMode:o,values:e})},[d,o]),v=(0,F.useCallback)(n=>{if(T(c,n))return t(null),null;let r=C(c,n,{defaultDate:o===`time`?j(e,`time`)??O():void 0});return!r||!A(r,i,a,o)?null:(t(r),r)},[a,i,o,t,c,e]),y=(0,F.useCallback)((e,t=!0)=>{let n=h.current.get(e);n&&(n.focus(),t&&requestAnimationFrame(()=>n.select()))},[]),b=(0,F.useCallback)(e=>{let t=l.indexOf(e);return t<l.length-1?l[t+1]:null},[l]),x=(0,F.useCallback)(e=>{let t=l.indexOf(e);return t>0?l[t-1]:null},[l]),S=(0,F.useCallback)((e,t)=>e.padStart(t.length,`0`),[]);return{segments:c,segmentValues:m,registerRef:(0,F.useCallback)(e=>t=>{if(t){h.current.set(e,t);return}h.current.delete(e)},[]),handleInput:(0,F.useCallback)(e=>t=>{if(r)return;let i=c[e];if(i.kind!==`editable`)return;let a=t.target.value.replace(/\D/g,``).slice(0,i.length),o=new Map(m);if(o.set(e,a),_(o),n?.(),a.length===i.length){let t=b(e);t!==null&&requestAnimationFrame(()=>y(t))}v(o)},[r,y,b,n,m,c,_,v]),handleKeyDown:(0,F.useCallback)(e=>t=>{if(r)return;let n=c[e];if(n.kind!==`editable`)return;let i=m.get(e)??``,a=t.currentTarget;switch(t.key){case`ArrowRight`:if(a.selectionStart===i.length||i===``){t.preventDefault();let n=b(e);n!==null&&y(n)}break;case`ArrowLeft`:if(a.selectionStart===0||i===``){t.preventDefault();let n=x(e);n!==null&&y(n)}break;case`ArrowUp`:{t.preventDefault();let r=i===``?n.min:Number.parseInt(i,10)+1;r>n.max&&(r=n.min);let o=new Map(m);o.set(e,S(String(r),n)),_(o),v(o),requestAnimationFrame(()=>a.select());break}case`ArrowDown`:{t.preventDefault();let r=i===``?n.max:Number.parseInt(i,10)-1;r<n.min&&(r=n.max);let o=new Map(m);o.set(e,S(String(r),n)),_(o),v(o),requestAnimationFrame(()=>a.select());break}case`Backspace`:if(i===``){t.preventDefault();let n=x(e);n!==null&&y(n)}break;case`Delete`:{t.preventDefault();let n=new Map(m);n.set(e,``),_(n),v(n);break}}},[r,y,b,x,S,m,c,_,v]),handleFocus:(0,F.useCallback)(()=>e=>{e.target.select()},[]),handleContainerFocus:(0,F.useCallback)(()=>{clearTimeout(g.current)},[]),handleContainerBlur:(0,F.useCallback)(()=>{let n=new Map(m);g.current=window.setTimeout(()=>{if(T(c,n)){t(null),_(n);return}let r=C(c,n,{defaultDate:o===`time`?j(e,`time`)??O():void 0});if(!r||!A(r,i,a,o)){_(null);return}_(n)},0)},[a,i,o,t,m,c,_,e]),focusFirstEmpty:(0,F.useCallback)(()=>{let e=l.find(e=>!(m.get(e)??``))??l[l.length-1];e!==void 0&&y(e)},[l,y,m])}}var F;function I(){return(I=e((()=>{F=t(),te(),k()})))()}var L,R,z,B,V,H,U,W,G,K,q;function J(){return(J=e((()=>{L=`AvG-mf`,R=`ig7KtT`,z=`YQHPZa`,B=`-RZe-i`,V=`Ox0SRE`,H=`gfaRup`,U=`_59kEea`,W=`Jjdu1Q`,G=`Q8Y2xS`,K=`XxZYTW`,q={segmentInput:L,separator:R,popoverContent:z,bottom:B,right:V,calendarPane:H,timePanelPane:U,timeOnlyPopoverContent:W,timePanelPaneBottom:G,timePanelPaneRight:K}})))()}function Y({value:e,onChange:t,label:r,description:i,placeholder:o,disabled:s,size:c,error:u,onClearError:p,minDate:m,maxDate:_,timePanelPlacement:y=`right`,mode:S=`date-time`}){let C=(0,X.useMemo)(()=>j(e,S),[S,e]),w=(0,X.useMemo)(()=>d(new Date),[]),[ee,te]=(0,X.useState)(!1),[T,E]=(0,X.useState)(C??null),[O,ie]=(0,X.useState)(`day`),[k,M]=(0,X.useState)(()=>D(C,w,S)),{controlId:N,labelId:P,descriptionId:F,errorId:I,describedBy:L}=v({hasLabel:r!=null,hasDescription:!!i,hasError:!!u}),{segments:R,segmentValues:z,registerRef:B,handleInput:V,handleKeyDown:H,handleFocus:U,handleContainerFocus:W,handleContainerBlur:G,focusFirstEmpty:K}=ce({value:C,onChange:t,onClearError:p,disabled:s,minDate:m,maxDate:_,mode:S}),J=e=>{if(S===`time`||f(e)||s)return;let t=ne(e,T??C??k),{hours:n,minutes:r}=ae(e,t.getHours(),t.getMinutes(),m,_,S),i=re(e,n,r);A(i,m,_,S)&&(p?.(),E(i),M(i))},Y=(e,t)=>{if(s)return;let n=T??C??k,r=ae(n,e,t,m,_,S),i=re(n,r.hours,r.minutes,S);A(i,m,_,S)&&(p?.(),E(i),M(i))},Q=e=>{e&&(E(C??null),M(D(C,w,S))),te(e)},le=()=>{(C?.getTime()??null)!==(T?.getTime()??null)&&t(T)},ue=y===`right`?q.timePanelPaneRight:q.timePanelPaneBottom,de=S===`time`?`Открыть выбор времени`:`Открыть календарь даты и времени`,fe=o??(S===`time`?`чч:мм`:`дд.мм.гггг чч:мм`),$=T??C??k;return(0,Z.jsxs)(h,{open:ee,onOpenChange:Q,children:[(0,Z.jsx)(x,{label:r,description:i,disabled:s,size:c,error:u,controlId:N,labelId:P,descriptionId:F,errorId:I,children:(0,Z.jsx)(b,{endAdornmentWidth:`var(--control-height)`,endAdornment:(0,Z.jsx)(h.Trigger,{children:(0,Z.jsx)(`div`,{className:g.uiToggleButtonContainer,children:(0,Z.jsx)(`button`,{type:`button`,disabled:s,"aria-label":de,className:g.uiToggleButton,children:S===`time`?(0,Z.jsx)(se,{}):(0,Z.jsx)(n,{})})})}),children:({controlClassName:e})=>(0,Z.jsx)(`div`,{id:N,className:l(g.uiInputControlFake,e),"data-disabled":s||void 0,"data-invalid":u?``:void 0,role:`group`,"aria-invalid":!!u||void 0,"aria-placeholder":fe,"aria-labelledby":P,"aria-describedby":L,onFocus:W,onBlur:G,onClick:e=>{e.target===e.currentTarget&&K()},children:R.map((e,t)=>e.kind===`literal`?(0,Z.jsx)(`span`,{className:q.separator,"data-disabled":s||void 0,children:e.text},t):(0,Z.jsx)(`input`,{ref:B(t),type:`text`,inputMode:`numeric`,className:q.segmentInput,style:{width:`${e.length+.5}ch`},value:z.get(t)??``,placeholder:e.placeholder,maxLength:e.length,disabled:s,"aria-label":e.ariaLabel,autoComplete:`off`,onChange:V(t),onKeyDown:H(t),onFocus:U()},t))})})}),(0,Z.jsx)(h.Content,{background:`primary`,onClose:le,children:S===`time`?(0,Z.jsx)(`div`,{className:q.timeOnlyPopoverContent,children:(0,Z.jsx)(oe,{value:$,disabled:s,minDate:m,maxDate:_,mode:S,onChange:Y})}):(0,Z.jsxs)(`div`,{className:l(q.popoverContent,q[y]),children:[(0,Z.jsx)(`div`,{className:q.calendarPane,children:(0,Z.jsx)(a,{view:O,datePickerLevel:`day`,selectionMode:`day`,onViewChange:ie,value:$,onChange:J,minDate:m,maxDate:_,currentDate:k,onCurrentDateChange:M})}),(0,Z.jsx)(`div`,{className:l(q.timePanelPane,ue),children:(0,Z.jsx)(oe,{value:$,disabled:s,minDate:m,maxDate:_,mode:S,onChange:Y})})]})})]})}var X,Z;function Q(){return(Q=e((()=>{X=t(),p(),u(),r(),N(),i(),y(),S(),m(),_(),k(),I(),J(),ie(),Z=s(),Y.__docgenInfo={description:`Поле выбора даты-времени со строгой сегментной маской и popover-пикером.`,methods:[],displayName:`SingleDateTimeInput`,props:{error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},timePanelPlacement:{required:!1,tsType:{name:`union`,raw:`"bottom" | "right"`,elements:[{name:`literal`,value:`"bottom"`},{name:`literal`,value:`"right"`}]},description:``,defaultValue:{value:`"right"`,computed:!1}},mode:{required:!1,tsType:{name:`union`,raw:`"date-time" | "time"`,elements:[{name:`literal`,value:`"date-time"`},{name:`literal`,value:`"time"`}]},description:``,defaultValue:{value:`"date-time"`,computed:!1}},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:``}}}})))()}export{Q as n,Y as t};
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{c as n,l as r,n as i,t as a}from"./CalendarView-DCLQ6cmR.js";import{i as o,n as s,r as c}from"./iframe-CIzkWNwp.js";import{a as l,i as u}from"./utils-DUM89eIj.js";import{C as d,b as f,y as p}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{n as m,t as h}from"./Popover-ijEoQcUp.js";import{n as g,t as _}from"./ui.module-D4CuGr8r.js";import{d as v,l as y,r as b,s as x,u as S}from"./Input-X5FLaExp.js";import{a as C,i as w,n as ee,r as te,t as T}from"./date-segments-D3HouZ37.js";import{a as E,c as ne,d as D,i as O,l as re,n as ie,o as k,r as ae,s as A,t as oe,u as j}from"./TimePanel-DlfW-4Rv.js";var M,se;function N(){return(N=e((()=>{o(),M=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6h4`,key:`135r8i`}]],se=c(`clock-3`,M)})))()}function P(e){let t=[];return e.forEach((e,n)=>{e.kind===`editable`&&t.push(n)}),t}function ce({value:e,onChange:t,onClearError:n,disabled:r,minDate:i,maxDate:a,mode:o=`date-time`}){let s=(0,F.useMemo)(()=>E(o),[o]),c=(0,F.useMemo)(()=>w(s),[s]),l=(0,F.useMemo)(()=>P(c),[c]),u=(0,F.useMemo)(()=>ee(e??null,c),[c,e]),d=e?.getTime()??null,[f,p]=(0,F.useState)(null),m=(f?.sourceValueTime===d&&f.sourceMode===o?f.values:null)??u,h=(0,F.useRef)(new Map),g=(0,F.useRef)(0),_=(0,F.useCallback)(e=>{p(e===null?null:{sourceValueTime:d,sourceMode:o,values:e})},[d,o]),v=(0,F.useCallback)(n=>{if(T(c,n))return t(null),null;let r=C(c,n,{defaultDate:o===`time`?j(e,`time`)??O():void 0});return!r||!A(r,i,a,o)?null:(t(r),r)},[a,i,o,t,c,e]),y=(0,F.useCallback)((e,t=!0)=>{let n=h.current.get(e);n&&(n.focus(),t&&requestAnimationFrame(()=>n.select()))},[]),b=(0,F.useCallback)(e=>{let t=l.indexOf(e);return t<l.length-1?l[t+1]:null},[l]),x=(0,F.useCallback)(e=>{let t=l.indexOf(e);return t>0?l[t-1]:null},[l]),S=(0,F.useCallback)((e,t)=>e.padStart(t.length,`0`),[]);return{segments:c,segmentValues:m,registerRef:(0,F.useCallback)(e=>t=>{if(t){h.current.set(e,t);return}h.current.delete(e)},[]),handleInput:(0,F.useCallback)(e=>t=>{if(r)return;let i=c[e];if(i.kind!==`editable`)return;let a=t.target.value.replace(/\D/g,``).slice(0,i.length),o=new Map(m);if(o.set(e,a),_(o),n?.(),a.length===i.length){let t=b(e);t!==null&&requestAnimationFrame(()=>y(t))}v(o)},[r,y,b,n,m,c,_,v]),handleKeyDown:(0,F.useCallback)(e=>t=>{if(r)return;let n=c[e];if(n.kind!==`editable`)return;let i=m.get(e)??``,a=t.currentTarget;switch(t.key){case`ArrowRight`:if(a.selectionStart===i.length||i===``){t.preventDefault();let n=b(e);n!==null&&y(n)}break;case`ArrowLeft`:if(a.selectionStart===0||i===``){t.preventDefault();let n=x(e);n!==null&&y(n)}break;case`ArrowUp`:{t.preventDefault();let r=i===``?n.min:Number.parseInt(i,10)+1;r>n.max&&(r=n.min);let o=new Map(m);o.set(e,S(String(r),n)),_(o),v(o),requestAnimationFrame(()=>a.select());break}case`ArrowDown`:{t.preventDefault();let r=i===``?n.max:Number.parseInt(i,10)-1;r<n.min&&(r=n.max);let o=new Map(m);o.set(e,S(String(r),n)),_(o),v(o),requestAnimationFrame(()=>a.select());break}case`Backspace`:if(i===``){t.preventDefault();let n=x(e);n!==null&&y(n)}break;case`Delete`:{t.preventDefault();let n=new Map(m);n.set(e,``),_(n),v(n);break}}},[r,y,b,x,S,m,c,_,v]),handleFocus:(0,F.useCallback)(()=>e=>{e.target.select()},[]),handleContainerFocus:(0,F.useCallback)(()=>{clearTimeout(g.current)},[]),handleContainerBlur:(0,F.useCallback)(()=>{let n=new Map(m);g.current=window.setTimeout(()=>{if(T(c,n)){t(null),_(n);return}let r=C(c,n,{defaultDate:o===`time`?j(e,`time`)??O():void 0});if(!r||!A(r,i,a,o)){_(null);return}_(n)},0)},[a,i,o,t,m,c,_,e]),focusFirstEmpty:(0,F.useCallback)(()=>{let e=l.find(e=>!(m.get(e)??``))??l[l.length-1];e!==void 0&&y(e)},[l,y,m])}}var F;function I(){return(I=e((()=>{F=t(),te(),k()})))()}var L,R,z,B,V,H,U,W,G,K,q;function J(){return(J=e((()=>{L=`AvG-mf`,R=`ig7KtT`,z=`YQHPZa`,B=`-RZe-i`,V=`Ox0SRE`,H=`gfaRup`,U=`_59kEea`,W=`Jjdu1Q`,G=`Q8Y2xS`,K=`XxZYTW`,q={segmentInput:L,separator:R,popoverContent:z,bottom:B,right:V,calendarPane:H,timePanelPane:U,timeOnlyPopoverContent:W,timePanelPaneBottom:G,timePanelPaneRight:K}})))()}function Y({value:e,onChange:t,label:r,description:i,placeholder:o,disabled:s,size:c,error:u,onClearError:p,minDate:m,maxDate:_,timePanelPlacement:y=`right`,mode:S=`date-time`}){let C=(0,X.useMemo)(()=>j(e,S),[S,e]),w=(0,X.useMemo)(()=>d(new Date),[]),[ee,te]=(0,X.useState)(!1),[T,E]=(0,X.useState)(C??null),[O,ie]=(0,X.useState)(`day`),[k,M]=(0,X.useState)(()=>D(C,w,S)),{controlId:N,labelId:P,descriptionId:F,errorId:I,describedBy:L}=v({hasLabel:r!=null,hasDescription:!!i,hasError:!!u}),{segments:R,segmentValues:z,registerRef:B,handleInput:V,handleKeyDown:H,handleFocus:U,handleContainerFocus:W,handleContainerBlur:G,focusFirstEmpty:K}=ce({value:C,onChange:t,onClearError:p,disabled:s,minDate:m,maxDate:_,mode:S}),J=e=>{if(S===`time`||f(e)||s)return;let t=ne(e,T??C??k),{hours:n,minutes:r}=ae(e,t.getHours(),t.getMinutes(),m,_,S),i=re(e,n,r);A(i,m,_,S)&&(p?.(),E(i),M(i))},Y=(e,t)=>{if(s)return;let n=T??C??k,r=ae(n,e,t,m,_,S),i=re(n,r.hours,r.minutes,S);A(i,m,_,S)&&(p?.(),E(i),M(i))},Q=e=>{e&&(E(C??null),M(D(C,w,S))),te(e)},le=()=>{(C?.getTime()??null)!==(T?.getTime()??null)&&t(T)},ue=y===`right`?q.timePanelPaneRight:q.timePanelPaneBottom,de=S===`time`?`Открыть выбор времени`:`Открыть календарь даты и времени`,fe=o??(S===`time`?`чч:мм`:`дд.мм.гггг чч:мм`),$=T??C??k;return(0,Z.jsxs)(h,{open:ee,onOpenChange:Q,children:[(0,Z.jsx)(x,{label:r,description:i,disabled:s,size:c,error:u,controlId:N,labelId:P,descriptionId:F,errorId:I,children:(0,Z.jsx)(b,{endAdornmentWidth:`var(--control-height)`,endAdornment:(0,Z.jsx)(h.Trigger,{children:(0,Z.jsx)(`div`,{className:g.uiToggleButtonContainer,children:(0,Z.jsx)(`button`,{type:`button`,disabled:s,"aria-label":de,className:g.uiToggleButton,children:S===`time`?(0,Z.jsx)(se,{}):(0,Z.jsx)(n,{})})})}),children:({controlClassName:e})=>(0,Z.jsx)(`div`,{id:N,className:l(g.uiInputControlFake,e),"data-disabled":s||void 0,"data-invalid":u?``:void 0,role:`group`,"aria-invalid":!!u||void 0,"aria-placeholder":fe,"aria-labelledby":P,"aria-describedby":L,onFocus:W,onBlur:G,onClick:e=>{e.target===e.currentTarget&&K()},children:R.map((e,t)=>e.kind===`literal`?(0,Z.jsx)(`span`,{className:q.separator,"data-disabled":s||void 0,children:e.text},t):(0,Z.jsx)(`input`,{ref:B(t),type:`text`,inputMode:`numeric`,className:q.segmentInput,style:{width:`${e.length+.5}ch`},value:z.get(t)??``,placeholder:e.placeholder,maxLength:e.length,disabled:s,"aria-label":e.ariaLabel,autoComplete:`off`,onChange:V(t),onKeyDown:H(t),onFocus:U()},t))})})}),(0,Z.jsx)(h.Content,{background:`primary`,onClose:le,children:S===`time`?(0,Z.jsx)(`div`,{className:q.timeOnlyPopoverContent,children:(0,Z.jsx)(oe,{value:$,disabled:s,minDate:m,maxDate:_,mode:S,onChange:Y})}):(0,Z.jsxs)(`div`,{className:l(q.popoverContent,q[y]),children:[(0,Z.jsx)(`div`,{className:q.calendarPane,children:(0,Z.jsx)(a,{view:O,datePickerLevel:`day`,selectionMode:`day`,onViewChange:ie,value:$,onChange:J,minDate:m,maxDate:_,currentDate:k,onCurrentDateChange:M})}),(0,Z.jsx)(`div`,{className:l(q.timePanelPane,ue),children:(0,Z.jsx)(oe,{value:$,disabled:s,minDate:m,maxDate:_,mode:S,onChange:Y})})]})})]})}var X,Z;function Q(){return(Q=e((()=>{X=t(),p(),u(),r(),N(),i(),y(),S(),m(),_(),k(),I(),J(),ie(),Z=s(),Y.__docgenInfo={description:`Поле выбора даты-времени со строгой сегментной маской и popover-пикером.`,methods:[],displayName:`SingleDateTimeInput`,props:{error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},timePanelPlacement:{required:!1,tsType:{name:`union`,raw:`"bottom" | "right"`,elements:[{name:`literal`,value:`"bottom"`},{name:`literal`,value:`"right"`}]},description:``,defaultValue:{value:`"right"`,computed:!1}},mode:{required:!1,tsType:{name:`union`,raw:`"date-time" | "time"`,elements:[{name:`literal`,value:`"date-time"`},{name:`literal`,value:`"time"`}]},description:``,defaultValue:{value:`"date-time"`,computed:!1}},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:``}}}})))()}export{Q as n,Y as t};