@ryuzaki13/react-foundation-ui 1.5.9 → 1.5.11

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 (310) hide show
  1. package/dist/advanced-search/index.js +182 -148
  2. package/dist/advanced-search/index.js.map +1 -1
  3. package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts +1 -1
  4. package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts.map +1 -1
  5. package/dist/advanced-search/ui/AdvancedSearchModal.d.ts +12 -3
  6. package/dist/advanced-search/ui/AdvancedSearchModal.d.ts.map +1 -1
  7. package/dist/advanced-search/ui/AdvancedSearchModalSession.d.ts +15 -0
  8. package/dist/advanced-search/ui/AdvancedSearchModalSession.d.ts.map +1 -0
  9. package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts.map +1 -1
  10. package/dist/badge/index.js +1 -1
  11. package/dist/base-table/index.js +1 -1
  12. package/dist/button/index.js +1 -1
  13. package/dist/check-box/index.js +1 -1
  14. package/dist/chunks/{CalendarView-BSshXZAX.js → CalendarView-DqA-PbAU.js} +42 -42
  15. package/dist/chunks/{CalendarView-BSshXZAX.js.map → CalendarView-DqA-PbAU.js.map} +1 -1
  16. package/dist/chunks/{ImageViewerRuntime-BMs3BBkV.js → ImageViewerRuntime-HGBWp9NM.js} +18 -18
  17. package/dist/chunks/{ImageViewerRuntime-BMs3BBkV.js.map → ImageViewerRuntime-HGBWp9NM.js.map} +1 -1
  18. package/dist/chunks/{TextEditorLexicalClient-CLjpATRu.js → TextEditorLexicalClient-B084kVzu.js} +322 -322
  19. package/dist/chunks/{TextEditorLexicalClient-CLjpATRu.js.map → TextEditorLexicalClient-B084kVzu.js.map} +1 -1
  20. package/dist/chunks/{badge-CaooZXYD.js → badge-DMM8cOHd.js} +16 -16
  21. package/dist/chunks/{badge-CaooZXYD.js.map → badge-DMM8cOHd.js.map} +1 -1
  22. package/dist/chunks/{base-table-fUJY__6M.js → base-table-CJdKCKhb.js} +125 -125
  23. package/dist/chunks/{base-table-fUJY__6M.js.map → base-table-CJdKCKhb.js.map} +1 -1
  24. package/dist/chunks/{button-C--u7uJj.js → button-CzUO5rzq.js} +17 -17
  25. package/dist/chunks/{button-C--u7uJj.js.map → button-CzUO5rzq.js.map} +1 -1
  26. package/dist/chunks/{check-box-BZiEBR9c.js → check-box-sfGjYczQ.js} +11 -11
  27. package/dist/chunks/{check-box-BZiEBR9c.js.map → check-box-sfGjYczQ.js.map} +1 -1
  28. package/dist/chunks/{context-menu-XZ-e0f6_.js → context-menu-6nJkPmKV.js} +83 -83
  29. package/dist/chunks/{context-menu-XZ-e0f6_.js.map → context-menu-6nJkPmKV.js.map} +1 -1
  30. package/dist/chunks/date-input-9T8AoG5U.js +341 -0
  31. package/dist/chunks/{date-input-Dr5QNVT6.js.map → date-input-9T8AoG5U.js.map} +1 -1
  32. package/dist/chunks/{input-BNszawm6.js → input-VC8jEoTa.js} +37 -37
  33. package/dist/chunks/{input-BNszawm6.js.map → input-VC8jEoTa.js.map} +1 -1
  34. package/dist/chunks/{input-files-DxLVr2PF.js → input-files-CoMjadk7.js} +22 -22
  35. package/dist/chunks/{input-files-DxLVr2PF.js.map → input-files-CoMjadk7.js.map} +1 -1
  36. package/dist/chunks/{input-search-C2OOhZlw.js → input-search-Bs_9SxT0.js} +2 -2
  37. package/dist/chunks/{input-search-C2OOhZlw.js.map → input-search-Bs_9SxT0.js.map} +1 -1
  38. package/dist/chunks/{misc-Cp_r022Z.js → misc-CkRRma5E.js} +55 -55
  39. package/dist/chunks/{misc-Cp_r022Z.js.map → misc-CkRRma5E.js.map} +1 -1
  40. package/dist/chunks/{modal-DK9M7lT5.js → modal-LHkNxBko.js} +38 -38
  41. package/dist/chunks/{modal-DK9M7lT5.js.map → modal-LHkNxBko.js.map} +1 -1
  42. package/dist/chunks/{multi-select-CFHaQPot.js → multi-select-BJ6Lst1E.js} +44 -44
  43. package/dist/chunks/{multi-select-CFHaQPot.js.map → multi-select-BJ6Lst1E.js.map} +1 -1
  44. package/dist/chunks/{picker-D3Fc15JH.js → picker-DLnfOgZj.js} +34 -34
  45. package/dist/chunks/{picker-D3Fc15JH.js.map → picker-DLnfOgZj.js.map} +1 -1
  46. package/dist/chunks/{popover-BTT7zSqx.js → popover-IExDrsF6.js} +67 -67
  47. package/dist/chunks/{popover-BTT7zSqx.js.map → popover-IExDrsF6.js.map} +1 -1
  48. package/dist/chunks/{select-BolFlcoY.js → select-CysiIrej.js} +5 -5
  49. package/dist/chunks/{select-BolFlcoY.js.map → select-CysiIrej.js.map} +1 -1
  50. package/dist/chunks/{sortable-DcTIAbjD.js → sortable-BKIwlqhI.js} +17 -17
  51. package/dist/chunks/{sortable-DcTIAbjD.js.map → sortable-BKIwlqhI.js.map} +1 -1
  52. package/dist/chunks/{table-BChs6bgR.js → table-CIWdAcPY.js} +2 -2
  53. package/dist/chunks/{table-BChs6bgR.js.map → table-CIWdAcPY.js.map} +1 -1
  54. package/dist/chunks/{types-CxXyru6U.js → types-D9Wj9wrg.js} +21 -21
  55. package/dist/chunks/{types-CxXyru6U.js.map → types-D9Wj9wrg.js.map} +1 -1
  56. package/dist/chunks/{useODataSelectBase-BhCMCzv_.js → useODataSelectBase-Bq36Wp1U.js} +8 -8
  57. package/dist/chunks/{useODataSelectBase-BhCMCzv_.js.map → useODataSelectBase-Bq36Wp1U.js.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 +32 -32
  61. package/dist/dialog/index.js +9 -9
  62. package/dist/disclosure/index.js +10 -10
  63. package/dist/drop-zone/index.js +8 -8
  64. package/dist/errors/index.js +8 -8
  65. package/dist/expandable-action-panel/index.js +16 -16
  66. package/dist/flex/useFlexClasses.d.ts +1 -1
  67. package/dist/fullscreen-portal/index.js +7 -7
  68. package/dist/image/index.js +27 -27
  69. package/dist/input/index.js +1 -1
  70. package/dist/input-date-time/index.js +1 -1
  71. package/dist/input-file/index.js +1 -1
  72. package/dist/input-files/index.js +1 -1
  73. package/dist/input-image/index.js +1 -1
  74. package/dist/input-search/index.js +1 -1
  75. package/dist/layout-picker/index.js +1 -1
  76. package/dist/list/index.js +25 -25
  77. package/dist/listbox/index.js +5 -5
  78. package/dist/misc/index.js +1 -1
  79. package/dist/modal/index.js +1 -1
  80. package/dist/multi-select/index.js +1 -1
  81. package/dist/notifications/index.js +30 -30
  82. package/dist/picker/index.js +1 -1
  83. package/dist/popover/index.js +1 -1
  84. package/dist/preset-range-date-input/index.js +1 -1
  85. package/dist/preset-select/index.js +1 -1
  86. package/dist/radio-button/index.js +10 -10
  87. package/dist/select/index.js +1 -1
  88. package/dist/simple-table/index.js +1 -1
  89. package/dist/slider/index.js +3 -3
  90. package/dist/sortable/index.js +1 -1
  91. package/dist/state-select/index.js +1 -1
  92. package/dist/styles.css +1 -1
  93. package/dist/switch/index.js +11 -11
  94. package/dist/table/index.js +1 -1
  95. package/dist/table-sorting/index.js +13 -13
  96. package/dist/tabs/index.js +1 -1
  97. package/dist/tag-input/index.js +55 -55
  98. package/dist/tag-input/index.js.map +1 -1
  99. package/dist/text/index.js +1 -1
  100. package/dist/text-editor/index.js +3 -3
  101. package/dist/textarea/index.js +1 -1
  102. package/dist/tree-select/index.js +134 -134
  103. package/dist/tree-select/index.js.map +1 -1
  104. package/dist/tree-table/index.js +16 -16
  105. package/package.json +1 -1
  106. package/storybook-static/assets/{Badge-H-k9yUSA.js → Badge-BRzsgtsW.js} +1 -1
  107. package/storybook-static/assets/{Badge.stories-6jzeuC64.js → Badge.stories-BEUzIGxR.js} +1 -1
  108. package/storybook-static/assets/{BadgeList-DB44TweU.js → BadgeList-Dvi9mgiq.js} +1 -1
  109. package/storybook-static/assets/{Button-D3hmChuc.js → Button-B0yitxpz.js} +1 -1
  110. package/storybook-static/assets/{Button-CAqJR-HG.js → Button-D9NRl_J-.js} +1 -1
  111. package/storybook-static/assets/{Button.stories-Dms2VFN3.js → Button.stories-RTpFQ0lC.js} +1 -1
  112. package/storybook-static/assets/{CalendarView-DkD4c8VM.js → CalendarView-hixokiLY.js} +1 -1
  113. package/storybook-static/assets/{CheckBox-DGy-LNaF.js → CheckBox-CkP3wY1y.js} +1 -1
  114. package/storybook-static/assets/{CheckBox-BTKqpDhB.js → CheckBox-DgcHpYEB.js} +1 -1
  115. package/storybook-static/assets/{CheckBox.stories-Cr1VcSRy.js → CheckBox.stories-B6gt-Pyy.js} +1 -1
  116. package/storybook-static/assets/{Color-6AOWCN3U-D2ij3DuB.js → Color-6AOWCN3U-CS57U4UC.js} +1 -1
  117. package/storybook-static/assets/{ContextMenu-BTCmlKUo.js → ContextMenu-CvaQBpuB.js} +1 -1
  118. package/storybook-static/assets/{ContextMenu-XLrJcLuy.js → ContextMenu-DfArrHyO.js} +1 -1
  119. package/storybook-static/assets/{ContextMenu.stories-BF0iVkIu.js → ContextMenu.stories-UUZnkfjK.js} +1 -1
  120. package/storybook-static/assets/{DateInput-BiQztDCJ.js → DateInput-BOJzcuf8.js} +1 -1
  121. package/storybook-static/assets/{DateInput-BAvKi07l.js → DateInput-D0Z39L0u.js} +1 -1
  122. package/storybook-static/assets/{DateInput.stories-tcb5N1bV.js → DateInput.stories-B9oAtjEF.js} +1 -1
  123. package/storybook-static/assets/{DateRangePresetSelect-CSrEwt-3.js → DateRangePresetSelect-Bhzy-5vR.js} +1 -1
  124. package/storybook-static/assets/{DateRangePresetSelect-CiGmgmac.js → DateRangePresetSelect-I9kq2B9z.js} +1 -1
  125. package/storybook-static/assets/{DateRangePresetSelect.stories-DIXe2bLs.js → DateRangePresetSelect.stories-CkkmtUCo.js} +1 -1
  126. package/storybook-static/assets/{Detail-CI8BYAuL.js → Detail-D038XLEh.js} +1 -1
  127. package/storybook-static/assets/{Detail.stories-Ccicg9Vr.js → Detail.stories-Dy8sCrYr.js} +1 -1
  128. package/storybook-static/assets/{Dialog-597JR3cR.js → Dialog-BpBfxyHP.js} +1 -1
  129. package/storybook-static/assets/{Dialog-R5Am1Hzd.js → Dialog-DvcT-HcI.js} +1 -1
  130. package/storybook-static/assets/{Dialog.stories-ClpSbVhd.js → Dialog.stories-CFwZCUTc.js} +1 -1
  131. package/storybook-static/assets/{Disclosure-zZQU-Iyf.js → Disclosure-bS8JZMZH.js} +1 -1
  132. package/storybook-static/assets/{Disclosure.stories-C2-9GP8X.js → Disclosure.stories-DoRb7eFP.js} +1 -1
  133. package/storybook-static/assets/{DisclosureGroup-DtQit9bi.js → DisclosureGroup-C8bhahk2.js} +1 -1
  134. package/storybook-static/assets/{DocsRenderer-JROSPFPF-VDAUUJ7T.js → DocsRenderer-JROSPFPF-BENO-TjP.js} +1 -1
  135. package/storybook-static/assets/{DropZone-BGH6QR3H.js → DropZone-BFesDtXX.js} +1 -1
  136. package/storybook-static/assets/{DropZone-DYT6KTBY.js → DropZone-CT2ql-iq.js} +1 -1
  137. package/storybook-static/assets/{DropZone.stories-Db_Eah_P.js → DropZone.stories-DjyWW5NR.js} +1 -1
  138. package/storybook-static/assets/{DropdownMenu-Dw4WHBLp.js → DropdownMenu-DFIvsL7-.js} +1 -1
  139. package/storybook-static/assets/{ExpandableActionPanel-C1SC-Fm0.js → ExpandableActionPanel-HfuTxNHC.js} +1 -1
  140. package/storybook-static/assets/{ExpandableActionPanel.stories-Ce5iXJOz.js → ExpandableActionPanel.stories-hrKtH1J5.js} +1 -1
  141. package/storybook-static/assets/{Flex-B1Xbfrsd.js → Flex-YpXsCy6o.js} +1 -1
  142. package/storybook-static/assets/{Flex.stories-B51AhkLf.js → Flex.stories-Ck5prBoq.js} +1 -1
  143. package/storybook-static/assets/{FloatingPopover-8m1ZtemJ.js → FloatingPopover-DOPDzLFT.js} +1 -1
  144. package/storybook-static/assets/{FormattedTableCell-DGC4mBLN.js → FormattedTableCell-CpYotISk.js} +1 -1
  145. package/storybook-static/assets/{Grid-BGmNVH-Y.js → Grid-DUocH4TX.js} +1 -1
  146. package/storybook-static/assets/{Grid.stories-dp9HIC9t.js → Grid.stories-jnw37ukT.js} +1 -1
  147. package/storybook-static/assets/{ImageCropper.stories-Bjn1k0Kz.js → ImageCropper.stories-CDLsJM59.js} +1 -1
  148. package/storybook-static/assets/{ImageRenderer-DjYotwaD.js → ImageRenderer-CZ7DKuFY.js} +1 -1
  149. package/storybook-static/assets/{ImageRenderer.stories-BxWs6FdX.js → ImageRenderer.stories-B8-aQ58B.js} +1 -1
  150. package/storybook-static/assets/{ImageView.stories-icpfyY3j.js → ImageView.stories-DLhqZ_GI.js} +1 -1
  151. package/storybook-static/assets/{ImageViewer.stories-zcaCCmK2.js → ImageViewer.stories-o1yD_rZq.js} +2 -2
  152. package/storybook-static/assets/{ImageViewerRuntime-CqsgnUZA.js → ImageViewerRuntime-CJlrAsfL.js} +1 -1
  153. package/storybook-static/assets/{Input-CUfYW_um.js → Input-8dAj3L5M.js} +1 -1
  154. package/storybook-static/assets/{Input-CIQAnFtb.js → Input-B8y70gW9.js} +1 -1
  155. package/storybook-static/assets/{Input.stories-DfCKF8rm.js → Input.stories-KAOo2cMb.js} +1 -1
  156. package/storybook-static/assets/{InputDateTime-BRLLMLY_.js → InputDateTime-C8iXQn7P.js} +1 -1
  157. package/storybook-static/assets/{InputDateTime.stories-CvxnfvBi.js → InputDateTime.stories-BOUfVN41.js} +1 -1
  158. package/storybook-static/assets/{InputFile-ChUdk4fI.js → InputFile-BlMNRcyL.js} +1 -1
  159. package/storybook-static/assets/{InputFile-DodOOJna.js → InputFile-C-CwNpFJ.js} +1 -1
  160. package/storybook-static/assets/{InputFile.stories-BbUp9qzg.js → InputFile.stories-MD9cAu-W.js} +1 -1
  161. package/storybook-static/assets/{InputFiles-DiXnyunh.js → InputFiles-BMjWaVN9.js} +1 -1
  162. package/storybook-static/assets/{InputFiles-B2tnIFaW.js → InputFiles-D72fv8HQ.js} +1 -1
  163. package/storybook-static/assets/{InputFiles.stories-CDD5dVDx.js → InputFiles.stories-BlD8cBmt.js} +1 -1
  164. package/storybook-static/assets/{InputFilesList-DQJ-PQST.js → InputFilesList-Dol1dIX5.js} +1 -1
  165. package/storybook-static/assets/{InputImage-fwAQqeI_.js → InputImage-_sOF8mmB.js} +1 -1
  166. package/storybook-static/assets/{InputImage-C325RWQr.js → InputImage-uE0JlBq5.js} +1 -1
  167. package/storybook-static/assets/{InputImage.stories-L3jyHxSJ.js → InputImage.stories-R6HZFGuR.js} +1 -1
  168. package/storybook-static/assets/{InteractiveComponents-OABim2ku.js → InteractiveComponents-BDmyyudJ.js} +1 -1
  169. package/storybook-static/assets/{InteractiveComponents.stories-EPcGTlqo.js → InteractiveComponents.stories-RsjV4QyY.js} +1 -1
  170. package/storybook-static/assets/{LayoutPicker-CPFQxHT8.js → LayoutPicker-CqpAicOL.js} +1 -1
  171. package/storybook-static/assets/{LayoutPicker-ZpKrd_7K.js → LayoutPicker-CywNkFMn.js} +1 -1
  172. package/storybook-static/assets/{LayoutPicker.stories-SD1M9rTk.js → LayoutPicker.stories-BMiwqihl.js} +1 -1
  173. package/storybook-static/assets/{Listbox-D14PtWlP.js → Listbox-Bznk_lrX.js} +1 -1
  174. package/storybook-static/assets/{Listbox-CuNYuQox.js → Listbox-zQgffOs0.js} +1 -1
  175. package/storybook-static/assets/{Listbox.stories-C24wwo8z.js → Listbox.stories-BeWjK-CY.js} +1 -1
  176. package/storybook-static/assets/{Modal-V81rtPnm.js → Modal-unWtDqq_.js} +1 -1
  177. package/storybook-static/assets/{Modal.stories-DtkSn50u.js → Modal.stories-DepzRvWp.js} +1 -1
  178. package/storybook-static/assets/{ModalManagerProvider-Z3rgI84z.js → ModalManagerProvider-B1XUXs-1.js} +1 -1
  179. package/storybook-static/assets/{ModalManagerProvider-C5bd7SFD.css → ModalManagerProvider-CjPErFqW.css} +1 -1
  180. package/storybook-static/assets/{MultiSelect-CWHllMQL.js → MultiSelect-DBzuR4v6.js} +1 -1
  181. package/storybook-static/assets/{MultiSelect-CCpKNk3U.js → MultiSelect-U5XEaFTv.js} +1 -1
  182. package/storybook-static/assets/{MultiSelect.stories-BK3hlkDB.js → MultiSelect.stories-9xtLUsmK.js} +1 -1
  183. package/storybook-static/assets/{NoData-vatUQRQ8.js → NoData-Did5-Vbj.js} +1 -1
  184. package/storybook-static/assets/{NotificationsHost-DA4Psge0.js → NotificationsHost-C16jWWbh.js} +1 -1
  185. package/storybook-static/assets/{NotificationsHost.stories-Bq3X0zOH.js → NotificationsHost.stories-Df9Sciyb.js} +1 -1
  186. package/storybook-static/assets/{ODataMultiSelect-B7_-_SsF.js → ODataMultiSelect-_5_Hrv8p.js} +1 -1
  187. package/storybook-static/assets/{ODataMultiSelect.stories-BNFsF78C.js → ODataMultiSelect.stories-DWTlih_F.js} +1 -1
  188. package/storybook-static/assets/{ODataSelect-BDDK25Nk.js → ODataSelect-xX8_14hD.js} +1 -1
  189. package/storybook-static/assets/{ODataSelect.stories-DUh5DBtM.js → ODataSelect.stories-B_VSMkR5.js} +1 -1
  190. package/storybook-static/assets/{ODataTreeMultiSelect-DBs7NzjO.js → ODataTreeMultiSelect-CheCWkrj.js} +1 -1
  191. package/storybook-static/assets/{ODataTreeMultiSelect.stories-HAT4WTM-.js → ODataTreeMultiSelect.stories-CAWAJxdC.js} +1 -1
  192. package/storybook-static/assets/{ODataTreeSelect-imLw4plg.js → ODataTreeSelect-ZQN9ZhPc.js} +1 -1
  193. package/storybook-static/assets/{ODataTreeSelect.stories-URCAozFr.js → ODataTreeSelect.stories-CYC_eiFv.js} +1 -1
  194. package/storybook-static/assets/{OneStepScroller-KNIY7BEL.js → OneStepScroller-KFcpHiAM.js} +1 -1
  195. package/storybook-static/assets/{PeriodSelect-C4Z1vWiO.js → PeriodSelect-BgQWqB2a.js} +1 -1
  196. package/storybook-static/assets/{PeriodSelect-Dg4cO0kt.js → PeriodSelect-DN9SFKXh.js} +1 -1
  197. package/storybook-static/assets/{PeriodSelect.stories-CcVbKheD.js → PeriodSelect.stories-DcUE2clK.js} +1 -1
  198. package/storybook-static/assets/{PickerSelectionToolbar-C_OkpXnl.js → PickerSelectionToolbar-CvqU44D-.js} +1 -1
  199. package/storybook-static/assets/{PickerTriggerActions-DoqVHiKv.js → PickerTriggerActions-DZzNAe4M.js} +1 -1
  200. package/storybook-static/assets/{Popover-BhdTqLlb.js → Popover-B1_qmzkr.js} +1 -1
  201. package/storybook-static/assets/{Popover-N6YINSY_.js → Popover-iSasApKA.js} +1 -1
  202. package/storybook-static/assets/{Popover.stories-CN59PWzR.js → Popover.stories-CGLUaRgH.js} +1 -1
  203. package/storybook-static/assets/{PresetRangeDateInput-Ctgz_cfn.js → PresetRangeDateInput-CxyBq2XS.js} +1 -1
  204. package/storybook-static/assets/{PresetRangeDateInput-CXs3TAYN.js → PresetRangeDateInput-D_ylm7hV.js} +1 -1
  205. package/storybook-static/assets/{PresetRangeDateInput.stories-B7INPvQC.js → PresetRangeDateInput.stories-DgrBel6_.js} +1 -1
  206. package/storybook-static/assets/{PresetSelect-BEvkvTRL.js → PresetSelect-CrdvEugF.js} +1 -1
  207. package/storybook-static/assets/{RadioButton-0RVpzxzk.js → RadioButton-DW4ph1Xp.js} +1 -1
  208. package/storybook-static/assets/{RadioButton-BfyYyhLa.js → RadioButton-DwyUH5ms.js} +1 -1
  209. package/storybook-static/assets/{RadioButton.stories-D27stCgN.js → RadioButton.stories-6q7CeUZY.js} +1 -1
  210. package/storybook-static/assets/{RadioGroup-CFrv1NLu.js → RadioGroup-BumTRrwE.js} +1 -1
  211. package/storybook-static/assets/{RadioGroup-DrAOT8A_.js → RadioGroup-DshEU96S.js} +1 -1
  212. package/storybook-static/assets/{RadioGroup.stories-C4oBCJdD.js → RadioGroup.stories-Bwv8Bgn8.js} +1 -1
  213. package/storybook-static/assets/{Scrollable-DsEfPtLq.js → Scrollable-ZI0zA9wz.js} +1 -1
  214. package/storybook-static/assets/{Select-DOcRt1WX.js → Select-CP1Ijv9g.js} +1 -1
  215. package/storybook-static/assets/{Select-Co7ThaEv.js → Select-CjuyI3wO.js} +1 -1
  216. package/storybook-static/assets/{Select.stories-BXNsTQVf.js → Select.stories-kCFhGvWP.js} +1 -1
  217. package/storybook-static/assets/{SelectOptionContent-ZfSH566e.js → SelectOptionContent-C2DjqaM0.js} +1 -1
  218. package/storybook-static/assets/{SerializableSelect-DY0-hE9S.js → SerializableSelect-CoVoXwJS.js} +1 -1
  219. package/storybook-static/assets/{SerializableSelect.stories-awgIM5u-.js → SerializableSelect.stories-UTJc7HQF.js} +1 -1
  220. package/storybook-static/assets/{SingleDateTimeInput-BtpTlEeK.js → SingleDateTimeInput-DobT9m-7.js} +1 -1
  221. package/storybook-static/assets/{SingleDateTimeInput-BjaUEsZz.js → SingleDateTimeInput-bIeFRT8c.js} +1 -1
  222. package/storybook-static/assets/{SingleDateTimeInput.stories-C7QK6_5g.js → SingleDateTimeInput.stories-CwAP5lI3.js} +1 -1
  223. package/storybook-static/assets/{Slider-aNVrwhr6.js → Slider-CnhBAXNm.js} +1 -1
  224. package/storybook-static/assets/{Slider-BKv97sQa.js → Slider-DB7dm4uC.js} +1 -1
  225. package/storybook-static/assets/{Slider.stories-CZvSVBPQ.js → Slider.stories-D7ADzpCF.js} +1 -1
  226. package/storybook-static/assets/{SliderInput-7X4RLbUB.js → SliderInput-CvmZ86d-.js} +1 -1
  227. package/storybook-static/assets/{SliderInput-CkIxuEjc.js → SliderInput-DfMdXNjq.js} +1 -1
  228. package/storybook-static/assets/{SliderInput.stories-DN_GaYcm.js → SliderInput.stories-CKe5q8PZ.js} +1 -1
  229. package/storybook-static/assets/{Sortable-CmftIyd3.js → Sortable-D-PG0esR.js} +1 -1
  230. package/storybook-static/assets/{Sortable.stories-Jz0esMg6.js → Sortable.stories-BUUu5LQR.js} +1 -1
  231. package/storybook-static/assets/{Splitter-DW_9UWfI.js → Splitter-Cbiph6ck.js} +1 -1
  232. package/storybook-static/assets/{Splitter.stories-D5ynqUat.js → Splitter.stories-z1_IuipN.js} +1 -1
  233. package/storybook-static/assets/{StateSelect-CLchQToK.js → StateSelect-BfhvHQrQ.js} +1 -1
  234. package/storybook-static/assets/{StateSelect-BHhwcOHa.js → StateSelect-C6b0aolc.js} +1 -1
  235. package/storybook-static/assets/{StateSelect.stories-BdwAm9TE.js → StateSelect.stories-yKKasuZq.js} +1 -1
  236. package/storybook-static/assets/{StringToggle.stories-mZtN5ZqY.js → StringToggle.stories-mHQXke0Z.js} +1 -1
  237. package/storybook-static/assets/{Switch-Bf1Zr3rq.js → Switch--s8CABgk.js} +1 -1
  238. package/storybook-static/assets/{Switch-DfMUb2ZQ.js → Switch-DtYu0DX3.js} +1 -1
  239. package/storybook-static/assets/{Switch.stories-BsZrt00p.js → Switch.stories-DqVmpD3F.js} +1 -1
  240. package/storybook-static/assets/{Table-DBkYYLix.js → Table-CS-8NjMS.js} +1 -1
  241. package/storybook-static/assets/{Table.stories-MXx2G8Ou.js → Table.stories-BDEFvavq.js} +1 -1
  242. package/storybook-static/assets/{Tabs-DmkzIl51.js → Tabs-DVAc2sEq.js} +1 -1
  243. package/storybook-static/assets/{Tabs.stories-0XRI9VXR.js → Tabs.stories-Bx3SVBYV.js} +1 -1
  244. package/storybook-static/assets/{TabsBox-BcZIzq2f.js → TabsBox-DIc3bAG9.js} +1 -1
  245. package/storybook-static/assets/{TagInput-C1ynHkEU.js → TagInput-DvJOyiDa.js} +1 -1
  246. package/storybook-static/assets/{TagInput.stories-zByD7t70.js → TagInput.stories-BfUUxxvB.js} +1 -1
  247. package/storybook-static/assets/{Text-B8JQ8g6X.js → Text-DDM_QNpo.js} +1 -1
  248. package/storybook-static/assets/{Textarea-D7_oAPwc.js → Textarea-B8jfChqH.js} +1 -1
  249. package/storybook-static/assets/{Textarea-DlwCUO2d.js → Textarea-CouwxZMS.js} +1 -1
  250. package/storybook-static/assets/{Textarea.stories-AVxqLKSu.js → Textarea.stories-B5YnG6Hg.js} +1 -1
  251. package/storybook-static/assets/{TimePanel-DnyfOpfG.js → TimePanel-Ce44lmoA.js} +1 -1
  252. package/storybook-static/assets/{TimePanel.stories-jO6WSBvm.js → TimePanel.stories-dMXzRVpT.js} +1 -1
  253. package/storybook-static/assets/{Toggle-XKm0YNzz.js → Toggle-BLb3M4N1.js} +1 -1
  254. package/storybook-static/assets/{Toggle-C0wWpjgI.js → Toggle-C8qL0JdM.js} +1 -1
  255. package/storybook-static/assets/{Toggle.stories-C0i6HRO0.js → Toggle.stories-CR8xCkXd.js} +1 -1
  256. package/storybook-static/assets/{TreeMultiSelect-C3LhJxzz.js → TreeMultiSelect-5fHQVUTd.js} +1 -1
  257. package/storybook-static/assets/{TreeMultiSelect-D9UnDwNu.js → TreeMultiSelect-Bttryv5k.js} +1 -1
  258. package/storybook-static/assets/{TreeMultiSelect.stories-Cy1neWKt.js → TreeMultiSelect.stories-B4zkiRfC.js} +1 -1
  259. package/storybook-static/assets/{TreePickerBase-l3-d4zHW.js → TreePickerBase-B_XyJaYL.js} +1 -1
  260. package/storybook-static/assets/{TreeSelect-B6_w40IO.js → TreeSelect-BmV5BgHm.js} +1 -1
  261. package/storybook-static/assets/{TreeSelect-BGUby1c1.js → TreeSelect-_mFMic9T.js} +1 -1
  262. package/storybook-static/assets/{TreeSelect.stories-euNnlIhp.js → TreeSelect.stories-D-lz21y2.js} +1 -1
  263. package/storybook-static/assets/{TreeTable-BdYK6ILe.js → TreeTable-BjnuFqoj.js} +1 -1
  264. package/storybook-static/assets/{TreeTable.stories-BV7UtxnX.js → TreeTable.stories-OEii5uhT.js} +1 -1
  265. package/storybook-static/assets/{async-DLn-s4lH.js → async-BggDKhCa.js} +1 -1
  266. package/storybook-static/assets/{blocks-CQ7RHmDr.js → blocks-DXv0kKnO.js} +3 -3
  267. package/storybook-static/assets/{browserAndReact-8A8IpU0z.js → browserAndReact-CJg4Htw7.js} +1 -1
  268. package/storybook-static/assets/{check-DhUE5WQh.js → check-BDF3qN6C.js} +1 -1
  269. package/storybook-static/assets/{chevron-down-D4lkPPbf.js → chevron-down-DycW5rEN.js} +1 -1
  270. package/storybook-static/assets/{chevron-left-M03WkC-a.js → chevron-left-C5fp0Uga.js} +1 -1
  271. package/storybook-static/assets/{chevron-right-BJAsqJhn.js → chevron-right-BtcaEPgU.js} +1 -1
  272. package/storybook-static/assets/{chunk-W22LQPXL-CiwCRaDo.js → chunk-W22LQPXL-DpbhHTe5.js} +1 -1
  273. package/storybook-static/assets/{circle-alert-q4Jm4R62.js → circle-alert-BHmYiVSQ.js} +1 -1
  274. package/storybook-static/assets/{circle-check-2STuXttp.js → circle-check-D-kWZdLj.js} +1 -1
  275. package/storybook-static/assets/{components-B5pHXbt2.js → components-CiK0i2y5.js} +3 -3
  276. package/storybook-static/assets/{contextMenu-C4kMhuxz.js → contextMenu-BuB7GWKM.js} +1 -1
  277. package/storybook-static/assets/{defaultRenderers-WqMviHeH.js → defaultRenderers-DKIVh61V.js} +1 -1
  278. package/storybook-static/assets/{download-A_0kizVg.js → download-CHMcYpj3.js} +1 -1
  279. package/storybook-static/assets/{filesAndExcel-CfQAZrQE.js → filesAndExcel-DlArA_GW.js} +1 -1
  280. package/storybook-static/assets/{floating-ui.react-WPEHN77t.js → floating-ui.react-2n8Uyf0J.js} +1 -1
  281. package/storybook-static/assets/{formatters-DmwKOTAq.js → formatters-BwCs7xCt.js} +1 -1
  282. package/storybook-static/assets/{formatters-runtime-bVpg8aMB.js → formatters-runtime-ibdtp7C6.js} +1 -1
  283. package/storybook-static/assets/{foundationLib-C01I_M2-.js → foundationLib-DAvQ9wk8.js} +1 -1
  284. package/storybook-static/assets/{hooks-CE5XnwC0.js → hooks-D0mbXwcm.js} +1 -1
  285. package/storybook-static/assets/iframe-B1M7f4Qn.js +1 -0
  286. package/storybook-static/assets/{iframe-B94C5PVz.js → iframe-BnjRbLCp.js} +3 -3
  287. package/storybook-static/assets/{info-DMdsXpNu.js → info-B9srbxQP.js} +1 -1
  288. package/storybook-static/assets/{odata-C_Kp4nRV.js → odata-D9w_2DW1.js} +1 -1
  289. package/storybook-static/assets/{odataAndTables-BKMVN-Ie.js → odataAndTables-B7U8x4CV.js} +1 -1
  290. package/storybook-static/assets/{odataFetchFn-ClGPC3PY.js → odataFetchFn-BrsJ-DlE.js} +1 -1
  291. package/storybook-static/assets/{odataStoryFixtures-BBUrFOHI.js → odataStoryFixtures-CbO3dfw1.js} +1 -1
  292. package/storybook-static/assets/{persisted-Bgbpgwot.js → persisted-DXbdpvSU.js} +1 -1
  293. package/storybook-static/assets/{pureUtilities-Bhx4RJT9.js → pureUtilities-BtrtdX0r.js} +1 -1
  294. package/storybook-static/assets/{react-BS8poczJ.js → react-DmKWdnt1.js} +1 -1
  295. package/storybook-static/assets/{refresh-cw-DOf-HEqz.js → refresh-cw-C2Rk5OjE.js} +1 -1
  296. package/storybook-static/assets/{runtimeAndState-BI3ShVSh.js → runtimeAndState-Be2a2JfZ.js} +1 -1
  297. package/storybook-static/assets/{settings-2-D80RVegV.js → settings-2-CuAc9ekV.js} +1 -1
  298. package/storybook-static/assets/{sortable-BNyMs1Ud.js → sortable-DF8VgD8R.js} +1 -1
  299. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-B7A0UpdW.js → syntaxhighlighter-T5IQBZDB-BnGJW0L9.js} +1 -1
  300. package/storybook-static/assets/{trash-2-D6iHrdib.js → trash-2-DRXwetzV.js} +1 -1
  301. package/storybook-static/assets/{triangle-alert-DHXjljtr.js → triangle-alert-D5785xcd.js} +1 -1
  302. package/storybook-static/assets/{useODataSelectBase-ix89Wh6D.js → useODataSelectBase-DfOi4e0X.js} +1 -1
  303. package/storybook-static/assets/{useODataTreeData-Cjry2j-1.js → useODataTreeData-BBSy4G6V.js} +1 -1
  304. package/storybook-static/assets/{usePickerQuery-Kxa1KWXx.js → usePickerQuery-BYa25rmI.js} +1 -1
  305. package/storybook-static/assets/{usePickerTriggerController-BdBNKr8c.js → usePickerTriggerController-CwgtrL5F.js} +1 -1
  306. package/storybook-static/assets/{x-C2J_sxhT.js → x-DvnP0o1b.js} +1 -1
  307. package/storybook-static/iframe.html +2 -2
  308. package/storybook-static/project.json +1 -1
  309. package/dist/chunks/date-input-Dr5QNVT6.js +0 -341
  310. package/storybook-static/assets/iframe-G3pIVTVE.js +0 -1
