@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.
- package/README.md +11 -0
- package/dist/badge/index.js +1 -1
- package/dist/barcode-scanner/index.js +1 -1
- package/dist/base-table/index.js +1 -1
- package/dist/chunks/{TextEditorLexicalClient-BQH41FFT.js → TextEditorLexicalClient-Cj6yjCGm.js} +3 -3
- package/dist/chunks/{TextEditorLexicalClient-BQH41FFT.js.map → TextEditorLexicalClient-Cj6yjCGm.js.map} +1 -1
- package/dist/chunks/{base-table-CacTH3BE.js → base-table-CoVXG2FT.js} +4 -4
- package/dist/chunks/{base-table-CacTH3BE.js.map → base-table-CoVXG2FT.js.map} +1 -1
- package/dist/chunks/{context-menu-BV8636Ou.js → context-menu-BlLesqpZ.js} +2 -2
- package/dist/chunks/{context-menu-BV8636Ou.js.map → context-menu-BlLesqpZ.js.map} +1 -1
- package/dist/chunks/flex-BhrQCH4I.js +401 -0
- package/dist/chunks/flex-BhrQCH4I.js.map +1 -0
- package/dist/chunks/grid-D6wPRCjx.js +394 -0
- package/dist/chunks/grid-D6wPRCjx.js.map +1 -0
- package/dist/chunks/{misc-BjdDK6mm.js → misc-Dcr24uDY.js} +2 -2
- package/dist/chunks/{misc-BjdDK6mm.js.map → misc-Dcr24uDY.js.map} +1 -1
- package/dist/chunks/{modal-CBGNsqrq.js → modal-DeABSKrb.js} +4 -4
- package/dist/chunks/{modal-CBGNsqrq.js.map → modal-DeABSKrb.js.map} +1 -1
- package/dist/chunks/{picker-DagDe9OH.js → picker-CWx7vPE8.js} +2 -2
- package/dist/chunks/{picker-DagDe9OH.js.map → picker-CWx7vPE8.js.map} +1 -1
- package/dist/chunks/responsiveLayout-D2mtCDdh.js +28 -0
- package/dist/chunks/responsiveLayout-D2mtCDdh.js.map +1 -0
- package/dist/chunks/{select-C-1U-ujV.js → select-CHBBo5fn.js} +2 -2
- package/dist/chunks/{select-C-1U-ujV.js.map → select-CHBBo5fn.js.map} +1 -1
- package/dist/chunks/{table-Cx__DvpN.js → table-Cm9NhT9K.js} +2 -2
- package/dist/chunks/{table-Cx__DvpN.js.map → table-Cm9NhT9K.js.map} +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/disclosure/index.js +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/expandable-action-panel/index.js +1 -1
- package/dist/flex/FlexContainer.d.ts +1 -1
- package/dist/flex/FlexContainer.d.ts.map +1 -1
- package/dist/flex/FlexItem.d.ts +1 -1
- package/dist/flex/FlexItem.d.ts.map +1 -1
- package/dist/flex/PredefinedFlex.d.ts +1 -1
- package/dist/flex/PredefinedFlex.d.ts.map +1 -1
- package/dist/flex/getFlexClasses.d.ts +5 -0
- package/dist/flex/getFlexClasses.d.ts.map +1 -0
- package/dist/flex/index.js +1 -1
- package/dist/floating-windows/FloatingWindow.d.ts +19 -0
- package/dist/floating-windows/FloatingWindow.d.ts.map +1 -0
- package/dist/floating-windows/FloatingWindowHeader.d.ts +14 -0
- package/dist/floating-windows/FloatingWindowHeader.d.ts.map +1 -0
- package/dist/floating-windows/FloatingWindows.d.ts +16 -0
- package/dist/floating-windows/FloatingWindows.d.ts.map +1 -0
- package/dist/floating-windows/FloatingWindowsBoundary.d.ts +10 -0
- package/dist/floating-windows/FloatingWindowsBoundary.d.ts.map +1 -0
- package/dist/floating-windows/FloatingWindowsProvider.d.ts +11 -0
- package/dist/floating-windows/FloatingWindowsProvider.d.ts.map +1 -0
- package/dist/floating-windows/index.d.ts +4 -0
- package/dist/floating-windows/index.d.ts.map +1 -0
- package/dist/floating-windows/index.js +576 -0
- package/dist/floating-windows/index.js.map +1 -0
- package/dist/floating-windows/lib/constrainFloatingWindowPosition.d.ts +8 -0
- package/dist/floating-windows/lib/constrainFloatingWindowPosition.d.ts.map +1 -0
- package/dist/floating-windows/lib/floatingWindowsStorage.d.ts +10 -0
- package/dist/floating-windows/lib/floatingWindowsStorage.d.ts.map +1 -0
- package/dist/floating-windows/lib/getFloatingWindowStyle.d.ts +5 -0
- package/dist/floating-windows/lib/getFloatingWindowStyle.d.ts.map +1 -0
- package/dist/floating-windows/lib/isFloatingWindowId.d.ts +3 -0
- package/dist/floating-windows/lib/isFloatingWindowId.d.ts.map +1 -0
- package/dist/floating-windows/lib/selectFloatingWindowCascadePosition.d.ts +8 -0
- package/dist/floating-windows/lib/selectFloatingWindowCascadePosition.d.ts.map +1 -0
- package/dist/floating-windows/lib/selectFloatingWindowRestoreFocus.d.ts +3 -0
- package/dist/floating-windows/lib/selectFloatingWindowRestoreFocus.d.ts.map +1 -0
- package/dist/floating-windows/model/FloatingWindowsContext.d.ts +4 -0
- package/dist/floating-windows/model/FloatingWindowsContext.d.ts.map +1 -0
- package/dist/floating-windows/model/createFloatingWindowsStore.d.ts +8 -0
- package/dist/floating-windows/model/createFloatingWindowsStore.d.ts.map +1 -0
- package/dist/floating-windows/model/floatingWindowMoveTypes.d.ts +27 -0
- package/dist/floating-windows/model/floatingWindowMoveTypes.d.ts.map +1 -0
- package/dist/floating-windows/model/floatingWindowsTypes.d.ts +40 -0
- package/dist/floating-windows/model/floatingWindowsTypes.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowFocus.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowFocus.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowMeasurements.d.ts +5 -0
- package/dist/floating-windows/model/useFloatingWindowMeasurements.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowMove.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowMove.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowSnapshot.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowSnapshot.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowsBounds.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowsBounds.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowsPersistence.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowsPersistence.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowsStore.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowsStore.d.ts.map +1 -0
- package/dist/grid/GridContainer.d.ts.map +1 -1
- package/dist/grid/GridItem.d.ts.map +1 -1
- package/dist/grid/getGridClasses.d.ts +12 -0
- package/dist/grid/getGridClasses.d.ts.map +1 -0
- package/dist/grid/index.js +1 -1
- package/dist/image/index.js +2 -2
- package/dist/layout-picker/index.js +1 -1
- package/dist/list/index.js +2 -2
- package/dist/listbox/index.js +1 -1
- package/dist/misc/index.js +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/multi-select/index.js +1 -1
- package/dist/notifications/index.js +10 -10
- package/dist/picker/index.js +1 -1
- package/dist/preset-range-date-input/index.js +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/responsive-layout/responsiveLayout.d.ts +17 -0
- package/dist/responsive-layout/responsiveLayout.d.ts.map +1 -0
- package/dist/select/index.js +1 -1
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/index.js +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tabs/index.js +1 -1
- package/dist/text-editor/index.js +2 -2
- package/dist/toolbar/index.js +2 -2
- package/dist/tree-select/index.js +1 -1
- package/dist/tree-table/index.js +1 -1
- package/package.json +5 -1
- package/storybook-static/assets/{Badge-DxGi2POg.js → Badge-CVgLMAJT.js} +1 -1
- package/storybook-static/assets/{Badge.stories-D6Em1fN8.js → Badge.stories-KeadkKsz.js} +1 -1
- package/storybook-static/assets/{BadgeList-DemBuxUQ.js → BadgeList-_jBtMkE3.js} +1 -1
- package/storybook-static/assets/{BarcodeScannerDialog.stories-Bxnb0wH3.js → BarcodeScannerDialog.stories-J9XDExKK.js} +1 -1
- package/storybook-static/assets/{Button-dlGIhkja.js → Button-C-uRygWz.js} +1 -1
- package/storybook-static/assets/{Button-9vGUTM3m.js → Button-DegBPiAl.js} +1 -1
- package/storybook-static/assets/{Button.stories-WOE1_ovM.js → Button.stories-Ds4zCq_9.js} +1 -1
- package/storybook-static/assets/{CalendarView-Co2EiQf9.js → CalendarView-iyr_ipPy.js} +1 -1
- package/storybook-static/assets/{CheckBox-CwJshQX2.js → CheckBox-B0zrARHA.js} +1 -1
- package/storybook-static/assets/{CheckBox-Dpg2QsvS.js → CheckBox-nBqHJGY9.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-K8wng7-q.js → CheckBox.stories-CxO9FwA7.js} +1 -1
- package/storybook-static/assets/Color-6AOWCN3U-Dzuzn5Yr.js +1 -0
- package/storybook-static/assets/{ContextMenu-DbmUWR4I.js → ContextMenu-BC5OXqVj.js} +1 -1
- package/storybook-static/assets/{ContextMenu-C1zzFMni.js → ContextMenu-CnZu58rQ.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-D0tclMo1.js → ContextMenu.stories-CPdTdVV7.js} +1 -1
- package/storybook-static/assets/{DateInput-BDxg1E80.js → DateInput-B5j7kofa.js} +1 -1
- package/storybook-static/assets/{DateInput-DxpENevn.js → DateInput-CuYe4WXO.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-De_AOkrK.js → DateInput.stories-C4ZaIPUG.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-CD7jNInU.js → DateRangePresetSelect-CbDK9t1J.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-CD8qu2LL.js → DateRangePresetSelect-Cg6yPY0K.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-phHkk3Q1.js → DateRangePresetSelect.stories-DPWUHjXu.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect-Bdv505U3.js → DeprecatedMultiSelect-DCReLsN-.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect-B4VEjiTj.js → DeprecatedMultiSelect-DkGsEVRD.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect.stories-DdPzDJjx.js → DeprecatedMultiSelect.stories-tbYFDSML.js} +1 -1
- package/storybook-static/assets/{Detail-BoazSWw_.js → Detail-CtVpK6xU.js} +1 -1
- package/storybook-static/assets/{Detail.stories-Cc9fEkdx.js → Detail.stories-zAQfXGuT.js} +1 -1
- package/storybook-static/assets/{Dialog-ieE9mpAU.js → Dialog-B9ltl4hS.js} +1 -1
- package/storybook-static/assets/{Dialog-VJ62BLtp.js → Dialog-JetMtpYt.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-CUyAMGoD.js → Dialog.stories-tJymN3yq.js} +1 -1
- package/storybook-static/assets/{Disclosure-BP8VhRCA.js → Disclosure-j-RCrVFs.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-DwIo-o1J.js → Disclosure.stories-4Jj2XNlo.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-LjgDW-Z6.js → DisclosureGroup-CM7GlGI4.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-BjRaiNDG.js → DocsRenderer-JROSPFPF-DevtpZi5.js} +1 -1
- package/storybook-static/assets/{DropZone-BMT4jv2L.js → DropZone-Bwo7NG5D.js} +1 -1
- package/storybook-static/assets/{DropZone-Dg3GZxY8.js → DropZone-CPrhOtX-.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-szOGIPHx.js → DropZone.stories-VyNhIaxw.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-B0EI5ePH.js → DropdownMenu-DMWZzFK1.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-D_qy2JID.js → ExpandableActionPanel-DmKB3xVB.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-wdmlBDmK.js → ExpandableActionPanel.stories-Kh_OSEIl.js} +1 -1
- package/storybook-static/assets/Flex-BZKhuaao.js +81 -0
- package/storybook-static/assets/Flex.stories-CrHxjVCH.js +454 -0
- package/storybook-static/assets/FlexContainer-DGc37vCr.js +1 -0
- package/storybook-static/assets/{FlexItem-BE_4juAd.js → FlexItem-DYv72TvP.js} +2 -2
- package/storybook-static/assets/{FloatingPopover-DHxMCBdS.js → FloatingPopover-Bd3b1U8c.js} +1 -1
- package/storybook-static/assets/FloatingWindows-C2FJO6ij.css +1 -0
- package/storybook-static/assets/FloatingWindows.stories-Cs_i092m.js +13 -0
- package/storybook-static/assets/FormattedTableCell-CdlWquoj.js +15 -0
- package/storybook-static/assets/Grid-DIKudfVu.js +84 -0
- package/storybook-static/assets/{Grid-0NnWfTJ7.js → Grid-DUcSdqsI.js} +2 -2
- package/storybook-static/assets/Grid.stories-sZUaIp7v.js +657 -0
- package/storybook-static/assets/{GridContainer-BHSfIiml.js → GridContainer-C5r-VTTG.js} +2 -2
- package/storybook-static/assets/GridContainer-DgBuOs_1.css +1 -0
- package/storybook-static/assets/{ImageCropper.stories-Cf5ogf7p.js → ImageCropper.stories-Bk3SF90a.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-CsN1-IP6.js → ImageRenderer-CM-YetP0.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-DIC-UR-l.js → ImageRenderer.stories-CMqKyVuX.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-DT6QZR-1.js → ImageView.stories-9IjWDUev.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-DxpCKbpk.js → ImageViewer.stories-D-Zzvzh3.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-COhNh4_y.js → ImageViewerRuntime-BRWmVnG3.js} +1 -1
- package/storybook-static/assets/{Input-BJ3sPHt1.js → Input-BaEhNNL0.js} +1 -1
- package/storybook-static/assets/{Input-D2eqioLp.js → Input-YuUUu0DD.js} +1 -1
- package/storybook-static/assets/{Input.stories-MtAx6H2F.js → Input.stories-CoJY4vR8.js} +1 -1
- package/storybook-static/assets/{InputDateTime-CNNqhoo6.js → InputDateTime-CPlDTMTI.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-DT3CvxRy.js → InputDateTime.stories-DaOA4pFM.js} +1 -1
- package/storybook-static/assets/{InputFile-RfdomZEH.js → InputFile-7PMO3B4Q.js} +1 -1
- package/storybook-static/assets/{InputFile-DiI_0QV5.js → InputFile-D2HPvbt_.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-CiqGBnkS.js → InputFile.stories-CD4sJtXF.js} +1 -1
- package/storybook-static/assets/{InputFiles-CBrPDNlV.js → InputFiles-DSOs_hpc.js} +1 -1
- package/storybook-static/assets/{InputFiles-CgyVXpI1.js → InputFiles-DwgBtqPe.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-QHNxJjiV.js → InputFiles.stories-B2zPOUXW.js} +1 -1
- package/storybook-static/assets/{InputFilesList-BEIBTAEK.js → InputFilesList-DWtH6HFC.js} +1 -1
- package/storybook-static/assets/{InputImage-BBJr8TWl.js → InputImage-Cke0I8XV.js} +1 -1
- package/storybook-static/assets/{InputImage-vXbhnE46.js → InputImage-CnTU-bKF.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-VoVU0QZB.js → InputImage.stories-CadyFqUh.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-CjkX3vU6.js → InteractiveComponents-cNgymLXT.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-Gc_Ju4xJ.js → InteractiveComponents.stories-c5kIdj-d.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-DwpDr_Is.js → LayoutPicker-BydBdeCh.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-ONnrtLDR.js → LayoutPicker-u5tv4tmF.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-B-HIq6DD.js → LayoutPicker.stories-ZcTgJxX5.js} +1 -1
- package/storybook-static/assets/{Listbox-XIi0yHgl.js → Listbox-CaBDvhDA.js} +1 -1
- package/storybook-static/assets/{Listbox-DoF5nZIP.js → Listbox-CzmfAAEG.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-DT8FJQ3z.js → Listbox.stories-B_tFWmxp.js} +1 -1
- package/storybook-static/assets/{Modal-C3F4r2UA.js → Modal-CIptTLdh.js} +1 -1
- package/storybook-static/assets/{Modal-Ml7EuSvu.js → Modal-DIJuHLSp.js} +1 -1
- package/storybook-static/assets/{Modal.stories-DRwnYxst.js → Modal.stories-BAh1Lzf0.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-CmqdB_ni.js → ModalManagerProvider-DH2lt3jw.js} +1 -1
- package/storybook-static/assets/{MultiSelect-CAg-L0dM.js → MultiSelect-CbcU2Cam.js} +1 -1
- package/storybook-static/assets/{MultiSelect-B1QokJ3C.js → MultiSelect-OPkS-VFp.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-Dfh2Lp0N.js → MultiSelect.stories-jghnBwe0.js} +1 -1
- package/storybook-static/assets/{MultiSelectCore-GRGtCBO1.js → MultiSelectCore-AgK9lN-8.js} +1 -1
- package/storybook-static/assets/{NoData-BZhNhaYV.js → NoData-CRi9NzcI.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-BUPLrDM3.js → NotificationsHost-C8sCDEzY.js} +9 -9
- package/storybook-static/assets/{NotificationsHost.stories-CKbR-_nq.js → NotificationsHost.stories-BxpWtMHl.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-CDW0B1az.js → ODataMultiSelect-Cjptiw3k.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-BbKrxs7t.js → ODataMultiSelect.stories-B-tBcHkU.js} +2 -2
- package/storybook-static/assets/{ODataSelect-C5G0dCnn.js → ODataSelect-BdVlf2WW.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-DcX50cyD.js → ODataSelect.stories-DZv8DgW4.js} +2 -2
- package/storybook-static/assets/{ODataTreeMultiSelect-4mTjhnlJ.js → ODataTreeMultiSelect-B83uLKnT.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-B-4UUg5l.js → ODataTreeMultiSelect.stories-k92VjXYz.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-D-wcx2OH.js → ODataTreeSelect-CkZeBBoA.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-uB_sG4ga.js → ODataTreeSelect.stories-COweaWEr.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-DQI5POnJ.js → OneStepScroller-dD9RSWvg.js} +1 -1
- package/storybook-static/assets/{Option-CrEWqsFF.js → Option-lTkoUcHa.js} +1 -1
- package/storybook-static/assets/{OptionButton-BEQ2oSPf.js → OptionButton-Bt6YtqRZ.js} +1 -1
- package/storybook-static/assets/{OptionContent-C8S7IjI3.js → OptionContent-C7Zoef1L.js} +1 -1
- package/storybook-static/assets/{OptionContentContainer-ljQts_jY.js → OptionContentContainer-xpO-es_t.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-DuqatGdk.js → PeriodSelect-CmGjITS0.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-BTdDU06N.js → PeriodSelect-DkGZmPFu.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-CX4DSFJG.js → PeriodSelect.stories-BxkZen1s.js} +1 -1
- package/storybook-static/assets/{PickerField-Cgcm-Y5T.js → PickerField-vwGcXNU3.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-DWe2uX0K.js → PickerTriggerActions-BVO2pwu2.js} +1 -1
- package/storybook-static/assets/{Popover-C55I0GTn.js → Popover-DU0wD6MT.js} +1 -1
- package/storybook-static/assets/{Popover-0QfSvwRS.js → Popover-PRWJVARx.js} +1 -1
- package/storybook-static/assets/{Popover.stories-Bgjomdgb.js → Popover.stories-CXKDCIfT.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-C-vQa5BZ.js → PresetRangeDateInput-B1oR9Z-A.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-Cai5fvRb.js → PresetRangeDateInput-DUcxF5lh.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-CWtIukRG.js → PresetRangeDateInput.stories-CAPHV6_P.js} +1 -1
- package/storybook-static/assets/{PresetSelect-HqtmoRLb.js → PresetSelect-Hrow5Qbz.js} +1 -1
- package/storybook-static/assets/{README-DfVaZ9rz.js → README-AWtoYOeO.js} +1 -1
- package/storybook-static/assets/{README-CxsbsDff.js → README-BB_tSzAG.js} +1 -1
- package/storybook-static/assets/{README-QWeHqOh2.js → README-BCBBtU0T.js} +1 -1
- package/storybook-static/assets/{README-BFjx8Jxa.js → README-BCXjh3I1.js} +1 -1
- package/storybook-static/assets/{README-CxMmicr4.js → README-BDdhvdKa.js} +1 -1
- package/storybook-static/assets/{README-UC0a4Wh9.js → README-BEUQd7JO.js} +1 -1
- package/storybook-static/assets/{README-BEypAdTE.js → README-BIHT1kGT.js} +1 -1
- package/storybook-static/assets/{README-CdnQbIDn.js → README-BJXCE3us.js} +1 -1
- package/storybook-static/assets/{README-B5wBU6mA.js → README-BLog3wnj.js} +1 -1
- package/storybook-static/assets/{README-C2xdMez4.js → README-BPOSX1IH.js} +1 -1
- package/storybook-static/assets/{README-DUShQLyj.js → README-BwSjP1rm.js} +1 -1
- package/storybook-static/assets/{README-BzIE9gSk.js → README-C8-H1dVZ.js} +1 -1
- package/storybook-static/assets/{README-CxEn3Q3j.js → README-CDYORt73.js} +1 -1
- package/storybook-static/assets/{README-DitsKP8x.js → README-CDq7upsw.js} +1 -1
- package/storybook-static/assets/{README-eRuOqnaA.js → README-CF5B-uBm.js} +1 -1
- package/storybook-static/assets/{README-DF3qw7Jo.js → README-CF79JAmm.js} +1 -1
- package/storybook-static/assets/{README-Bk6x-7we.js → README-CGalXaw7.js} +1 -1
- package/storybook-static/assets/{README-RGQ7HMZR.js → README-CHgqsGMV.js} +1 -1
- package/storybook-static/assets/{README-B5Lc1yT4.js → README-COzEPNJ8.js} +1 -1
- package/storybook-static/assets/{README-ClH6EKpO.js → README-CRfg4Opx.js} +1 -1
- package/storybook-static/assets/{README-C6ryhIOV.js → README-CRk_ElRL.js} +1 -1
- package/storybook-static/assets/{README-SafL9Bz5.js → README-CTbRRHIT.js} +1 -1
- package/storybook-static/assets/{README-2lBx3R6g.js → README-C_hI3IVn.js} +1 -1
- package/storybook-static/assets/{README-DycS0KDV.js → README-CbCzYjzO.js} +1 -1
- package/storybook-static/assets/{README-mxJzt2Xo.js → README-Cb_U_ZYK.js} +1 -1
- package/storybook-static/assets/{README-B8RrtmaZ.js → README-CdDd6nD8.js} +1 -1
- package/storybook-static/assets/{README-BqMpFJKP.js → README-Cu3r4RYC.js} +1 -1
- package/storybook-static/assets/{README-DFGUcAOx.js → README-CxBqJjI3.js} +1 -1
- package/storybook-static/assets/{README-QZrJnhYv.js → README-D0EguYwa.js} +1 -1
- package/storybook-static/assets/{README-Brd9di5k.js → README-DA8e0atn.js} +1 -1
- package/storybook-static/assets/{README-DAozVWEl.js → README-DUVORqie.js} +1 -1
- package/storybook-static/assets/{README-Dk7syFq-.js → README-DYjyXvbd.js} +1 -1
- package/storybook-static/assets/{README-C1BajdmC.js → README-D_iA9J4Q.js} +1 -1
- package/storybook-static/assets/{README-BHrzFd3i.js → README-De02nG6s.js} +1 -1
- package/storybook-static/assets/{README-C702dbsS.js → README-DjM1av8U.js} +1 -1
- package/storybook-static/assets/{README-BUKlvu1v.js → README-DmT1wyUb.js} +1 -1
- package/storybook-static/assets/{README-B41_J33v.js → README-DnpmMCNN.js} +1 -1
- package/storybook-static/assets/{README-B1IMnjhg.js → README-FJ4JNfan.js} +1 -1
- package/storybook-static/assets/{README-C8oftQ5c.js → README-JqCoy91R.js} +1 -1
- package/storybook-static/assets/{README-BNLmyDfy.js → README-JrppLPED.js} +1 -1
- package/storybook-static/assets/{README-_K214jGV.js → README-MUzkojYd.js} +1 -1
- package/storybook-static/assets/{README-DlBBM40-.js → README-O1ww7U1S.js} +1 -1
- package/storybook-static/assets/{README-BRJHDPaP.js → README-SkcZXYo1.js} +1 -1
- package/storybook-static/assets/{README-CdMmAh_G.js → README-UfCsOg0n.js} +1 -1
- package/storybook-static/assets/{README-DBpH2nf1.js → README-Xu3cmYZg.js} +1 -1
- package/storybook-static/assets/{README-BkFTTVE2.js → README-bcnh89ek.js} +1 -1
- package/storybook-static/assets/{README-Bl1rJEQE.js → README-ctVjdbq7.js} +1 -1
- package/storybook-static/assets/{README-CUUPvXQd.js → README-diVWU6bQ.js} +1 -1
- package/storybook-static/assets/{README-kvlO41U2.js → README-f5UPnPkY.js} +1 -1
- package/storybook-static/assets/{README-BTk3TSh8.js → README-mq6pyk4G.js} +1 -1
- package/storybook-static/assets/{README-BhvWyeL_.js → README-o-a96Aib.js} +1 -1
- package/storybook-static/assets/{README-BgbNoj4_.js → README-w3_FegOo.js} +1 -1
- package/storybook-static/assets/{README-CM5yZ6jf.js → README-zelg96nd.js} +1 -1
- package/storybook-static/assets/{RadioButton-BKsBk3--.js → RadioButton-BztQMLNR.js} +1 -1
- package/storybook-static/assets/{RadioButton-CsM-RT0A.js → RadioButton-DUOPHyRt.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-D5PGiHj5.js → RadioButton.stories-BOE5cGej.js} +1 -1
- package/storybook-static/assets/{RadioGroup-B3bLu8Qg.js → RadioGroup-CDqbnv4J.js} +1 -1
- package/storybook-static/assets/{RadioGroup-BZY_jeje.js → RadioGroup-QICEWbjz.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-DMfcZFp0.js → RadioGroup.stories-f2qU7hhM.js} +1 -1
- package/storybook-static/assets/ResponsiveLayoutPreview-BWBLsr8u.js +1 -0
- package/storybook-static/assets/ResponsiveLayoutPreview-CyXawjCA.css +1 -0
- package/storybook-static/assets/{Scrollable-DdXQmkMU.js → Scrollable-CAnjXb6_.js} +1 -1
- package/storybook-static/assets/{Scrollable-DLyQwImF.js → Scrollable-Cc641kuG.js} +1 -1
- package/storybook-static/assets/{Scrollable.stories-Du5joHAp.js → Scrollable.stories-ZQT-1f1f.js} +1 -1
- package/storybook-static/assets/{Select-CT_wwcDN.js → Select-BeoH_3V4.js} +1 -1
- package/storybook-static/assets/{Select-8PYQeQRR.js → Select-D6RLm9D5.js} +1 -1
- package/storybook-static/assets/{Select.stories-DIqia2Hb.js → Select.stories-DI6pVDzi.js} +1 -1
- package/storybook-static/assets/{Separator-DJ93-Cvq.js → Separator-De9vEg4j.js} +1 -1
- package/storybook-static/assets/{Separator-CelBAATq.js → Separator-tkZoR8Ft.js} +1 -1
- package/storybook-static/assets/{Separator.stories-DBEDpiqL.js → Separator.stories-CGZrsdLJ.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-C-00d6wC.js → SerializableSelect-BWgkYLIe.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-CP7fJBNa.js → SerializableSelect.stories-BfGg_SmN.js} +1 -1
- package/storybook-static/assets/{ShimmerText-qA7CslLE.js → ShimmerText-D1ygdKrh.js} +1 -1
- package/storybook-static/assets/{ShimmerText.stories-CiGIbhCm.js → ShimmerText.stories-D5AB85Hj.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-B7tnYWQl.js → SingleDateTimeInput-Bf2RpSbC.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-DJ2vRS9H.js → SingleDateTimeInput-C2O-fXgE.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-BK59HKLf.js → SingleDateTimeInput.stories-BUbSA1UY.js} +1 -1
- package/storybook-static/assets/{Slider-Cm6kd77G.js → Slider-BhfM7XZ9.js} +1 -1
- package/storybook-static/assets/{Slider-CXcIxUE3.js → Slider-CVPKS3XB.js} +1 -1
- package/storybook-static/assets/{Slider.stories-BuhFWvUX.js → Slider.stories-C6ZUJc4b.js} +1 -1
- package/storybook-static/assets/{SliderInput-DI2h4X8P.js → SliderInput-MMUGLDDl.js} +1 -1
- package/storybook-static/assets/{SliderInput-DpmYS5Zb.js → SliderInput-PwHeDeo2.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-CLdLS0_8.js → SliderInput.stories-zBDRonPh.js} +1 -1
- package/storybook-static/assets/{Sortable-CpjAZLxn.js → Sortable-BKNLJGIe.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-Ck2MHBoR.js → Sortable.stories-CLY263mj.js} +1 -1
- package/storybook-static/assets/{Splitter-Cpk_5dTf.js → Splitter-PyZco_V_.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-BIf9NNWq.js → Splitter.stories-CY3Itq_G.js} +1 -1
- package/storybook-static/assets/{StateSelect-BznE9WIu.js → StateSelect-BlEIRWer.js} +1 -1
- package/storybook-static/assets/{StateSelect-C5tnrhWT.js → StateSelect-DfUif3cG.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-DLvSnAcF.js → StateSelect.stories-ClSYkdz8.js} +1 -1
- package/storybook-static/assets/{StatusIndicator-vJAPPq2m.js → StatusIndicator-CL-WMBHT.js} +1 -1
- package/storybook-static/assets/{StatusIndicator.stories-B7PGK2_C.js → StatusIndicator.stories-BbpEocDe.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-DBpxJZL-.js → StringToggle.stories-0r9TfflS.js} +1 -1
- package/storybook-static/assets/{Switch-BkTvYjyQ.js → Switch-AoVSoc9P.js} +1 -1
- package/storybook-static/assets/{Switch-DlRrk6o7.js → Switch-HAWn3D1c.js} +1 -1
- package/storybook-static/assets/{Switch.stories-BtctkC2W.js → Switch.stories-D1VJIWsC.js} +1 -1
- package/storybook-static/assets/{Table-xOdM6spm.js → Table-CyX8frK4.js} +1 -1
- package/storybook-static/assets/Table.stories-DoGpFMZB.js +184 -0
- package/storybook-static/assets/{TableEditor.stories-GU46gl20.js → TableEditor.stories-Mh6q2awx.js} +1 -1
- package/storybook-static/assets/{Tabs-Cg_IYAXs.js → Tabs-BZfNXmy0.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-2cS0B94o.js → Tabs.stories-C9L4pJDb.js} +1 -1
- package/storybook-static/assets/{TabsBox-Dz3AsaoR.js → TabsBox-qRCIBtqi.js} +1 -1
- package/storybook-static/assets/{TagInput-CCTgbRhQ.js → TagInput-CPB6lb2J.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-CevhCeXY.js → TagInput.stories-CT6B8CVV.js} +1 -1
- package/storybook-static/assets/{Text-CDCeYwIB.js → Text-AbSWZQO3.js} +1 -1
- package/storybook-static/assets/{Textarea-CNsrFSip.js → Textarea-BY51Li7J.js} +1 -1
- package/storybook-static/assets/{Textarea-Ba4MyNoY.js → Textarea-Bz9O1y1I.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-laVFWVXL.js → Textarea.stories-CJbv3jrK.js} +1 -1
- package/storybook-static/assets/{TimePanel-Ddy67nzH.js → TimePanel-Wn5lUiwx.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-OLefy0XD.js → TimePanel.stories-dF5kTdp1.js} +1 -1
- package/storybook-static/assets/{Toggle-BGbyfmSW.js → Toggle-BpDn9f6k.js} +1 -1
- package/storybook-static/assets/{Toggle-BlCBtQd1.js → Toggle-CUO99pvo.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-BjeTDL90.js → Toggle.stories-T1Hk_etn.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-ZVSLdnCU.js → TreeMultiSelect-DEsECkRj.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-BJnAzsFO.js → TreeMultiSelect-bqQExCm8.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-BJOtdIDe.js → TreeMultiSelect.stories-DyK7bWZu.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-BQKfhufH.js → TreePickerBase-BCbV37dL.js} +1 -1
- package/storybook-static/assets/{TreeSelect-BSr4FMlq.js → TreeSelect-CTvlmF81.js} +1 -1
- package/storybook-static/assets/{TreeSelect-DSHQjGD1.js → TreeSelect-Cepr58wS.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-GRcEv-kN.js → TreeSelect.stories-RVPMBCd_.js} +1 -1
- package/storybook-static/assets/{TreeTable-CzmxD2ee.js → TreeTable-DznOmuAD.js} +1 -1
- package/storybook-static/assets/TreeTable.stories-Lx2ImfgC.js +138 -0
- package/storybook-static/assets/blocks-u0CCD6I1.js +287 -0
- package/storybook-static/assets/{check-BYM7OgKl.js → check-CHvYWZD5.js} +1 -1
- package/storybook-static/assets/{chevron-down-Mu7usNfR.js → chevron-down-DqHAghNU.js} +1 -1
- package/storybook-static/assets/{chevron-left-CiOR-CGA.js → chevron-left-Bj7vIyg-.js} +1 -1
- package/storybook-static/assets/{chevron-right-5Rrk5UhO.js → chevron-right-BUqG0v39.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-Cj8Y9DHq.js → chunk-W22LQPXL-BSczDjJT.js} +1 -1
- package/storybook-static/assets/{circle-alert-BXB7LSDS.js → circle-alert-DXUFM6uc.js} +1 -1
- package/storybook-static/assets/{circle-check-DrVuYn1Q.js → circle-check-0x9vHUU_.js} +1 -1
- package/storybook-static/assets/{contextMenu-BaB_e0Tl.js → contextMenu-D8PjjiwD.js} +1 -1
- package/storybook-static/assets/{download-W-Vr_TI7.js → download-15Eb3eUj.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-BTEwHffF.js → floating-ui.react-CypKyrM4.js} +1 -1
- package/storybook-static/assets/{foundationApi-BcoJ1zeX.js → foundationApi-dmPNotab.js} +1 -1
- package/storybook-static/assets/{foundationLib-B2kQ07LT.js → foundationLib-CyrgF87o.js} +1 -1
- package/storybook-static/assets/getFlexClasses-BBvI2V8h.css +1 -0
- package/storybook-static/assets/getFlexClasses-DOf6NlyJ.js +1 -0
- package/storybook-static/assets/{hooks-BgMXxXbY.js → hooks-DM8_3IU2.js} +1 -1
- package/storybook-static/assets/{iframe-CU98mtpe.js → iframe-BmGorvhi.js} +4 -4
- package/storybook-static/assets/iframe-WuXBbC_P.js +1 -0
- package/storybook-static/assets/{info-BhHmytIH.js → info-HMSnCOw2.js} +1 -1
- package/storybook-static/assets/isRecord-DXDTW-jA-DtM9YD3V.js +1 -0
- package/storybook-static/assets/odata-DLogt0PY.js +1 -0
- package/storybook-static/assets/{odataStoryFixtures-CnZ_YrUb.js → odataStoryFixtures-DiC-gXoK.js} +1 -1
- package/storybook-static/assets/{react-C2mSveWL.js → react-BLxZ0fqY.js} +1 -1
- package/storybook-static/assets/{refresh-cw-D8_L8K4Y.js → refresh-cw-Obk3FkLO.js} +1 -1
- package/storybook-static/assets/responsiveLayout-B9XAp69M.js +1 -0
- package/storybook-static/assets/{settings-2-jWGaWGT0.js → settings-2-BQ2LYeiA.js} +1 -1
- package/storybook-static/assets/{sortable-BteEe6X0.js → sortable-BrLDYUp8.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-eEu1MRSg.js → syntaxhighlighter-QEQV7K2Y-JUCJEf5U.js} +1 -1
- package/storybook-static/assets/{trash-2-CwmbYA8i.js → trash-2-CzXfDl_F.js} +1 -1
- package/storybook-static/assets/{triangle-alert-TRLt6Woa.js → triangle-alert-Ww2Tuzxk.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-BxHmAh7D.js → useODataSelectBase-DIZSERuU.js} +1 -1
- package/storybook-static/assets/useODataTreeData-DLgIiNMG.js +1 -0
- package/storybook-static/assets/{usePickerQuery-ByBt1NRd.js → usePickerQuery-BZ1Hrn2J.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-CqdXiV2q.js → usePickerTriggerController-BIarg6M4.js} +1 -1
- package/storybook-static/assets/{x-BPRzfyys.js → x-BmlmEU-a.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/dist/chunks/flex-D86M_h-0.js +0 -222
- package/dist/chunks/flex-D86M_h-0.js.map +0 -1
- package/dist/chunks/grid-CFuzBigM.js +0 -186
- package/dist/chunks/grid-CFuzBigM.js.map +0 -1
- package/dist/flex/useFlexClasses.d.ts +0 -8
- package/dist/flex/useFlexClasses.d.ts.map +0 -1
- package/dist/grid/useGridClasses.d.ts +0 -10
- package/dist/grid/useGridClasses.d.ts.map +0 -1
- package/storybook-static/assets/Color-6AOWCN3U-D-64SqRn.js +0 -1
- package/storybook-static/assets/Flex-DYXuexPG.js +0 -61
- package/storybook-static/assets/Flex.stories-DH1BReS-.js +0 -300
- package/storybook-static/assets/FlexContainer-DO3X5f_1.js +0 -1
- package/storybook-static/assets/FormattedTableCell-BfEiCYOi.js +0 -15
- package/storybook-static/assets/Grid-ChS0GzNg.js +0 -61
- package/storybook-static/assets/Grid.stories-ClZzgSfZ.js +0 -495
- package/storybook-static/assets/GridContainer-K9R_IHaw.css +0 -1
- package/storybook-static/assets/Table.stories-FORIU5CX.js +0 -184
- package/storybook-static/assets/TreeTable.stories-35ufhVh1.js +0 -138
- package/storybook-static/assets/blocks-SX-KK9Lg.js +0 -48
- package/storybook-static/assets/components-BEDJAYMp.js +0 -241
- package/storybook-static/assets/iframe-DaZCH1M-.js +0 -1
- package/storybook-static/assets/media-D9cE2tzi.js +0 -1
- package/storybook-static/assets/odata-yWIAioh9.js +0 -1
- package/storybook-static/assets/useFlexClasses-IXK2se1Y.css +0 -1
- package/storybook-static/assets/useFlexClasses-SgVG37Bb.js +0 -1
- 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
|