@ryuzaki13/react-foundation-ui 3.10.0 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/README.md +11 -0
  2. package/dist/badge/index.js +1 -1
  3. package/dist/barcode-scanner/index.js +1 -1
  4. package/dist/base-table/index.js +1 -1
  5. package/dist/chunks/{TextEditorLexicalClient-BQH41FFT.js → TextEditorLexicalClient-Cj6yjCGm.js} +3 -3
  6. package/dist/chunks/{TextEditorLexicalClient-BQH41FFT.js.map → TextEditorLexicalClient-Cj6yjCGm.js.map} +1 -1
  7. package/dist/chunks/{base-table-CacTH3BE.js → base-table-CoVXG2FT.js} +4 -4
  8. package/dist/chunks/{base-table-CacTH3BE.js.map → base-table-CoVXG2FT.js.map} +1 -1
  9. package/dist/chunks/{context-menu-BV8636Ou.js → context-menu-BlLesqpZ.js} +2 -2
  10. package/dist/chunks/{context-menu-BV8636Ou.js.map → context-menu-BlLesqpZ.js.map} +1 -1
  11. package/dist/chunks/flex-BhrQCH4I.js +401 -0
  12. package/dist/chunks/flex-BhrQCH4I.js.map +1 -0
  13. package/dist/chunks/grid-D6wPRCjx.js +394 -0
  14. package/dist/chunks/grid-D6wPRCjx.js.map +1 -0
  15. package/dist/chunks/{misc-BjdDK6mm.js → misc-Dcr24uDY.js} +2 -2
  16. package/dist/chunks/{misc-BjdDK6mm.js.map → misc-Dcr24uDY.js.map} +1 -1
  17. package/dist/chunks/{modal-CBGNsqrq.js → modal-DeABSKrb.js} +4 -4
  18. package/dist/chunks/{modal-CBGNsqrq.js.map → modal-DeABSKrb.js.map} +1 -1
  19. package/dist/chunks/{picker-DagDe9OH.js → picker-CWx7vPE8.js} +2 -2
  20. package/dist/chunks/{picker-DagDe9OH.js.map → picker-CWx7vPE8.js.map} +1 -1
  21. package/dist/chunks/responsiveLayout-D2mtCDdh.js +28 -0
  22. package/dist/chunks/responsiveLayout-D2mtCDdh.js.map +1 -0
  23. package/dist/chunks/{select-C-1U-ujV.js → select-CHBBo5fn.js} +2 -2
  24. package/dist/chunks/{select-C-1U-ujV.js.map → select-CHBBo5fn.js.map} +1 -1
  25. package/dist/chunks/{table-Cx__DvpN.js → table-Cm9NhT9K.js} +2 -2
  26. package/dist/chunks/{table-Cx__DvpN.js.map → table-Cm9NhT9K.js.map} +1 -1
  27. package/dist/context-menu/index.js +1 -1
  28. package/dist/disclosure/index.js +1 -1
  29. package/dist/errors/index.js +1 -1
  30. package/dist/expandable-action-panel/index.js +1 -1
  31. package/dist/flex/FlexContainer.d.ts +1 -1
  32. package/dist/flex/FlexContainer.d.ts.map +1 -1
  33. package/dist/flex/FlexItem.d.ts +1 -1
  34. package/dist/flex/FlexItem.d.ts.map +1 -1
  35. package/dist/flex/PredefinedFlex.d.ts +1 -1
  36. package/dist/flex/PredefinedFlex.d.ts.map +1 -1
  37. package/dist/flex/getFlexClasses.d.ts +5 -0
  38. package/dist/flex/getFlexClasses.d.ts.map +1 -0
  39. package/dist/flex/index.js +1 -1
  40. package/dist/floating-windows/FloatingWindow.d.ts +19 -0
  41. package/dist/floating-windows/FloatingWindow.d.ts.map +1 -0
  42. package/dist/floating-windows/FloatingWindowHeader.d.ts +14 -0
  43. package/dist/floating-windows/FloatingWindowHeader.d.ts.map +1 -0
  44. package/dist/floating-windows/FloatingWindows.d.ts +16 -0
  45. package/dist/floating-windows/FloatingWindows.d.ts.map +1 -0
  46. package/dist/floating-windows/FloatingWindowsBoundary.d.ts +10 -0
  47. package/dist/floating-windows/FloatingWindowsBoundary.d.ts.map +1 -0
  48. package/dist/floating-windows/FloatingWindowsProvider.d.ts +11 -0
  49. package/dist/floating-windows/FloatingWindowsProvider.d.ts.map +1 -0
  50. package/dist/floating-windows/index.d.ts +4 -0
  51. package/dist/floating-windows/index.d.ts.map +1 -0
  52. package/dist/floating-windows/index.js +576 -0
  53. package/dist/floating-windows/index.js.map +1 -0
  54. package/dist/floating-windows/lib/constrainFloatingWindowPosition.d.ts +8 -0
  55. package/dist/floating-windows/lib/constrainFloatingWindowPosition.d.ts.map +1 -0
  56. package/dist/floating-windows/lib/floatingWindowsStorage.d.ts +10 -0
  57. package/dist/floating-windows/lib/floatingWindowsStorage.d.ts.map +1 -0
  58. package/dist/floating-windows/lib/getFloatingWindowStyle.d.ts +5 -0
  59. package/dist/floating-windows/lib/getFloatingWindowStyle.d.ts.map +1 -0
  60. package/dist/floating-windows/lib/isFloatingWindowId.d.ts +3 -0
  61. package/dist/floating-windows/lib/isFloatingWindowId.d.ts.map +1 -0
  62. package/dist/floating-windows/lib/selectFloatingWindowCascadePosition.d.ts +8 -0
  63. package/dist/floating-windows/lib/selectFloatingWindowCascadePosition.d.ts.map +1 -0
  64. package/dist/floating-windows/lib/selectFloatingWindowRestoreFocus.d.ts +3 -0
  65. package/dist/floating-windows/lib/selectFloatingWindowRestoreFocus.d.ts.map +1 -0
  66. package/dist/floating-windows/model/FloatingWindowsContext.d.ts +4 -0
  67. package/dist/floating-windows/model/FloatingWindowsContext.d.ts.map +1 -0
  68. package/dist/floating-windows/model/createFloatingWindowsStore.d.ts +8 -0
  69. package/dist/floating-windows/model/createFloatingWindowsStore.d.ts.map +1 -0
  70. package/dist/floating-windows/model/floatingWindowMoveTypes.d.ts +27 -0
  71. package/dist/floating-windows/model/floatingWindowMoveTypes.d.ts.map +1 -0
  72. package/dist/floating-windows/model/floatingWindowsTypes.d.ts +40 -0
  73. package/dist/floating-windows/model/floatingWindowsTypes.d.ts.map +1 -0
  74. package/dist/floating-windows/model/useFloatingWindowFocus.d.ts +4 -0
  75. package/dist/floating-windows/model/useFloatingWindowFocus.d.ts.map +1 -0
  76. package/dist/floating-windows/model/useFloatingWindowMeasurements.d.ts +5 -0
  77. package/dist/floating-windows/model/useFloatingWindowMeasurements.d.ts.map +1 -0
  78. package/dist/floating-windows/model/useFloatingWindowMove.d.ts +4 -0
  79. package/dist/floating-windows/model/useFloatingWindowMove.d.ts.map +1 -0
  80. package/dist/floating-windows/model/useFloatingWindowSnapshot.d.ts +4 -0
  81. package/dist/floating-windows/model/useFloatingWindowSnapshot.d.ts.map +1 -0
  82. package/dist/floating-windows/model/useFloatingWindowsBounds.d.ts +4 -0
  83. package/dist/floating-windows/model/useFloatingWindowsBounds.d.ts.map +1 -0
  84. package/dist/floating-windows/model/useFloatingWindowsPersistence.d.ts +4 -0
  85. package/dist/floating-windows/model/useFloatingWindowsPersistence.d.ts.map +1 -0
  86. package/dist/floating-windows/model/useFloatingWindowsStore.d.ts +4 -0
  87. package/dist/floating-windows/model/useFloatingWindowsStore.d.ts.map +1 -0
  88. package/dist/grid/GridContainer.d.ts.map +1 -1
  89. package/dist/grid/GridItem.d.ts.map +1 -1
  90. package/dist/grid/getGridClasses.d.ts +12 -0
  91. package/dist/grid/getGridClasses.d.ts.map +1 -0
  92. package/dist/grid/index.js +1 -1
  93. package/dist/image/index.js +2 -2
  94. package/dist/layout-picker/index.js +1 -1
  95. package/dist/list/index.js +2 -2
  96. package/dist/listbox/index.js +1 -1
  97. package/dist/misc/index.js +1 -1
  98. package/dist/modal/index.js +1 -1
  99. package/dist/multi-select/index.js +1 -1
  100. package/dist/notifications/index.js +10 -10
  101. package/dist/picker/index.js +1 -1
  102. package/dist/preset-range-date-input/index.js +1 -1
  103. package/dist/preset-select/index.js +1 -1
  104. package/dist/responsive-layout/responsiveLayout.d.ts +17 -0
  105. package/dist/responsive-layout/responsiveLayout.d.ts.map +1 -0
  106. package/dist/select/index.js +1 -1
  107. package/dist/simple-table/index.js +1 -1
  108. package/dist/slider/index.js +1 -1
  109. package/dist/state-select/index.js +1 -1
  110. package/dist/styles.css +1 -1
  111. package/dist/table/index.js +1 -1
  112. package/dist/table-sorting/index.js +1 -1
  113. package/dist/tabs/index.js +1 -1
  114. package/dist/text-editor/index.js +2 -2
  115. package/dist/toolbar/index.js +2 -2
  116. package/dist/tree-select/index.js +1 -1
  117. package/dist/tree-table/index.js +1 -1
  118. package/package.json +5 -1
  119. package/storybook-static/assets/{Badge-DxGi2POg.js → Badge-CVgLMAJT.js} +1 -1
  120. package/storybook-static/assets/{Badge.stories-D6Em1fN8.js → Badge.stories-KeadkKsz.js} +1 -1
  121. package/storybook-static/assets/{BadgeList-DemBuxUQ.js → BadgeList-_jBtMkE3.js} +1 -1
  122. package/storybook-static/assets/{BarcodeScannerDialog.stories-Bxnb0wH3.js → BarcodeScannerDialog.stories-J9XDExKK.js} +1 -1
  123. package/storybook-static/assets/{Button-dlGIhkja.js → Button-C-uRygWz.js} +1 -1
  124. package/storybook-static/assets/{Button-9vGUTM3m.js → Button-DegBPiAl.js} +1 -1
  125. package/storybook-static/assets/{Button.stories-WOE1_ovM.js → Button.stories-Ds4zCq_9.js} +1 -1
  126. package/storybook-static/assets/{CalendarView-Co2EiQf9.js → CalendarView-iyr_ipPy.js} +1 -1
  127. package/storybook-static/assets/{CheckBox-CwJshQX2.js → CheckBox-B0zrARHA.js} +1 -1
  128. package/storybook-static/assets/{CheckBox-Dpg2QsvS.js → CheckBox-nBqHJGY9.js} +1 -1
  129. package/storybook-static/assets/{CheckBox.stories-K8wng7-q.js → CheckBox.stories-CxO9FwA7.js} +1 -1
  130. package/storybook-static/assets/Color-6AOWCN3U-Dzuzn5Yr.js +1 -0
  131. package/storybook-static/assets/{ContextMenu-DbmUWR4I.js → ContextMenu-BC5OXqVj.js} +1 -1
  132. package/storybook-static/assets/{ContextMenu-C1zzFMni.js → ContextMenu-CnZu58rQ.js} +1 -1
  133. package/storybook-static/assets/{ContextMenu.stories-D0tclMo1.js → ContextMenu.stories-CPdTdVV7.js} +1 -1
  134. package/storybook-static/assets/{DateInput-BDxg1E80.js → DateInput-B5j7kofa.js} +1 -1
  135. package/storybook-static/assets/{DateInput-DxpENevn.js → DateInput-CuYe4WXO.js} +1 -1
  136. package/storybook-static/assets/{DateInput.stories-De_AOkrK.js → DateInput.stories-C4ZaIPUG.js} +1 -1
  137. package/storybook-static/assets/{DateRangePresetSelect-CD7jNInU.js → DateRangePresetSelect-CbDK9t1J.js} +1 -1
  138. package/storybook-static/assets/{DateRangePresetSelect-CD8qu2LL.js → DateRangePresetSelect-Cg6yPY0K.js} +1 -1
  139. package/storybook-static/assets/{DateRangePresetSelect.stories-phHkk3Q1.js → DateRangePresetSelect.stories-DPWUHjXu.js} +1 -1
  140. package/storybook-static/assets/{DeprecatedMultiSelect-Bdv505U3.js → DeprecatedMultiSelect-DCReLsN-.js} +1 -1
  141. package/storybook-static/assets/{DeprecatedMultiSelect-B4VEjiTj.js → DeprecatedMultiSelect-DkGsEVRD.js} +1 -1
  142. package/storybook-static/assets/{DeprecatedMultiSelect.stories-DdPzDJjx.js → DeprecatedMultiSelect.stories-tbYFDSML.js} +1 -1
  143. package/storybook-static/assets/{Detail-BoazSWw_.js → Detail-CtVpK6xU.js} +1 -1
  144. package/storybook-static/assets/{Detail.stories-Cc9fEkdx.js → Detail.stories-zAQfXGuT.js} +1 -1
  145. package/storybook-static/assets/{Dialog-ieE9mpAU.js → Dialog-B9ltl4hS.js} +1 -1
  146. package/storybook-static/assets/{Dialog-VJ62BLtp.js → Dialog-JetMtpYt.js} +1 -1
  147. package/storybook-static/assets/{Dialog.stories-CUyAMGoD.js → Dialog.stories-tJymN3yq.js} +1 -1
  148. package/storybook-static/assets/{Disclosure-BP8VhRCA.js → Disclosure-j-RCrVFs.js} +1 -1
  149. package/storybook-static/assets/{Disclosure.stories-DwIo-o1J.js → Disclosure.stories-4Jj2XNlo.js} +1 -1
  150. package/storybook-static/assets/{DisclosureGroup-LjgDW-Z6.js → DisclosureGroup-CM7GlGI4.js} +1 -1
  151. package/storybook-static/assets/{DocsRenderer-JROSPFPF-BjRaiNDG.js → DocsRenderer-JROSPFPF-DevtpZi5.js} +1 -1
  152. package/storybook-static/assets/{DropZone-BMT4jv2L.js → DropZone-Bwo7NG5D.js} +1 -1
  153. package/storybook-static/assets/{DropZone-Dg3GZxY8.js → DropZone-CPrhOtX-.js} +1 -1
  154. package/storybook-static/assets/{DropZone.stories-szOGIPHx.js → DropZone.stories-VyNhIaxw.js} +1 -1
  155. package/storybook-static/assets/{DropdownMenu-B0EI5ePH.js → DropdownMenu-DMWZzFK1.js} +1 -1
  156. package/storybook-static/assets/{ExpandableActionPanel-D_qy2JID.js → ExpandableActionPanel-DmKB3xVB.js} +1 -1
  157. package/storybook-static/assets/{ExpandableActionPanel.stories-wdmlBDmK.js → ExpandableActionPanel.stories-Kh_OSEIl.js} +1 -1
  158. package/storybook-static/assets/Flex-BZKhuaao.js +81 -0
  159. package/storybook-static/assets/Flex.stories-CrHxjVCH.js +454 -0
  160. package/storybook-static/assets/FlexContainer-DGc37vCr.js +1 -0
  161. package/storybook-static/assets/{FlexItem-BE_4juAd.js → FlexItem-DYv72TvP.js} +2 -2
  162. package/storybook-static/assets/{FloatingPopover-DHxMCBdS.js → FloatingPopover-Bd3b1U8c.js} +1 -1
  163. package/storybook-static/assets/FloatingWindows-C2FJO6ij.css +1 -0
  164. package/storybook-static/assets/FloatingWindows.stories-Cs_i092m.js +13 -0
  165. package/storybook-static/assets/FormattedTableCell-CdlWquoj.js +15 -0
  166. package/storybook-static/assets/Grid-DIKudfVu.js +84 -0
  167. package/storybook-static/assets/{Grid-0NnWfTJ7.js → Grid-DUcSdqsI.js} +2 -2
  168. package/storybook-static/assets/Grid.stories-sZUaIp7v.js +657 -0
  169. package/storybook-static/assets/{GridContainer-BHSfIiml.js → GridContainer-C5r-VTTG.js} +2 -2
  170. package/storybook-static/assets/GridContainer-DgBuOs_1.css +1 -0
  171. package/storybook-static/assets/{ImageCropper.stories-Cf5ogf7p.js → ImageCropper.stories-Bk3SF90a.js} +1 -1
  172. package/storybook-static/assets/{ImageRenderer-CsN1-IP6.js → ImageRenderer-CM-YetP0.js} +1 -1
  173. package/storybook-static/assets/{ImageRenderer.stories-DIC-UR-l.js → ImageRenderer.stories-CMqKyVuX.js} +1 -1
  174. package/storybook-static/assets/{ImageView.stories-DT6QZR-1.js → ImageView.stories-9IjWDUev.js} +1 -1
  175. package/storybook-static/assets/{ImageViewer.stories-DxpCKbpk.js → ImageViewer.stories-D-Zzvzh3.js} +2 -2
  176. package/storybook-static/assets/{ImageViewerRuntime-COhNh4_y.js → ImageViewerRuntime-BRWmVnG3.js} +1 -1
  177. package/storybook-static/assets/{Input-BJ3sPHt1.js → Input-BaEhNNL0.js} +1 -1
  178. package/storybook-static/assets/{Input-D2eqioLp.js → Input-YuUUu0DD.js} +1 -1
  179. package/storybook-static/assets/{Input.stories-MtAx6H2F.js → Input.stories-CoJY4vR8.js} +1 -1
  180. package/storybook-static/assets/{InputDateTime-CNNqhoo6.js → InputDateTime-CPlDTMTI.js} +1 -1
  181. package/storybook-static/assets/{InputDateTime.stories-DT3CvxRy.js → InputDateTime.stories-DaOA4pFM.js} +1 -1
  182. package/storybook-static/assets/{InputFile-RfdomZEH.js → InputFile-7PMO3B4Q.js} +1 -1
  183. package/storybook-static/assets/{InputFile-DiI_0QV5.js → InputFile-D2HPvbt_.js} +1 -1
  184. package/storybook-static/assets/{InputFile.stories-CiqGBnkS.js → InputFile.stories-CD4sJtXF.js} +1 -1
  185. package/storybook-static/assets/{InputFiles-CBrPDNlV.js → InputFiles-DSOs_hpc.js} +1 -1
  186. package/storybook-static/assets/{InputFiles-CgyVXpI1.js → InputFiles-DwgBtqPe.js} +1 -1
  187. package/storybook-static/assets/{InputFiles.stories-QHNxJjiV.js → InputFiles.stories-B2zPOUXW.js} +1 -1
  188. package/storybook-static/assets/{InputFilesList-BEIBTAEK.js → InputFilesList-DWtH6HFC.js} +1 -1
  189. package/storybook-static/assets/{InputImage-BBJr8TWl.js → InputImage-Cke0I8XV.js} +1 -1
  190. package/storybook-static/assets/{InputImage-vXbhnE46.js → InputImage-CnTU-bKF.js} +1 -1
  191. package/storybook-static/assets/{InputImage.stories-VoVU0QZB.js → InputImage.stories-CadyFqUh.js} +1 -1
  192. package/storybook-static/assets/{InteractiveComponents-CjkX3vU6.js → InteractiveComponents-cNgymLXT.js} +1 -1
  193. package/storybook-static/assets/{InteractiveComponents.stories-Gc_Ju4xJ.js → InteractiveComponents.stories-c5kIdj-d.js} +1 -1
  194. package/storybook-static/assets/{LayoutPicker-DwpDr_Is.js → LayoutPicker-BydBdeCh.js} +1 -1
  195. package/storybook-static/assets/{LayoutPicker-ONnrtLDR.js → LayoutPicker-u5tv4tmF.js} +1 -1
  196. package/storybook-static/assets/{LayoutPicker.stories-B-HIq6DD.js → LayoutPicker.stories-ZcTgJxX5.js} +1 -1
  197. package/storybook-static/assets/{Listbox-XIi0yHgl.js → Listbox-CaBDvhDA.js} +1 -1
  198. package/storybook-static/assets/{Listbox-DoF5nZIP.js → Listbox-CzmfAAEG.js} +1 -1
  199. package/storybook-static/assets/{Listbox.stories-DT8FJQ3z.js → Listbox.stories-B_tFWmxp.js} +1 -1
  200. package/storybook-static/assets/{Modal-C3F4r2UA.js → Modal-CIptTLdh.js} +1 -1
  201. package/storybook-static/assets/{Modal-Ml7EuSvu.js → Modal-DIJuHLSp.js} +1 -1
  202. package/storybook-static/assets/{Modal.stories-DRwnYxst.js → Modal.stories-BAh1Lzf0.js} +1 -1
  203. package/storybook-static/assets/{ModalManagerProvider-CmqdB_ni.js → ModalManagerProvider-DH2lt3jw.js} +1 -1
  204. package/storybook-static/assets/{MultiSelect-CAg-L0dM.js → MultiSelect-CbcU2Cam.js} +1 -1
  205. package/storybook-static/assets/{MultiSelect-B1QokJ3C.js → MultiSelect-OPkS-VFp.js} +1 -1
  206. package/storybook-static/assets/{MultiSelect.stories-Dfh2Lp0N.js → MultiSelect.stories-jghnBwe0.js} +1 -1
  207. package/storybook-static/assets/{MultiSelectCore-GRGtCBO1.js → MultiSelectCore-AgK9lN-8.js} +1 -1
  208. package/storybook-static/assets/{NoData-BZhNhaYV.js → NoData-CRi9NzcI.js} +1 -1
  209. package/storybook-static/assets/{NotificationsHost-BUPLrDM3.js → NotificationsHost-C8sCDEzY.js} +9 -9
  210. package/storybook-static/assets/{NotificationsHost.stories-CKbR-_nq.js → NotificationsHost.stories-BxpWtMHl.js} +1 -1
  211. package/storybook-static/assets/{ODataMultiSelect-CDW0B1az.js → ODataMultiSelect-Cjptiw3k.js} +1 -1
  212. package/storybook-static/assets/{ODataMultiSelect.stories-BbKrxs7t.js → ODataMultiSelect.stories-B-tBcHkU.js} +2 -2
  213. package/storybook-static/assets/{ODataSelect-C5G0dCnn.js → ODataSelect-BdVlf2WW.js} +1 -1
  214. package/storybook-static/assets/{ODataSelect.stories-DcX50cyD.js → ODataSelect.stories-DZv8DgW4.js} +2 -2
  215. package/storybook-static/assets/{ODataTreeMultiSelect-4mTjhnlJ.js → ODataTreeMultiSelect-B83uLKnT.js} +1 -1
  216. package/storybook-static/assets/{ODataTreeMultiSelect.stories-B-4UUg5l.js → ODataTreeMultiSelect.stories-k92VjXYz.js} +1 -1
  217. package/storybook-static/assets/{ODataTreeSelect-D-wcx2OH.js → ODataTreeSelect-CkZeBBoA.js} +1 -1
  218. package/storybook-static/assets/{ODataTreeSelect.stories-uB_sG4ga.js → ODataTreeSelect.stories-COweaWEr.js} +1 -1
  219. package/storybook-static/assets/{OneStepScroller-DQI5POnJ.js → OneStepScroller-dD9RSWvg.js} +1 -1
  220. package/storybook-static/assets/{Option-CrEWqsFF.js → Option-lTkoUcHa.js} +1 -1
  221. package/storybook-static/assets/{OptionButton-BEQ2oSPf.js → OptionButton-Bt6YtqRZ.js} +1 -1
  222. package/storybook-static/assets/{OptionContent-C8S7IjI3.js → OptionContent-C7Zoef1L.js} +1 -1
  223. package/storybook-static/assets/{OptionContentContainer-ljQts_jY.js → OptionContentContainer-xpO-es_t.js} +1 -1
  224. package/storybook-static/assets/{PeriodSelect-DuqatGdk.js → PeriodSelect-CmGjITS0.js} +1 -1
  225. package/storybook-static/assets/{PeriodSelect-BTdDU06N.js → PeriodSelect-DkGZmPFu.js} +1 -1
  226. package/storybook-static/assets/{PeriodSelect.stories-CX4DSFJG.js → PeriodSelect.stories-BxkZen1s.js} +1 -1
  227. package/storybook-static/assets/{PickerField-Cgcm-Y5T.js → PickerField-vwGcXNU3.js} +1 -1
  228. package/storybook-static/assets/{PickerTriggerActions-DWe2uX0K.js → PickerTriggerActions-BVO2pwu2.js} +1 -1
  229. package/storybook-static/assets/{Popover-C55I0GTn.js → Popover-DU0wD6MT.js} +1 -1
  230. package/storybook-static/assets/{Popover-0QfSvwRS.js → Popover-PRWJVARx.js} +1 -1
  231. package/storybook-static/assets/{Popover.stories-Bgjomdgb.js → Popover.stories-CXKDCIfT.js} +1 -1
  232. package/storybook-static/assets/{PresetRangeDateInput-C-vQa5BZ.js → PresetRangeDateInput-B1oR9Z-A.js} +1 -1
  233. package/storybook-static/assets/{PresetRangeDateInput-Cai5fvRb.js → PresetRangeDateInput-DUcxF5lh.js} +1 -1
  234. package/storybook-static/assets/{PresetRangeDateInput.stories-CWtIukRG.js → PresetRangeDateInput.stories-CAPHV6_P.js} +1 -1
  235. package/storybook-static/assets/{PresetSelect-HqtmoRLb.js → PresetSelect-Hrow5Qbz.js} +1 -1
  236. package/storybook-static/assets/{README-DfVaZ9rz.js → README-AWtoYOeO.js} +1 -1
  237. package/storybook-static/assets/{README-CxsbsDff.js → README-BB_tSzAG.js} +1 -1
  238. package/storybook-static/assets/{README-QWeHqOh2.js → README-BCBBtU0T.js} +1 -1
  239. package/storybook-static/assets/{README-BFjx8Jxa.js → README-BCXjh3I1.js} +1 -1
  240. package/storybook-static/assets/{README-CxMmicr4.js → README-BDdhvdKa.js} +1 -1
  241. package/storybook-static/assets/{README-UC0a4Wh9.js → README-BEUQd7JO.js} +1 -1
  242. package/storybook-static/assets/{README-BEypAdTE.js → README-BIHT1kGT.js} +1 -1
  243. package/storybook-static/assets/{README-CdnQbIDn.js → README-BJXCE3us.js} +1 -1
  244. package/storybook-static/assets/{README-B5wBU6mA.js → README-BLog3wnj.js} +1 -1
  245. package/storybook-static/assets/{README-C2xdMez4.js → README-BPOSX1IH.js} +1 -1
  246. package/storybook-static/assets/{README-DUShQLyj.js → README-BwSjP1rm.js} +1 -1
  247. package/storybook-static/assets/{README-BzIE9gSk.js → README-C8-H1dVZ.js} +1 -1
  248. package/storybook-static/assets/{README-CxEn3Q3j.js → README-CDYORt73.js} +1 -1
  249. package/storybook-static/assets/{README-DitsKP8x.js → README-CDq7upsw.js} +1 -1
  250. package/storybook-static/assets/{README-eRuOqnaA.js → README-CF5B-uBm.js} +1 -1
  251. package/storybook-static/assets/{README-DF3qw7Jo.js → README-CF79JAmm.js} +1 -1
  252. package/storybook-static/assets/{README-Bk6x-7we.js → README-CGalXaw7.js} +1 -1
  253. package/storybook-static/assets/{README-RGQ7HMZR.js → README-CHgqsGMV.js} +1 -1
  254. package/storybook-static/assets/{README-B5Lc1yT4.js → README-COzEPNJ8.js} +1 -1
  255. package/storybook-static/assets/{README-ClH6EKpO.js → README-CRfg4Opx.js} +1 -1
  256. package/storybook-static/assets/{README-C6ryhIOV.js → README-CRk_ElRL.js} +1 -1
  257. package/storybook-static/assets/{README-SafL9Bz5.js → README-CTbRRHIT.js} +1 -1
  258. package/storybook-static/assets/{README-2lBx3R6g.js → README-C_hI3IVn.js} +1 -1
  259. package/storybook-static/assets/{README-DycS0KDV.js → README-CbCzYjzO.js} +1 -1
  260. package/storybook-static/assets/{README-mxJzt2Xo.js → README-Cb_U_ZYK.js} +1 -1
  261. package/storybook-static/assets/{README-B8RrtmaZ.js → README-CdDd6nD8.js} +1 -1
  262. package/storybook-static/assets/{README-BqMpFJKP.js → README-Cu3r4RYC.js} +1 -1
  263. package/storybook-static/assets/{README-DFGUcAOx.js → README-CxBqJjI3.js} +1 -1
  264. package/storybook-static/assets/{README-QZrJnhYv.js → README-D0EguYwa.js} +1 -1
  265. package/storybook-static/assets/{README-Brd9di5k.js → README-DA8e0atn.js} +1 -1
  266. package/storybook-static/assets/{README-DAozVWEl.js → README-DUVORqie.js} +1 -1
  267. package/storybook-static/assets/{README-Dk7syFq-.js → README-DYjyXvbd.js} +1 -1
  268. package/storybook-static/assets/{README-C1BajdmC.js → README-D_iA9J4Q.js} +1 -1
  269. package/storybook-static/assets/{README-BHrzFd3i.js → README-De02nG6s.js} +1 -1
  270. package/storybook-static/assets/{README-C702dbsS.js → README-DjM1av8U.js} +1 -1
  271. package/storybook-static/assets/{README-BUKlvu1v.js → README-DmT1wyUb.js} +1 -1
  272. package/storybook-static/assets/{README-B41_J33v.js → README-DnpmMCNN.js} +1 -1
  273. package/storybook-static/assets/{README-B1IMnjhg.js → README-FJ4JNfan.js} +1 -1
  274. package/storybook-static/assets/{README-C8oftQ5c.js → README-JqCoy91R.js} +1 -1
  275. package/storybook-static/assets/{README-BNLmyDfy.js → README-JrppLPED.js} +1 -1
  276. package/storybook-static/assets/{README-_K214jGV.js → README-MUzkojYd.js} +1 -1
  277. package/storybook-static/assets/{README-DlBBM40-.js → README-O1ww7U1S.js} +1 -1
  278. package/storybook-static/assets/{README-BRJHDPaP.js → README-SkcZXYo1.js} +1 -1
  279. package/storybook-static/assets/{README-CdMmAh_G.js → README-UfCsOg0n.js} +1 -1
  280. package/storybook-static/assets/{README-DBpH2nf1.js → README-Xu3cmYZg.js} +1 -1
  281. package/storybook-static/assets/{README-BkFTTVE2.js → README-bcnh89ek.js} +1 -1
  282. package/storybook-static/assets/{README-Bl1rJEQE.js → README-ctVjdbq7.js} +1 -1
  283. package/storybook-static/assets/{README-CUUPvXQd.js → README-diVWU6bQ.js} +1 -1
  284. package/storybook-static/assets/{README-kvlO41U2.js → README-f5UPnPkY.js} +1 -1
  285. package/storybook-static/assets/{README-BTk3TSh8.js → README-mq6pyk4G.js} +1 -1
  286. package/storybook-static/assets/{README-BhvWyeL_.js → README-o-a96Aib.js} +1 -1
  287. package/storybook-static/assets/{README-BgbNoj4_.js → README-w3_FegOo.js} +1 -1
  288. package/storybook-static/assets/{README-CM5yZ6jf.js → README-zelg96nd.js} +1 -1
  289. package/storybook-static/assets/{RadioButton-BKsBk3--.js → RadioButton-BztQMLNR.js} +1 -1
  290. package/storybook-static/assets/{RadioButton-CsM-RT0A.js → RadioButton-DUOPHyRt.js} +1 -1
  291. package/storybook-static/assets/{RadioButton.stories-D5PGiHj5.js → RadioButton.stories-BOE5cGej.js} +1 -1
  292. package/storybook-static/assets/{RadioGroup-B3bLu8Qg.js → RadioGroup-CDqbnv4J.js} +1 -1
  293. package/storybook-static/assets/{RadioGroup-BZY_jeje.js → RadioGroup-QICEWbjz.js} +1 -1
  294. package/storybook-static/assets/{RadioGroup.stories-DMfcZFp0.js → RadioGroup.stories-f2qU7hhM.js} +1 -1
  295. package/storybook-static/assets/ResponsiveLayoutPreview-BWBLsr8u.js +1 -0
  296. package/storybook-static/assets/ResponsiveLayoutPreview-CyXawjCA.css +1 -0
  297. package/storybook-static/assets/{Scrollable-DdXQmkMU.js → Scrollable-CAnjXb6_.js} +1 -1
  298. package/storybook-static/assets/{Scrollable-DLyQwImF.js → Scrollable-Cc641kuG.js} +1 -1
  299. package/storybook-static/assets/{Scrollable.stories-Du5joHAp.js → Scrollable.stories-ZQT-1f1f.js} +1 -1
  300. package/storybook-static/assets/{Select-CT_wwcDN.js → Select-BeoH_3V4.js} +1 -1
  301. package/storybook-static/assets/{Select-8PYQeQRR.js → Select-D6RLm9D5.js} +1 -1
  302. package/storybook-static/assets/{Select.stories-DIqia2Hb.js → Select.stories-DI6pVDzi.js} +1 -1
  303. package/storybook-static/assets/{Separator-DJ93-Cvq.js → Separator-De9vEg4j.js} +1 -1
  304. package/storybook-static/assets/{Separator-CelBAATq.js → Separator-tkZoR8Ft.js} +1 -1
  305. package/storybook-static/assets/{Separator.stories-DBEDpiqL.js → Separator.stories-CGZrsdLJ.js} +1 -1
  306. package/storybook-static/assets/{SerializableSelect-C-00d6wC.js → SerializableSelect-BWgkYLIe.js} +1 -1
  307. package/storybook-static/assets/{SerializableSelect.stories-CP7fJBNa.js → SerializableSelect.stories-BfGg_SmN.js} +1 -1
  308. package/storybook-static/assets/{ShimmerText-qA7CslLE.js → ShimmerText-D1ygdKrh.js} +1 -1
  309. package/storybook-static/assets/{ShimmerText.stories-CiGIbhCm.js → ShimmerText.stories-D5AB85Hj.js} +1 -1
  310. package/storybook-static/assets/{SingleDateTimeInput-B7tnYWQl.js → SingleDateTimeInput-Bf2RpSbC.js} +1 -1
  311. package/storybook-static/assets/{SingleDateTimeInput-DJ2vRS9H.js → SingleDateTimeInput-C2O-fXgE.js} +1 -1
  312. package/storybook-static/assets/{SingleDateTimeInput.stories-BK59HKLf.js → SingleDateTimeInput.stories-BUbSA1UY.js} +1 -1
  313. package/storybook-static/assets/{Slider-Cm6kd77G.js → Slider-BhfM7XZ9.js} +1 -1
  314. package/storybook-static/assets/{Slider-CXcIxUE3.js → Slider-CVPKS3XB.js} +1 -1
  315. package/storybook-static/assets/{Slider.stories-BuhFWvUX.js → Slider.stories-C6ZUJc4b.js} +1 -1
  316. package/storybook-static/assets/{SliderInput-DI2h4X8P.js → SliderInput-MMUGLDDl.js} +1 -1
  317. package/storybook-static/assets/{SliderInput-DpmYS5Zb.js → SliderInput-PwHeDeo2.js} +1 -1
  318. package/storybook-static/assets/{SliderInput.stories-CLdLS0_8.js → SliderInput.stories-zBDRonPh.js} +1 -1
  319. package/storybook-static/assets/{Sortable-CpjAZLxn.js → Sortable-BKNLJGIe.js} +1 -1
  320. package/storybook-static/assets/{Sortable.stories-Ck2MHBoR.js → Sortable.stories-CLY263mj.js} +1 -1
  321. package/storybook-static/assets/{Splitter-Cpk_5dTf.js → Splitter-PyZco_V_.js} +1 -1
  322. package/storybook-static/assets/{Splitter.stories-BIf9NNWq.js → Splitter.stories-CY3Itq_G.js} +1 -1
  323. package/storybook-static/assets/{StateSelect-BznE9WIu.js → StateSelect-BlEIRWer.js} +1 -1
  324. package/storybook-static/assets/{StateSelect-C5tnrhWT.js → StateSelect-DfUif3cG.js} +1 -1
  325. package/storybook-static/assets/{StateSelect.stories-DLvSnAcF.js → StateSelect.stories-ClSYkdz8.js} +1 -1
  326. package/storybook-static/assets/{StatusIndicator-vJAPPq2m.js → StatusIndicator-CL-WMBHT.js} +1 -1
  327. package/storybook-static/assets/{StatusIndicator.stories-B7PGK2_C.js → StatusIndicator.stories-BbpEocDe.js} +1 -1
  328. package/storybook-static/assets/{StringToggle.stories-DBpxJZL-.js → StringToggle.stories-0r9TfflS.js} +1 -1
  329. package/storybook-static/assets/{Switch-BkTvYjyQ.js → Switch-AoVSoc9P.js} +1 -1
  330. package/storybook-static/assets/{Switch-DlRrk6o7.js → Switch-HAWn3D1c.js} +1 -1
  331. package/storybook-static/assets/{Switch.stories-BtctkC2W.js → Switch.stories-D1VJIWsC.js} +1 -1
  332. package/storybook-static/assets/{Table-xOdM6spm.js → Table-CyX8frK4.js} +1 -1
  333. package/storybook-static/assets/Table.stories-DoGpFMZB.js +184 -0
  334. package/storybook-static/assets/{TableEditor.stories-GU46gl20.js → TableEditor.stories-Mh6q2awx.js} +1 -1
  335. package/storybook-static/assets/{Tabs-Cg_IYAXs.js → Tabs-BZfNXmy0.js} +1 -1
  336. package/storybook-static/assets/{Tabs.stories-2cS0B94o.js → Tabs.stories-C9L4pJDb.js} +1 -1
  337. package/storybook-static/assets/{TabsBox-Dz3AsaoR.js → TabsBox-qRCIBtqi.js} +1 -1
  338. package/storybook-static/assets/{TagInput-CCTgbRhQ.js → TagInput-CPB6lb2J.js} +1 -1
  339. package/storybook-static/assets/{TagInput.stories-CevhCeXY.js → TagInput.stories-CT6B8CVV.js} +1 -1
  340. package/storybook-static/assets/{Text-CDCeYwIB.js → Text-AbSWZQO3.js} +1 -1
  341. package/storybook-static/assets/{Textarea-CNsrFSip.js → Textarea-BY51Li7J.js} +1 -1
  342. package/storybook-static/assets/{Textarea-Ba4MyNoY.js → Textarea-Bz9O1y1I.js} +1 -1
  343. package/storybook-static/assets/{Textarea.stories-laVFWVXL.js → Textarea.stories-CJbv3jrK.js} +1 -1
  344. package/storybook-static/assets/{TimePanel-Ddy67nzH.js → TimePanel-Wn5lUiwx.js} +1 -1
  345. package/storybook-static/assets/{TimePanel.stories-OLefy0XD.js → TimePanel.stories-dF5kTdp1.js} +1 -1
  346. package/storybook-static/assets/{Toggle-BGbyfmSW.js → Toggle-BpDn9f6k.js} +1 -1
  347. package/storybook-static/assets/{Toggle-BlCBtQd1.js → Toggle-CUO99pvo.js} +1 -1
  348. package/storybook-static/assets/{Toggle.stories-BjeTDL90.js → Toggle.stories-T1Hk_etn.js} +1 -1
  349. package/storybook-static/assets/{TreeMultiSelect-ZVSLdnCU.js → TreeMultiSelect-DEsECkRj.js} +1 -1
  350. package/storybook-static/assets/{TreeMultiSelect-BJnAzsFO.js → TreeMultiSelect-bqQExCm8.js} +1 -1
  351. package/storybook-static/assets/{TreeMultiSelect.stories-BJOtdIDe.js → TreeMultiSelect.stories-DyK7bWZu.js} +1 -1
  352. package/storybook-static/assets/{TreePickerBase-BQKfhufH.js → TreePickerBase-BCbV37dL.js} +1 -1
  353. package/storybook-static/assets/{TreeSelect-BSr4FMlq.js → TreeSelect-CTvlmF81.js} +1 -1
  354. package/storybook-static/assets/{TreeSelect-DSHQjGD1.js → TreeSelect-Cepr58wS.js} +1 -1
  355. package/storybook-static/assets/{TreeSelect.stories-GRcEv-kN.js → TreeSelect.stories-RVPMBCd_.js} +1 -1
  356. package/storybook-static/assets/{TreeTable-CzmxD2ee.js → TreeTable-DznOmuAD.js} +1 -1
  357. package/storybook-static/assets/TreeTable.stories-Lx2ImfgC.js +138 -0
  358. package/storybook-static/assets/blocks-u0CCD6I1.js +287 -0
  359. package/storybook-static/assets/{check-BYM7OgKl.js → check-CHvYWZD5.js} +1 -1
  360. package/storybook-static/assets/{chevron-down-Mu7usNfR.js → chevron-down-DqHAghNU.js} +1 -1
  361. package/storybook-static/assets/{chevron-left-CiOR-CGA.js → chevron-left-Bj7vIyg-.js} +1 -1
  362. package/storybook-static/assets/{chevron-right-5Rrk5UhO.js → chevron-right-BUqG0v39.js} +1 -1
  363. package/storybook-static/assets/{chunk-W22LQPXL-Cj8Y9DHq.js → chunk-W22LQPXL-BSczDjJT.js} +1 -1
  364. package/storybook-static/assets/{circle-alert-BXB7LSDS.js → circle-alert-DXUFM6uc.js} +1 -1
  365. package/storybook-static/assets/{circle-check-DrVuYn1Q.js → circle-check-0x9vHUU_.js} +1 -1
  366. package/storybook-static/assets/{contextMenu-BaB_e0Tl.js → contextMenu-D8PjjiwD.js} +1 -1
  367. package/storybook-static/assets/{download-W-Vr_TI7.js → download-15Eb3eUj.js} +1 -1
  368. package/storybook-static/assets/{floating-ui.react-BTEwHffF.js → floating-ui.react-CypKyrM4.js} +1 -1
  369. package/storybook-static/assets/{foundationApi-BcoJ1zeX.js → foundationApi-dmPNotab.js} +1 -1
  370. package/storybook-static/assets/{foundationLib-B2kQ07LT.js → foundationLib-CyrgF87o.js} +1 -1
  371. package/storybook-static/assets/getFlexClasses-BBvI2V8h.css +1 -0
  372. package/storybook-static/assets/getFlexClasses-DOf6NlyJ.js +1 -0
  373. package/storybook-static/assets/{hooks-BgMXxXbY.js → hooks-DM8_3IU2.js} +1 -1
  374. package/storybook-static/assets/{iframe-CU98mtpe.js → iframe-BmGorvhi.js} +4 -4
  375. package/storybook-static/assets/iframe-WuXBbC_P.js +1 -0
  376. package/storybook-static/assets/{info-BhHmytIH.js → info-HMSnCOw2.js} +1 -1
  377. package/storybook-static/assets/isRecord-DXDTW-jA-DtM9YD3V.js +1 -0
  378. package/storybook-static/assets/odata-DLogt0PY.js +1 -0
  379. package/storybook-static/assets/{odataStoryFixtures-CnZ_YrUb.js → odataStoryFixtures-DiC-gXoK.js} +1 -1
  380. package/storybook-static/assets/{react-C2mSveWL.js → react-BLxZ0fqY.js} +1 -1
  381. package/storybook-static/assets/{refresh-cw-D8_L8K4Y.js → refresh-cw-Obk3FkLO.js} +1 -1
  382. package/storybook-static/assets/responsiveLayout-B9XAp69M.js +1 -0
  383. package/storybook-static/assets/{settings-2-jWGaWGT0.js → settings-2-BQ2LYeiA.js} +1 -1
  384. package/storybook-static/assets/{sortable-BteEe6X0.js → sortable-BrLDYUp8.js} +1 -1
  385. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-eEu1MRSg.js → syntaxhighlighter-QEQV7K2Y-JUCJEf5U.js} +1 -1
  386. package/storybook-static/assets/{trash-2-CwmbYA8i.js → trash-2-CzXfDl_F.js} +1 -1
  387. package/storybook-static/assets/{triangle-alert-TRLt6Woa.js → triangle-alert-Ww2Tuzxk.js} +1 -1
  388. package/storybook-static/assets/{useODataSelectBase-BxHmAh7D.js → useODataSelectBase-DIZSERuU.js} +1 -1
  389. package/storybook-static/assets/useODataTreeData-DLgIiNMG.js +1 -0
  390. package/storybook-static/assets/{usePickerQuery-ByBt1NRd.js → usePickerQuery-BZ1Hrn2J.js} +1 -1
  391. package/storybook-static/assets/{usePickerTriggerController-CqdXiV2q.js → usePickerTriggerController-BIarg6M4.js} +1 -1
  392. package/storybook-static/assets/{x-BPRzfyys.js → x-BmlmEU-a.js} +1 -1
  393. package/storybook-static/iframe.html +2 -2
  394. package/storybook-static/index.json +1 -1
  395. package/storybook-static/project.json +1 -1
  396. package/dist/chunks/flex-D86M_h-0.js +0 -222
  397. package/dist/chunks/flex-D86M_h-0.js.map +0 -1
  398. package/dist/chunks/grid-CFuzBigM.js +0 -186
  399. package/dist/chunks/grid-CFuzBigM.js.map +0 -1
  400. package/dist/flex/useFlexClasses.d.ts +0 -8
  401. package/dist/flex/useFlexClasses.d.ts.map +0 -1
  402. package/dist/grid/useGridClasses.d.ts +0 -10
  403. package/dist/grid/useGridClasses.d.ts.map +0 -1
  404. package/storybook-static/assets/Color-6AOWCN3U-D-64SqRn.js +0 -1
  405. package/storybook-static/assets/Flex-DYXuexPG.js +0 -61
  406. package/storybook-static/assets/Flex.stories-DH1BReS-.js +0 -300
  407. package/storybook-static/assets/FlexContainer-DO3X5f_1.js +0 -1
  408. package/storybook-static/assets/FormattedTableCell-BfEiCYOi.js +0 -15
  409. package/storybook-static/assets/Grid-ChS0GzNg.js +0 -61
  410. package/storybook-static/assets/Grid.stories-ClZzgSfZ.js +0 -495
  411. package/storybook-static/assets/GridContainer-K9R_IHaw.css +0 -1
  412. package/storybook-static/assets/Table.stories-FORIU5CX.js +0 -184
  413. package/storybook-static/assets/TreeTable.stories-35ufhVh1.js +0 -138
  414. package/storybook-static/assets/blocks-SX-KK9Lg.js +0 -48
  415. package/storybook-static/assets/components-BEDJAYMp.js +0 -241
  416. package/storybook-static/assets/iframe-DaZCH1M-.js +0 -1
  417. package/storybook-static/assets/media-D9cE2tzi.js +0 -1
  418. package/storybook-static/assets/odata-yWIAioh9.js +0 -1
  419. package/storybook-static/assets/useFlexClasses-IXK2se1Y.css +0 -1
  420. package/storybook-static/assets/useFlexClasses-SgVG37Bb.js +0 -1
  421. package/storybook-static/assets/useODataTreeData-dSt1HJsq.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu-BV8636Ou.js","names":[],"sources":["../../src/context-menu/components/helpers.ts","../../src/context-menu/components/MenuContext.tsx","../../src/context-menu/components/ContextMenuTrigger.tsx","../../src/context-menu/ContextMenu.module.scss","../../src/context-menu/components/MenuContent.tsx","../../src/context-menu/components/MenuGroupLabel.tsx","../../src/context-menu/components/MenuItem.tsx","../../src/context-menu/components/MenuRoot.tsx","../../src/context-menu/components/MenuSeparator.tsx","../../src/context-menu/components/RadialMenuContent.tsx","../../src/context-menu/components/RadialMenuItem.tsx","../../src/context-menu/components/ContextMenu.tsx","../../src/context-menu/components/DropdownMenuTrigger.tsx","../../src/context-menu/components/DropdownMenu.tsx"],"sourcesContent":["import React from \"react\";\n\nexport function assignRef<T>(ref: React.Ref<T> | undefined, value: T) {\n\tif (!ref) return;\n\n\tif (typeof ref === \"function\") {\n\t\tref(value);\n\t\treturn;\n\t}\n\n\t(ref as React.MutableRefObject<T>).current = value;\n}\n\nexport function composeMouseHandlers<T extends HTMLElement>(\n\tuserHandler: ((event: React.MouseEvent<T>) => void) | undefined,\n\tlibraryHandler: (event: React.MouseEvent<T>) => void\n) {\n\treturn (event: React.MouseEvent<T>) => {\n\t\tuserHandler?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tlibraryHandler(event);\n\t};\n}\n\nexport function composeKeyboardHandlers<T extends HTMLElement>(\n\tuserHandler: ((event: React.KeyboardEvent<T>) => void) | undefined,\n\tlibraryHandler: (event: React.KeyboardEvent<T>) => void\n) {\n\treturn (event: React.KeyboardEvent<T>) => {\n\t\tuserHandler?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tlibraryHandler(event);\n\t};\n}\n","import { createContext, type CSSProperties, type KeyboardEvent, type MouseEvent, type RefObject, useContext } from \"react\";\n\nimport { type MenuOpenSource, type MenuPoint } from \"@ryuzaki13/react-foundation-lib/context-menu\";\nimport { createMissingContextError } from \"@ryuzaki13/react-foundation-lib/error\";\n\nexport type MenuTriggerMode = \"click\" | \"contextmenu\";\nexport type MenuInitialFocus = \"first\" | \"last\";\n\ninterface MenuContextValue {\n\tmode: MenuTriggerMode;\n\topen: boolean;\n\topenSource: MenuOpenSource | null;\n\tinitialFocus: MenuInitialFocus;\n\tmenuId: string;\n\ttriggerId: string;\n\tanchorPoint: MenuPoint | null;\n\tfloatingStyles: CSSProperties;\n\tfloatingRef: RefObject<HTMLElement | null>;\n\ttriggerRef: RefObject<HTMLElement | null>;\n\tsetFloating: (node: HTMLElement | null) => void;\n\tregisterTriggerElement: (node: HTMLElement | null) => void;\n\tonTriggerClick: (event: MouseEvent<HTMLElement>) => void;\n\tonTriggerContextMenu: (event: MouseEvent<HTMLElement>, triggerElement?: HTMLElement) => void;\n\tonTriggerKeyDown: (event: KeyboardEvent<HTMLElement>, triggerElement?: HTMLElement) => void;\n\tcloseMenu: () => void;\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null);\n\nexport function useMenuContext() {\n\tconst context = useContext(MenuContext);\n\tif (!context) {\n\t\tthrow createMissingContextError({\n\t\t\thookName: \"useMenuContext\",\n\t\t\tproviderName: \"MenuRoot\"\n\t\t});\n\t}\n\treturn context;\n}\n","import { cloneElement, type HTMLAttributes, type KeyboardEvent, type MouseEvent, type ReactElement, type Ref } from \"react\";\n\nimport { assignRef } from \"./helpers\";\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface ContextMenuTriggerProps {\n\tchildren: ReactElement<HTMLAttributes<HTMLElement> & { ref?: Ref<HTMLElement> }>;\n\t/** Позволяет одному ContextMenu обслуживать множество вложенных целей без отдельного floating-ui runtime на каждую строку или ячейку. */\n\tresolveTrigger?: (eventTarget: EventTarget | null) => HTMLElement | null;\n}\n\nexport function ContextMenuTrigger({ children, resolveTrigger }: ContextMenuTriggerProps) {\n\tconst { mode, open, menuId, triggerId, registerTriggerElement, onTriggerContextMenu, onTriggerKeyDown } = useMenuContext();\n\n\tif (mode !== \"contextmenu\") {\n\t\tthrow new Error(\"ContextMenu.Trigger must be used within <ContextMenu>\");\n\t}\n\n\treturn cloneElement(children, {\n\t\tid: children.props.id ?? triggerId,\n\t\tref: (node: HTMLElement | null) => {\n\t\t\tconst childRef = (children.props as { ref?: Ref<HTMLElement> }).ref;\n\t\t\tassignRef(childRef, node);\n\t\t\tregisterTriggerElement(node);\n\t\t},\n\t\ttabIndex: resolveTrigger ? children.props.tabIndex : (children.props.tabIndex ?? 0),\n\t\t\"aria-haspopup\": \"menu\",\n\t\t\"aria-controls\": open ? menuId : undefined,\n\t\t\"aria-keyshortcuts\": children.props[\"aria-keyshortcuts\"] ?? \"Shift+F10\",\n\t\tonContextMenu: (event: MouseEvent<HTMLElement>) => {\n\t\t\tchildren.props.onContextMenu?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\t\t\tconst triggerElement = resolveTrigger ? resolveTrigger(event.target) : event.currentTarget;\n\t\t\tif (triggerElement) onTriggerContextMenu(event, triggerElement);\n\t\t},\n\t\tonKeyDown: (event: KeyboardEvent<HTMLElement>) => {\n\t\t\tchildren.props.onKeyDown?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\t\t\tconst triggerElement = resolveTrigger ? resolveTrigger(event.target) : event.currentTarget;\n\t\t\tif (triggerElement) onTriggerKeyDown(event, triggerElement);\n\t\t}\n\t});\n}\n","@use \"@/styles/mixins\" as *;\n\n.menuPositioner {\n\tz-index: var(--z-dropdown);\n\toutline: none;\n}\n\n.menuOptions {\n\t--menu-max-height: calc(100dvh - var(--space-xl));\n\t--menu-min-width: 14em;\n\t--menu-max-width: min(24em, calc(100dvw - var(--space-xl)));\n\n\tmin-width: var(--menu-min-width);\n\tmax-width: var(--menu-max-width);\n\tmax-height: var(--menu-max-height);\n}\n\n.radialPanel {\n\tposition: fixed;\n\twidth: var(--radial-panel-size);\n\theight: var(--radial-panel-size);\n\tz-index: var(--z-context-menu, var(--z-dropdown));\n\toutline: none;\n\tpointer-events: none;\n}\n\n.radialRing {\n\tposition: absolute;\n\tinset: calc(var(--radial-item-size) / 2);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground:\n\t\tradial-gradient(circle, color-mix(in srgb, var(--surface-0) 96%, transparent) 0 36%, transparent 37%),\n\t\tcolor-mix(in srgb, var(--surface-0) 88%, transparent);\n\tbox-shadow: var(--shadow-md);\n\tpointer-events: none;\n}\n\n.radialCenterButton {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: calc(var(--radial-item-size) * 0.72);\n\theight: calc(var(--radial-item-size) * 0.72);\n\tpadding: var(--space-xs);\n\ttransform: translate(-50%, -50%);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground-color: var(--surface-0);\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-sm);\n\tpointer-events: auto;\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease,\n\t\ttransform var(--transition-fast) ease;\n\n\t&:focus {\n\t\tbackground-color: var(--surface-1);\n\t\tborder-color: var(--border-1);\n\t}\n\n\t@include hover(true) {\n\t\tbackground-color: var(--accent-fill);\n\t\tcolor: var(--accent-text);\n\t\tcursor: pointer;\n\t\ttransform: translate(-50%, -50%) scale(1.06);\n\t}\n}\n\n.radialCenterButtonText {\n\tmax-width: 100%;\n\toverflow: hidden;\n\ttext-align: center;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tfont-size: var(--font-size-sm);\n\tline-height: 1.1;\n}\n\n.radialItems {\n\tposition: absolute;\n\tinset: 0;\n\tpointer-events: none;\n}\n\n.radialItemSlot {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\twidth: var(--radial-item-size);\n\theight: var(--radial-item-size);\n\ttransform: rotate(var(--radial-item-angle)) translate(var(--radial-radius)) rotate(calc(var(--radial-item-angle) * -1))\n\t\ttranslate(-50%, -50%);\n\tpointer-events: none;\n}\n\n.radialItem {\n\tdisplay: grid;\n\tgrid-template-rows: 1fr auto;\n\talign-items: center;\n\tjustify-items: center;\n\tgap: 0.15rem;\n\twidth: 100%;\n\theight: 100%;\n\tpadding: var(--space-xs);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground-color: var(--surface-0);\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-sm);\n\tpointer-events: auto;\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease,\n\t\ttransform var(--transition-fast) ease;\n\n\t&:focus {\n\t\tbackground-color: var(--surface-1);\n\t\tborder-color: var(--border-1);\n\t}\n\n\t&:disabled,\n\t&[aria-disabled=\"true\"] {\n\t\tcursor: default;\n\t\tcolor: var(--content-2);\n\t\topacity: 0.52;\n\t\tpointer-events: none;\n\t}\n\n\t@include hover(true) {\n\t\tbackground-color: var(--accent-fill);\n\t\tcolor: var(--accent-text);\n\t\tcursor: pointer;\n\t\ttransform: scale(1.06);\n\t}\n}\n\n.radialItemIcon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmin-width: var(--space-md);\n\tmin-height: var(--space-md);\n\n\t> svg {\n\t\twidth: var(--space-md);\n\t\theight: var(--space-md);\n\t}\n}\n\n.radialItemText {\n\tmax-width: 100%;\n\toverflow: hidden;\n\ttext-align: center;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tfont-size: var(--font-size-sm);\n}\n","import { type KeyboardEvent, type ReactNode, type RefObject, useCallback, useEffect } from \"react\";\n\nimport { useClickOutside, useEscapeDismiss, useOverlayFocus } from \"@ryuzaki13/react-foundation-lib/dom\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { createPortal } from \"react-dom\";\n\nimport { PickerOptions } from \"../../picker\";\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface MenuContentProps {\n\tchildren: ReactNode | ((ctx: { closeMenu: () => void }) => ReactNode);\n\tclassName?: string;\n\t\"aria-label\"?: string;\n\t\"aria-labelledby\"?: string;\n\tcloseOnOutside?: boolean;\n\tcloseOnEscape?: boolean;\n\tdisableOutsideClick?: boolean;\n\trestoreFocus?: boolean;\n}\n\nexport function MenuContent({\n\tchildren,\n\tclassName,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy,\n\tcloseOnOutside = true,\n\tcloseOnEscape = true,\n\tdisableOutsideClick = false,\n\trestoreFocus = true\n}: MenuContentProps) {\n\tconst {\n\t\topen,\n\t\topenSource,\n\t\tinitialFocus,\n\t\tmenuId,\n\t\ttriggerId,\n\t\tanchorPoint,\n\t\tfloatingStyles,\n\t\tfloatingRef,\n\t\ttriggerRef,\n\t\tsetFloating,\n\t\tcloseMenu\n\t} = useMenuContext();\n\n\tconst getNavigableItems = useCallback(() => {\n\t\tconst floatingElement = floatingRef.current;\n\t\tif (!floatingElement) return [];\n\n\t\treturn Array.from(floatingElement.querySelectorAll<HTMLElement>('[data-menu-item=\"true\"]:not([data-disabled=\"true\"])'));\n\t}, [floatingRef]);\n\n\tuseOverlayFocus<HTMLElement>({\n\t\tactive: open,\n\t\tinitialFocus: (container) => {\n\t\t\tconst items = getNavigableItems();\n\t\t\treturn (initialFocus === \"last\" ? items[items.length - 1] : items[0]) ?? container;\n\t\t},\n\t\trestoreFocus,\n\t\trestoreFocusTarget: () => triggerRef.current,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tuseEffect(() => {\n\t\tif (!open || openSource !== \"contextmenu\" || !anchorPoint) return;\n\n\t\tconst rafId = window.requestAnimationFrame(() => {\n\t\t\tconst focusTarget = getNavigableItems()[0] ?? floatingRef.current;\n\t\t\tfocusTarget?.focus({ preventScroll: true });\n\t\t});\n\n\t\treturn () => window.cancelAnimationFrame(rafId);\n\t}, [open, openSource, anchorPoint, getNavigableItems, floatingRef]);\n\n\tuseEscapeDismiss({\n\t\tactive: open,\n\t\tenabled: closeOnEscape,\n\t\tonDismiss: closeMenu,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tconst outsideClose = useCallback(() => {\n\t\tif (!open || disableOutsideClick) return;\n\t\tif (closeOnOutside) {\n\t\t\tcloseMenu();\n\t\t}\n\t}, [open, disableOutsideClick, closeOnOutside, closeMenu]);\n\n\tuseClickOutside([floatingRef as RefObject<HTMLElement>, triggerRef as RefObject<HTMLElement>], outsideClose);\n\n\tconst onMenuKeyDown = useCallback(\n\t\t(event: KeyboardEvent<HTMLElement>) => {\n\t\t\tif (event.key === \"Tab\") {\n\t\t\t\t// Возвращаем точку отсчёта в tab-порядок до browser default action:\n\t\t\t\t// так Tab и Shift+Tab продолжают обход относительно trigger, а не portal в конце body.\n\t\t\t\ttriggerRef.current?.focus({ preventScroll: true });\n\t\t\t\tcloseMenu();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst items = getNavigableItems();\n\t\t\tif (items.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst activeElement = document.activeElement as HTMLElement | null;\n\t\t\tconst currentIndex = activeElement ? items.indexOf(activeElement) : -1;\n\n\t\t\tif (event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Home\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[0]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"End\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[items.length - 1]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key.length === 1 && event.key !== \" \" && !event.altKey && !event.ctrlKey && !event.metaKey) {\n\t\t\t\tconst query = event.key.toLocaleLowerCase();\n\t\t\t\tconst nextItems = [...items.slice(currentIndex + 1), ...items.slice(0, currentIndex + 1)];\n\t\t\t\tconst match = nextItems.find((item) => item.textContent?.trim().toLocaleLowerCase().startsWith(query));\n\t\t\t\tif (match) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tmatch.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[getNavigableItems, triggerRef, closeMenu]\n\t);\n\n\tif (typeof document === \"undefined\") return null;\n\n\treturn createPortal(\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<motion.div\n\t\t\t\t\tid={menuId}\n\t\t\t\t\tref={setFloating}\n\t\t\t\t\tstyle={floatingStyles}\n\t\t\t\t\trole=\"menu\"\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\taria-labelledby={ariaLabel ? undefined : (ariaLabelledBy ?? triggerId)}\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tclassName={styles.menuPositioner}\n\t\t\t\t\tonKeyDown={onMenuKeyDown}\n\t\t\t\t\tinitial={{ opacity: 0, scale: 0.96, y: -2 }}\n\t\t\t\t\tanimate={{ opacity: 1, scale: 1, y: 0 }}\n\t\t\t\t\texit={{ opacity: 0, scale: 0.96, y: -2 }}\n\t\t\t\t\ttransition={{ duration: 0.14, ease: \"easeOut\" }}>\n\t\t\t\t\t<PickerOptions className={cn(styles.menuOptions, className)}>\n\t\t\t\t\t\t{typeof children === \"function\" ? children({ closeMenu }) : children}\n\t\t\t\t\t</PickerOptions>\n\t\t\t\t</motion.div>\n\t\t\t)}\n\t\t</AnimatePresence>,\n\t\tdocument.body\n\t);\n}\n","import React from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\n\nexport interface MenuGroupLabelProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport function MenuGroupLabel({ children, className }: MenuGroupLabelProps) {\n\treturn <div className={cn(uiStyles.uiPopupGroupLabel, className)}>{children}</div>;\n}\n","import { type HTMLAttributeAnchorTarget, type MouseEvent, type ReactNode, useCallback } from \"react\";\n\nimport { Option, OptionButton, OptionLink } from \"../../option\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface MenuItemProps {\n\tchildren: string;\n\ticon?: ReactNode;\n\thotKey?: string;\n\tclassName?: string;\n\tdisabled?: boolean;\n\thref?: string;\n\ttarget?: HTMLAttributeAnchorTarget;\n\trel?: string;\n\tcloseOnSelect?: boolean;\n\tonSelect?: (event: MouseEvent<HTMLElement>) => void;\n}\n\nexport function MenuItem({\n\tchildren,\n\ticon,\n\thotKey,\n\tclassName,\n\tdisabled,\n\thref,\n\ttarget,\n\trel,\n\tcloseOnSelect = true,\n\tonSelect\n}: MenuItemProps) {\n\tconst { closeMenu } = useMenuContext();\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLElement>) => {\n\t\t\tif (disabled) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSelect?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (closeOnSelect) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t},\n\t\t[disabled, onSelect, closeOnSelect, closeMenu]\n\t);\n\n\tif (href) {\n\t\treturn (\n\t\t\t<Option disabled={disabled} className={className}>\n\t\t\t\t<OptionLink\n\t\t\t\t\ticon={icon}\n\t\t\t\t\thotkey={hotKey}\n\t\t\t\t\ttext={children}\n\t\t\t\t\thref={href}\n\t\t\t\t\ttarget={target}\n\t\t\t\t\trel={rel}\n\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\taria-disabled={disabled}\n\t\t\t\t\tdata-menu-item=\"true\"\n\t\t\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\t\t\tdata-ui=\"context-menu-item\"\n\t\t\t\t\tdata-action=\"select-context-menu-item\"\n\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\tif (event.key !== \" \") return;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.currentTarget.click();\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={handleClick as React.MouseEventHandler<HTMLAnchorElement>}\n\t\t\t\t/>\n\t\t\t</Option>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Option disabled={disabled} className={className}>\n\t\t\t<OptionButton\n\t\t\t\ticon={icon}\n\t\t\t\thotkey={hotKey}\n\t\t\t\ttext={children}\n\t\t\t\trole=\"menuitem\"\n\t\t\t\ttabIndex={-1}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tdata-menu-item=\"true\"\n\t\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\t\tdata-ui=\"context-menu-item\"\n\t\t\t\tdata-action=\"select-context-menu-item\"\n\t\t\t\tonClick={handleClick as React.MouseEventHandler<HTMLButtonElement>}\n\t\t\t/>\n\t\t</Option>\n\t);\n}\n","import { type KeyboardEvent, type MouseEvent, type ReactNode, useCallback, useId, useMemo, useRef, useState } from \"react\";\n\nimport { autoUpdate, flip, offset, type Placement, shift, useFloating } from \"@floating-ui/react\";\nimport {\n\tcloseMenu,\n\tcreateVirtualAnchor,\n\tgetMenuPointFromEvent,\n\tgetMenuPointFromRect,\n\tinitialMenuState,\n\topenMenu\n} from \"@ryuzaki13/react-foundation-lib/context-menu\";\n\nimport { MenuContext, type MenuInitialFocus, type MenuTriggerMode } from \"./MenuContext\";\n\ninterface MenuRootProps {\n\tchildren: ReactNode;\n\tmode: MenuTriggerMode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nexport function MenuRoot({\n\tchildren,\n\tmode,\n\tplacement = mode === \"click\" ? \"bottom-start\" : \"right-start\",\n\topen: controlledOpen,\n\tdefaultOpen,\n\tonOpenChange\n}: MenuRootProps) {\n\tconst generatedId = useId();\n\tconst menuId = `${generatedId}-menu`;\n\tconst defaultTriggerId = `${generatedId}-trigger`;\n\tconst [menuState, setMenuState] = useState(initialMenuState);\n\tconst [initialFocus, setInitialFocus] = useState<MenuInitialFocus>(\"first\");\n\tconst [triggerId, setTriggerId] = useState(defaultTriggerId);\n\tconst [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst open = isControlled ? controlledOpen : uncontrolledOpen;\n\tconst triggerElementRef = useRef<HTMLElement | null>(null);\n\tconst registeredTriggerElementRef = useRef<HTMLElement | null>(null);\n\n\tconst { refs, floatingStyles, update } = useFloating({\n\t\tplacement,\n\t\tstrategy: mode === \"contextmenu\" ? \"fixed\" : \"absolute\",\n\t\ttransform: false,\n\t\tmiddleware: [offset(6), flip({ padding: 8 }), shift({ padding: 8 })],\n\t\twhileElementsMounted: autoUpdate\n\t});\n\n\tconst setOpen = useCallback(\n\t\t(nextOpen: boolean) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetUncontrolledOpen(nextOpen);\n\t\t\t}\n\t\t\tonOpenChange?.(nextOpen);\n\t\t\tif (!nextOpen) {\n\t\t\t\tsetMenuState((state) => closeMenu(state));\n\t\t\t}\n\t\t},\n\t\t[isControlled, onOpenChange]\n\t);\n\n\tconst closeMenuHandler = useCallback(() => {\n\t\tsetOpen(false);\n\t}, [setOpen]);\n\n\tconst openAtElement = useCallback(\n\t\t(element: HTMLElement, source: \"click\" | \"keyboard\", nextInitialFocus: MenuInitialFocus = \"first\") => {\n\t\t\trefs.setReference(element);\n\t\t\tsetInitialFocus(nextInitialFocus);\n\t\t\tsetMenuState(\n\t\t\t\topenMenu({\n\t\t\t\t\tsource,\n\t\t\t\t\tanchor: {\n\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\telement\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\tsetOpen(true);\n\t\t},\n\t\t[refs, setOpen]\n\t);\n\n\tconst openAtPoint = useCallback(\n\t\t(point: { x: number; y: number }, source: \"contextmenu\" | \"keyboard\", contextElement?: HTMLElement | null) => {\n\t\t\trefs.setReference(createVirtualAnchor(point, contextElement));\n\t\t\tsetInitialFocus(\"first\");\n\t\t\tsetMenuState(\n\t\t\t\topenMenu({\n\t\t\t\t\tsource,\n\t\t\t\t\tanchor: {\n\t\t\t\t\t\ttype: \"point\",\n\t\t\t\t\t\tpoint,\n\t\t\t\t\t\tcontextElement\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\tsetOpen(true);\n\t\t\tupdate();\n\t\t},\n\t\t[refs, setOpen, update]\n\t);\n\n\tconst registerTriggerElement = useCallback(\n\t\t(node: HTMLElement | null) => {\n\t\t\tconst previous = registeredTriggerElementRef.current;\n\t\t\tregisteredTriggerElementRef.current = node;\n\t\t\tif (node) {\n\t\t\t\tsetTriggerId(node.id || defaultTriggerId);\n\t\t\t}\n\t\t\t// Повторный ref-callback общего контейнера не должен заменить делегированную цель,\n\t\t\t// иначе после закрытия фокус вернётся на всю таблицу вместо исходной ячейки.\n\t\t\tif (triggerElementRef.current === null || triggerElementRef.current === previous) {\n\t\t\t\ttriggerElementRef.current = node;\n\t\t\t}\n\t\t\tif (mode === \"click\") {\n\t\t\t\trefs.setReference(node);\n\t\t\t}\n\t\t},\n\t\t[defaultTriggerId, mode, refs]\n\t);\n\n\tconst onTriggerClick = useCallback(\n\t\t(event: MouseEvent<HTMLElement>) => {\n\t\t\tif (mode !== \"click\") return;\n\t\t\tconst element = event.currentTarget;\n\n\t\t\tif (open && menuState.anchor?.type === \"element\" && menuState.anchor.element === element) {\n\t\t\t\tcloseMenuHandler();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\topenAtElement(element, \"click\");\n\t\t},\n\t\t[mode, open, menuState.anchor, closeMenuHandler, openAtElement]\n\t);\n\n\tconst onTriggerContextMenu = useCallback(\n\t\t(event: MouseEvent<HTMLElement>, triggerElement = event.currentTarget) => {\n\t\t\tif (mode !== \"contextmenu\") return;\n\t\t\tevent.preventDefault();\n\n\t\t\tconst point = getMenuPointFromEvent(event);\n\t\t\ttriggerElementRef.current = triggerElement;\n\t\t\topenAtPoint(point, \"contextmenu\", triggerElement);\n\t\t},\n\t\t[mode, openAtPoint]\n\t);\n\n\tconst onTriggerKeyDown = useCallback(\n\t\t(event: KeyboardEvent<HTMLElement>, triggerElement = event.currentTarget) => {\n\t\t\tif (mode === \"click\" && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttriggerElementRef.current = triggerElement;\n\t\t\t\topenAtElement(triggerElement, \"keyboard\", event.key === \"ArrowUp\" ? \"last\" : \"first\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isContextMenuKeyboardOpen = event.key === \"ContextMenu\" || (event.shiftKey && event.key === \"F10\");\n\t\t\tif (!isContextMenuKeyboardOpen) return;\n\n\t\t\tevent.preventDefault();\n\t\t\ttriggerElementRef.current = triggerElement;\n\n\t\t\tif (mode === \"click\") {\n\t\t\t\topenAtElement(triggerElement, \"keyboard\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst point = getMenuPointFromRect(triggerElement.getBoundingClientRect());\n\t\t\topenAtPoint(point, \"keyboard\", triggerElement);\n\t\t},\n\t\t[mode, openAtElement, openAtPoint]\n\t);\n\n\tconst visible = open && menuState.anchor !== null;\n\tconst anchorPoint = useMemo(() => {\n\t\tif (!menuState.anchor) return null;\n\n\t\tif (menuState.anchor.type === \"point\") {\n\t\t\treturn menuState.anchor.point;\n\t\t}\n\n\t\tconst rect = menuState.anchor.element.getBoundingClientRect();\n\t\treturn getMenuPointFromRect(rect);\n\t}, [menuState.anchor]);\n\n\tconst value = useMemo(\n\t\t() => ({\n\t\t\tmode,\n\t\t\topen: visible,\n\t\t\topenSource: menuState.source,\n\t\t\tinitialFocus,\n\t\t\tmenuId,\n\t\t\ttriggerId,\n\t\t\tanchorPoint,\n\t\t\tfloatingStyles,\n\t\t\tfloatingRef: refs.floating,\n\t\t\ttriggerRef: triggerElementRef,\n\t\t\tsetFloating: refs.setFloating,\n\t\t\tregisterTriggerElement,\n\t\t\tonTriggerClick,\n\t\t\tonTriggerContextMenu,\n\t\t\tonTriggerKeyDown,\n\t\t\tcloseMenu: closeMenuHandler\n\t\t}),\n\t\t[\n\t\t\tmode,\n\t\t\tvisible,\n\t\t\tmenuState.source,\n\t\t\tinitialFocus,\n\t\t\tmenuId,\n\t\t\ttriggerId,\n\t\t\tanchorPoint,\n\t\t\tfloatingStyles,\n\t\t\trefs.floating,\n\t\t\trefs.setFloating,\n\t\t\tregisterTriggerElement,\n\t\t\tonTriggerClick,\n\t\t\tonTriggerContextMenu,\n\t\t\tonTriggerKeyDown,\n\t\t\tcloseMenuHandler\n\t\t]\n\t);\n\n\treturn <MenuContext.Provider value={value}>{children}</MenuContext.Provider>;\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\n\nexport interface MenuSeparatorProps {\n\tclassName?: string;\n}\n\nexport function MenuSeparator({ className }: MenuSeparatorProps) {\n\treturn <div role=\"separator\" className={cn(uiStyles.uiPopupOptionSeparator, className)} />;\n}\n","import { Children, type CSSProperties, type KeyboardEvent, type ReactNode, type RefObject, useCallback, useEffect, useMemo } from \"react\";\n\nimport { useClickOutside, useEscapeDismiss, useOverlayFocus } from \"@ryuzaki13/react-foundation-lib/dom\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { createPortal } from \"react-dom\";\n\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface RadialMenuContentProps {\n\tchildren: ReactNode | ((ctx: { closeMenu: () => void }) => ReactNode);\n\tclassName?: string;\n\t\"aria-label\"?: string;\n\t\"aria-labelledby\"?: string;\n\tcloseOnOutside?: boolean;\n\tcloseOnEscape?: boolean;\n\tdisableOutsideClick?: boolean;\n\trestoreFocus?: boolean;\n\tradius?: number;\n\titemSize?: number;\n\tcloseLabel?: string;\n}\n\nfunction clamp(value: number, min: number, max: number) {\n\tif (max < min) return min;\n\treturn Math.min(Math.max(value, min), max);\n}\n\nexport function RadialMenuContent({\n\tchildren,\n\tclassName,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy,\n\tcloseOnOutside = true,\n\tcloseOnEscape = true,\n\tdisableOutsideClick = false,\n\trestoreFocus = true,\n\tradius = 76,\n\titemSize = 64,\n\tcloseLabel = \"Закрыть\"\n}: RadialMenuContentProps) {\n\tconst { open, menuId, triggerId, anchorPoint, floatingRef, triggerRef, setFloating, closeMenu } = useMenuContext();\n\n\tconst resolvedChildren = typeof children === \"function\" ? children({ closeMenu }) : children;\n\tconst itemNodes = useMemo(() => Children.toArray(resolvedChildren), [resolvedChildren]);\n\tconst itemCount = itemNodes.length;\n\tconst panelSize = radius * 2 + itemSize;\n\n\tconst panelPoint = useMemo(() => {\n\t\tif (typeof window === \"undefined\" || !anchorPoint) return null;\n\n\t\t// Радиальное меню центрируется на точке вызова, но не выходит за границы viewport.\n\t\tconst safeOffset = panelSize / 2 + 8;\n\t\treturn {\n\t\t\tx: clamp(anchorPoint.x, safeOffset, window.innerWidth - safeOffset),\n\t\t\ty: clamp(anchorPoint.y, safeOffset, window.innerHeight - safeOffset)\n\t\t};\n\t}, [anchorPoint, panelSize]);\n\n\tconst getNavigableItems = useCallback(() => {\n\t\tconst floatingElement = floatingRef.current;\n\t\tif (!floatingElement) return [];\n\n\t\treturn Array.from(floatingElement.querySelectorAll<HTMLElement>('[data-menu-item=\"true\"]:not([data-disabled=\"true\"])'));\n\t}, [floatingRef]);\n\n\tuseOverlayFocus<HTMLElement>({\n\t\tactive: open,\n\t\tinitialFocus: (container) => getNavigableItems()[0] ?? container,\n\t\trestoreFocus,\n\t\trestoreFocusTarget: () => triggerRef.current,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tuseEffect(() => {\n\t\tif (!open || !anchorPoint) return;\n\n\t\tlet rafId = 0;\n\n\t\t/**\n\t\t * Повторный правый клик при уже открытом меню меняет только якорь, поэтому общий\n\t\t * эффект начального фокуса не перезапускается. Возвращаем фокус в меню явно.\n\t\t */\n\t\tconst focusMenuOnReposition = () => {\n\t\t\tconst focusTarget = getNavigableItems()[0] ?? floatingRef.current;\n\t\t\tfocusTarget?.focus();\n\t\t};\n\n\t\trafId = window.requestAnimationFrame(focusMenuOnReposition);\n\t\treturn () => window.cancelAnimationFrame(rafId);\n\t}, [open, anchorPoint, getNavigableItems, floatingRef]);\n\n\tuseEscapeDismiss({\n\t\tactive: open,\n\t\tenabled: closeOnEscape,\n\t\tonDismiss: closeMenu,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tconst outsideClose = useCallback(() => {\n\t\tif (!open || disableOutsideClick) return;\n\t\tif (closeOnOutside) {\n\t\t\tcloseMenu();\n\t\t}\n\t}, [open, disableOutsideClick, closeOnOutside, closeMenu]);\n\n\tuseClickOutside([floatingRef as RefObject<HTMLElement>, triggerRef as RefObject<HTMLElement>], outsideClose);\n\n\tconst onMenuKeyDown = useCallback(\n\t\t(event: KeyboardEvent<HTMLElement>) => {\n\t\t\tif (event.key === \"Tab\") {\n\t\t\t\t// Portal расположен в конце body, поэтому перед browser default action\n\t\t\t\t// продолжаем tab-порядок от исходного trigger.\n\t\t\t\ttriggerRef.current?.focus({ preventScroll: true });\n\t\t\t\tcloseMenu();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst items = getNavigableItems();\n\t\t\tif (items.length === 0) return;\n\n\t\t\tconst activeElement = document.activeElement as HTMLElement | null;\n\t\t\tconst currentIndex = activeElement ? items.indexOf(activeElement) : -1;\n\n\t\t\tif (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Home\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[0]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"End\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[items.length - 1]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key.length === 1 && event.key !== \" \" && !event.altKey && !event.ctrlKey && !event.metaKey) {\n\t\t\t\tconst query = event.key.toLocaleLowerCase();\n\t\t\t\tconst nextItems = [...items.slice(currentIndex + 1), ...items.slice(0, currentIndex + 1)];\n\t\t\t\tconst match = nextItems.find((item) => item.textContent?.trim().toLocaleLowerCase().startsWith(query));\n\t\t\t\tif (match) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tmatch.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[getNavigableItems, triggerRef, closeMenu]\n\t);\n\n\tif (typeof document === \"undefined\") return null;\n\n\treturn createPortal(\n\t\t<AnimatePresence>\n\t\t\t{open && panelPoint && (\n\t\t\t\t<motion.div\n\t\t\t\t\tid={menuId}\n\t\t\t\t\tref={setFloating}\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--radial-panel-size\": `${panelSize}px`,\n\t\t\t\t\t\t\t\"--radial-radius\": `${radius}px`,\n\t\t\t\t\t\t\t\"--radial-item-size\": `${itemSize}px`,\n\t\t\t\t\t\t\tleft: panelPoint.x - panelSize / 2,\n\t\t\t\t\t\t\ttop: panelPoint.y - panelSize / 2,\n\t\t\t\t\t\t\ttransformOrigin: \"center\"\n\t\t\t\t\t\t} as CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\trole=\"menu\"\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\taria-labelledby={ariaLabel ? undefined : (ariaLabelledBy ?? triggerId)}\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tclassName={cn(styles.radialPanel, className)}\n\t\t\t\t\tonKeyDown={onMenuKeyDown}\n\t\t\t\t\tinitial={{ opacity: 0, scale: 0.78 }}\n\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\texit={{ opacity: 0, scale: 0.78 }}\n\t\t\t\t\ttransition={{ duration: 0.16, ease: \"easeOut\" }}>\n\t\t\t\t\t<div className={styles.radialRing} aria-hidden=\"true\" />\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\tclassName={styles.radialCenterButton}\n\t\t\t\t\t\taria-label={closeLabel}\n\t\t\t\t\t\tdata-menu-item=\"true\"\n\t\t\t\t\t\tdata-radial-close=\"true\"\n\t\t\t\t\t\tonClick={closeMenu}>\n\t\t\t\t\t\t<span className={styles.radialCenterButtonText}>{closeLabel}</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div className={styles.radialItems}>\n\t\t\t\t\t\t{itemNodes.map((item, index) => {\n\t\t\t\t\t\t\tconst angle = itemCount > 0 ? -90 + (360 / itemCount) * index : -90;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t// Индекс допустим: порядок пунктов полностью задает геометрию кольца.\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\tclassName={styles.radialItemSlot}\n\t\t\t\t\t\t\t\t\tstyle={{ \"--radial-item-angle\": `${angle}deg` } as CSSProperties}>\n\t\t\t\t\t\t\t\t\t{item}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</motion.div>\n\t\t\t)}\n\t\t</AnimatePresence>,\n\t\tdocument.body\n\t);\n}\n","import React, { useCallback } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface RadialMenuItemProps {\n\tchildren: React.ReactNode;\n\ticon?: React.ReactNode;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tcloseOnSelect?: boolean;\n\tonSelect?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport function RadialMenuItem({ children, icon, className, disabled, closeOnSelect = true, onSelect }: RadialMenuItemProps) {\n\tconst { closeMenu } = useMenuContext();\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tif (disabled) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSelect?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (closeOnSelect) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t},\n\t\t[disabled, onSelect, closeOnSelect, closeMenu]\n\t);\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\trole=\"menuitem\"\n\t\t\ttabIndex={-1}\n\t\t\tdisabled={disabled}\n\t\t\taria-disabled={disabled}\n\t\t\tdata-menu-item=\"true\"\n\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\tdata-ui=\"radial-menu-item\"\n\t\t\tdata-action=\"select-radial-menu-item\"\n\t\t\tclassName={cn(styles.radialItem, className)}\n\t\t\tonClick={handleClick}>\n\t\t\t{icon && <span className={styles.radialItemIcon}>{icon}</span>}\n\t\t\t<span className={styles.radialItemText}>{children}</span>\n\t\t</button>\n\t);\n}\n","import React from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\n\nimport { ContextMenuTrigger } from \"./ContextMenuTrigger\";\nimport { MenuContent } from \"./MenuContent\";\nimport { MenuGroupLabel } from \"./MenuGroupLabel\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuRoot } from \"./MenuRoot\";\nimport { MenuSeparator } from \"./MenuSeparator\";\nimport { RadialMenuContent } from \"./RadialMenuContent\";\nimport { RadialMenuItem } from \"./RadialMenuItem\";\n\nexport interface ContextMenuProps {\n\tchildren: React.ReactNode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nexport function ContextMenu({ children, placement, open, defaultOpen, onOpenChange }: ContextMenuProps) {\n\treturn (\n\t\t<MenuRoot mode=\"contextmenu\" placement={placement} open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n\t\t\t{children}\n\t\t</MenuRoot>\n\t);\n}\n\nContextMenu.Trigger = ContextMenuTrigger;\nContextMenu.Content = MenuContent;\nContextMenu.RadialContent = RadialMenuContent;\nContextMenu.Item = MenuItem;\nContextMenu.RadialItem = RadialMenuItem;\nContextMenu.Separator = MenuSeparator;\nContextMenu.GroupLabel = MenuGroupLabel;\n","import { cloneElement, type HTMLAttributes, type ReactElement, type Ref } from \"react\";\n\nimport { assignRef, composeKeyboardHandlers, composeMouseHandlers } from \"./helpers\";\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface DropdownMenuTriggerProps {\n\tchildren: ReactElement<HTMLAttributes<HTMLElement> & { ref?: Ref<HTMLElement> }>;\n}\n\nexport function DropdownMenuTrigger({ children }: DropdownMenuTriggerProps) {\n\tconst { mode, open, menuId, triggerId, registerTriggerElement, onTriggerClick, onTriggerKeyDown } = useMenuContext();\n\n\tif (mode !== \"click\") {\n\t\tthrow new Error(\"DropdownMenu.Trigger must be used within <DropdownMenu>\");\n\t}\n\n\treturn cloneElement(children, {\n\t\tid: children.props.id ?? triggerId,\n\t\tref: (node: HTMLElement | null) => {\n\t\t\tconst childRef = (children.props as { ref?: Ref<HTMLElement> }).ref;\n\t\t\tassignRef(childRef, node);\n\t\t\tregisterTriggerElement(node);\n\t\t},\n\t\t\"aria-haspopup\": \"menu\",\n\t\t\"aria-expanded\": open,\n\t\t\"aria-controls\": open ? menuId : undefined,\n\t\tonClick: composeMouseHandlers(children.props.onClick, onTriggerClick),\n\t\tonKeyDown: composeKeyboardHandlers(children.props.onKeyDown, onTriggerKeyDown)\n\t});\n}\n","import React from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\n\nimport { DropdownMenuTrigger } from \"./DropdownMenuTrigger\";\nimport { MenuContent } from \"./MenuContent\";\nimport { MenuGroupLabel } from \"./MenuGroupLabel\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuRoot } from \"./MenuRoot\";\nimport { MenuSeparator } from \"./MenuSeparator\";\n\nexport interface DropdownMenuProps {\n\tchildren: React.ReactNode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nexport function DropdownMenu({ children, placement, open, defaultOpen, onOpenChange }: DropdownMenuProps) {\n\treturn (\n\t\t<MenuRoot mode=\"click\" placement={placement} open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n\t\t\t{children}\n\t\t</MenuRoot>\n\t);\n}\n\nDropdownMenu.Trigger = DropdownMenuTrigger;\nDropdownMenu.Content = MenuContent;\nDropdownMenu.Item = MenuItem;\nDropdownMenu.Separator = MenuSeparator;\nDropdownMenu.GroupLabel = MenuGroupLabel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"context-menu-BlLesqpZ.js","names":[],"sources":["../../src/context-menu/components/helpers.ts","../../src/context-menu/components/MenuContext.tsx","../../src/context-menu/components/ContextMenuTrigger.tsx","../../src/context-menu/ContextMenu.module.scss","../../src/context-menu/components/MenuContent.tsx","../../src/context-menu/components/MenuGroupLabel.tsx","../../src/context-menu/components/MenuItem.tsx","../../src/context-menu/components/MenuRoot.tsx","../../src/context-menu/components/MenuSeparator.tsx","../../src/context-menu/components/RadialMenuContent.tsx","../../src/context-menu/components/RadialMenuItem.tsx","../../src/context-menu/components/ContextMenu.tsx","../../src/context-menu/components/DropdownMenuTrigger.tsx","../../src/context-menu/components/DropdownMenu.tsx"],"sourcesContent":["import React from \"react\";\n\nexport function assignRef<T>(ref: React.Ref<T> | undefined, value: T) {\n\tif (!ref) return;\n\n\tif (typeof ref === \"function\") {\n\t\tref(value);\n\t\treturn;\n\t}\n\n\t(ref as React.MutableRefObject<T>).current = value;\n}\n\nexport function composeMouseHandlers<T extends HTMLElement>(\n\tuserHandler: ((event: React.MouseEvent<T>) => void) | undefined,\n\tlibraryHandler: (event: React.MouseEvent<T>) => void\n) {\n\treturn (event: React.MouseEvent<T>) => {\n\t\tuserHandler?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tlibraryHandler(event);\n\t};\n}\n\nexport function composeKeyboardHandlers<T extends HTMLElement>(\n\tuserHandler: ((event: React.KeyboardEvent<T>) => void) | undefined,\n\tlibraryHandler: (event: React.KeyboardEvent<T>) => void\n) {\n\treturn (event: React.KeyboardEvent<T>) => {\n\t\tuserHandler?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tlibraryHandler(event);\n\t};\n}\n","import { createContext, type CSSProperties, type KeyboardEvent, type MouseEvent, type RefObject, useContext } from \"react\";\n\nimport { type MenuOpenSource, type MenuPoint } from \"@ryuzaki13/react-foundation-lib/context-menu\";\nimport { createMissingContextError } from \"@ryuzaki13/react-foundation-lib/error\";\n\nexport type MenuTriggerMode = \"click\" | \"contextmenu\";\nexport type MenuInitialFocus = \"first\" | \"last\";\n\ninterface MenuContextValue {\n\tmode: MenuTriggerMode;\n\topen: boolean;\n\topenSource: MenuOpenSource | null;\n\tinitialFocus: MenuInitialFocus;\n\tmenuId: string;\n\ttriggerId: string;\n\tanchorPoint: MenuPoint | null;\n\tfloatingStyles: CSSProperties;\n\tfloatingRef: RefObject<HTMLElement | null>;\n\ttriggerRef: RefObject<HTMLElement | null>;\n\tsetFloating: (node: HTMLElement | null) => void;\n\tregisterTriggerElement: (node: HTMLElement | null) => void;\n\tonTriggerClick: (event: MouseEvent<HTMLElement>) => void;\n\tonTriggerContextMenu: (event: MouseEvent<HTMLElement>, triggerElement?: HTMLElement) => void;\n\tonTriggerKeyDown: (event: KeyboardEvent<HTMLElement>, triggerElement?: HTMLElement) => void;\n\tcloseMenu: () => void;\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null);\n\nexport function useMenuContext() {\n\tconst context = useContext(MenuContext);\n\tif (!context) {\n\t\tthrow createMissingContextError({\n\t\t\thookName: \"useMenuContext\",\n\t\t\tproviderName: \"MenuRoot\"\n\t\t});\n\t}\n\treturn context;\n}\n","import { cloneElement, type HTMLAttributes, type KeyboardEvent, type MouseEvent, type ReactElement, type Ref } from \"react\";\n\nimport { assignRef } from \"./helpers\";\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface ContextMenuTriggerProps {\n\tchildren: ReactElement<HTMLAttributes<HTMLElement> & { ref?: Ref<HTMLElement> }>;\n\t/** Позволяет одному ContextMenu обслуживать множество вложенных целей без отдельного floating-ui runtime на каждую строку или ячейку. */\n\tresolveTrigger?: (eventTarget: EventTarget | null) => HTMLElement | null;\n}\n\nexport function ContextMenuTrigger({ children, resolveTrigger }: ContextMenuTriggerProps) {\n\tconst { mode, open, menuId, triggerId, registerTriggerElement, onTriggerContextMenu, onTriggerKeyDown } = useMenuContext();\n\n\tif (mode !== \"contextmenu\") {\n\t\tthrow new Error(\"ContextMenu.Trigger must be used within <ContextMenu>\");\n\t}\n\n\treturn cloneElement(children, {\n\t\tid: children.props.id ?? triggerId,\n\t\tref: (node: HTMLElement | null) => {\n\t\t\tconst childRef = (children.props as { ref?: Ref<HTMLElement> }).ref;\n\t\t\tassignRef(childRef, node);\n\t\t\tregisterTriggerElement(node);\n\t\t},\n\t\ttabIndex: resolveTrigger ? children.props.tabIndex : (children.props.tabIndex ?? 0),\n\t\t\"aria-haspopup\": \"menu\",\n\t\t\"aria-controls\": open ? menuId : undefined,\n\t\t\"aria-keyshortcuts\": children.props[\"aria-keyshortcuts\"] ?? \"Shift+F10\",\n\t\tonContextMenu: (event: MouseEvent<HTMLElement>) => {\n\t\t\tchildren.props.onContextMenu?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\t\t\tconst triggerElement = resolveTrigger ? resolveTrigger(event.target) : event.currentTarget;\n\t\t\tif (triggerElement) onTriggerContextMenu(event, triggerElement);\n\t\t},\n\t\tonKeyDown: (event: KeyboardEvent<HTMLElement>) => {\n\t\t\tchildren.props.onKeyDown?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\t\t\tconst triggerElement = resolveTrigger ? resolveTrigger(event.target) : event.currentTarget;\n\t\t\tif (triggerElement) onTriggerKeyDown(event, triggerElement);\n\t\t}\n\t});\n}\n","@use \"@/styles/mixins\" as *;\n\n.menuPositioner {\n\tz-index: var(--z-dropdown);\n\toutline: none;\n}\n\n.menuOptions {\n\t--menu-max-height: calc(100dvh - var(--space-xl));\n\t--menu-min-width: 14em;\n\t--menu-max-width: min(24em, calc(100dvw - var(--space-xl)));\n\n\tmin-width: var(--menu-min-width);\n\tmax-width: var(--menu-max-width);\n\tmax-height: var(--menu-max-height);\n}\n\n.radialPanel {\n\tposition: fixed;\n\twidth: var(--radial-panel-size);\n\theight: var(--radial-panel-size);\n\tz-index: var(--z-context-menu, var(--z-dropdown));\n\toutline: none;\n\tpointer-events: none;\n}\n\n.radialRing {\n\tposition: absolute;\n\tinset: calc(var(--radial-item-size) / 2);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground:\n\t\tradial-gradient(circle, color-mix(in srgb, var(--surface-0) 96%, transparent) 0 36%, transparent 37%),\n\t\tcolor-mix(in srgb, var(--surface-0) 88%, transparent);\n\tbox-shadow: var(--shadow-md);\n\tpointer-events: none;\n}\n\n.radialCenterButton {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: calc(var(--radial-item-size) * 0.72);\n\theight: calc(var(--radial-item-size) * 0.72);\n\tpadding: var(--space-xs);\n\ttransform: translate(-50%, -50%);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground-color: var(--surface-0);\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-sm);\n\tpointer-events: auto;\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease,\n\t\ttransform var(--transition-fast) ease;\n\n\t&:focus {\n\t\tbackground-color: var(--surface-1);\n\t\tborder-color: var(--border-1);\n\t}\n\n\t@include hover(true) {\n\t\tbackground-color: var(--accent-fill);\n\t\tcolor: var(--accent-text);\n\t\tcursor: pointer;\n\t\ttransform: translate(-50%, -50%) scale(1.06);\n\t}\n}\n\n.radialCenterButtonText {\n\tmax-width: 100%;\n\toverflow: hidden;\n\ttext-align: center;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tfont-size: var(--font-size-sm);\n\tline-height: 1.1;\n}\n\n.radialItems {\n\tposition: absolute;\n\tinset: 0;\n\tpointer-events: none;\n}\n\n.radialItemSlot {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\twidth: var(--radial-item-size);\n\theight: var(--radial-item-size);\n\ttransform: rotate(var(--radial-item-angle)) translate(var(--radial-radius)) rotate(calc(var(--radial-item-angle) * -1))\n\t\ttranslate(-50%, -50%);\n\tpointer-events: none;\n}\n\n.radialItem {\n\tdisplay: grid;\n\tgrid-template-rows: 1fr auto;\n\talign-items: center;\n\tjustify-items: center;\n\tgap: 0.15rem;\n\twidth: 100%;\n\theight: 100%;\n\tpadding: var(--space-xs);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground-color: var(--surface-0);\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-sm);\n\tpointer-events: auto;\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease,\n\t\ttransform var(--transition-fast) ease;\n\n\t&:focus {\n\t\tbackground-color: var(--surface-1);\n\t\tborder-color: var(--border-1);\n\t}\n\n\t&:disabled,\n\t&[aria-disabled=\"true\"] {\n\t\tcursor: default;\n\t\tcolor: var(--content-2);\n\t\topacity: 0.52;\n\t\tpointer-events: none;\n\t}\n\n\t@include hover(true) {\n\t\tbackground-color: var(--accent-fill);\n\t\tcolor: var(--accent-text);\n\t\tcursor: pointer;\n\t\ttransform: scale(1.06);\n\t}\n}\n\n.radialItemIcon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmin-width: var(--space-md);\n\tmin-height: var(--space-md);\n\n\t> svg {\n\t\twidth: var(--space-md);\n\t\theight: var(--space-md);\n\t}\n}\n\n.radialItemText {\n\tmax-width: 100%;\n\toverflow: hidden;\n\ttext-align: center;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tfont-size: var(--font-size-sm);\n}\n","import { type KeyboardEvent, type ReactNode, type RefObject, useCallback, useEffect } from \"react\";\n\nimport { useClickOutside, useEscapeDismiss, useOverlayFocus } from \"@ryuzaki13/react-foundation-lib/dom\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { createPortal } from \"react-dom\";\n\nimport { PickerOptions } from \"../../picker\";\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface MenuContentProps {\n\tchildren: ReactNode | ((ctx: { closeMenu: () => void }) => ReactNode);\n\tclassName?: string;\n\t\"aria-label\"?: string;\n\t\"aria-labelledby\"?: string;\n\tcloseOnOutside?: boolean;\n\tcloseOnEscape?: boolean;\n\tdisableOutsideClick?: boolean;\n\trestoreFocus?: boolean;\n}\n\nexport function MenuContent({\n\tchildren,\n\tclassName,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy,\n\tcloseOnOutside = true,\n\tcloseOnEscape = true,\n\tdisableOutsideClick = false,\n\trestoreFocus = true\n}: MenuContentProps) {\n\tconst {\n\t\topen,\n\t\topenSource,\n\t\tinitialFocus,\n\t\tmenuId,\n\t\ttriggerId,\n\t\tanchorPoint,\n\t\tfloatingStyles,\n\t\tfloatingRef,\n\t\ttriggerRef,\n\t\tsetFloating,\n\t\tcloseMenu\n\t} = useMenuContext();\n\n\tconst getNavigableItems = useCallback(() => {\n\t\tconst floatingElement = floatingRef.current;\n\t\tif (!floatingElement) return [];\n\n\t\treturn Array.from(floatingElement.querySelectorAll<HTMLElement>('[data-menu-item=\"true\"]:not([data-disabled=\"true\"])'));\n\t}, [floatingRef]);\n\n\tuseOverlayFocus<HTMLElement>({\n\t\tactive: open,\n\t\tinitialFocus: (container) => {\n\t\t\tconst items = getNavigableItems();\n\t\t\treturn (initialFocus === \"last\" ? items[items.length - 1] : items[0]) ?? container;\n\t\t},\n\t\trestoreFocus,\n\t\trestoreFocusTarget: () => triggerRef.current,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tuseEffect(() => {\n\t\tif (!open || openSource !== \"contextmenu\" || !anchorPoint) return;\n\n\t\tconst rafId = window.requestAnimationFrame(() => {\n\t\t\tconst focusTarget = getNavigableItems()[0] ?? floatingRef.current;\n\t\t\tfocusTarget?.focus({ preventScroll: true });\n\t\t});\n\n\t\treturn () => window.cancelAnimationFrame(rafId);\n\t}, [open, openSource, anchorPoint, getNavigableItems, floatingRef]);\n\n\tuseEscapeDismiss({\n\t\tactive: open,\n\t\tenabled: closeOnEscape,\n\t\tonDismiss: closeMenu,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tconst outsideClose = useCallback(() => {\n\t\tif (!open || disableOutsideClick) return;\n\t\tif (closeOnOutside) {\n\t\t\tcloseMenu();\n\t\t}\n\t}, [open, disableOutsideClick, closeOnOutside, closeMenu]);\n\n\tuseClickOutside([floatingRef as RefObject<HTMLElement>, triggerRef as RefObject<HTMLElement>], outsideClose);\n\n\tconst onMenuKeyDown = useCallback(\n\t\t(event: KeyboardEvent<HTMLElement>) => {\n\t\t\tif (event.key === \"Tab\") {\n\t\t\t\t// Возвращаем точку отсчёта в tab-порядок до browser default action:\n\t\t\t\t// так Tab и Shift+Tab продолжают обход относительно trigger, а не portal в конце body.\n\t\t\t\ttriggerRef.current?.focus({ preventScroll: true });\n\t\t\t\tcloseMenu();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst items = getNavigableItems();\n\t\t\tif (items.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst activeElement = document.activeElement as HTMLElement | null;\n\t\t\tconst currentIndex = activeElement ? items.indexOf(activeElement) : -1;\n\n\t\t\tif (event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Home\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[0]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"End\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[items.length - 1]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key.length === 1 && event.key !== \" \" && !event.altKey && !event.ctrlKey && !event.metaKey) {\n\t\t\t\tconst query = event.key.toLocaleLowerCase();\n\t\t\t\tconst nextItems = [...items.slice(currentIndex + 1), ...items.slice(0, currentIndex + 1)];\n\t\t\t\tconst match = nextItems.find((item) => item.textContent?.trim().toLocaleLowerCase().startsWith(query));\n\t\t\t\tif (match) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tmatch.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[getNavigableItems, triggerRef, closeMenu]\n\t);\n\n\tif (typeof document === \"undefined\") return null;\n\n\treturn createPortal(\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<motion.div\n\t\t\t\t\tid={menuId}\n\t\t\t\t\tref={setFloating}\n\t\t\t\t\tstyle={floatingStyles}\n\t\t\t\t\trole=\"menu\"\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\taria-labelledby={ariaLabel ? undefined : (ariaLabelledBy ?? triggerId)}\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tclassName={styles.menuPositioner}\n\t\t\t\t\tonKeyDown={onMenuKeyDown}\n\t\t\t\t\tinitial={{ opacity: 0, scale: 0.96, y: -2 }}\n\t\t\t\t\tanimate={{ opacity: 1, scale: 1, y: 0 }}\n\t\t\t\t\texit={{ opacity: 0, scale: 0.96, y: -2 }}\n\t\t\t\t\ttransition={{ duration: 0.14, ease: \"easeOut\" }}>\n\t\t\t\t\t<PickerOptions className={cn(styles.menuOptions, className)}>\n\t\t\t\t\t\t{typeof children === \"function\" ? children({ closeMenu }) : children}\n\t\t\t\t\t</PickerOptions>\n\t\t\t\t</motion.div>\n\t\t\t)}\n\t\t</AnimatePresence>,\n\t\tdocument.body\n\t);\n}\n","import React from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\n\nexport interface MenuGroupLabelProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport function MenuGroupLabel({ children, className }: MenuGroupLabelProps) {\n\treturn <div className={cn(uiStyles.uiPopupGroupLabel, className)}>{children}</div>;\n}\n","import { type HTMLAttributeAnchorTarget, type MouseEvent, type ReactNode, useCallback } from \"react\";\n\nimport { Option, OptionButton, OptionLink } from \"../../option\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface MenuItemProps {\n\tchildren: string;\n\ticon?: ReactNode;\n\thotKey?: string;\n\tclassName?: string;\n\tdisabled?: boolean;\n\thref?: string;\n\ttarget?: HTMLAttributeAnchorTarget;\n\trel?: string;\n\tcloseOnSelect?: boolean;\n\tonSelect?: (event: MouseEvent<HTMLElement>) => void;\n}\n\nexport function MenuItem({\n\tchildren,\n\ticon,\n\thotKey,\n\tclassName,\n\tdisabled,\n\thref,\n\ttarget,\n\trel,\n\tcloseOnSelect = true,\n\tonSelect\n}: MenuItemProps) {\n\tconst { closeMenu } = useMenuContext();\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLElement>) => {\n\t\t\tif (disabled) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSelect?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (closeOnSelect) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t},\n\t\t[disabled, onSelect, closeOnSelect, closeMenu]\n\t);\n\n\tif (href) {\n\t\treturn (\n\t\t\t<Option disabled={disabled} className={className}>\n\t\t\t\t<OptionLink\n\t\t\t\t\ticon={icon}\n\t\t\t\t\thotkey={hotKey}\n\t\t\t\t\ttext={children}\n\t\t\t\t\thref={href}\n\t\t\t\t\ttarget={target}\n\t\t\t\t\trel={rel}\n\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\taria-disabled={disabled}\n\t\t\t\t\tdata-menu-item=\"true\"\n\t\t\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\t\t\tdata-ui=\"context-menu-item\"\n\t\t\t\t\tdata-action=\"select-context-menu-item\"\n\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\tif (event.key !== \" \") return;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.currentTarget.click();\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={handleClick as React.MouseEventHandler<HTMLAnchorElement>}\n\t\t\t\t/>\n\t\t\t</Option>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Option disabled={disabled} className={className}>\n\t\t\t<OptionButton\n\t\t\t\ticon={icon}\n\t\t\t\thotkey={hotKey}\n\t\t\t\ttext={children}\n\t\t\t\trole=\"menuitem\"\n\t\t\t\ttabIndex={-1}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tdata-menu-item=\"true\"\n\t\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\t\tdata-ui=\"context-menu-item\"\n\t\t\t\tdata-action=\"select-context-menu-item\"\n\t\t\t\tonClick={handleClick as React.MouseEventHandler<HTMLButtonElement>}\n\t\t\t/>\n\t\t</Option>\n\t);\n}\n","import { type KeyboardEvent, type MouseEvent, type ReactNode, useCallback, useId, useMemo, useRef, useState } from \"react\";\n\nimport { autoUpdate, flip, offset, type Placement, shift, useFloating } from \"@floating-ui/react\";\nimport {\n\tcloseMenu,\n\tcreateVirtualAnchor,\n\tgetMenuPointFromEvent,\n\tgetMenuPointFromRect,\n\tinitialMenuState,\n\topenMenu\n} from \"@ryuzaki13/react-foundation-lib/context-menu\";\n\nimport { MenuContext, type MenuInitialFocus, type MenuTriggerMode } from \"./MenuContext\";\n\ninterface MenuRootProps {\n\tchildren: ReactNode;\n\tmode: MenuTriggerMode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nexport function MenuRoot({\n\tchildren,\n\tmode,\n\tplacement = mode === \"click\" ? \"bottom-start\" : \"right-start\",\n\topen: controlledOpen,\n\tdefaultOpen,\n\tonOpenChange\n}: MenuRootProps) {\n\tconst generatedId = useId();\n\tconst menuId = `${generatedId}-menu`;\n\tconst defaultTriggerId = `${generatedId}-trigger`;\n\tconst [menuState, setMenuState] = useState(initialMenuState);\n\tconst [initialFocus, setInitialFocus] = useState<MenuInitialFocus>(\"first\");\n\tconst [triggerId, setTriggerId] = useState(defaultTriggerId);\n\tconst [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst open = isControlled ? controlledOpen : uncontrolledOpen;\n\tconst triggerElementRef = useRef<HTMLElement | null>(null);\n\tconst registeredTriggerElementRef = useRef<HTMLElement | null>(null);\n\n\tconst { refs, floatingStyles, update } = useFloating({\n\t\tplacement,\n\t\tstrategy: mode === \"contextmenu\" ? \"fixed\" : \"absolute\",\n\t\ttransform: false,\n\t\tmiddleware: [offset(6), flip({ padding: 8 }), shift({ padding: 8 })],\n\t\twhileElementsMounted: autoUpdate\n\t});\n\n\tconst setOpen = useCallback(\n\t\t(nextOpen: boolean) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetUncontrolledOpen(nextOpen);\n\t\t\t}\n\t\t\tonOpenChange?.(nextOpen);\n\t\t\tif (!nextOpen) {\n\t\t\t\tsetMenuState((state) => closeMenu(state));\n\t\t\t}\n\t\t},\n\t\t[isControlled, onOpenChange]\n\t);\n\n\tconst closeMenuHandler = useCallback(() => {\n\t\tsetOpen(false);\n\t}, [setOpen]);\n\n\tconst openAtElement = useCallback(\n\t\t(element: HTMLElement, source: \"click\" | \"keyboard\", nextInitialFocus: MenuInitialFocus = \"first\") => {\n\t\t\trefs.setReference(element);\n\t\t\tsetInitialFocus(nextInitialFocus);\n\t\t\tsetMenuState(\n\t\t\t\topenMenu({\n\t\t\t\t\tsource,\n\t\t\t\t\tanchor: {\n\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\telement\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\tsetOpen(true);\n\t\t},\n\t\t[refs, setOpen]\n\t);\n\n\tconst openAtPoint = useCallback(\n\t\t(point: { x: number; y: number }, source: \"contextmenu\" | \"keyboard\", contextElement?: HTMLElement | null) => {\n\t\t\trefs.setReference(createVirtualAnchor(point, contextElement));\n\t\t\tsetInitialFocus(\"first\");\n\t\t\tsetMenuState(\n\t\t\t\topenMenu({\n\t\t\t\t\tsource,\n\t\t\t\t\tanchor: {\n\t\t\t\t\t\ttype: \"point\",\n\t\t\t\t\t\tpoint,\n\t\t\t\t\t\tcontextElement\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\tsetOpen(true);\n\t\t\tupdate();\n\t\t},\n\t\t[refs, setOpen, update]\n\t);\n\n\tconst registerTriggerElement = useCallback(\n\t\t(node: HTMLElement | null) => {\n\t\t\tconst previous = registeredTriggerElementRef.current;\n\t\t\tregisteredTriggerElementRef.current = node;\n\t\t\tif (node) {\n\t\t\t\tsetTriggerId(node.id || defaultTriggerId);\n\t\t\t}\n\t\t\t// Повторный ref-callback общего контейнера не должен заменить делегированную цель,\n\t\t\t// иначе после закрытия фокус вернётся на всю таблицу вместо исходной ячейки.\n\t\t\tif (triggerElementRef.current === null || triggerElementRef.current === previous) {\n\t\t\t\ttriggerElementRef.current = node;\n\t\t\t}\n\t\t\tif (mode === \"click\") {\n\t\t\t\trefs.setReference(node);\n\t\t\t}\n\t\t},\n\t\t[defaultTriggerId, mode, refs]\n\t);\n\n\tconst onTriggerClick = useCallback(\n\t\t(event: MouseEvent<HTMLElement>) => {\n\t\t\tif (mode !== \"click\") return;\n\t\t\tconst element = event.currentTarget;\n\n\t\t\tif (open && menuState.anchor?.type === \"element\" && menuState.anchor.element === element) {\n\t\t\t\tcloseMenuHandler();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\topenAtElement(element, \"click\");\n\t\t},\n\t\t[mode, open, menuState.anchor, closeMenuHandler, openAtElement]\n\t);\n\n\tconst onTriggerContextMenu = useCallback(\n\t\t(event: MouseEvent<HTMLElement>, triggerElement = event.currentTarget) => {\n\t\t\tif (mode !== \"contextmenu\") return;\n\t\t\tevent.preventDefault();\n\n\t\t\tconst point = getMenuPointFromEvent(event);\n\t\t\ttriggerElementRef.current = triggerElement;\n\t\t\topenAtPoint(point, \"contextmenu\", triggerElement);\n\t\t},\n\t\t[mode, openAtPoint]\n\t);\n\n\tconst onTriggerKeyDown = useCallback(\n\t\t(event: KeyboardEvent<HTMLElement>, triggerElement = event.currentTarget) => {\n\t\t\tif (mode === \"click\" && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttriggerElementRef.current = triggerElement;\n\t\t\t\topenAtElement(triggerElement, \"keyboard\", event.key === \"ArrowUp\" ? \"last\" : \"first\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isContextMenuKeyboardOpen = event.key === \"ContextMenu\" || (event.shiftKey && event.key === \"F10\");\n\t\t\tif (!isContextMenuKeyboardOpen) return;\n\n\t\t\tevent.preventDefault();\n\t\t\ttriggerElementRef.current = triggerElement;\n\n\t\t\tif (mode === \"click\") {\n\t\t\t\topenAtElement(triggerElement, \"keyboard\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst point = getMenuPointFromRect(triggerElement.getBoundingClientRect());\n\t\t\topenAtPoint(point, \"keyboard\", triggerElement);\n\t\t},\n\t\t[mode, openAtElement, openAtPoint]\n\t);\n\n\tconst visible = open && menuState.anchor !== null;\n\tconst anchorPoint = useMemo(() => {\n\t\tif (!menuState.anchor) return null;\n\n\t\tif (menuState.anchor.type === \"point\") {\n\t\t\treturn menuState.anchor.point;\n\t\t}\n\n\t\tconst rect = menuState.anchor.element.getBoundingClientRect();\n\t\treturn getMenuPointFromRect(rect);\n\t}, [menuState.anchor]);\n\n\tconst value = useMemo(\n\t\t() => ({\n\t\t\tmode,\n\t\t\topen: visible,\n\t\t\topenSource: menuState.source,\n\t\t\tinitialFocus,\n\t\t\tmenuId,\n\t\t\ttriggerId,\n\t\t\tanchorPoint,\n\t\t\tfloatingStyles,\n\t\t\tfloatingRef: refs.floating,\n\t\t\ttriggerRef: triggerElementRef,\n\t\t\tsetFloating: refs.setFloating,\n\t\t\tregisterTriggerElement,\n\t\t\tonTriggerClick,\n\t\t\tonTriggerContextMenu,\n\t\t\tonTriggerKeyDown,\n\t\t\tcloseMenu: closeMenuHandler\n\t\t}),\n\t\t[\n\t\t\tmode,\n\t\t\tvisible,\n\t\t\tmenuState.source,\n\t\t\tinitialFocus,\n\t\t\tmenuId,\n\t\t\ttriggerId,\n\t\t\tanchorPoint,\n\t\t\tfloatingStyles,\n\t\t\trefs.floating,\n\t\t\trefs.setFloating,\n\t\t\tregisterTriggerElement,\n\t\t\tonTriggerClick,\n\t\t\tonTriggerContextMenu,\n\t\t\tonTriggerKeyDown,\n\t\t\tcloseMenuHandler\n\t\t]\n\t);\n\n\treturn <MenuContext.Provider value={value}>{children}</MenuContext.Provider>;\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\n\nexport interface MenuSeparatorProps {\n\tclassName?: string;\n}\n\nexport function MenuSeparator({ className }: MenuSeparatorProps) {\n\treturn <div role=\"separator\" className={cn(uiStyles.uiPopupOptionSeparator, className)} />;\n}\n","import { Children, type CSSProperties, type KeyboardEvent, type ReactNode, type RefObject, useCallback, useEffect, useMemo } from \"react\";\n\nimport { useClickOutside, useEscapeDismiss, useOverlayFocus } from \"@ryuzaki13/react-foundation-lib/dom\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { createPortal } from \"react-dom\";\n\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface RadialMenuContentProps {\n\tchildren: ReactNode | ((ctx: { closeMenu: () => void }) => ReactNode);\n\tclassName?: string;\n\t\"aria-label\"?: string;\n\t\"aria-labelledby\"?: string;\n\tcloseOnOutside?: boolean;\n\tcloseOnEscape?: boolean;\n\tdisableOutsideClick?: boolean;\n\trestoreFocus?: boolean;\n\tradius?: number;\n\titemSize?: number;\n\tcloseLabel?: string;\n}\n\nfunction clamp(value: number, min: number, max: number) {\n\tif (max < min) return min;\n\treturn Math.min(Math.max(value, min), max);\n}\n\nexport function RadialMenuContent({\n\tchildren,\n\tclassName,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy,\n\tcloseOnOutside = true,\n\tcloseOnEscape = true,\n\tdisableOutsideClick = false,\n\trestoreFocus = true,\n\tradius = 76,\n\titemSize = 64,\n\tcloseLabel = \"Закрыть\"\n}: RadialMenuContentProps) {\n\tconst { open, menuId, triggerId, anchorPoint, floatingRef, triggerRef, setFloating, closeMenu } = useMenuContext();\n\n\tconst resolvedChildren = typeof children === \"function\" ? children({ closeMenu }) : children;\n\tconst itemNodes = useMemo(() => Children.toArray(resolvedChildren), [resolvedChildren]);\n\tconst itemCount = itemNodes.length;\n\tconst panelSize = radius * 2 + itemSize;\n\n\tconst panelPoint = useMemo(() => {\n\t\tif (typeof window === \"undefined\" || !anchorPoint) return null;\n\n\t\t// Радиальное меню центрируется на точке вызова, но не выходит за границы viewport.\n\t\tconst safeOffset = panelSize / 2 + 8;\n\t\treturn {\n\t\t\tx: clamp(anchorPoint.x, safeOffset, window.innerWidth - safeOffset),\n\t\t\ty: clamp(anchorPoint.y, safeOffset, window.innerHeight - safeOffset)\n\t\t};\n\t}, [anchorPoint, panelSize]);\n\n\tconst getNavigableItems = useCallback(() => {\n\t\tconst floatingElement = floatingRef.current;\n\t\tif (!floatingElement) return [];\n\n\t\treturn Array.from(floatingElement.querySelectorAll<HTMLElement>('[data-menu-item=\"true\"]:not([data-disabled=\"true\"])'));\n\t}, [floatingRef]);\n\n\tuseOverlayFocus<HTMLElement>({\n\t\tactive: open,\n\t\tinitialFocus: (container) => getNavigableItems()[0] ?? container,\n\t\trestoreFocus,\n\t\trestoreFocusTarget: () => triggerRef.current,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tuseEffect(() => {\n\t\tif (!open || !anchorPoint) return;\n\n\t\tlet rafId = 0;\n\n\t\t/**\n\t\t * Повторный правый клик при уже открытом меню меняет только якорь, поэтому общий\n\t\t * эффект начального фокуса не перезапускается. Возвращаем фокус в меню явно.\n\t\t */\n\t\tconst focusMenuOnReposition = () => {\n\t\t\tconst focusTarget = getNavigableItems()[0] ?? floatingRef.current;\n\t\t\tfocusTarget?.focus();\n\t\t};\n\n\t\trafId = window.requestAnimationFrame(focusMenuOnReposition);\n\t\treturn () => window.cancelAnimationFrame(rafId);\n\t}, [open, anchorPoint, getNavigableItems, floatingRef]);\n\n\tuseEscapeDismiss({\n\t\tactive: open,\n\t\tenabled: closeOnEscape,\n\t\tonDismiss: closeMenu,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tconst outsideClose = useCallback(() => {\n\t\tif (!open || disableOutsideClick) return;\n\t\tif (closeOnOutside) {\n\t\t\tcloseMenu();\n\t\t}\n\t}, [open, disableOutsideClick, closeOnOutside, closeMenu]);\n\n\tuseClickOutside([floatingRef as RefObject<HTMLElement>, triggerRef as RefObject<HTMLElement>], outsideClose);\n\n\tconst onMenuKeyDown = useCallback(\n\t\t(event: KeyboardEvent<HTMLElement>) => {\n\t\t\tif (event.key === \"Tab\") {\n\t\t\t\t// Portal расположен в конце body, поэтому перед browser default action\n\t\t\t\t// продолжаем tab-порядок от исходного trigger.\n\t\t\t\ttriggerRef.current?.focus({ preventScroll: true });\n\t\t\t\tcloseMenu();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst items = getNavigableItems();\n\t\t\tif (items.length === 0) return;\n\n\t\t\tconst activeElement = document.activeElement as HTMLElement | null;\n\t\t\tconst currentIndex = activeElement ? items.indexOf(activeElement) : -1;\n\n\t\t\tif (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Home\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[0]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"End\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[items.length - 1]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key.length === 1 && event.key !== \" \" && !event.altKey && !event.ctrlKey && !event.metaKey) {\n\t\t\t\tconst query = event.key.toLocaleLowerCase();\n\t\t\t\tconst nextItems = [...items.slice(currentIndex + 1), ...items.slice(0, currentIndex + 1)];\n\t\t\t\tconst match = nextItems.find((item) => item.textContent?.trim().toLocaleLowerCase().startsWith(query));\n\t\t\t\tif (match) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tmatch.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[getNavigableItems, triggerRef, closeMenu]\n\t);\n\n\tif (typeof document === \"undefined\") return null;\n\n\treturn createPortal(\n\t\t<AnimatePresence>\n\t\t\t{open && panelPoint && (\n\t\t\t\t<motion.div\n\t\t\t\t\tid={menuId}\n\t\t\t\t\tref={setFloating}\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--radial-panel-size\": `${panelSize}px`,\n\t\t\t\t\t\t\t\"--radial-radius\": `${radius}px`,\n\t\t\t\t\t\t\t\"--radial-item-size\": `${itemSize}px`,\n\t\t\t\t\t\t\tleft: panelPoint.x - panelSize / 2,\n\t\t\t\t\t\t\ttop: panelPoint.y - panelSize / 2,\n\t\t\t\t\t\t\ttransformOrigin: \"center\"\n\t\t\t\t\t\t} as CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\trole=\"menu\"\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\taria-labelledby={ariaLabel ? undefined : (ariaLabelledBy ?? triggerId)}\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tclassName={cn(styles.radialPanel, className)}\n\t\t\t\t\tonKeyDown={onMenuKeyDown}\n\t\t\t\t\tinitial={{ opacity: 0, scale: 0.78 }}\n\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\texit={{ opacity: 0, scale: 0.78 }}\n\t\t\t\t\ttransition={{ duration: 0.16, ease: \"easeOut\" }}>\n\t\t\t\t\t<div className={styles.radialRing} aria-hidden=\"true\" />\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\tclassName={styles.radialCenterButton}\n\t\t\t\t\t\taria-label={closeLabel}\n\t\t\t\t\t\tdata-menu-item=\"true\"\n\t\t\t\t\t\tdata-radial-close=\"true\"\n\t\t\t\t\t\tonClick={closeMenu}>\n\t\t\t\t\t\t<span className={styles.radialCenterButtonText}>{closeLabel}</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div className={styles.radialItems}>\n\t\t\t\t\t\t{itemNodes.map((item, index) => {\n\t\t\t\t\t\t\tconst angle = itemCount > 0 ? -90 + (360 / itemCount) * index : -90;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t// Индекс допустим: порядок пунктов полностью задает геометрию кольца.\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\tclassName={styles.radialItemSlot}\n\t\t\t\t\t\t\t\t\tstyle={{ \"--radial-item-angle\": `${angle}deg` } as CSSProperties}>\n\t\t\t\t\t\t\t\t\t{item}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</motion.div>\n\t\t\t)}\n\t\t</AnimatePresence>,\n\t\tdocument.body\n\t);\n}\n","import React, { useCallback } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface RadialMenuItemProps {\n\tchildren: React.ReactNode;\n\ticon?: React.ReactNode;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tcloseOnSelect?: boolean;\n\tonSelect?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport function RadialMenuItem({ children, icon, className, disabled, closeOnSelect = true, onSelect }: RadialMenuItemProps) {\n\tconst { closeMenu } = useMenuContext();\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tif (disabled) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSelect?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (closeOnSelect) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t},\n\t\t[disabled, onSelect, closeOnSelect, closeMenu]\n\t);\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\trole=\"menuitem\"\n\t\t\ttabIndex={-1}\n\t\t\tdisabled={disabled}\n\t\t\taria-disabled={disabled}\n\t\t\tdata-menu-item=\"true\"\n\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\tdata-ui=\"radial-menu-item\"\n\t\t\tdata-action=\"select-radial-menu-item\"\n\t\t\tclassName={cn(styles.radialItem, className)}\n\t\t\tonClick={handleClick}>\n\t\t\t{icon && <span className={styles.radialItemIcon}>{icon}</span>}\n\t\t\t<span className={styles.radialItemText}>{children}</span>\n\t\t</button>\n\t);\n}\n","import React from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\n\nimport { ContextMenuTrigger } from \"./ContextMenuTrigger\";\nimport { MenuContent } from \"./MenuContent\";\nimport { MenuGroupLabel } from \"./MenuGroupLabel\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuRoot } from \"./MenuRoot\";\nimport { MenuSeparator } from \"./MenuSeparator\";\nimport { RadialMenuContent } from \"./RadialMenuContent\";\nimport { RadialMenuItem } from \"./RadialMenuItem\";\n\nexport interface ContextMenuProps {\n\tchildren: React.ReactNode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nexport function ContextMenu({ children, placement, open, defaultOpen, onOpenChange }: ContextMenuProps) {\n\treturn (\n\t\t<MenuRoot mode=\"contextmenu\" placement={placement} open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n\t\t\t{children}\n\t\t</MenuRoot>\n\t);\n}\n\nContextMenu.Trigger = ContextMenuTrigger;\nContextMenu.Content = MenuContent;\nContextMenu.RadialContent = RadialMenuContent;\nContextMenu.Item = MenuItem;\nContextMenu.RadialItem = RadialMenuItem;\nContextMenu.Separator = MenuSeparator;\nContextMenu.GroupLabel = MenuGroupLabel;\n","import { cloneElement, type HTMLAttributes, type ReactElement, type Ref } from \"react\";\n\nimport { assignRef, composeKeyboardHandlers, composeMouseHandlers } from \"./helpers\";\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface DropdownMenuTriggerProps {\n\tchildren: ReactElement<HTMLAttributes<HTMLElement> & { ref?: Ref<HTMLElement> }>;\n}\n\nexport function DropdownMenuTrigger({ children }: DropdownMenuTriggerProps) {\n\tconst { mode, open, menuId, triggerId, registerTriggerElement, onTriggerClick, onTriggerKeyDown } = useMenuContext();\n\n\tif (mode !== \"click\") {\n\t\tthrow new Error(\"DropdownMenu.Trigger must be used within <DropdownMenu>\");\n\t}\n\n\treturn cloneElement(children, {\n\t\tid: children.props.id ?? triggerId,\n\t\tref: (node: HTMLElement | null) => {\n\t\t\tconst childRef = (children.props as { ref?: Ref<HTMLElement> }).ref;\n\t\t\tassignRef(childRef, node);\n\t\t\tregisterTriggerElement(node);\n\t\t},\n\t\t\"aria-haspopup\": \"menu\",\n\t\t\"aria-expanded\": open,\n\t\t\"aria-controls\": open ? menuId : undefined,\n\t\tonClick: composeMouseHandlers(children.props.onClick, onTriggerClick),\n\t\tonKeyDown: composeKeyboardHandlers(children.props.onKeyDown, onTriggerKeyDown)\n\t});\n}\n","import React from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\n\nimport { DropdownMenuTrigger } from \"./DropdownMenuTrigger\";\nimport { MenuContent } from \"./MenuContent\";\nimport { MenuGroupLabel } from \"./MenuGroupLabel\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuRoot } from \"./MenuRoot\";\nimport { MenuSeparator } from \"./MenuSeparator\";\n\nexport interface DropdownMenuProps {\n\tchildren: React.ReactNode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nexport function DropdownMenu({ children, placement, open, defaultOpen, onOpenChange }: DropdownMenuProps) {\n\treturn (\n\t\t<MenuRoot mode=\"click\" placement={placement} open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n\t\t\t{children}\n\t\t</MenuRoot>\n\t);\n}\n\nDropdownMenu.Trigger = DropdownMenuTrigger;\nDropdownMenu.Content = MenuContent;\nDropdownMenu.Item = MenuItem;\nDropdownMenu.Separator = MenuSeparator;\nDropdownMenu.GroupLabel = MenuGroupLabel;\n"],"mappings":"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"}