@@ -1,11 +1,11 @@
1
- import { n as e } from "./popover-BTT7zSqx.js";
2
- import { Text as t } from "../text/index.js";
3
- import { n } from "./flex-C7njxZ74.js";
1
+ import { n as e } from "./popover-IExDrsF6.js";
2
+ import { n as t } from "./flex-C7njxZ74.js";
3
+ import { Text as n } from "../text/index.js";
4
4
  import { PolymorphicComponent as r } from "../polymorphic/index.js";
5
5
  import { Suspense as i, forwardRef as a, useCallback as o, useEffect as s, useRef as c, useState as l, useSyncExternalStore as u } from "react";
6
6
  import { cn as d } from "@ryuzaki13/react-foundation-lib/utils";
7
- import { CheckCheckIcon as f, ChevronLeftIcon as p, ChevronRightIcon as m, CircleAlertIcon as h, CircleCheckIcon as g, CircleXIcon as _, CopyIcon as v, InfoIcon as y } from "lucide-react";
8
- import { jsx as b, jsxs as x } from "react/jsx-runtime";
7
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
8
+ import { CheckCheckIcon as m, ChevronLeftIcon as h, ChevronRightIcon as g, CircleAlertIcon as _, CircleCheckIcon as v, CircleXIcon as y, CopyIcon as b, InfoIcon as x } from "lucide-react";
9
9
  import { useCopyElementTextWithFeedback as S } from "@ryuzaki13/react-foundation-lib/copy";