@@ -0,0 +1,401 @@
1
+ import { PolymorphicComponent as e } from "../polymorphic/index.js";
2
+ import { n as t, r as n, t as r } from "./responsiveLayout-D2mtCDdh.js";
3
+ import { cn as i } from "@ryuzaki13/react-foundation-lib/utils";
4
+ import { jsx as a } from "react/jsx-runtime";
5
+ import { resolveProps as o } from "@ryuzaki13/react-foundation-lib/media";
6
+ var s = {
7
+ container: "ZNPIAt",
8
+ inline: "FOfB6f",
9
+ row: "S3zmDT",
10
+ column: "ZFdq8E",
11
+ rowReverse: "VAzJwr",
12
+ columnReverse: "-U1mun",
13
+ wrap: "_4ZMtr-",
14
+ nowrap: "SKOoTV",
15
+ wrapReverse: "sSe6vs",
16
+ alignStart: "_3K-dKm",
17
+ alignCenter: "-Pfy-z",
18
+ alignEnd: "beSYgR",
19
+ alignStretch: "Ewhv1G",
20
+ alignBaseline: "JXvBB6",
21
+ justifyStart: "hN3T0k",
22
+ justifyCenter: "KKCJ5o",
23
+ justifyEnd: "MnX1Le",
24
+ justifyStretch: "Hom9eH",
25
+ justifyBetween: "Oujm4J",
26
+ justifyAround: "_2ttx6l",
27
+ justifyEvenly: "QEwI8b",
28
+ alignContentStart: "_7GQOS7",
29
+ alignContentCenter: "_2IOpAA",
30
+ alignContentEnd: "fZOYKH",
31
+ alignContentStretch: "_01H9Wl",
32
+ alignContentBetween: "GiMq3P",
33
+ alignContentAround: "tfwckC",
34
+ alignContentEvenly: "_9tNYb7",
35
+ gapNone: "PoehYn",
36
+ gapRowXs: "D9yh46",
37
+ gapRowSm: "B5WUhS",
38
+ gapRowMd: "KfUmo4",
39
+ gapRowLg: "m-8JGj",
40
+ gapRowXl: "zFcs1z",
41
+ gapColumnXs: "_0wKkFA",
42
+ gapColumnSm: "VQY6wh",
43
+ gapColumnMd: "csJmh7",
44
+ gapColumnLg: "_-8r3Oj",
45
+ gapColumnXl: "sCELJe",
46
+ gapXs: "NrH1WE",
47
+ gapSm: "IIgbrj",
48
+ gapMd: "alT7CJ",
49
+ gapLg: "TBFK23",
50
+ gapXl: "JR1URZ",
51
+ item: "i1imd3",
52
+ grow: "IVZ-ii",
53
+ grow0: "zhghPS",
54
+ shrink: "-A4gJM",
55
+ shrink0: "_3Q-lT-",
56
+ basis0: "YSg8P9",
57
+ basisAuto: "RMXnTk",
58
+ flex0: "YyYE7z",
59
+ flex1: "LD3bM5",
60
+ alignSelfStart: "HpcoTp",
61
+ alignSelfCenter: "E7ItD3",
62
+ alignSelfEnd: "v0JFEC",
63
+ alignSelfStretch: "pmMEmH",
64
+ alignSelfBaseline: "qevFHG",
65
+ justifySelfCenter: "OTPY33",
66
+ justifySelfEnd: "AjRxTP",
67
+ justifySelfStretch: "_1YaZWf",
68
+ inlineLaptop: "h8sKcJ",
69
+ rowLaptop: "EUJecf",
70
+ columnLaptop: "zEQAPO",
71
+ rowReverseLaptop: "kOLOp6",
72
+ columnReverseLaptop: "qGEKt4",
73
+ wrapLaptop: "vNYDuf",
74
+ nowrapLaptop: "qz-NS3",
75
+ wrapReverseLaptop: "_0lrAmc",
76
+ alignStartLaptop: "x6-YAm",
77
+ alignCenterLaptop: "MF6add",
78
+ alignEndLaptop: "Uw9-D7",
79
+ alignStretchLaptop: "-W34R9",
80
+ alignBaselineLaptop: "rGOI6P",
81
+ justifyStartLaptop: "UDgln-",
82
+ justifyCenterLaptop: "hEMu8f",
83
+ justifyEndLaptop: "HAQUIa",
84
+ justifyStretchLaptop: "Rbniid",
85
+ justifyBetweenLaptop: "_9202GY",
86
+ justifyAroundLaptop: "FyTjsA",
87
+ justifyEvenlyLaptop: "lOegeV",
88
+ alignContentStartLaptop: "T9ip-k",
89
+ alignContentCenterLaptop: "wBLgS-",
90
+ alignContentEndLaptop: "Df7tb5",
91
+ alignContentStretchLaptop: "FZx5EV",
92
+ alignContentBetweenLaptop: "EAJ92O",
93
+ alignContentAroundLaptop: "IffcQv",
94
+ alignContentEvenlyLaptop: "C-fCxs",
95
+ gapNoneLaptop: "NWlKDi",
96
+ gapRowXsLaptop: "_28RT-I",
97
+ gapRowSmLaptop: "_05hHvi",
98
+ gapRowMdLaptop: "hS40ci",
99
+ gapRowLgLaptop: "xtxY1s",
100
+ gapRowXlLaptop: "Az8-Zf",
101
+ gapColumnXsLaptop: "VTd-eD",
102
+ gapColumnSmLaptop: "Q0P5BV",
103
+ gapColumnMdLaptop: "Z7IFCy",
104
+ gapColumnLgLaptop: "DKBGbm",
105
+ gapColumnXlLaptop: "x98WeE",
106
+ gapXsLaptop: "tJ9QUJ",
107
+ gapSmLaptop: "FXh4HN",
108
+ gapMdLaptop: "QXXaKA",
109
+ gapLgLaptop: "rkrhL8",
110
+ gapXlLaptop: "tSFdyv",
111
+ growLaptop: "Fr4A1Y",
112
+ grow0Laptop: "GKFm03",
113
+ shrinkLaptop: "y8wkOE",
114
+ shrink0Laptop: "OahlS3",
115
+ basis0Laptop: "a1RAMB",
116
+ basisAutoLaptop: "u0hBvI",
117
+ flex0Laptop: "g-43lS",
118
+ flex1Laptop: "nFfEF-",
119
+ alignSelfStartLaptop: "mdKw6y",
120
+ alignSelfCenterLaptop: "BF7zfl",
121
+ alignSelfEndLaptop: "boLcLl",
122
+ alignSelfStretchLaptop: "OdJ5Xa",
123
+ alignSelfBaselineLaptop: "zofh9x",
124
+ justifySelfCenterLaptop: "JHY5S5",
125
+ justifySelfEndLaptop: "qTrpqi",
126
+ justifySelfStretchLaptop: "HMgTs5",
127
+ inlineTablet: "YaQnnc",
128
+ rowTablet: "RCVZf5",
129
+ columnTablet: "GFey-Y",
130
+ rowReverseTablet: "e2EJKV",
131
+ columnReverseTablet: "n1Uq9G",
132
+ wrapTablet: "LWpwOy",
133
+ nowrapTablet: "ehGzOa",
134
+ wrapReverseTablet: "r-2iBu",
135
+ alignStartTablet: "XEN-fY",
136
+ alignCenterTablet: "_9TQ19r",
137
+ alignEndTablet: "CnnWGH",
138
+ alignStretchTablet: "cIGzo3",
139
+ alignBaselineTablet: "UW1YJu",
140
+ justifyStartTablet: "JdJLvj",
141
+ justifyCenterTablet: "AnERwW",
142
+ justifyEndTablet: "uQo6t-",
143
+ justifyStretchTablet: "_88qjNv",
144
+ justifyBetweenTablet: "s-nDD1",
145
+ justifyAroundTablet: "_7PKUpw",
146
+ justifyEvenlyTablet: "pbOeSL",
147
+ alignContentStartTablet: "Fo2B1k",
148
+ alignContentCenterTablet: "Sihwku",
149
+ alignContentEndTablet: "ldtMHx",
150
+ alignContentStretchTablet: "zzbSb6",
151
+ alignContentBetweenTablet: "nocfyp",
152
+ alignContentAroundTablet: "_9nJV19",
153
+ alignContentEvenlyTablet: "yHZKMC",
154
+ gapNoneTablet: "L5-3lf",
155
+ gapRowXsTablet: "WUIFMv",
156
+ gapRowSmTablet: "V1CLd1",
157
+ gapRowMdTablet: "_436IH3",
158
+ gapRowLgTablet: "_6WF6Vf",
159
+ gapRowXlTablet: "OCSmFM",
160
+ gapColumnXsTablet: "MnDe3k",
161
+ gapColumnSmTablet: "KxsIWL",
162
+ gapColumnMdTablet: "AXoc7k",
163
+ gapColumnLgTablet: "dAN1Hh",
164
+ gapColumnXlTablet: "M-dwJx",
165
+ gapXsTablet: "HhMr-X",
166
+ gapSmTablet: "_7Tvx-6",
167
+ gapMdTablet: "wIsj0l",
168
+ gapLgTablet: "Nhlwg5",
169
+ gapXlTablet: "t6RRi6",
170
+ growTablet: "ty-ZCz",
171
+ grow0Tablet: "LzByUx",
172
+ shrinkTablet: "kNaP3V",
173
+ shrink0Tablet: "Bij8iq",
174
+ basis0Tablet: "lW-4hL",
175
+ basisAutoTablet: "_4i06KM",
176
+ flex0Tablet: "-cYFdV",
177
+ flex1Tablet: "_79S1cg",
178
+ alignSelfStartTablet: "gmGQrS",
179
+ alignSelfCenterTablet: "CX2H8J",
180
+ alignSelfEndTablet: "xhnwz-",
181
+ alignSelfStretchTablet: "uRjbzW",
182
+ alignSelfBaselineTablet: "_9x1kcy",
183
+ justifySelfCenterTablet: "u-uM8Z",
184
+ justifySelfEndTablet: "_2KzO8R",
185
+ justifySelfStretchTablet: "WjqWD6",
186
+ inlineMobile: "znoElO",
187
+ rowMobile: "DMEw8B",
188
+ columnMobile: "r-bFx5",
189
+ rowReverseMobile: "AwOAcQ",
190
+ columnReverseMobile: "ZHhebN",
191
+ wrapMobile: "zrKdj8",
192
+ nowrapMobile: "eoYb0e",
193
+ wrapReverseMobile: "r6zrRe",
194
+ alignStartMobile: "ChkJ3k",
195
+ alignCenterMobile: "nvY29n",
196
+ alignEndMobile: "_93CZ6G",
197
+ alignStretchMobile: "ywXAyw",
198
+ alignBaselineMobile: "hN2rsO",
199
+ justifyStartMobile: "LcG5ii",
200
+ justifyCenterMobile: "_63vy9c",
201
+ justifyEndMobile: "bIIfxE",
202
+ justifyStretchMobile: "C-nd7-",
203
+ justifyBetweenMobile: "_0nrTnd",
204
+ justifyAroundMobile: "Jky0WE",
205
+ justifyEvenlyMobile: "gKAW-V",
206
+ alignContentStartMobile: "PXOwA9",
207
+ alignContentCenterMobile: "YRJFor",
208
+ alignContentEndMobile: "dTK2lq",
209
+ alignContentStretchMobile: "wFO8V9",
210
+ alignContentBetweenMobile: "qk0yNr",
211
+ alignContentAroundMobile: "O8x0U6",
212
+ alignContentEvenlyMobile: "zyeYcD",
213
+ gapNoneMobile: "YiG5Fv",
214
+ gapRowXsMobile: "ybBbZf",
215
+ gapRowSmMobile: "PqejTF",
216
+ gapRowMdMobile: "Nj-vgU",
217
+ gapRowLgMobile: "Yxx6Xj",
218
+ gapRowXlMobile: "p1wvSP",
219
+ gapColumnXsMobile: "jnqumw",
220
+ gapColumnSmMobile: "R1ATNj",
221
+ gapColumnMdMobile: "uR4Zfj",
222
+ gapColumnLgMobile: "cwtPny",
223
+ gapColumnXlMobile: "EXW3Up",
224
+ gapXsMobile: "_9j0WX0",
225
+ gapSmMobile: "ptNzO2",
226
+ gapMdMobile: "mMi-8i",
227
+ gapLgMobile: "X--rHJ",
228
+ gapXlMobile: "-NW9yB",
229
+ growMobile: "Bmucm3",
230
+ grow0Mobile: "lt13iC",
231
+ shrinkMobile: "eojVh8",
232
+ shrink0Mobile: "X10WD8",
233
+ basis0Mobile: "QV74l9",
234
+ basisAutoMobile: "v-YXqm",
235
+ flex0Mobile: "tbXFj-",
236
+ flex1Mobile: "ByqWlr",
237
+ alignSelfStartMobile: "RJY4rB",
238
+ alignSelfCenterMobile: "hXupbw",
239
+ alignSelfEndMobile: "GcpqRj",
240
+ alignSelfStretchMobile: "sRFAJL",
241
+ alignSelfBaselineMobile: "B1Jim9",
242
+ justifySelfCenterMobile: "SC-5Qi",
243
+ justifySelfEndMobile: "Hha0kG",
244
+ justifySelfStretchMobile: "_51eWo0",
245
+ center: "H-DHBq",
246
+ columnCenter: "JzIGGJ",
247
+ centerBetween: "aqYTBq"
248
+ }, c = [
249
+ "inline",
250
+ "row",
251
+ "column",
252
+ "rowReverse",
253
+ "columnReverse",
254
+ "wrap",
255
+ "nowrap",
256
+ "wrapReverse",
257
+ "align",
258
+ "justify",
259
+ "alignContent",
260
+ "gap",
261
+ "gapRow",
262
+ "gapColumn"
263
+ ], l = [
264
+ "flex0",
265
+ "flex1",
266
+ "grow",
267
+ "shrink",
268
+ "basis",
269
+ "alignSelf",
270
+ "justifySelf"
271
+ ], u = {
272
+ mobile: "Mobile",
273
+ tablet: "Tablet",
274
+ laptop: "Laptop"
275
+ };
276
+ function d(e, t) {
277
+ return s[t ? `${String(e)}${u[t]}` : e];
278
+ }
279
+ function f(e, t) {
280
+ let n = [];
281
+ return e.inline && n.push(d("inline", t)), e.row ? n.push(d("row", t)) : e.column ? n.push(d("column", t)) : e.rowReverse ? n.push(d("rowReverse", t)) : e.columnReverse && n.push(d("columnReverse", t)), e.wrap ? n.push(d("wrap", t)) : e.nowrap ? n.push(d("nowrap", t)) : e.wrapReverse && n.push(d("wrapReverse", t)), e.align && n.push(d(`align${e.align.charAt(0).toUpperCase() + e.align.slice(1)}`, t)), e.justify && n.push(d(`justify${e.justify.charAt(0).toUpperCase() + e.justify.slice(1)}`, t)), e.alignContent && n.push(d(`alignContent${e.alignContent.charAt(0).toUpperCase() + e.alignContent.slice(1)}`, t)), e.gap === "none" ? n.push(d("gapNone", t)) : e.gap && n.push(d(`gap${e.gap.charAt(0).toUpperCase() + e.gap.slice(1)}`, t)), e.gapRow && n.push(d(`gapRow${e.gapRow.charAt(0).toUpperCase() + e.gapRow.slice(1)}`, t)), e.gapColumn && n.push(d(`gapColumn${e.gapColumn.charAt(0).toUpperCase() + e.gapColumn.slice(1)}`, t)), n;
282
+ }
283
+ function p(e, t) {
284
+ let n = [];
285
+ return e.flex0 && n.push(d("flex0", t)), e.flex1 && n.push(d("flex1", t)), !e.flex0 && !e.flex1 && (n.push(d(e.grow ? "grow" : "grow0", t)), n.push(d(e.shrink === !1 ? "shrink0" : "shrink", t)), e.basis === "0" ? n.push(d("basis0", t)) : e.basis === "auto" && n.push(d("basisAuto", t))), e.alignSelf && n.push(d(`alignSelf${e.alignSelf.charAt(0).toUpperCase() + e.alignSelf.slice(1)}`, t)), e.justifySelf && n.push(d(`justifySelf${e.justifySelf.charAt(0).toUpperCase() + e.justifySelf.slice(1)}`, t)), n;
286
+ }
287
+ function m(e) {
288
+ let i = c.map((t) => e[t]), a = [s.container];
289
+ if (!t(i)) return a.push(...f(o(e, "laptop", c))), a.filter(Boolean).join(" ");
290
+ let l = n(e, c);
291
+ for (let e of r) a.push(...f(l[e], e));
292
+ return a.filter(Boolean).join(" ");
293
+ }
294
+ function h(e) {
295
+ let i = l.map((t) => e[t]), a = [s.item];
296
+ if (!t(i)) return a.push(...p(o(e, "laptop", l))), a.filter(Boolean).join(" ");
297
+ let c = n(e, l);
298
+ for (let e of r) a.push(...p(c[e], e));
299
+ return a.filter(Boolean).join(" ");
300
+ }
301
+ function g(e) {
302
+ return s[e];
303
+ }
304
+ //#endregion
305
+ //#region src/flex/FlexContainer.tsx
306
+ function _({ ref: t, children: n, className: r = "", as: i, style: o, inline: s, row: c, column: l, rowReverse: u, columnReverse: d, wrap: f, nowrap: p, wrapReverse: h, align: g, justify: _, alignContent: v, gap: y, gapRow: b, gapColumn: x, ...S }) {
307
+ let C = [m({
308
+ inline: s,
309
+ row: c,
310
+ column: l,
311
+ rowReverse: u,
312
+ columnReverse: d,
313
+ wrap: f,
314
+ nowrap: p,
315
+ wrapReverse: h,
316
+ align: g,
317
+ justify: _,
318
+ alignContent: v,
319
+ gap: y,
320
+ gapRow: b,
321
+ gapColumn: x
322
+ }), r].filter(Boolean).join(" ");
323
+ return /* @__PURE__ */ a(e, {
324
+ as: i,
325
+ ...S,
326
+ ref: t,
327
+ className: C,
328
+ style: o,
329
+ children: n
330
+ });
331
+ }
332
+ _.displayName = "FlexContainer";
333
+ //#endregion
334
+ //#region src/flex/FlexItem.tsx
335
+ function v({ ref: t, children: n, className: r = "", as: i, style: o, flex0: s, flex1: c, grow: l, shrink: u, basis: d, alignSelf: f, justifySelf: p, ...m }) {
336
+ let g = [h({
337
+ flex0: s,
338
+ flex1: c,
339
+ grow: l,
340
+ shrink: u,
341
+ basis: d,
342
+ alignSelf: f,
343
+ justifySelf: p
344
+ }), r].filter(Boolean).join(" ");
345
+ return /* @__PURE__ */ a(e, {
346
+ as: i,
347
+ ...m,
348
+ ref: t,
349
+ className: g,
350
+ style: o,
351
+ children: n
352
+ });
353
+ }
354
+ v.displayName = "FlexItem";
355
+ //#endregion
356
+ //#region src/flex/PredefinedFlex.tsx
357
+ function y({ ref: e, variant: t, children: n, className: r = "", ...i }) {
358
+ let o = [g(t ?? ""), r].filter(Boolean).join(" ");
359
+ return /* @__PURE__ */ a(_, {
360
+ ref: e,
361
+ className: o,
362
+ ...i,
363
+ children: n
364
+ });
365
+ }
366
+ y.displayName = "PredefinedFlex";
367
+ //#endregion
368
+ //#region src/flex/Flex.tsx
369
+ var b = {
370
+ Container: _,
371
+ Item: v,
372
+ Predefined: y
373
+ };
374
+ //#endregion
375
+ //#region src/flex/FlexCenter.tsx
376
+ function x({ className: e, minHeight: t, children: n, style: r, ...o }) {
377
+ let s = t === void 0 ? r : {
378
+ ...r,
379
+ minHeight: t
380
+ };
381
+ return /* @__PURE__ */ a("div", {
382
+ ...o,
383
+ className: i("flexCenter h100", e),
384
+ style: s,
385
+ children: n
386
+ });
387
+ }
388
+ //#endregion
389
+ //#region src/flex/FlexSpacer.tsx
390
+ function S({ ref: e, ...t }) {
391
+ return /* @__PURE__ */ a(v, {
392
+ ...t,
393
+ ref: e,
394
+ flex1: !0
395
+ });
396
+ }
397
+ S.displayName = "FlexSpacer";
398
+ //#endregion
399
+ export { v as a, y as i, x as n, _ as o, b as r, S as t };
400
+
401
+ //# sourceMappingURL=flex-BhrQCH4I.js.map