10
10
  import { useLazyComponent as C } from "@ryuzaki13/react-foundation-lib/hooks";
11
11
  var w = {
@@ -16,7 +16,7 @@ var w = {
16
16
  //#endregion
17
17
  //#region src/misc/AnimatedLogo.tsx
18
18
  function T({ children: e, className: t, ...n }) {
19
- return /* @__PURE__ */ b("div", {
19
+ return /* @__PURE__ */ f("div", {
20
20
  ...n,
21
21
  className: d(w.logo, t),
22
22
  children: e
@@ -25,7 +25,7 @@ function T({ children: e, className: t, ...n }) {
25
25
  //#endregion
26
26
  //#region src/misc/AnimatedLogoSegment.tsx
27
27
  function E({ children: e, className: t, order: n, style: r, ...i }) {
28
- return /* @__PURE__ */ b("g", {
28
+ return /* @__PURE__ */ f("g", {
29
29
  ...i,
30
30
  className: d(w.segment, t),
31
31
  style: {
@@ -39,17 +39,17 @@ function E({ children: e, className: t, order: n, style: r, ...i }) {
39
39
  //#region src/misc/CopyTextWrapper.tsx
40
40
  var D = ({ children: t, position: n = "top", showOnHover: r = !0, className: i }) => {
41
41
  let { containerRef: a, copyElementText: o, isCopied: s } = S();
42
- return /* @__PURE__ */ x("span", {
42
+ return /* @__PURE__ */ p("span", {
43
43
  ref: a,
44
44
  className: i,
45
- children: [t, /* @__PURE__ */ b(e, {
45
+ children: [t, /* @__PURE__ */ f(e, {
46
46
  openOnHover: r,
47
47
  placement: n,
48
48
  content: s ? "Скопировано!" : "Копировать текст",
49
- children: /* @__PURE__ */ b("button", {
49
+ children: /* @__PURE__ */ f("button", {
50
50
  onClick: o,
51
51
  "aria-label": s ? "Скопировано!" : "Копировать текст",
52
- children: s ? /* @__PURE__ */ b(f, { className: "block statusSuccess" }) : /* @__PURE__ */ b(v, { className: "block statusInfo" })
52
+ children: s ? /* @__PURE__ */ f(m, { className: "block statusSuccess" }) : /* @__PURE__ */ f(b, { className: "block statusInfo" })
53
53
  })
54
54
  })]
55
55
  });
@@ -57,15 +57,15 @@ var D = ({ children: t, position: n = "top", showOnHover: r = !0, className: i }
57
57
  //#endregion
58
58
  //#region src/misc/IconWrapper.tsx
59
59
  function k({ className: e, children: t }) {
60
- return /* @__PURE__ */ b("div", {
60
+ return /* @__PURE__ */ f("div", {
61
61
  className: d(O.wrapper, e),
62
62
  children: t
63
63
  });
64
64
  }
65
- var A = { componentLoader: "qgIKVo" }, j = ({ className: e, children: r, color: i = "muted", minHeight: a, uppercase: o = !0 }) => /* @__PURE__ */ b(n, {
65
+ var A = { componentLoader: "qgIKVo" }, j = ({ className: e, children: r, color: i = "muted", minHeight: a, uppercase: o = !0 }) => /* @__PURE__ */ f(t, {
66
66
  className: d("paddingMd textCenter", e),
67
67
  minHeight: a,
68
- children: /* @__PURE__ */ b(t, {
68
+ children: /* @__PURE__ */ f(n, {
69
69
  as: "div",
70
70
  weight: "bold",
71
71
  color: i,
@@ -76,7 +76,7 @@ var A = { componentLoader: "qgIKVo" }, j = ({ className: e, children: r, color:
76
76
  //#endregion
77
77
  //#region src/misc/LoadingMessage.tsx
78
78
  function M({ className: e, logo: t, text: n }) {
79
- return /* @__PURE__ */ x(j, {
79
+ return /* @__PURE__ */ p(j, {
80
80
  className: d(A.componentLoader, t ? void 0 : "skeletonLine", e),
81
81
  children: [t, n || "Загрузка..."]
82
82
  });
@@ -85,15 +85,15 @@ function M({ className: e, logo: t, text: n }) {
85
85
  //#region src/misc/LazyDynamicComponent.tsx
86
86
  var N = (e) => (e(), () => void 0), P = () => !0, F = () => !1;
87
87
  function I({ fallback: e, importFunc: t, componentName: n, clientOnly: r = !1, cacheKey: a, props: o }) {
88
- let s = C(t, n, a), c = u(N, P, F), l = e ?? /* @__PURE__ */ b(M, { text: "Ожидание компонента..." });
89
- return r && !c ? l : /* @__PURE__ */ b(i, {
88
+ let s = C(t, n, a), c = u(N, P, F), l = e ?? /* @__PURE__ */ f(M, { text: "Ожидание компонента..." });
89
+ return r && !c ? l : /* @__PURE__ */ f(i, {
90
90
  fallback: l,
91
- children: /* @__PURE__ */ b(s, { ...o ?? {} })
91
+ children: /* @__PURE__ */ f(s, { ...o ?? {} })
92
92
  });
93
93
  }
94
94
  //#endregion
95
95
  //#region src/misc/SkeletonLine.tsx
96
- var L = ({ as: e, className: t, ...n }) => /* @__PURE__ */ b(r, {
96
+ var L = ({ as: e, className: t, ...n }) => /* @__PURE__ */ f(r, {
97
97
  as: e || "div",
98
98
  className: d("skeletonLine colorTransparent radiusSm", t),
99
99
  ...n
@@ -101,16 +101,16 @@ var L = ({ as: e, className: t, ...n }) => /* @__PURE__ */ b(r, {
101
101
  //#endregion
102
102
  //#region src/misc/LazyValue.tsx
103
103
  function R({ value: e, isLoading: t }) {
104
- return t ? /* @__PURE__ */ b(L, { children: "Загрузка..." }) : e ?? "-";
104
+ return t ? /* @__PURE__ */ f(L, { children: "Загрузка..." }) : e ?? "-";
105
105
  }
106
106
  //#endregion
107
107
  //#region src/misc/NoData.tsx
108
- var z = ({ className: e, text: t, minHeight: n = "5em" }) => /* @__PURE__ */ b(j, {
108
+ var z = ({ className: e, text: t, minHeight: n = "5em" }) => /* @__PURE__ */ f(j, {
109
109
  className: e,
110
110
  color: "muted",
111
111
  minHeight: n,
112
112
  children: t || "Нет данных"
113
- }), B = ({ className: e, isError: t, children: n }) => /* @__PURE__ */ b(j, {
113
+ }), B = ({ className: e, isError: t, children: n }) => /* @__PURE__ */ f(j, {
114
114
  className: e,
115
115
  color: t ? "error" : "secondary",
116
116
  children: n
@@ -124,10 +124,10 @@ function U(e) {
124
124
  return Math.max(0, e.scrollWidth - e.clientWidth);
125
125
  }
126
126
  var W = ({ children: e, className: t, itemSelector: n, scrollPadding: r = 6, smooth: i = !0 }) => {
127
- let a = c(null), u = c(null), [f, h] = l(!1), [g, _] = l(!1), v = o(() => {
127
+ let a = c(null), u = c(null), [m, _] = l(!1), [v, y] = l(!1), b = o(() => {
128
128
  let e = a.current;
129
129
  return e ? n ? Array.from(e.querySelectorAll(n)) : Array.from(e.children).filter((e) => e instanceof HTMLElement) : [];
130
- }, [n]), y = o((e) => {
130
+ }, [n]), x = o((e) => {
131
131
  let t = a.current;
132
132
  if (!t) return null;
133
133
  if (n) {
@@ -140,11 +140,11 @@ var W = ({ children: e, className: t, itemSelector: n, scrollPadding: r = 6, smo
140
140
  }, [n]), S = o(() => {
141
141
  let e = a.current;
142
142
  if (!e) {
143
- h(!1), _(!1);
143
+ _(!1), y(!1);
144
144
  return;
145
145
  }
146
146
  let t = Math.max(0, e.scrollWidth - e.clientWidth), n = Math.max(0, Math.min(e.scrollLeft, t)), r = n > H, i = n < t - H;
147
- h((e) => e === r ? e : r), _((e) => e === i ? e : i);
147
+ _((e) => e === r ? e : r), y((e) => e === i ? e : i);
148
148
  }, []), C = o(() => {
149
149
  u.current === null && (u.current = requestAnimationFrame(() => {
150
150
  u.current = null, S();
@@ -152,7 +152,7 @@ var W = ({ children: e, className: t, itemSelector: n, scrollPadding: r = 6, smo
152
152
  }, [S]), w = o((e) => {
153
153
  let t = a.current;
154
154
  if (!t) return;
155
- let n = v()[0];
155
+ let n = b()[0];
156
156
  if (!n) return;
157
157
  let r = n.getBoundingClientRect().width;
158
158
  if (!r) return;
@@ -161,7 +161,7 @@ var W = ({ children: e, className: t, itemSelector: n, scrollPadding: r = 6, smo
161
161
  left: c,
162
162
  behavior: i ? "smooth" : "auto"
163
163
  });
164
- }, [v, i]), T = o((e) => {
164
+ }, [b, i]), T = o((e) => {
165
165
  let t = a.current;
166
166
  if (!t) return;
167
167
  let n = t.getBoundingClientRect(), o = e.getBoundingClientRect(), s = o.left - n.left + t.scrollLeft, c = s + o.width, l = t.scrollLeft, u = t.scrollLeft + t.clientWidth;
@@ -178,11 +178,11 @@ var W = ({ children: e, className: t, itemSelector: n, scrollPadding: r = 6, smo
178
178
  let t = (e) => {
179
179
  let t = e.target;
180
180
  if (!(t instanceof HTMLElement)) return;
181
- let n = y(t);
181
+ let n = x(t);
182
182
  n && T(n);
183
183
  };
184
184
  return e.addEventListener("focusin", t), () => e.removeEventListener("focusin", t);
185
- }, [T, y]), s(() => {
185
+ }, [T, x]), s(() => {
186
186
  let e = a.current;
187
187
  if (!e) return;
188
188
  let t = () => C();
@@ -201,50 +201,50 @@ var W = ({ children: e, className: t, itemSelector: n, scrollPadding: r = 6, smo
201
201
  }, [e, C]);
202
202
  let E = () => w(-1), D = () => w(1), O = (e) => {
203
203
  e.key === "ArrowLeft" ? (e.preventDefault(), E()) : e.key === "ArrowRight" && (e.preventDefault(), D());
204
- }, k = f || g;
205
- return /* @__PURE__ */ x("div", {
204
+ }, k = m || v;
205
+ return /* @__PURE__ */ p("div", {
206
206
  className: d(V.oneStepScroller, t),
207
207
  style: { position: "relative" },
208
208
  children: [
209
- k && /* @__PURE__ */ b("button", {
209
+ k && /* @__PURE__ */ f("button", {
210
210
  type: "button",
211
211
  "aria-label": "Прокрутить шаг влево",
212
212
  className: V.ossButton,
213
213
  onClick: E,
214
- disabled: !f,
215
- children: /* @__PURE__ */ b(p, {})
214
+ disabled: !m,
215
+ children: /* @__PURE__ */ f(h, {})
216
216
  }),
217
- /* @__PURE__ */ b("div", {
217
+ /* @__PURE__ */ f("div", {
218
218
  className: V.ossViewport,
219
219
  onKeyDown: O,
220
220
  role: "group",
221
221
  "aria-label": "Элементы прокрутки",
222
- children: /* @__PURE__ */ b("div", {
222
+ children: /* @__PURE__ */ f("div", {
223
223
  className: V.ossScroller,
224
224
  ref: a,
225
225
  "aria-live": "polite",
226
226
  children: e
227
227
  })
228
228
  }),
229
- k && /* @__PURE__ */ b("button", {
229
+ k && /* @__PURE__ */ f("button", {
230
230
  type: "button",
231
231
  "aria-label": "Прокрутить шаг вправо",
232
232
  className: V.ossButton,
233
233
  onClick: D,
234
- disabled: !g,
235
- children: /* @__PURE__ */ b(m, {})
234
+ disabled: !v,
235
+ children: /* @__PURE__ */ f(g, {})
236
236
  })
237
237
  ]
238
238
  });
239
- }, G = a(({ children: e, height: t, stable: n, overscroll: r, className: i }, a) => /* @__PURE__ */ b("div", {
239
+ }, G = a(({ children: e, height: t, stable: n, overscroll: r, className: i }, a) => /* @__PURE__ */ f("div", {
240
240
  ref: a,
241
241
  className: d("scrollable", n && "stable", r && "overscroll", i),
242
242
  style: { height: t },
243
243
  children: e
244
244
  }));
245
- a(({ blockClassName: e, ...t }, n) => /* @__PURE__ */ b("div", {
245
+ a(({ blockClassName: e, ...t }, n) => /* @__PURE__ */ f("div", {
246
246
  className: d(e, "overflowHidden w100 h100"),
247
- children: /* @__PURE__ */ b(G, {
247
+ children: /* @__PURE__ */ f(G, {
248
248
  ref: n,
249
249
  ...t
250
250
  })
@@ -257,31 +257,31 @@ var K = {
257
257
  warning: "_03z-1l",
258
258
  error: "_0RqsqJ",
259
259
  state: "mXkUoM"
260
- }, q = ({ state: e = "none", text: t, className: n }) => /* @__PURE__ */ x("div", {
260
+ }, q = ({ state: e = "none", text: t, className: n }) => /* @__PURE__ */ p("div", {
261
261
  className: d("flexCenter gapSm", n),
262
262
  children: [(() => {
263
263
  switch (e) {
264
- case "error": return /* @__PURE__ */ b(Y, {});
265
- case "warning": return /* @__PURE__ */ b(X, {});
266
- case "success": return /* @__PURE__ */ b(Z, {});
267
- case "information": return /* @__PURE__ */ b(Q, {});
264
+ case "error": return /* @__PURE__ */ f(Y, {});
265
+ case "warning": return /* @__PURE__ */ f(X, {});
266
+ case "success": return /* @__PURE__ */ f(Z, {});
267
+ case "information": return /* @__PURE__ */ f(Q, {});
268
268
  default: return null;
269
269
  }
270
270
  })(), t]
271
271
  }), J = ({ state: e }) => {
272
272
  switch (e) {
273
- case "error": return /* @__PURE__ */ b(Y, {});
274
- case "warning": return /* @__PURE__ */ b(X, {});
275
- case "success": return /* @__PURE__ */ b(Z, {});
276
- case "information": return /* @__PURE__ */ b(Q, {});
273
+ case "error": return /* @__PURE__ */ f(Y, {});
274
+ case "warning": return /* @__PURE__ */ f(X, {});
275
+ case "success": return /* @__PURE__ */ f(Z, {});
276
+ case "information": return /* @__PURE__ */ f(Q, {});
277
277
  default: return null;
278
278
  }
279
- }, Y = () => /* @__PURE__ */ b(_, { className: d(K.state, K.error) }), X = () => /* @__PURE__ */ b(h, { className: d(K.state, K.warning) }), Z = () => /* @__PURE__ */ b(g, { className: d(K.state, K.success) }), Q = () => /* @__PURE__ */ b(y, { className: d(K.state, K.information) });
279
+ }, Y = () => /* @__PURE__ */ f(y, { className: d(K.state, K.error) }), X = () => /* @__PURE__ */ f(_, { className: d(K.state, K.warning) }), Z = () => /* @__PURE__ */ f(v, { className: d(K.state, K.success) }), Q = () => /* @__PURE__ */ f(x, { className: d(K.state, K.information) });
280
280
  //#endregion
281
281
  //#region src/misc/StateWrapper.tsx
282
282
  function $({ as: e, state: t, className: n, ...i }) {
283
283
  let a = t?.toLowerCase() ?? "none", o = K[a], s = a && a !== "none";
284
- return /* @__PURE__ */ b(r, {
284
+ return /* @__PURE__ */ f(r, {
285
285
  as: e || "div",
286
286
  className: d(K.stateWrapper, s && K.status, o, n),
287
287
  ...i
@@ -290,4 +290,4 @@ function $({ as: e, state: t, className: n, ...i }) {
290
290
  //#endregion
291
291
  export { k as _, q as a, T as b, G as c, z as d, R as f, j as g, M as h, J as i, W as l, I as m, Y as n, Z as o, L as p, Q as r, X as s, $ as t, B as u, D as v, E as y };
292
292
 
293
- //# sourceMappingURL=misc-Cp_r022Z.js.map
293
+ //# sourceMappingURL=misc-CkRRma5E.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"misc-Cp_r022Z.js","names":[],"sources":["../../src/misc/AnimatedLogo.module.scss","../../src/misc/AnimatedLogo.tsx","../../src/misc/AnimatedLogoSegment.tsx","../../src/misc/CopyTextWrapper.tsx","../../src/misc/IconWrapper.module.scss","../../src/misc/IconWrapper.tsx","../../src/misc/LoadingMessage.module.scss","../../src/misc/Message.tsx","../../src/misc/LoadingMessage.tsx","../../src/misc/LazyDynamicComponent.tsx","../../src/misc/SkeletonLine.tsx","../../src/misc/LazyValue.tsx","../../src/misc/NoData.tsx","../../src/misc/Notice.tsx","../../src/misc/OneStepScroller.module.scss","../../src/misc/OneStepScroller.tsx","../../src/misc/Scrollable.tsx","../../src/misc/State.module.scss","../../src/misc/StateIcon.tsx","../../src/misc/StateWrapper.tsx"],"sourcesContent":[".logo {\n\tsvg {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t}\n}\n\n.segment {\n\topacity: 0.2;\n\tanimation: pulseSteps 2s ease-in-out infinite;\n}\n\n@keyframes pulseSteps {\n\t0% {\n\t\topacity: 0.2;\n\t}\n\n\t35%,\n\t55% {\n\t\topacity: 1;\n\t}\n\n\t100% {\n\t\topacity: 0.2;\n\t}\n}\n\n@media (prefers-reduced-motion: reduce) {\n\t.segment {\n\t\tanimation: none;\n\t\topacity: 1;\n\t}\n}\n","import { type ComponentPropsWithoutRef, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./AnimatedLogo.module.scss\";\n\ntype AnimatedLogoProps = Omit<ComponentPropsWithoutRef<\"div\">, \"children\"> & {\n\tchildren: ReactNode;\n};\n\n/**\n * Контейнер анимированного логотипа без брендовой SVG-разметки.\n * Host-проект передаёт собственный `svg`, а его визуальные части оборачивает в `AnimatedLogoSegment`.\n */\nexport function AnimatedLogo({ children, className, ...htmlProps }: AnimatedLogoProps) {\n\treturn (\n\t\t<div {...htmlProps} className={cn(styles.logo, className)}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./AnimatedLogo.module.scss\";\n\ntype AnimatedLogoSegmentProps = Omit<ComponentPropsWithoutRef<\"g\">, \"children\"> & {\n\tchildren: ReactNode;\n\torder: number;\n};\n\n/**\n * Анимирует одну смысловую часть host-логотипа и сдвигает её pulse относительно предыдущих частей.\n * `order` задаётся с нуля в визуальной последовательности сегментов и преобразуется в шаг задержки 200 мс.\n */\nexport function AnimatedLogoSegment({ children, className, order, style, ...svgGroupProps }: AnimatedLogoSegmentProps) {\n\treturn (\n\t\t<g {...svgGroupProps} className={cn(styles.segment, className)} style={{ ...style, animationDelay: `${order * 200}ms` }}>\n\t\t\t{children}\n\t\t</g>\n\t);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport { useCopyElementTextWithFeedback } from \"@ryuzaki13/react-foundation-lib/copy\";\nimport { CheckCheckIcon, CopyIcon } from \"lucide-react\";\n\nimport { FloatingPopover } from \"../popover\";\n\ninterface CopyTextWrapperProps {\n\tchildren: React.ReactNode;\n\tposition?: Placement;\n\tshowOnHover?: boolean;\n\tclassName?: string;\n}\n\nexport const CopyTextWrapper: React.FC<CopyTextWrapperProps> = ({ children, position = \"top\", showOnHover = true, className }) => {\n\tconst { containerRef, copyElementText, isCopied } = useCopyElementTextWithFeedback<HTMLSpanElement>();\n\n\treturn (\n\t\t<span ref={containerRef} className={className}>\n\t\t\t{children}\n\t\t\t<FloatingPopover openOnHover={showOnHover} placement={position} content={isCopied ? \"Скопировано!\" : \"Копировать текст\"}>\n\t\t\t\t<button onClick={copyElementText} aria-label={isCopied ? \"Скопировано!\" : \"Копировать текст\"}>\n\t\t\t\t\t{isCopied ? <CheckCheckIcon className=\"block statusSuccess\" /> : <CopyIcon className=\"block statusInfo\" />}\n\t\t\t\t</button>\n\t\t\t</FloatingPopover>\n\t\t</span>\n\t);\n};\n",".wrapper {\n\twidth: var(--control-height);\n\theight: var(--control-height);\n\tmargin: auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./IconWrapper.module.scss\";\n\ninterface IconWrapperProps {\n\tchildren: ReactNode;\n\tclassName?: string;\n}\n\nexport function IconWrapper({ className, children }: IconWrapperProps) {\n\treturn <div className={cn(styles.wrapper, className)}>{children}</div>;\n}\n",".componentLoader {\n\tmin-height: 10em;\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { FlexCenter } from \"../flex\";\nimport { Text, TextColor } from \"../text\";\n\ninterface MessageProps extends PropsWithChildren {\n\tclassName?: string;\n\tcolor?: TextColor;\n\tminHeight?: string | number;\n\tuppercase?: boolean;\n}\n\nexport const Message: React.FC<MessageProps> = ({ className, children, color = \"muted\", minHeight, uppercase = true }) => (\n\t<FlexCenter className={cn(\"paddingMd textCenter\", className)} minHeight={minHeight}>\n\t\t<Text as=\"div\" weight=\"bold\" color={color} uppercase={uppercase}>\n\t\t\t{children}\n\t\t</Text>\n\t</FlexCenter>\n);\n","import { type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./LoadingMessage.module.scss\";\nimport { Message } from \"./Message\";\n\ntype LoadingMessageProps = {\n\tclassName?: string;\n\t/** Готовый брендовый знак, которым host-проект при необходимости дополняет сообщение о загрузке. */\n\tlogo?: ReactNode;\n\ttext?: string;\n};\n\nexport function LoadingMessage({ className, logo, text }: LoadingMessageProps) {\n\treturn (\n\t\t<Message className={cn(styles.componentLoader, logo ? undefined : \"skeletonLine\", className)}>\n\t\t\t{logo}\n\n\t\t\t{text || \"Загрузка...\"}\n\t\t</Message>\n\t);\n}\n","import { Suspense, useSyncExternalStore, type ComponentType, type ReactNode } from \"react\";\n\nimport { useLazyComponent } from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { LoadingMessage } from \"./LoadingMessage\";\n\ntype LazyDynamicComponentProps<T extends object> = {\n\timportFunc: () => Promise<Record<string, ComponentType<T>> | null>;\n\tcomponentName: string;\n\tcacheKey?: string;\n\tclientOnly?: boolean;\n\tfallback?: ReactNode;\n\tprops?: T;\n};\n\nconst subscribeClientOnlyMount = (onStoreChange: () => void) => {\n\tonStoreChange();\n\n\treturn () => undefined;\n};\n\nconst getClientSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\n/**\n * Компонент ленивой загрузки динамически импортируемого React-компонента. Позволяет отложить загрузку тяжелых частей интерфейса до момента использования.\n */\nexport function LazyDynamicComponent<T extends object>({\n\tfallback,\n\timportFunc,\n\tcomponentName,\n\tclientOnly = false,\n\tcacheKey,\n\tprops\n}: LazyDynamicComponentProps<T>) {\n\tconst Component = useLazyComponent(importFunc, componentName, cacheKey);\n\tconst isClient = useSyncExternalStore(subscribeClientOnlyMount, getClientSnapshot, getServerSnapshot);\n\n\tconst fallbackNode = fallback ?? <LoadingMessage text=\"Ожидание компонента...\" />;\n\n\t// Client-only режим нужен для браузерных модулей, которые нельзя даже пытаться импортировать во время SSR.\n\tif (clientOnly && !isClient) return fallbackNode;\n\n\treturn (\n\t\t<Suspense fallback={fallbackNode}>\n\t\t\t{/* eslint-disable-next-line react-hooks/static-components */}\n\t\t\t<Component {...(props ?? ({} as T))} />\n\t\t</Suspense>\n\t);\n}\n","import React from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { PolymorphicComponent, PolymorphicComponentBaseProps } from \"../polymorphic\";\n\ntype SkeletonLineOwnProps<E extends React.ElementType = React.ElementType> = PolymorphicComponentBaseProps<E> & {\n\tclassName?: string;\n};\n\ntype SkeletonLineProps<E extends React.ElementType> = SkeletonLineOwnProps<E> &\n\tOmit<React.ComponentPropsWithRef<E>, keyof SkeletonLineOwnProps>;\n\nexport const SkeletonLine = <E extends React.ElementType>({ as, className, ...props }: SkeletonLineProps<E>) => {\n\tconst Component = as || \"div\";\n\n\treturn (\n\t\t<PolymorphicComponent\n\t\t\tas={Component as React.ElementType}\n\t\t\tclassName={cn(\"skeletonLine colorTransparent radiusSm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n","import React from \"react\";\n\nimport { SkeletonLine } from \"./SkeletonLine\";\n\ninterface LazyValueProps {\n\tvalue: React.ReactNode;\n\tisLoading?: boolean;\n}\n\nexport function LazyValue({ value, isLoading }: LazyValueProps) {\n\treturn isLoading ? <SkeletonLine>Загрузка...</SkeletonLine> : (value ?? \"-\");\n}\n","import { Message } from \"./Message\";\n\ninterface NoDataProps {\n\tclassName?: string;\n\ttext?: string;\n\tminHeight?: string | number;\n}\n\nexport const NoData = ({ className, text, minHeight = \"5em\" }: NoDataProps) => {\n\treturn (\n\t\t<Message className={className} color=\"muted\" minHeight={minHeight}>\n\t\t\t{text || \"Нет данных\"}\n\t\t</Message>\n\t);\n};\n","import { PropsWithChildren } from \"react\";\n\nimport { Message } from \"./Message\";\n\ninterface NoticeProps extends PropsWithChildren {\n\tisError?: boolean;\n\tclassName?: string;\n}\n\nexport const Notice: React.FC<NoticeProps> = ({ className, isError, children }) => (\n\t<Message className={className} color={isError ? \"error\" : \"secondary\"}>\n\t\t{children}\n\t</Message>\n);\n",".oneStepScroller {\n\toverflow: hidden;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n\tmin-width: 0;\n}\n\n.ossViewport {\n\toverflow: hidden;\n\toutline: none;\n\tmin-width: 0;\n\tflex: 1 1 auto;\n}\n\n.ossScroller {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tgap: var(--space-sm);\n\talign-items: end;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tscroll-behavior: smooth;\n\t-webkit-overflow-scrolling: touch;\n\tscrollbar-width: none; /* firefox */\n\n\t::-webkit-scrollbar {\n\t\theight: 0;\n\t}\n}\n\n.ossButton {\n\t// position: absolute;\n\ttop: 0;\n\tz-index: 10;\n\twidth: var(--control-height);\n\theight: 100%;\n\tflex: 0 0 var(--control-height);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\t// border: var(--border);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--content-2);\n\t// background-color: var(--surface-0);\n\t// opacity: 0.75;\n\n\ttransition-property: opacity, color;\n\ttransition-duration: var(--transition-fast);\n\n\t&:hover {\n\t\topacity: 1;\n\t\tcolor: var(--content-0);\n\t}\n\n\t&:disabled {\n\t\topacity: 0.5;\n\t\tpointer-events: none;\n\t}\n\n\t// &.prev {\n\t// \tleft: 0;\n\t// }\n\n\t// &.next {\n\t// \tright: 0;\n\t// }\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport styles from \"./OneStepScroller.module.scss\";\n\ninterface OneStepScrollerProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n\t/**\n\t * CSS-селектор элементов, которые считаются \"шагами\" скролла.\n\t * По умолчанию используются прямые потомки скроллера.\n\t */\n\titemSelector?: string;\n\t/**\n\t * Дополнительный внутренний отступ (px) при прокрутке к фокусируемому элементу.\n\t */\n\tscrollPadding?: number;\n\t/**\n\t * Плавная прокрутка для кнопок и авто-доводки до видимости.\n\t */\n\tsmooth?: boolean;\n}\n\nconst EDGE_EPSILON_PX = 1;\n\nfunction maxScrollLeft(scroller: HTMLElement) {\n\treturn Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n}\n\n/**\n * Горизонтальный скроллер \"по одному элементу\".\n *\n * Ожидает элементы фиксированной ширины (или близкой к фиксированной),\n * чтобы шаг скролла соответствовал ширине одного элемента.\n */\nexport const OneStepScroller: React.FC<OneStepScrollerProps> = ({\n\tchildren,\n\tclassName,\n\titemSelector,\n\tscrollPadding = 6,\n\tsmooth = true\n}) => {\n\tconst scrollerRef = useRef<HTMLDivElement | null>(null);\n\tconst rafIdRef = useRef<number | null>(null);\n\n\tconst [canScrollPrev, setCanScrollPrev] = useState(false);\n\tconst [canScrollNext, setCanScrollNext] = useState(false);\n\n\t/**\n\t * Получить список элементов-\"шагов\".\n\t *\n\t * Оптимизация: для дефолтного поведения используем `children` DOM-узла,\n\t * чтобы не выполнять `querySelectorAll` на каждый вызов.\n\t */\n\tconst getItems = useCallback((): HTMLElement[] => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return [];\n\n\t\tif (!itemSelector) {\n\t\t\treturn Array.from(scroller.children).filter((node): node is HTMLElement => node instanceof HTMLElement);\n\t\t}\n\n\t\treturn Array.from(scroller.querySelectorAll<HTMLElement>(itemSelector));\n\t}, [itemSelector]);\n\n\t/**\n\t * Найти \"элемент шага\" для произвольного target внутри скроллера.\n\t */\n\tconst findItemForTarget = useCallback(\n\t\t(target: HTMLElement): HTMLElement | null => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return null;\n\n\t\t\tif (itemSelector) {\n\t\t\t\tconst item = target.closest<HTMLElement>(itemSelector);\n\t\t\t\tif (item && scroller.contains(item)) return item;\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet node: HTMLElement | null = target;\n\t\t\twhile (node && node.parentElement && node.parentElement !== scroller) {\n\t\t\t\tnode = node.parentElement;\n\t\t\t}\n\n\t\t\tif (node && node.parentElement === scroller) return node;\n\t\t\treturn null;\n\t\t},\n\t\t[itemSelector]\n\t);\n\n\t/**\n\t * Обновить состояние кнопок \"назад/вперед\".\n\t * Состояние меняется только при реальном отличии, чтобы не триггерить\n\t * лишние перерисовки на каждом событии scroll.\n\t */\n\tconst updateScrollButtons = useCallback(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) {\n\t\t\tsetCanScrollPrev(false);\n\t\t\tsetCanScrollNext(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst maxScrollLeft = Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n\t\tconst current = Math.max(0, Math.min(scroller.scrollLeft, maxScrollLeft));\n\n\t\tconst nextCanScrollPrev = current > EDGE_EPSILON_PX;\n\t\tconst nextCanScrollNext = current < maxScrollLeft - EDGE_EPSILON_PX;\n\n\t\tsetCanScrollPrev((prev) => (prev === nextCanScrollPrev ? prev : nextCanScrollPrev));\n\t\tsetCanScrollNext((prev) => (prev === nextCanScrollNext ? prev : nextCanScrollNext));\n\t}, []);\n\n\t/**\n\t * Запланировать обновление кнопок в следующий animation frame.\n\t * Это снижает частоту вычислений при интенсивном scroll/resize.\n\t */\n\tconst scheduleUpdateScrollButtons = useCallback(() => {\n\t\tif (rafIdRef.current !== null) return;\n\n\t\trafIdRef.current = requestAnimationFrame(() => {\n\t\t\trafIdRef.current = null;\n\t\t\tupdateScrollButtons();\n\t\t});\n\t}, [updateScrollButtons]);\n\n\t/**\n\t * Прокрутка на N элементов (N может быть отрицательным).\n\t */\n\tconst scrollByItems = useCallback(\n\t\t(count: number) => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return;\n\n\t\t\tconst firstItem = getItems()[0];\n\t\t\tif (!firstItem) return;\n\n\t\t\tconst step = firstItem.getBoundingClientRect().width;\n\t\t\tif (!step) return;\n\n\t\t\tconst delta = Math.round(count * step);\n\t\t\tconst maxScrollLeft = Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n\t\t\tconst target = Math.max(0, Math.min(scroller.scrollLeft + delta, maxScrollLeft));\n\n\t\t\tscroller.scrollTo({\n\t\t\t\tleft: target,\n\t\t\t\tbehavior: smooth ? \"smooth\" : \"auto\"\n\t\t\t});\n\t\t},\n\t\t[getItems, smooth]\n\t);\n\n\t/**\n\t * Гарантировать полную видимость элемента в пределах viewport скроллера.\n\t */\n\tconst ensureFullyVisible = useCallback(\n\t\t(el: HTMLElement) => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return;\n\n\t\t\tconst scrollerRect = scroller.getBoundingClientRect();\n\t\t\tconst elementRect = el.getBoundingClientRect();\n\n\t\t\tconst elementLeft = elementRect.left - scrollerRect.left + scroller.scrollLeft;\n\t\t\tconst elementRight = elementLeft + elementRect.width;\n\n\t\t\tconst visibleLeft = scroller.scrollLeft;\n\t\t\tconst visibleRight = scroller.scrollLeft + scroller.clientWidth;\n\n\t\t\tif (elementLeft >= visibleLeft + EDGE_EPSILON_PX && elementRight <= visibleRight - EDGE_EPSILON_PX) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet targetScrollLeft = scroller.scrollLeft;\n\t\t\tif (elementLeft < visibleLeft) {\n\t\t\t\ttargetScrollLeft = Math.max(0, elementLeft - scrollPadding);\n\t\t\t} else if (elementRight > visibleRight) {\n\t\t\t\ttargetScrollLeft = Math.min(maxScrollLeft(scroller), elementRight - scroller.clientWidth + scrollPadding);\n\t\t\t}\n\n\t\t\tscroller.scrollTo({\n\t\t\t\tleft: Math.round(targetScrollLeft),\n\t\t\t\tbehavior: smooth ? \"smooth\" : \"auto\"\n\t\t\t});\n\t\t},\n\t\t[scrollPadding, smooth]\n\t);\n\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return;\n\n\t\tconst handleFocusIn = (event: FocusEvent) => {\n\t\t\tconst target = event.target;\n\t\t\tif (!(target instanceof HTMLElement)) return;\n\n\t\t\tconst item = findItemForTarget(target);\n\t\t\tif (item) ensureFullyVisible(item);\n\t\t};\n\n\t\tscroller.addEventListener(\"focusin\", handleFocusIn);\n\t\treturn () => scroller.removeEventListener(\"focusin\", handleFocusIn);\n\t}, [ensureFullyVisible, findItemForTarget]);\n\n\t/**\n\t * Наблюдаем только за размером скроллера и изменением его DOM-структуры.\n\t * Это дешевле, чем подписка ResizeObserver на каждый элемент + IntersectionObserver.\n\t */\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return;\n\n\t\tconst onScroll = () => scheduleUpdateScrollButtons();\n\t\tscroller.addEventListener(\"scroll\", onScroll, { passive: true });\n\n\t\tlet resizeObserver: ResizeObserver | null = null;\n\t\tif (typeof ResizeObserver !== \"undefined\") {\n\t\t\tresizeObserver = new ResizeObserver(scheduleUpdateScrollButtons);\n\t\t\tresizeObserver.observe(scroller);\n\t\t}\n\n\t\tlet mutationObserver: MutationObserver | null = null;\n\t\tif (typeof MutationObserver !== \"undefined\") {\n\t\t\tmutationObserver = new MutationObserver(scheduleUpdateScrollButtons);\n\t\t\tmutationObserver.observe(scroller, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: false\n\t\t\t});\n\t\t}\n\n\t\tscheduleUpdateScrollButtons();\n\n\t\treturn () => {\n\t\t\tscroller.removeEventListener(\"scroll\", onScroll);\n\t\t\tresizeObserver?.disconnect();\n\t\t\tmutationObserver?.disconnect();\n\n\t\t\tif (rafIdRef.current !== null) {\n\t\t\t\tcancelAnimationFrame(rafIdRef.current);\n\t\t\t\trafIdRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [scheduleUpdateScrollButtons]);\n\n\t/**\n\t * При изменении children просим пересчитать видимость кнопок.\n\t */\n\tuseEffect(() => {\n\t\tscheduleUpdateScrollButtons();\n\t}, [children, scheduleUpdateScrollButtons]);\n\n\tconst handlePrev = () => scrollByItems(-1);\n\tconst handleNext = () => scrollByItems(1);\n\n\t/**\n\t * Клавиатурная доступность: стрелки влево/вправо двигают на один шаг.\n\t */\n\tconst onWrapperKeyDown = (e: React.KeyboardEvent) => {\n\t\tif (e.key === \"ArrowLeft\") {\n\t\t\te.preventDefault();\n\t\t\thandlePrev();\n\t\t} else if (e.key === \"ArrowRight\") {\n\t\t\te.preventDefault();\n\t\t\thandleNext();\n\t\t}\n\t};\n\n\tconst hasScroll = canScrollPrev || canScrollNext;\n\n\treturn (\n\t\t<div className={cn(styles.oneStepScroller, className)} style={{ position: \"relative\" }}>\n\t\t\t{hasScroll && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label=\"Прокрутить шаг влево\"\n\t\t\t\t\tclassName={styles.ossButton}\n\t\t\t\t\tonClick={handlePrev}\n\t\t\t\t\tdisabled={!canScrollPrev}>\n\t\t\t\t\t<ChevronLeftIcon />\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t<div className={styles.ossViewport} onKeyDown={onWrapperKeyDown} role=\"group\" aria-label=\"Элементы прокрутки\">\n\t\t\t\t<div className={styles.ossScroller} ref={scrollerRef} aria-live=\"polite\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{hasScroll && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label=\"Прокрутить шаг вправо\"\n\t\t\t\t\tclassName={styles.ossButton}\n\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\tdisabled={!canScrollNext}>\n\t\t\t\t\t<ChevronRightIcon />\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { forwardRef, PropsWithChildren } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\ninterface ScrollableProps extends PropsWithChildren {\n\tclassName?: string;\n\theight?: string | number;\n\tstable?: boolean;\n\toverscroll?: boolean;\n}\n\nexport const Scrollable = forwardRef<HTMLDivElement, ScrollableProps>(({ children, height, stable, overscroll, className }, ref) => {\n\treturn (\n\t\t<div ref={ref} className={cn(\"scrollable\", stable && \"stable\", overscroll && \"overscroll\", className)} style={{ height }}>\n\t\t\t{children}\n\t\t</div>\n\t);\n});\n\ninterface ScrollableBlockProps extends ScrollableProps {\n\tblockClassName?: string;\n}\n\nexport const ScrollableBlock = forwardRef<HTMLDivElement, ScrollableBlockProps>(({ blockClassName, ...props }, ref) => {\n\treturn (\n\t\t<div className={cn(blockClassName, \"overflowHidden w100 h100\")}>\n\t\t\t<Scrollable ref={ref} {...props} />\n\t\t</div>\n\t);\n});\n",".stateWrapper {\n\ttext-decoration: none;\n\tcolor: inherit;\n\tdisplay: block;\n\n\t// border: var(--border-width) solid var(--state-border-color, transparent);\n\tborder-left-style: solid;\n\tborder-left-color: var(--state-border-color, transparent);\n\tborder-left-width: 0.0625em; // 1px\n\tpadding-left: 0.25em; // 4px + 1px border\n\n\t&.status {\n\t\tborder-left-width: 0.3125em; // 5px\n\t\tpadding-left: 0;\n\n\t\t&.information {\n\t\t\tborder-left-color: var(--status-info-fill);\n\t\t}\n\n\t\t&.success {\n\t\t\tborder-left-color: var(--status-success-fill);\n\t\t}\n\n\t\t&.warning {\n\t\t\tborder-left-color: var(--status-warning-fill);\n\t\t}\n\n\t\t&.error {\n\t\t\tborder-left-color: var(--status-error-fill);\n\t\t}\n\t}\n}\n\n.state {\n\t&.information {\n\t\tcolor: var(--status-info-text);\n\n\t\tfill: var(--status-info-fill);\n\t\tstroke: var(--status-info-on-fill);\n\t}\n\n\t&.success {\n\t\tcolor: var(--status-success-text);\n\n\t\tfill: var(--status-success-fill);\n\t\tstroke: var(--status-success-on-fill);\n\t}\n\n\t&.warning {\n\t\tcolor: var(--status-warning-text);\n\n\t\tfill: var(--status-warning-fill);\n\t\tstroke: var(--status-warning-on-fill);\n\t\tstroke-width: 2px;\n\t}\n\n\t&.error {\n\t\tcolor: var(--status-error-text);\n\n\t\tfill: var(--status-error-fill);\n\t\tstroke: var(--status-error-on-fill);\n\t}\n}\n","import React from \"react\";\n\nimport { State } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CircleAlertIcon, CircleCheckIcon, CircleXIcon, InfoIcon } from \"lucide-react\";\n\nimport styles from \"./State.module.scss\";\n\ninterface StateIconProps {\n\tstate: State;\n\ttext: string;\n\tclassName?: string;\n}\n\nexport const StateIcon: React.FC<StateIconProps> = ({ state = \"none\", text, className }) => {\n\tconst renderIcon = () => {\n\t\tswitch (state) {\n\t\t\tcase \"error\":\n\t\t\t\treturn <ErrorIcon />;\n\t\t\tcase \"warning\":\n\t\t\t\treturn <WarningIcon />;\n\t\t\tcase \"success\":\n\t\t\t\treturn <SuccessIcon />;\n\t\t\tcase \"information\":\n\t\t\t\treturn <InformationIcon />;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={cn(\"flexCenter gapSm\", className)}>\n\t\t\t{renderIcon()}\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\ninterface RenderStateIconProps {\n\tstate?: State;\n}\n\nexport const RenderStateIcon: React.FC<RenderStateIconProps> = ({ state }) => {\n\tswitch (state) {\n\t\tcase \"error\":\n\t\t\treturn <ErrorIcon />;\n\t\tcase \"warning\":\n\t\t\treturn <WarningIcon />;\n\t\tcase \"success\":\n\t\t\treturn <SuccessIcon />;\n\t\tcase \"information\":\n\t\t\treturn <InformationIcon />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nexport const ErrorIcon = () => {\n\treturn <CircleXIcon className={cn(styles.state, styles.error)} />;\n};\nexport const WarningIcon = () => {\n\treturn <CircleAlertIcon className={cn(styles.state, styles.warning)} />;\n};\nexport const SuccessIcon = () => {\n\treturn <CircleCheckIcon className={cn(styles.state, styles.success)} />;\n};\nexport const InformationIcon = () => {\n\treturn <InfoIcon className={cn(styles.state, styles.information)} />;\n};\n","import React from \"react\";\n\nimport { State } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { PolymorphicComponent, PolymorphicComponentBaseProps } from \"../polymorphic\";\n\nimport styles from \"./State.module.scss\";\n\ntype StateWrapperOwnProps<E extends React.ElementType = React.ElementType> = PolymorphicComponentBaseProps<E> & {\n\tstate?: State;\n\tclassName?: string;\n};\n\ntype StateWrapperProps<E extends React.ElementType> = StateWrapperOwnProps<E> &\n\tOmit<React.ComponentPropsWithRef<E>, keyof StateWrapperOwnProps>;\n\nexport function StateWrapper<E extends React.ElementType>({ as, state, className, ...props }: StateWrapperProps<E>) {\n\tconst status = state?.toLowerCase() ?? \"none\";\n\tconst statusClass = styles[status as keyof typeof styles];\n\tconst isStatused = status && status !== \"none\";\n\n\tconst Component = as || \"div\";\n\n\treturn (\n\t\t<PolymorphicComponent\n\t\t\tas={Component as React.ElementType}\n\t\t\tclassName={cn(styles.stateWrapper, isStatused && styles.status, statusClass, className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"misc-CkRRma5E.js","names":[],"sources":["../../src/misc/AnimatedLogo.module.scss","../../src/misc/AnimatedLogo.tsx","../../src/misc/AnimatedLogoSegment.tsx","../../src/misc/CopyTextWrapper.tsx","../../src/misc/IconWrapper.module.scss","../../src/misc/IconWrapper.tsx","../../src/misc/LoadingMessage.module.scss","../../src/misc/Message.tsx","../../src/misc/LoadingMessage.tsx","../../src/misc/LazyDynamicComponent.tsx","../../src/misc/SkeletonLine.tsx","../../src/misc/LazyValue.tsx","../../src/misc/NoData.tsx","../../src/misc/Notice.tsx","../../src/misc/OneStepScroller.module.scss","../../src/misc/OneStepScroller.tsx","../../src/misc/Scrollable.tsx","../../src/misc/State.module.scss","../../src/misc/StateIcon.tsx","../../src/misc/StateWrapper.tsx"],"sourcesContent":[".logo {\n\tsvg {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t}\n}\n\n.segment {\n\topacity: 0.2;\n\tanimation: pulseSteps 2s ease-in-out infinite;\n}\n\n@keyframes pulseSteps {\n\t0% {\n\t\topacity: 0.2;\n\t}\n\n\t35%,\n\t55% {\n\t\topacity: 1;\n\t}\n\n\t100% {\n\t\topacity: 0.2;\n\t}\n}\n\n@media (prefers-reduced-motion: reduce) {\n\t.segment {\n\t\tanimation: none;\n\t\topacity: 1;\n\t}\n}\n","import { type ComponentPropsWithoutRef, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./AnimatedLogo.module.scss\";\n\ntype AnimatedLogoProps = Omit<ComponentPropsWithoutRef<\"div\">, \"children\"> & {\n\tchildren: ReactNode;\n};\n\n/**\n * Контейнер анимированного логотипа без брендовой SVG-разметки.\n * Host-проект передаёт собственный `svg`, а его визуальные части оборачивает в `AnimatedLogoSegment`.\n */\nexport function AnimatedLogo({ children, className, ...htmlProps }: AnimatedLogoProps) {\n\treturn (\n\t\t<div {...htmlProps} className={cn(styles.logo, className)}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./AnimatedLogo.module.scss\";\n\ntype AnimatedLogoSegmentProps = Omit<ComponentPropsWithoutRef<\"g\">, \"children\"> & {\n\tchildren: ReactNode;\n\torder: number;\n};\n\n/**\n * Анимирует одну смысловую часть host-логотипа и сдвигает её pulse относительно предыдущих частей.\n * `order` задаётся с нуля в визуальной последовательности сегментов и преобразуется в шаг задержки 200 мс.\n */\nexport function AnimatedLogoSegment({ children, className, order, style, ...svgGroupProps }: AnimatedLogoSegmentProps) {\n\treturn (\n\t\t<g {...svgGroupProps} className={cn(styles.segment, className)} style={{ ...style, animationDelay: `${order * 200}ms` }}>\n\t\t\t{children}\n\t\t</g>\n\t);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport { useCopyElementTextWithFeedback } from \"@ryuzaki13/react-foundation-lib/copy\";\nimport { CheckCheckIcon, CopyIcon } from \"lucide-react\";\n\nimport { FloatingPopover } from \"../popover\";\n\ninterface CopyTextWrapperProps {\n\tchildren: React.ReactNode;\n\tposition?: Placement;\n\tshowOnHover?: boolean;\n\tclassName?: string;\n}\n\nexport const CopyTextWrapper: React.FC<CopyTextWrapperProps> = ({ children, position = \"top\", showOnHover = true, className }) => {\n\tconst { containerRef, copyElementText, isCopied } = useCopyElementTextWithFeedback<HTMLSpanElement>();\n\n\treturn (\n\t\t<span ref={containerRef} className={className}>\n\t\t\t{children}\n\t\t\t<FloatingPopover openOnHover={showOnHover} placement={position} content={isCopied ? \"Скопировано!\" : \"Копировать текст\"}>\n\t\t\t\t<button onClick={copyElementText} aria-label={isCopied ? \"Скопировано!\" : \"Копировать текст\"}>\n\t\t\t\t\t{isCopied ? <CheckCheckIcon className=\"block statusSuccess\" /> : <CopyIcon className=\"block statusInfo\" />}\n\t\t\t\t</button>\n\t\t\t</FloatingPopover>\n\t\t</span>\n\t);\n};\n",".wrapper {\n\twidth: var(--control-height);\n\theight: var(--control-height);\n\tmargin: auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./IconWrapper.module.scss\";\n\ninterface IconWrapperProps {\n\tchildren: ReactNode;\n\tclassName?: string;\n}\n\nexport function IconWrapper({ className, children }: IconWrapperProps) {\n\treturn <div className={cn(styles.wrapper, className)}>{children}</div>;\n}\n",".componentLoader {\n\tmin-height: 10em;\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { FlexCenter } from \"../flex\";\nimport { Text, TextColor } from \"../text\";\n\ninterface MessageProps extends PropsWithChildren {\n\tclassName?: string;\n\tcolor?: TextColor;\n\tminHeight?: string | number;\n\tuppercase?: boolean;\n}\n\nexport const Message: React.FC<MessageProps> = ({ className, children, color = \"muted\", minHeight, uppercase = true }) => (\n\t<FlexCenter className={cn(\"paddingMd textCenter\", className)} minHeight={minHeight}>\n\t\t<Text as=\"div\" weight=\"bold\" color={color} uppercase={uppercase}>\n\t\t\t{children}\n\t\t</Text>\n\t</FlexCenter>\n);\n","import { type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./LoadingMessage.module.scss\";\nimport { Message } from \"./Message\";\n\ntype LoadingMessageProps = {\n\tclassName?: string;\n\t/** Готовый брендовый знак, которым host-проект при необходимости дополняет сообщение о загрузке. */\n\tlogo?: ReactNode;\n\ttext?: string;\n};\n\nexport function LoadingMessage({ className, logo, text }: LoadingMessageProps) {\n\treturn (\n\t\t<Message className={cn(styles.componentLoader, logo ? undefined : \"skeletonLine\", className)}>\n\t\t\t{logo}\n\n\t\t\t{text || \"Загрузка...\"}\n\t\t</Message>\n\t);\n}\n","import { Suspense, useSyncExternalStore, type ComponentType, type ReactNode } from \"react\";\n\nimport { useLazyComponent } from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { LoadingMessage } from \"./LoadingMessage\";\n\ntype LazyDynamicComponentProps<T extends object> = {\n\timportFunc: () => Promise<Record<string, ComponentType<T>> | null>;\n\tcomponentName: string;\n\tcacheKey?: string;\n\tclientOnly?: boolean;\n\tfallback?: ReactNode;\n\tprops?: T;\n};\n\nconst subscribeClientOnlyMount = (onStoreChange: () => void) => {\n\tonStoreChange();\n\n\treturn () => undefined;\n};\n\nconst getClientSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\n/**\n * Компонент ленивой загрузки динамически импортируемого React-компонента. Позволяет отложить загрузку тяжелых частей интерфейса до момента использования.\n */\nexport function LazyDynamicComponent<T extends object>({\n\tfallback,\n\timportFunc,\n\tcomponentName,\n\tclientOnly = false,\n\tcacheKey,\n\tprops\n}: LazyDynamicComponentProps<T>) {\n\tconst Component = useLazyComponent(importFunc, componentName, cacheKey);\n\tconst isClient = useSyncExternalStore(subscribeClientOnlyMount, getClientSnapshot, getServerSnapshot);\n\n\tconst fallbackNode = fallback ?? <LoadingMessage text=\"Ожидание компонента...\" />;\n\n\t// Client-only режим нужен для браузерных модулей, которые нельзя даже пытаться импортировать во время SSR.\n\tif (clientOnly && !isClient) return fallbackNode;\n\n\treturn (\n\t\t<Suspense fallback={fallbackNode}>\n\t\t\t{/* eslint-disable-next-line react-hooks/static-components */}\n\t\t\t<Component {...(props ?? ({} as T))} />\n\t\t</Suspense>\n\t);\n}\n","import React from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { PolymorphicComponent, PolymorphicComponentBaseProps } from \"../polymorphic\";\n\ntype SkeletonLineOwnProps<E extends React.ElementType = React.ElementType> = PolymorphicComponentBaseProps<E> & {\n\tclassName?: string;\n};\n\ntype SkeletonLineProps<E extends React.ElementType> = SkeletonLineOwnProps<E> &\n\tOmit<React.ComponentPropsWithRef<E>, keyof SkeletonLineOwnProps>;\n\nexport const SkeletonLine = <E extends React.ElementType>({ as, className, ...props }: SkeletonLineProps<E>) => {\n\tconst Component = as || \"div\";\n\n\treturn (\n\t\t<PolymorphicComponent\n\t\t\tas={Component as React.ElementType}\n\t\t\tclassName={cn(\"skeletonLine colorTransparent radiusSm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n","import React from \"react\";\n\nimport { SkeletonLine } from \"./SkeletonLine\";\n\ninterface LazyValueProps {\n\tvalue: React.ReactNode;\n\tisLoading?: boolean;\n}\n\nexport function LazyValue({ value, isLoading }: LazyValueProps) {\n\treturn isLoading ? <SkeletonLine>Загрузка...</SkeletonLine> : (value ?? \"-\");\n}\n","import { Message } from \"./Message\";\n\ninterface NoDataProps {\n\tclassName?: string;\n\ttext?: string;\n\tminHeight?: string | number;\n}\n\nexport const NoData = ({ className, text, minHeight = \"5em\" }: NoDataProps) => {\n\treturn (\n\t\t<Message className={className} color=\"muted\" minHeight={minHeight}>\n\t\t\t{text || \"Нет данных\"}\n\t\t</Message>\n\t);\n};\n","import { PropsWithChildren } from \"react\";\n\nimport { Message } from \"./Message\";\n\ninterface NoticeProps extends PropsWithChildren {\n\tisError?: boolean;\n\tclassName?: string;\n}\n\nexport const Notice: React.FC<NoticeProps> = ({ className, isError, children }) => (\n\t<Message className={className} color={isError ? \"error\" : \"secondary\"}>\n\t\t{children}\n\t</Message>\n);\n",".oneStepScroller {\n\toverflow: hidden;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n\tmin-width: 0;\n}\n\n.ossViewport {\n\toverflow: hidden;\n\toutline: none;\n\tmin-width: 0;\n\tflex: 1 1 auto;\n}\n\n.ossScroller {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tgap: var(--space-sm);\n\talign-items: end;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tscroll-behavior: smooth;\n\t-webkit-overflow-scrolling: touch;\n\tscrollbar-width: none; /* firefox */\n\n\t::-webkit-scrollbar {\n\t\theight: 0;\n\t}\n}\n\n.ossButton {\n\t// position: absolute;\n\ttop: 0;\n\tz-index: 10;\n\twidth: var(--control-height);\n\theight: 100%;\n\tflex: 0 0 var(--control-height);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\t// border: var(--border);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--content-2);\n\t// background-color: var(--surface-0);\n\t// opacity: 0.75;\n\n\ttransition-property: opacity, color;\n\ttransition-duration: var(--transition-fast);\n\n\t&:hover {\n\t\topacity: 1;\n\t\tcolor: var(--content-0);\n\t}\n\n\t&:disabled {\n\t\topacity: 0.5;\n\t\tpointer-events: none;\n\t}\n\n\t// &.prev {\n\t// \tleft: 0;\n\t// }\n\n\t// &.next {\n\t// \tright: 0;\n\t// }\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport styles from \"./OneStepScroller.module.scss\";\n\ninterface OneStepScrollerProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n\t/**\n\t * CSS-селектор элементов, которые считаются \"шагами\" скролла.\n\t * По умолчанию используются прямые потомки скроллера.\n\t */\n\titemSelector?: string;\n\t/**\n\t * Дополнительный внутренний отступ (px) при прокрутке к фокусируемому элементу.\n\t */\n\tscrollPadding?: number;\n\t/**\n\t * Плавная прокрутка для кнопок и авто-доводки до видимости.\n\t */\n\tsmooth?: boolean;\n}\n\nconst EDGE_EPSILON_PX = 1;\n\nfunction maxScrollLeft(scroller: HTMLElement) {\n\treturn Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n}\n\n/**\n * Горизонтальный скроллер \"по одному элементу\".\n *\n * Ожидает элементы фиксированной ширины (или близкой к фиксированной),\n * чтобы шаг скролла соответствовал ширине одного элемента.\n */\nexport const OneStepScroller: React.FC<OneStepScrollerProps> = ({\n\tchildren,\n\tclassName,\n\titemSelector,\n\tscrollPadding = 6,\n\tsmooth = true\n}) => {\n\tconst scrollerRef = useRef<HTMLDivElement | null>(null);\n\tconst rafIdRef = useRef<number | null>(null);\n\n\tconst [canScrollPrev, setCanScrollPrev] = useState(false);\n\tconst [canScrollNext, setCanScrollNext] = useState(false);\n\n\t/**\n\t * Получить список элементов-\"шагов\".\n\t *\n\t * Оптимизация: для дефолтного поведения используем `children` DOM-узла,\n\t * чтобы не выполнять `querySelectorAll` на каждый вызов.\n\t */\n\tconst getItems = useCallback((): HTMLElement[] => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return [];\n\n\t\tif (!itemSelector) {\n\t\t\treturn Array.from(scroller.children).filter((node): node is HTMLElement => node instanceof HTMLElement);\n\t\t}\n\n\t\treturn Array.from(scroller.querySelectorAll<HTMLElement>(itemSelector));\n\t}, [itemSelector]);\n\n\t/**\n\t * Найти \"элемент шага\" для произвольного target внутри скроллера.\n\t */\n\tconst findItemForTarget = useCallback(\n\t\t(target: HTMLElement): HTMLElement | null => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return null;\n\n\t\t\tif (itemSelector) {\n\t\t\t\tconst item = target.closest<HTMLElement>(itemSelector);\n\t\t\t\tif (item && scroller.contains(item)) return item;\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet node: HTMLElement | null = target;\n\t\t\twhile (node && node.parentElement && node.parentElement !== scroller) {\n\t\t\t\tnode = node.parentElement;\n\t\t\t}\n\n\t\t\tif (node && node.parentElement === scroller) return node;\n\t\t\treturn null;\n\t\t},\n\t\t[itemSelector]\n\t);\n\n\t/**\n\t * Обновить состояние кнопок \"назад/вперед\".\n\t * Состояние меняется только при реальном отличии, чтобы не триггерить\n\t * лишние перерисовки на каждом событии scroll.\n\t */\n\tconst updateScrollButtons = useCallback(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) {\n\t\t\tsetCanScrollPrev(false);\n\t\t\tsetCanScrollNext(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst maxScrollLeft = Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n\t\tconst current = Math.max(0, Math.min(scroller.scrollLeft, maxScrollLeft));\n\n\t\tconst nextCanScrollPrev = current > EDGE_EPSILON_PX;\n\t\tconst nextCanScrollNext = current < maxScrollLeft - EDGE_EPSILON_PX;\n\n\t\tsetCanScrollPrev((prev) => (prev === nextCanScrollPrev ? prev : nextCanScrollPrev));\n\t\tsetCanScrollNext((prev) => (prev === nextCanScrollNext ? prev : nextCanScrollNext));\n\t}, []);\n\n\t/**\n\t * Запланировать обновление кнопок в следующий animation frame.\n\t * Это снижает частоту вычислений при интенсивном scroll/resize.\n\t */\n\tconst scheduleUpdateScrollButtons = useCallback(() => {\n\t\tif (rafIdRef.current !== null) return;\n\n\t\trafIdRef.current = requestAnimationFrame(() => {\n\t\t\trafIdRef.current = null;\n\t\t\tupdateScrollButtons();\n\t\t});\n\t}, [updateScrollButtons]);\n\n\t/**\n\t * Прокрутка на N элементов (N может быть отрицательным).\n\t */\n\tconst scrollByItems = useCallback(\n\t\t(count: number) => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return;\n\n\t\t\tconst firstItem = getItems()[0];\n\t\t\tif (!firstItem) return;\n\n\t\t\tconst step = firstItem.getBoundingClientRect().width;\n\t\t\tif (!step) return;\n\n\t\t\tconst delta = Math.round(count * step);\n\t\t\tconst maxScrollLeft = Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n\t\t\tconst target = Math.max(0, Math.min(scroller.scrollLeft + delta, maxScrollLeft));\n\n\t\t\tscroller.scrollTo({\n\t\t\t\tleft: target,\n\t\t\t\tbehavior: smooth ? \"smooth\" : \"auto\"\n\t\t\t});\n\t\t},\n\t\t[getItems, smooth]\n\t);\n\n\t/**\n\t * Гарантировать полную видимость элемента в пределах viewport скроллера.\n\t */\n\tconst ensureFullyVisible = useCallback(\n\t\t(el: HTMLElement) => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return;\n\n\t\t\tconst scrollerRect = scroller.getBoundingClientRect();\n\t\t\tconst elementRect = el.getBoundingClientRect();\n\n\t\t\tconst elementLeft = elementRect.left - scrollerRect.left + scroller.scrollLeft;\n\t\t\tconst elementRight = elementLeft + elementRect.width;\n\n\t\t\tconst visibleLeft = scroller.scrollLeft;\n\t\t\tconst visibleRight = scroller.scrollLeft + scroller.clientWidth;\n\n\t\t\tif (elementLeft >= visibleLeft + EDGE_EPSILON_PX && elementRight <= visibleRight - EDGE_EPSILON_PX) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet targetScrollLeft = scroller.scrollLeft;\n\t\t\tif (elementLeft < visibleLeft) {\n\t\t\t\ttargetScrollLeft = Math.max(0, elementLeft - scrollPadding);\n\t\t\t} else if (elementRight > visibleRight) {\n\t\t\t\ttargetScrollLeft = Math.min(maxScrollLeft(scroller), elementRight - scroller.clientWidth + scrollPadding);\n\t\t\t}\n\n\t\t\tscroller.scrollTo({\n\t\t\t\tleft: Math.round(targetScrollLeft),\n\t\t\t\tbehavior: smooth ? \"smooth\" : \"auto\"\n\t\t\t});\n\t\t},\n\t\t[scrollPadding, smooth]\n\t);\n\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return;\n\n\t\tconst handleFocusIn = (event: FocusEvent) => {\n\t\t\tconst target = event.target;\n\t\t\tif (!(target instanceof HTMLElement)) return;\n\n\t\t\tconst item = findItemForTarget(target);\n\t\t\tif (item) ensureFullyVisible(item);\n\t\t};\n\n\t\tscroller.addEventListener(\"focusin\", handleFocusIn);\n\t\treturn () => scroller.removeEventListener(\"focusin\", handleFocusIn);\n\t}, [ensureFullyVisible, findItemForTarget]);\n\n\t/**\n\t * Наблюдаем только за размером скроллера и изменением его DOM-структуры.\n\t * Это дешевле, чем подписка ResizeObserver на каждый элемент + IntersectionObserver.\n\t */\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return;\n\n\t\tconst onScroll = () => scheduleUpdateScrollButtons();\n\t\tscroller.addEventListener(\"scroll\", onScroll, { passive: true });\n\n\t\tlet resizeObserver: ResizeObserver | null = null;\n\t\tif (typeof ResizeObserver !== \"undefined\") {\n\t\t\tresizeObserver = new ResizeObserver(scheduleUpdateScrollButtons);\n\t\t\tresizeObserver.observe(scroller);\n\t\t}\n\n\t\tlet mutationObserver: MutationObserver | null = null;\n\t\tif (typeof MutationObserver !== \"undefined\") {\n\t\t\tmutationObserver = new MutationObserver(scheduleUpdateScrollButtons);\n\t\t\tmutationObserver.observe(scroller, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: false\n\t\t\t});\n\t\t}\n\n\t\tscheduleUpdateScrollButtons();\n\n\t\treturn () => {\n\t\t\tscroller.removeEventListener(\"scroll\", onScroll);\n\t\t\tresizeObserver?.disconnect();\n\t\t\tmutationObserver?.disconnect();\n\n\t\t\tif (rafIdRef.current !== null) {\n\t\t\t\tcancelAnimationFrame(rafIdRef.current);\n\t\t\t\trafIdRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [scheduleUpdateScrollButtons]);\n\n\t/**\n\t * При изменении children просим пересчитать видимость кнопок.\n\t */\n\tuseEffect(() => {\n\t\tscheduleUpdateScrollButtons();\n\t}, [children, scheduleUpdateScrollButtons]);\n\n\tconst handlePrev = () => scrollByItems(-1);\n\tconst handleNext = () => scrollByItems(1);\n\n\t/**\n\t * Клавиатурная доступность: стрелки влево/вправо двигают на один шаг.\n\t */\n\tconst onWrapperKeyDown = (e: React.KeyboardEvent) => {\n\t\tif (e.key === \"ArrowLeft\") {\n\t\t\te.preventDefault();\n\t\t\thandlePrev();\n\t\t} else if (e.key === \"ArrowRight\") {\n\t\t\te.preventDefault();\n\t\t\thandleNext();\n\t\t}\n\t};\n\n\tconst hasScroll = canScrollPrev || canScrollNext;\n\n\treturn (\n\t\t<div className={cn(styles.oneStepScroller, className)} style={{ position: \"relative\" }}>\n\t\t\t{hasScroll && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label=\"Прокрутить шаг влево\"\n\t\t\t\t\tclassName={styles.ossButton}\n\t\t\t\t\tonClick={handlePrev}\n\t\t\t\t\tdisabled={!canScrollPrev}>\n\t\t\t\t\t<ChevronLeftIcon />\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t<div className={styles.ossViewport} onKeyDown={onWrapperKeyDown} role=\"group\" aria-label=\"Элементы прокрутки\">\n\t\t\t\t<div className={styles.ossScroller} ref={scrollerRef} aria-live=\"polite\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{hasScroll && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label=\"Прокрутить шаг вправо\"\n\t\t\t\t\tclassName={styles.ossButton}\n\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\tdisabled={!canScrollNext}>\n\t\t\t\t\t<ChevronRightIcon />\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { forwardRef, PropsWithChildren } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\ninterface ScrollableProps extends PropsWithChildren {\n\tclassName?: string;\n\theight?: string | number;\n\tstable?: boolean;\n\toverscroll?: boolean;\n}\n\nexport const Scrollable = forwardRef<HTMLDivElement, ScrollableProps>(({ children, height, stable, overscroll, className }, ref) => {\n\treturn (\n\t\t<div ref={ref} className={cn(\"scrollable\", stable && \"stable\", overscroll && \"overscroll\", className)} style={{ height }}>\n\t\t\t{children}\n\t\t</div>\n\t);\n});\n\ninterface ScrollableBlockProps extends ScrollableProps {\n\tblockClassName?: string;\n}\n\nexport const ScrollableBlock = forwardRef<HTMLDivElement, ScrollableBlockProps>(({ blockClassName, ...props }, ref) => {\n\treturn (\n\t\t<div className={cn(blockClassName, \"overflowHidden w100 h100\")}>\n\t\t\t<Scrollable ref={ref} {...props} />\n\t\t</div>\n\t);\n});\n",".stateWrapper {\n\ttext-decoration: none;\n\tcolor: inherit;\n\tdisplay: block;\n\n\t// border: var(--border-width) solid var(--state-border-color, transparent);\n\tborder-left-style: solid;\n\tborder-left-color: var(--state-border-color, transparent);\n\tborder-left-width: 0.0625em; // 1px\n\tpadding-left: 0.25em; // 4px + 1px border\n\n\t&.status {\n\t\tborder-left-width: 0.3125em; // 5px\n\t\tpadding-left: 0;\n\n\t\t&.information {\n\t\t\tborder-left-color: var(--status-info-fill);\n\t\t}\n\n\t\t&.success {\n\t\t\tborder-left-color: var(--status-success-fill);\n\t\t}\n\n\t\t&.warning {\n\t\t\tborder-left-color: var(--status-warning-fill);\n\t\t}\n\n\t\t&.error {\n\t\t\tborder-left-color: var(--status-error-fill);\n\t\t}\n\t}\n}\n\n.state {\n\t&.information {\n\t\tcolor: var(--status-info-text);\n\n\t\tfill: var(--status-info-fill);\n\t\tstroke: var(--status-info-on-fill);\n\t}\n\n\t&.success {\n\t\tcolor: var(--status-success-text);\n\n\t\tfill: var(--status-success-fill);\n\t\tstroke: var(--status-success-on-fill);\n\t}\n\n\t&.warning {\n\t\tcolor: var(--status-warning-text);\n\n\t\tfill: var(--status-warning-fill);\n\t\tstroke: var(--status-warning-on-fill);\n\t\tstroke-width: 2px;\n\t}\n\n\t&.error {\n\t\tcolor: var(--status-error-text);\n\n\t\tfill: var(--status-error-fill);\n\t\tstroke: var(--status-error-on-fill);\n\t}\n}\n","import React from \"react\";\n\nimport { State } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CircleAlertIcon, CircleCheckIcon, CircleXIcon, InfoIcon } from \"lucide-react\";\n\nimport styles from \"./State.module.scss\";\n\ninterface StateIconProps {\n\tstate: State;\n\ttext: string;\n\tclassName?: string;\n}\n\nexport const StateIcon: React.FC<StateIconProps> = ({ state = \"none\", text, className }) => {\n\tconst renderIcon = () => {\n\t\tswitch (state) {\n\t\t\tcase \"error\":\n\t\t\t\treturn <ErrorIcon />;\n\t\t\tcase \"warning\":\n\t\t\t\treturn <WarningIcon />;\n\t\t\tcase \"success\":\n\t\t\t\treturn <SuccessIcon />;\n\t\t\tcase \"information\":\n\t\t\t\treturn <InformationIcon />;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={cn(\"flexCenter gapSm\", className)}>\n\t\t\t{renderIcon()}\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\ninterface RenderStateIconProps {\n\tstate?: State;\n}\n\nexport const RenderStateIcon: React.FC<RenderStateIconProps> = ({ state }) => {\n\tswitch (state) {\n\t\tcase \"error\":\n\t\t\treturn <ErrorIcon />;\n\t\tcase \"warning\":\n\t\t\treturn <WarningIcon />;\n\t\tcase \"success\":\n\t\t\treturn <SuccessIcon />;\n\t\tcase \"information\":\n\t\t\treturn <InformationIcon />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nexport const ErrorIcon = () => {\n\treturn <CircleXIcon className={cn(styles.state, styles.error)} />;\n};\nexport const WarningIcon = () => {\n\treturn <CircleAlertIcon className={cn(styles.state, styles.warning)} />;\n};\nexport const SuccessIcon = () => {\n\treturn <CircleCheckIcon className={cn(styles.state, styles.success)} />;\n};\nexport const InformationIcon = () => {\n\treturn <InfoIcon className={cn(styles.state, styles.information)} />;\n};\n","import React from \"react\";\n\nimport { State } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { PolymorphicComponent, PolymorphicComponentBaseProps } from \"../polymorphic\";\n\nimport styles from \"./State.module.scss\";\n\ntype StateWrapperOwnProps<E extends React.ElementType = React.ElementType> = PolymorphicComponentBaseProps<E> & {\n\tstate?: State;\n\tclassName?: string;\n};\n\ntype StateWrapperProps<E extends React.ElementType> = StateWrapperOwnProps<E> &\n\tOmit<React.ComponentPropsWithRef<E>, keyof StateWrapperOwnProps>;\n\nexport function StateWrapper<E extends React.ElementType>({ as, state, className, ...props }: StateWrapperProps<E>) {\n\tconst status = state?.toLowerCase() ?? \"none\";\n\tconst statusClass = styles[status as keyof typeof styles];\n\tconst isStatused = status && status !== \"none\";\n\n\tconst Component = as || \"div\";\n\n\treturn (\n\t\t<PolymorphicComponent\n\t\t\tas={Component as React.ElementType}\n\t\t\tclassName={cn(styles.stateWrapper, isStatused && styles.status, statusClass, className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { o as e } from "./flex-C7njxZ74.js";
2
- import { n as t } from "./button-C--u7uJj.js";
3
- import { r as n } from "./grid-dI94AAbi.js";
4
- import { c as r } from "./misc-Cp_r022Z.js";
1
+ import { n as e } from "./button-CzUO5rzq.js";
2
+ import { c as t } from "./misc-CkRRma5E.js";
3
+ import { o as n } from "./flex-C7njxZ74.js";
4
+ import { r } from "./grid-dI94AAbi.js";
5
5
  import { Children as i, createContext as a, useCallback as o, useContext as s, useEffect as c, useId as l, useRef as u, useState as d } from "react";
6
6
  import { cn as f } from "@ryuzaki13/react-foundation-lib/utils";
7
- import { X as p } from "lucide-react";
8
- import { jsx as m, jsxs as h } from "react/jsx-runtime";
9
- import { getOrCreatePortalRoot as g, useEscapeDismiss as _, useOverlayFocus as v } from "@ryuzaki13/react-foundation-lib/dom";
10
- import { createPortal as y } from "react-dom";
7
+ import { getOrCreatePortalRoot as p, useEscapeDismiss as m, useOverlayFocus as h } from "@ryuzaki13/react-foundation-lib/dom";
8
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
9
+ import { createPortal as v } from "react-dom";
10
+ import { X as y } from "lucide-react";
11
11
  import { AnimatePresence as b, motion as x, useReducedMotion as S } from "motion/react";
12
12
  var C = {
13
13
  modal: "vGPUKV",
@@ -45,47 +45,47 @@ var C = {
45
45
  openModal: () => {},
46
46
  closeModal: () => {},
47
47
  isTopModal: () => !1
48
- }), O = () => s(D), k = ({ children: e, className: t }) => /* @__PURE__ */ m("div", {
48
+ }), O = () => s(D), k = ({ children: e, className: t }) => /* @__PURE__ */ g("div", {
49
49
  className: f("surface2 paddingMd borderBottom", t),
50
50
  children: e
51
51
  });
52
52
  k.displayName = "Modal.Toolbar";
53
- var A = ({ children: e, className: t, scrollable: n }) => /* @__PURE__ */ m("div", {
54
- className: f("paddingMd h100 overflowHidden", t),
55
- children: n ? /* @__PURE__ */ m(r, {
53
+ var A = ({ children: e, className: n, scrollable: r }) => /* @__PURE__ */ g("div", {
54
+ className: f("paddingMd h100 overflowHidden", n),
55
+ children: r ? /* @__PURE__ */ g(t, {
56
56
  className: "h100",
57
57
  children: e
58
58
  }) : e
59
59
  });
60
60
  A.displayName = "Modal.Content";
61
- var j = ({ children: t, className: n }) => /* @__PURE__ */ m("div", {
62
- className: f("surface2 borderTop paddingMd", n),
63
- children: /* @__PURE__ */ m(e, {
61
+ var j = ({ children: e, className: t }) => /* @__PURE__ */ g("div", {
62
+ className: f("surface2 borderTop paddingMd", t),
63
+ children: /* @__PURE__ */ g(n, {
64
64
  gap: "sm",
65
65
  align: "center",
66
66
  justify: "end",
67
- children: t
67
+ children: e
68
68
  })
69
69
  });
70
70
  j.displayName = "Modal.Footer";
71
- var M = ({ isOpen: e, title: r, size: a = "sm", height: o, onClose: s, children: d }) => {
72
- let D = l(), M = l(), { modals: N, openModal: P, closeModal: F, isTopModal: I } = O(), L = S(), R = u(null), z = u(0), B = e && (N.length === 0 || I(D));
71
+ var M = ({ isOpen: t, title: n, size: a = "sm", height: o, onClose: s, children: d }) => {
72
+ let D = l(), M = l(), { modals: N, openModal: P, closeModal: F, isTopModal: I } = O(), L = S(), R = u(null), z = u(0), B = t && (N.length === 0 || I(D));
73
73
  c(() => {
74
- e && (R.current = document.activeElement instanceof HTMLElement ? document.activeElement : null);
75
- }, [e]);
76
- let V = v({
77
- active: e || !1,
74
+ t && (R.current = document.activeElement instanceof HTMLElement ? document.activeElement : null);
75
+ }, [t]);
76
+ let V = h({
77
+ active: t || !1,
78
78
  trapFocus: !0,
79
79
  restoreFocus: !1
80
80
  });
81
- _({
81
+ m({
82
82
  active: B || !1,
83
83
  onDismiss: s,
84
84
  containerRef: V
85
85
  }), c(() => {
86
- e && P(D);
86
+ t && P(D);
87
87
  }, [
88
- e,
88
+ t,
89
89
  D,
90
90
  P
91
91
  ]), c(() => () => {
@@ -98,7 +98,7 @@ var M = ({ isOpen: e, title: r, size: a = "sm", height: o, onClose: s, children:
98
98
  e?.isConnected && e.focus(), R.current = null;
99
99
  });
100
100
  }
101
- let U = g("modal-root");
101
+ let U = p("modal-root");
102
102
  if (!U) return null;
103
103
  let W = null, G = null, K = null, q = i.toArray(d);
104
104
  for (let e of q) switch (e.type.displayName) {
@@ -114,9 +114,9 @@ var M = ({ isOpen: e, title: r, size: a = "sm", height: o, onClose: s, children:
114
114
  if (G) throw Error("Modal: duplicate <Content> found");
115
115
  G = e;
116
116
  }
117
- return y(/* @__PURE__ */ m(b, {
117
+ return v(/* @__PURE__ */ g(b, {
118
118
  onExitComplete: H,
119
- children: e ? /* @__PURE__ */ h(x.div, {
119
+ children: t ? /* @__PURE__ */ _(x.div, {
120
120
  ref: V,
121
121
  className: f(C.modal, C[a]),
122
122
  style: { height: o },
@@ -129,20 +129,20 @@ var M = ({ isOpen: e, title: r, size: a = "sm", height: o, onClose: s, children:
129
129
  exit: "hidden",
130
130
  variants: w,
131
131
  transition: L ? E : T,
132
- children: [/* @__PURE__ */ h("div", {
132
+ children: [/* @__PURE__ */ _("div", {
133
133
  className: f(C.header, W ? "" : "borderBottom"),
134
- children: [/* @__PURE__ */ m("h3", {
134
+ children: [/* @__PURE__ */ g("h3", {
135
135
  className: C.headerText,
136
136
  id: M,
137
- children: r
138
- }), /* @__PURE__ */ m(t, {
139
- icon: /* @__PURE__ */ m(p, {}),
137
+ children: n
138
+ }), /* @__PURE__ */ g(e, {
139
+ icon: /* @__PURE__ */ g(y, {}),
140
140
  className: C.headerButton,
141
141
  variant: "ghost",
142
142
  "aria-label": "Закрыть модальное окно",
143
143
  onClick: s
144
144
  })]
145
- }), /* @__PURE__ */ h(n, {
145
+ }), /* @__PURE__ */ _(r, {
146
146
  id: `${M}-content`,
147
147
  templateRows: `${W ? "auto" : ""} 1fr ${K ? "auto" : ""}`.trim(),
148
148
  className: C.body,
@@ -162,7 +162,7 @@ function N({ children: e, compensateScrollbar: t = !1 }) {
162
162
  r((t) => [...t, e]);
163
163
  }, []), p = o((e) => {
164
164
  r((t) => t.filter((t) => t !== e));
165
- }, []), h = o((e) => n[n.length - 1] === e, [n]);
165
+ }, []), m = o((e) => n[n.length - 1] === e, [n]);
166
166
  return c(() => {
167
167
  let e = i.current === 0;
168
168
  if (e && n.length > 0) {
@@ -179,12 +179,12 @@ function N({ children: e, compensateScrollbar: t = !1 }) {
179
179
  });
180
180
  }
181
181
  i.current = n.length;
182
- }, [t, n.length]), /* @__PURE__ */ m(D.Provider, {
182
+ }, [t, n.length]), /* @__PURE__ */ g(D.Provider, {
183
183
  value: {
184
184
  modals: n,
185
185
  openModal: f,
186
186
  closeModal: p,
187
- isTopModal: h
187
+ isTopModal: m
188
188
  },
189
189
  children: e
190
190
  });
@@ -192,4 +192,4 @@ function N({ children: e, compensateScrollbar: t = !1 }) {
192
192
  //#endregion
193
193
  export { k as a, j as i, M as n, D as o, A as r, O as s, N as t };
194
194
 
195
- //# sourceMappingURL=modal-DK9M7lT5.js.map
195
+ //# sourceMappingURL=modal-LHkNxBko.js.map