@ryuzaki13/react-foundation-ui 3.9.0 → 3.10.1
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/dist/badge/index.js +1 -1
- package/dist/barcode-scanner/index.js +1 -1
- package/dist/base-table/index.js +1 -1
- package/dist/base-table/ui/BaseTable.d.ts +9 -1
- package/dist/base-table/ui/BaseTable.d.ts.map +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-9H5YuVvB.js → base-table-CoVXG2FT.js} +132 -114
- package/dist/chunks/base-table-CoVXG2FT.js.map +1 -0
- 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-Cm9NhT9K.js +154 -0
- package/dist/chunks/table-Cm9NhT9K.js.map +1 -0
- 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/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 +1 -1
- 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/Table.d.ts +10 -1
- package/dist/table/Table.d.ts.map +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 +1 -1
- package/storybook-static/assets/{Badge-CL58JilM.js → Badge-7nsS5Yyj.js} +1 -1
- package/storybook-static/assets/{Badge.stories-CXFTvV3D.js → Badge.stories-BzQKeDqC.js} +1 -1
- package/storybook-static/assets/{BadgeList-DLssobfd.js → BadgeList-WzFV9MB1.js} +1 -1
- package/storybook-static/assets/{BarcodeScannerDialog.stories-CpMywpKq.js → BarcodeScannerDialog.stories-Ci8Mf9WX.js} +1 -1
- package/storybook-static/assets/{Button-CSbLv1K7.js → Button-6F3OVyTc.js} +1 -1
- package/storybook-static/assets/{Button-DMAPWgMI.js → Button-DqsSng-I.js} +1 -1
- package/storybook-static/assets/{Button.stories-CU1kYMvA.js → Button.stories-PNc3lIYB.js} +1 -1
- package/storybook-static/assets/{CalendarView-DuCLo_x5.js → CalendarView-BT9X9tky.js} +1 -1
- package/storybook-static/assets/{CheckBox-BBPasWSk.js → CheckBox-BJhTyl1K.js} +1 -1
- package/storybook-static/assets/{CheckBox-Bfcdvr2o.js → CheckBox-BasxUZYS.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-sGH6EuU4.js → CheckBox.stories-DLRA5q3H.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-5NJhf8m9.js → Color-6AOWCN3U-C4R02nIA.js} +1 -1
- package/storybook-static/assets/{ContextMenu-CxuYkXjJ.js → ContextMenu-BckwURZg.js} +1 -1
- package/storybook-static/assets/{ContextMenu-z6NKmD0I.js → ContextMenu-OOsbvmOa.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-CI5IW_KX.js → ContextMenu.stories-BD-wMDNw.js} +1 -1
- package/storybook-static/assets/{DateInput-BkCbK0M5.js → DateInput-B5MxQUHL.js} +1 -1
- package/storybook-static/assets/{DateInput-A8NURpCX.js → DateInput-DT6btAWU.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-DnzeyBpg.js → DateInput.stories-BK2brwe_.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-Bh7qMFTr.js → DateRangePresetSelect-Dplr79Cm.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-CGZkf8Ty.js → DateRangePresetSelect-gRdIuTx9.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-Drm2FCnJ.js → DateRangePresetSelect.stories-BRksGdxw.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect-BebYsPmQ.js → DeprecatedMultiSelect-1MSPac-V.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect-8TWWhsLi.js → DeprecatedMultiSelect-BOxmEW2D.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect.stories-7iL6YOgh.js → DeprecatedMultiSelect.stories-Ax0zv6Kb.js} +1 -1
- package/storybook-static/assets/{Detail-BOZkPwOI.js → Detail-_5TyqOha.js} +1 -1
- package/storybook-static/assets/{Detail.stories-RZALoKmD.js → Detail.stories-CJbeEBiY.js} +1 -1
- package/storybook-static/assets/{Dialog-CeukIYpx.js → Dialog-BodfEiIi.js} +1 -1
- package/storybook-static/assets/{Dialog-BsslYClj.js → Dialog-HBOYhMQq.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-y7MpdGQr.js → Dialog.stories-Ds4F0ZoJ.js} +1 -1
- package/storybook-static/assets/{Disclosure-CiTnWx5y.js → Disclosure-BbvtIOyN.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-UWW9oheF.js → Disclosure.stories-CnSK79hZ.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-CT3BdQXr.js → DisclosureGroup-Dd0BeL4o.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-x50rjjKP.js → DocsRenderer-JROSPFPF-BX-ThlFg.js} +1 -1
- package/storybook-static/assets/{DropZone-gWSeoAx6.js → DropZone-CCkHaYAD.js} +1 -1
- package/storybook-static/assets/{DropZone-DUn9vW2w.js → DropZone-DPqYieZH.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-CmaVl9to.js → DropZone.stories-lfKkNIIl.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-DkeS8gOF.js → DropdownMenu-QWp-lSol.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-DdqWZDe2.js → ExpandableActionPanel-DxPp3zYd.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-CA-dpb07.js → ExpandableActionPanel.stories-BiklI55p.js} +1 -1
- package/storybook-static/assets/Flex-S4mwRnc2.js +81 -0
- package/storybook-static/assets/Flex.stories-DRBLrgrW.js +454 -0
- package/storybook-static/assets/FlexContainer-4Ap7vbIt.js +1 -0
- package/storybook-static/assets/{FlexItem-DsoW-br3.js → FlexItem-Dwqi7KeT.js} +2 -2
- package/storybook-static/assets/{FloatingPopover-7MpESGU4.js → FloatingPopover-D8FScEoc.js} +1 -1
- package/storybook-static/assets/FormattedTableCell-BKSpyxnu.js +15 -0
- package/storybook-static/assets/{Grid-eqZxtRIA.js → Grid-CJ5RLrgv.js} +2 -2
- package/storybook-static/assets/Grid-DIYjEdUA.js +84 -0
- package/storybook-static/assets/Grid.stories-Bl35lMkU.js +657 -0
- package/storybook-static/assets/{GridContainer-B9JaLUGE.js → GridContainer-B2iAnXeB.js} +2 -2
- package/storybook-static/assets/GridContainer-DgBuOs_1.css +1 -0
- package/storybook-static/assets/{ImageCropper.stories-W76XOOMv.js → ImageCropper.stories--E79MUTS.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-DYg7BkPO.js → ImageRenderer-D0stahXz.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-rgJV0OBp.js → ImageRenderer.stories-C_Ir6A3m.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-D9h6sg3j.js → ImageView.stories-DbY7pwWs.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-Bd0WJOp1.js → ImageViewer.stories-D2jfTzCV.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-DOjvjbv0.js → ImageViewerRuntime-DlvGnNv4.js} +1 -1
- package/storybook-static/assets/{Input-7N70tL0u.js → Input-CzvWPW0I.js} +1 -1
- package/storybook-static/assets/{Input-BxrxwNyD.js → Input-av5ktymr.js} +1 -1
- package/storybook-static/assets/{Input.stories-Df1j802b.js → Input.stories-CvLnu270.js} +1 -1
- package/storybook-static/assets/{InputDateTime-UdemHZXV.js → InputDateTime-D5bQuB9a.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-yRwAe5_5.js → InputDateTime.stories-BD9Pt7vB.js} +1 -1
- package/storybook-static/assets/{InputFile-5LpFR1Fq.js → InputFile-C3nj3qsi.js} +1 -1
- package/storybook-static/assets/{InputFile-DDhf7A_J.js → InputFile-ulrG6ECh.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-BVDT-BAx.js → InputFile.stories-CEewSWb_.js} +1 -1
- package/storybook-static/assets/{InputFiles-CgM2BwNO.js → InputFiles-DZ1nUYOE.js} +1 -1
- package/storybook-static/assets/{InputFiles-D3CPIXiK.js → InputFiles-lF7Ys1hh.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-XMHBA9Fn.js → InputFiles.stories-CCptKLDn.js} +1 -1
- package/storybook-static/assets/{InputFilesList-DSivq9iT.js → InputFilesList-DTJkMHNI.js} +1 -1
- package/storybook-static/assets/{InputImage-CY0A9Xz-.js → InputImage-CIPZL6uS.js} +1 -1
- package/storybook-static/assets/{InputImage-BG_QyAh3.js → InputImage-lDHbW_ac.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-DiGXytZU.js → InputImage.stories-CQ2BBGf-.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-Bf9KitNR.js → InteractiveComponents-DD7TZeA4.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-TwALUGGN.js → InteractiveComponents.stories-Bbo3l8WO.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-BLrNe8g_.js → LayoutPicker-A7VlDbc0.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-MhA9N4WI.js → LayoutPicker-uw1knHzA.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-BCME5Ogr.js → LayoutPicker.stories-DDR6oiSN.js} +1 -1
- package/storybook-static/assets/{Listbox-B8F2xWvs.js → Listbox-CO1BjyFs.js} +1 -1
- package/storybook-static/assets/{Listbox-y_3VijHU.js → Listbox-CmkI7dm_.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-mp0p0NpO.js → Listbox.stories-BIPmBbuG.js} +1 -1
- package/storybook-static/assets/{Modal-qIsW7BkG.js → Modal-C3JdXj6Q.js} +1 -1
- package/storybook-static/assets/{Modal-DgEV0vBs.js → Modal-IXMZUaaw.js} +1 -1
- package/storybook-static/assets/{Modal.stories-CQ-Hn4GK.js → Modal.stories-BD-UnVeM.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-DEoq4q_O.js → ModalManagerProvider-zJVg8-dg.js} +1 -1
- package/storybook-static/assets/{MultiSelect-D-6XHQUG.js → MultiSelect-CGoyA8-m.js} +1 -1
- package/storybook-static/assets/{MultiSelect-PGooEkAK.js → MultiSelect-DZKjK53B.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-B0JzMViN.js → MultiSelect.stories-D65mpYYt.js} +1 -1
- package/storybook-static/assets/{MultiSelectCore-B0VbnEBc.js → MultiSelectCore-ih1pgvuq.js} +1 -1
- package/storybook-static/assets/{NoData-DCuuvSoD.js → NoData-32gM9qt4.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-CWqG91Yh.js → NotificationsHost-pkEhxgz2.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-CEp-AppV.js → NotificationsHost.stories-BqIayryx.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-CwVneYzi.js → ODataMultiSelect-D42gAcHg.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-BRnVOZsK.js → ODataMultiSelect.stories-DfAkKAsG.js} +1 -1
- package/storybook-static/assets/{ODataSelect-DyKTFqk7.js → ODataSelect-DPOMWPKO.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-B-3GaeU4.js → ODataSelect.stories-DHs3wp7E.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-16xNi9qI.js → ODataTreeMultiSelect-CC8yuaVP.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-DI9tH2qD.js → ODataTreeMultiSelect.stories-BtwLdGK6.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-Dk262plK.js → ODataTreeSelect-qcitpYxj.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-DfaL0dci.js → ODataTreeSelect.stories-1r_tkUVi.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-DI8qlm5c.js → OneStepScroller-wz4Qujpx.js} +1 -1
- package/storybook-static/assets/{Option-CG3bU2cY.js → Option-Beom2xTg.js} +1 -1
- package/storybook-static/assets/{OptionButton-DF0E8aU5.js → OptionButton-D_ZCVbsd.js} +1 -1
- package/storybook-static/assets/{OptionContent-BZ3FiJQ4.js → OptionContent-FZ-u9L1s.js} +1 -1
- package/storybook-static/assets/{OptionContentContainer-CyI5IfqU.js → OptionContentContainer-HVNOgpjm.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-uR-Xk4vQ.js → PeriodSelect-DbdeznMQ.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-_gAbt3E6.js → PeriodSelect-qevVtoSU.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-D-Lp7QtA.js → PeriodSelect.stories-BLi_6rpY.js} +1 -1
- package/storybook-static/assets/{PickerField-CByAoAAO.js → PickerField-BHSRcQY6.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-CYM-UvRz.js → PickerTriggerActions-Cxk3YQGF.js} +1 -1
- package/storybook-static/assets/{Popover-CdnsB1ss.js → Popover-BosMVXTI.js} +1 -1
- package/storybook-static/assets/{Popover-CRcVoLur.js → Popover-De2fvkIB.js} +1 -1
- package/storybook-static/assets/{Popover.stories-Dxdt7Jc5.js → Popover.stories-DM-Plj05.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-BmAGj8ye.js → PresetRangeDateInput-CCQuBkJj.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-BQkK3Nmd.js → PresetRangeDateInput-jersOEYO.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-CUIwCB6T.js → PresetRangeDateInput.stories-DwqDWXX9.js} +1 -1
- package/storybook-static/assets/{PresetSelect-C7HG9CjN.js → PresetSelect-BhwHbWmS.js} +1 -1
- package/storybook-static/assets/{README-BmwSZfOQ.js → README-1UUrJXjZ.js} +1 -1
- package/storybook-static/assets/{README-zlaX5PMG.js → README-29WDFTDH.js} +1 -1
- package/storybook-static/assets/{README-D-urpNSn.js → README-33qTnj5l.js} +1 -1
- package/storybook-static/assets/{README-BbUo3mGT.js → README-B5eMX8_9.js} +1 -1
- package/storybook-static/assets/{README-DfRan6KR.js → README-B5rmNIab.js} +1 -1
- package/storybook-static/assets/{README-KCmlmH_Z.js → README-BAlXRtAz.js} +1 -1
- package/storybook-static/assets/{README-CNnGqdkH.js → README-BCEKAY_J.js} +1 -1
- package/storybook-static/assets/{README-DyKegKG_.js → README-BD5f1if4.js} +1 -1
- package/storybook-static/assets/{README-DMZYAdN0.js → README-BIvHy4kr.js} +1 -1
- package/storybook-static/assets/{README-Dhptn6UE.js → README-BK8k_Q4m.js} +1 -1
- package/storybook-static/assets/{README-CoENtXo_.js → README-BKLeD4y3.js} +1 -1
- package/storybook-static/assets/{README-C41zKsq6.js → README-BNsU3Cqx.js} +1 -1
- package/storybook-static/assets/{README-BL0-uTlP.js → README-BPSG9KrB.js} +1 -1
- package/storybook-static/assets/{README-BEYMpavt.js → README-BQDFmWGi.js} +1 -1
- package/storybook-static/assets/{README-BR8bdUjV.js → README-B_tg7QVI.js} +1 -1
- package/storybook-static/assets/{README-DxTRj-9a.js → README-BfRKdJtw.js} +1 -1
- package/storybook-static/assets/{README-ByIhL9zr.js → README-BoJXfTe6.js} +1 -1
- package/storybook-static/assets/{README-C5-oc7fP.js → README-By0zyJQ-.js} +1 -1
- package/storybook-static/assets/{README-De3j71sQ.js → README-BzVVPLXk.js} +1 -1
- package/storybook-static/assets/{README-BquP2lux.js → README-CHllxFPj.js} +1 -1
- package/storybook-static/assets/{README-CTBkJ27k.js → README-CJ6rsYUk.js} +1 -1
- package/storybook-static/assets/{README-DY7lgi4q.js → README-CJFgcV8C.js} +1 -1
- package/storybook-static/assets/{README-j-Czw7ww.js → README-CPZBUXWs.js} +1 -1
- package/storybook-static/assets/{README-DCWk-Vga.js → README-CioPc-xb.js} +1 -1
- package/storybook-static/assets/{README-CTGZXXVP.js → README-CmzO6bzh.js} +1 -1
- package/storybook-static/assets/{README-B0iHgO_3.js → README-Cpk-Tr_W.js} +1 -1
- package/storybook-static/assets/{README-DTMZk60G.js → README-CrhHHw0i.js} +1 -1
- package/storybook-static/assets/{README-DAH3lVWd.js → README-CvReVgGJ.js} +1 -1
- package/storybook-static/assets/{README-DQ1aeQ_i.js → README-CvzdarfH.js} +1 -1
- package/storybook-static/assets/{README-BUnl1FiN.js → README-Cz14JUTC.js} +1 -1
- package/storybook-static/assets/{README-DevTRU4A.js → README-D09okhy9.js} +1 -1
- package/storybook-static/assets/{README-DaaS2c7L.js → README-D5YLxtgR.js} +1 -1
- package/storybook-static/assets/{README-_8pxMMC7.js → README-DK5aZdOt.js} +1 -1
- package/storybook-static/assets/{README-VNB_Dj5F.js → README-DKI2c8YJ.js} +1 -1
- package/storybook-static/assets/{README-BAjs7T_d.js → README-DNeDK1_H.js} +1 -1
- package/storybook-static/assets/{README-DNrPuueH.js → README-DQl_3tX1.js} +1 -1
- package/storybook-static/assets/{README-B1GSwjas.js → README-DS63ZnOT.js} +1 -1
- package/storybook-static/assets/{README-Bdir2bPK.js → README-DT96eoyc.js} +1 -1
- package/storybook-static/assets/{README-n4utUGcX.js → README-D_d6frx1.js} +1 -1
- package/storybook-static/assets/{README-CpJmZHQJ.js → README-Dc2qBccm.js} +1 -1
- package/storybook-static/assets/{README-CtZBJdo2.js → README-DeHGaTaW.js} +1 -1
- package/storybook-static/assets/{README-B-ihyEBx.js → README-Df8F75dr.js} +1 -1
- package/storybook-static/assets/{README-C7NhXX-n.js → README-DmJq-c8n.js} +1 -1
- package/storybook-static/assets/{README-9DTI05kd.js → README-DzASMBMv.js} +1 -1
- package/storybook-static/assets/{README-CUghXL33.js → README-DzrrH56m.js} +1 -1
- package/storybook-static/assets/{README-xrMkjHIm.js → README-ECCgQcGo.js} +1 -1
- package/storybook-static/assets/{README-BurB0dhj.js → README-LWfExOhc.js} +1 -1
- package/storybook-static/assets/{README-CiJ5wkhQ.js → README-NHHRscRF.js} +1 -1
- package/storybook-static/assets/{README-CvP9yRMR.js → README-O9BJmE-H.js} +1 -1
- package/storybook-static/assets/{README-ByT9u_7g.js → README-Rk3Krdys.js} +1 -1
- package/storybook-static/assets/{README-CQlujiXR.js → README-bWB0c7pN.js} +1 -1
- package/storybook-static/assets/{README-C8jcwgeL.js → README-o4PUljT6.js} +1 -1
- package/storybook-static/assets/{README-CoQeAVdv.js → README-sPm51M3K.js} +1 -1
- package/storybook-static/assets/{RadioButton-CDIyYuS9.js → RadioButton-BZiBFXe1.js} +1 -1
- package/storybook-static/assets/{RadioButton-DV8K96H6.js → RadioButton-CBLdgMz4.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-CRNqKsyz.js → RadioButton.stories-BP5yM5qg.js} +1 -1
- package/storybook-static/assets/{RadioGroup-BnYFRvmn.js → RadioGroup-DYRfZVGC.js} +1 -1
- package/storybook-static/assets/{RadioGroup-CIIw962S.js → RadioGroup-epjQdSZn.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-K4AidbLa.js → RadioGroup.stories-UOjXIk6v.js} +1 -1
- package/storybook-static/assets/ResponsiveLayoutPreview-BHBxtn2W.js +1 -0
- package/storybook-static/assets/ResponsiveLayoutPreview-CyXawjCA.css +1 -0
- package/storybook-static/assets/{Scrollable-BI1k9ogH.js → Scrollable-BBYov1Hn.js} +1 -1
- package/storybook-static/assets/{Scrollable-DAghtYuE.js → Scrollable-DKQa75cf.js} +1 -1
- package/storybook-static/assets/{Scrollable.stories-B6Doakiv.js → Scrollable.stories-BH1-i6nI.js} +1 -1
- package/storybook-static/assets/{Select-BNHTGJqG.js → Select-DU6Eh0Lt.js} +1 -1
- package/storybook-static/assets/{Select-BlnKV8rc.js → Select-DYOCTPiv.js} +1 -1
- package/storybook-static/assets/{Select.stories-DZPAoL4J.js → Select.stories-BF3svbAH.js} +1 -1
- package/storybook-static/assets/{Separator-CiETy9yM.js → Separator-CxviJxG5.js} +1 -1
- package/storybook-static/assets/{Separator-BCUzEQRV.js → Separator-_gvt1sqm.js} +1 -1
- package/storybook-static/assets/{Separator.stories-DTzurpM_.js → Separator.stories-DN6hlZl5.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-CnQurr7F.js → SerializableSelect-BVTOrYLs.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-qJaV_fjJ.js → SerializableSelect.stories-pcWq603M.js} +1 -1
- package/storybook-static/assets/{ShimmerText-I292TqXa.js → ShimmerText-BDDa_Wf7.js} +1 -1
- package/storybook-static/assets/{ShimmerText.stories-AKqXqp1k.js → ShimmerText.stories-DdZPIKwl.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-DSn0vaW-.js → SingleDateTimeInput-q-eu2xUU.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-BrNi93tH.js → SingleDateTimeInput-sGTkT8ZA.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-C910kkYc.js → SingleDateTimeInput.stories-X7CMAFsq.js} +1 -1
- package/storybook-static/assets/{Slider-DO460-pY.js → Slider-CaKY8LIJ.js} +1 -1
- package/storybook-static/assets/{Slider-CXA5Zwku.js → Slider-CqNWljkT.js} +1 -1
- package/storybook-static/assets/{Slider.stories-B874XxeK.js → Slider.stories-CMxutCGM.js} +1 -1
- package/storybook-static/assets/{SliderInput-DTidinPI.js → SliderInput-HUUN5_IF.js} +1 -1
- package/storybook-static/assets/{SliderInput-DsV8o7Yy.js → SliderInput-scYwk-4g.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-CDWNO90y.js → SliderInput.stories-CDhgeql1.js} +1 -1
- package/storybook-static/assets/{Sortable-CML34YIF.js → Sortable-CaysnUNW.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-C-_fvnHM.js → Sortable.stories-C4gHc5ka.js} +1 -1
- package/storybook-static/assets/{Splitter-BcuA2qce.js → Splitter-6cU1s7Qr.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-CA0-L_Ja.js → Splitter.stories-CA9A-CZ-.js} +1 -1
- package/storybook-static/assets/{StateSelect-B23bb_PO.js → StateSelect-BAqjdi4g.js} +1 -1
- package/storybook-static/assets/{StateSelect--FDEb4-v.js → StateSelect-OHl6KWge.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-CEVPThtC.js → StateSelect.stories-xX3ujKGO.js} +1 -1
- package/storybook-static/assets/{StatusIndicator-BbTCS7Ku.js → StatusIndicator-C_7dWY2t.js} +1 -1
- package/storybook-static/assets/{StatusIndicator.stories-BIps_Ecm.js → StatusIndicator.stories-BRlVzKf7.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-vhOfzslq.js → StringToggle.stories-DFPLwtHW.js} +1 -1
- package/storybook-static/assets/{Switch-DibS4nSc.js → Switch-CrlrIm3t.js} +1 -1
- package/storybook-static/assets/{Switch-jJgwtWFK.js → Switch-DHcMczAC.js} +1 -1
- package/storybook-static/assets/{Switch.stories-Cvky3KQz.js → Switch.stories-LhTPX_R-.js} +1 -1
- package/storybook-static/assets/Table-Ct8iqJEY.js +219 -0
- package/storybook-static/assets/Table.stories-DO30v6VO.js +184 -0
- package/storybook-static/assets/{TableEditor.stories-Be9nCkds.js → TableEditor.stories-Qtqr_l4g.js} +1 -1
- package/storybook-static/assets/{Tabs-CTL4MnkZ.js → Tabs-CC0IIQwl.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-CIVbz7kW.js → Tabs.stories-Bo_Y-dq8.js} +1 -1
- package/storybook-static/assets/{TabsBox-C9g1p4du.js → TabsBox-BMNvHsCH.js} +1 -1
- package/storybook-static/assets/{TagInput-DuJLeiyT.js → TagInput-BLwbzCit.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-BLVFWr-T.js → TagInput.stories-DNcD4tn4.js} +1 -1
- package/storybook-static/assets/{Text-Cr_TUUgL.js → Text-Bih-aO3C.js} +1 -1
- package/storybook-static/assets/{Textarea-DGaanGLG.js → Textarea-D3os1biP.js} +1 -1
- package/storybook-static/assets/{Textarea-BImI6Q6v.js → Textarea-DCnLF4aj.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-DvQ2dDNh.js → Textarea.stories-CIFzZQ5Z.js} +1 -1
- package/storybook-static/assets/{TimePanel-Cg2G5Hab.js → TimePanel-BcVGesht.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-qy5mb3YN.js → TimePanel.stories-C6_xVdCq.js} +1 -1
- package/storybook-static/assets/{Toggle-Dj8Ic_Ak.js → Toggle-BD0YAuO2.js} +1 -1
- package/storybook-static/assets/{Toggle-CroC7YOK.js → Toggle-CtABgcO5.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-CmyyubM8.js → Toggle.stories-DnTnFcGB.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-BHNmPW50.js → TreeMultiSelect-Bp_Akwgc.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-DBQYLjnA.js → TreeMultiSelect-DHk_QP2h.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-BNsE1zgF.js → TreeMultiSelect.stories-CBVQbR1c.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-ZEBy3EVT.js → TreePickerBase-BhWXyIoO.js} +1 -1
- package/storybook-static/assets/{TreeSelect-T7G2pkyK.js → TreeSelect-DleoF0hJ.js} +1 -1
- package/storybook-static/assets/{TreeSelect-aiPeW2uJ.js → TreeSelect-HNbghKYG.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-E6ObkYJe.js → TreeSelect.stories-BigcPfEn.js} +1 -1
- package/storybook-static/assets/{TreeTable-C0ORe5Pe.js → TreeTable-BNkuyFKP.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-PtGT_1X5.js → TreeTable.stories-Bdx3y7Yb.js} +1 -1
- package/storybook-static/assets/{array-D-_yMMUK-DnJ_b27D.js → array-D-_yMMUK-BBmW5vUr.js} +1 -1
- package/storybook-static/assets/{blocks-DR4JL0hD.js → blocks-DGivDYe5.js} +3 -3
- package/storybook-static/assets/{check-PtABqMc1.js → check-DRMDOowi.js} +1 -1
- package/storybook-static/assets/{chevron-down-BaujB0G_.js → chevron-down-D0ohA4RZ.js} +1 -1
- package/storybook-static/assets/{chevron-left-C1SZ4PrE.js → chevron-left-CLqpYqDQ.js} +1 -1
- package/storybook-static/assets/{chevron-right-CfCjHN8b.js → chevron-right-CXryGzSx.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-Cis7lFT9.js → chunk-W22LQPXL-CxLeSIMq.js} +1 -1
- package/storybook-static/assets/{circle-alert-Mymt-6wl.js → circle-alert-l6NwXGUY.js} +1 -1
- package/storybook-static/assets/{circle-check-DzqMvzJX.js → circle-check-B-r716dD.js} +1 -1
- package/storybook-static/assets/{components-Do91qDh3.js → components-Vmrwp1qC.js} +3 -3
- package/storybook-static/assets/{contextMenu-8NKKgKoy.js → contextMenu-Br4n839h.js} +1 -1
- package/storybook-static/assets/{download-Cn6H3Bnv.js → download-DqFSGBvN.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-BFqa49jG.js → floating-ui.react-B-qFeMZZ.js} +1 -1
- package/storybook-static/assets/{formatMultiSelectOptionCount-xGq1uM2H.js → formatMultiSelectOptionCount-BxXwE0wd.js} +1 -1
- package/storybook-static/assets/{formatters-DVE1YVNQ-YIdRxgw-.js → formatters-DVE1YVNQ-CJCkXjuI.js} +1 -1
- package/storybook-static/assets/{foundationApi-CChPwNx-.js → foundationApi-DxO3oR-c.js} +1 -1
- package/storybook-static/assets/{foundationLib-ClEyfTpa.js → foundationLib-CTFFCQvn.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-DUKyfcb_.js → hooks-CAgVZJ-F.js} +1 -1
- package/storybook-static/assets/{iframe-1Nw_zWMi.js → iframe-E950Ehp0.js} +4 -4
- package/storybook-static/assets/iframe-dKozSQh6.js +1 -0
- package/storybook-static/assets/{info-DMI56qGy.js → info-Dp6XZGwP.js} +1 -1
- package/storybook-static/assets/{odata-D9M3xPIL.js → odata-DuJbgix6.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-eHJgW7OK.js → odataStoryFixtures-CDArjyM7.js} +1 -1
- package/storybook-static/assets/{react-DidV4ORc.js → react-CGpO0FqR.js} +1 -1
- package/storybook-static/assets/{refresh-cw-B1ChlhvT.js → refresh-cw-dMgbnEda.js} +1 -1
- package/storybook-static/assets/responsiveLayout-B9XAp69M.js +1 -0
- package/storybook-static/assets/{settings-2-BxwqnB9r.js → settings-2-CmW1dpao.js} +1 -1
- package/storybook-static/assets/{sortable-DMBM69Jm.js → sortable-D7TAXZBK.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-BJZNAUo-.js → syntaxhighlighter-QEQV7K2Y-ok7zY4QK.js} +1 -1
- package/storybook-static/assets/{trash-2-B768_PZU.js → trash-2-5v1tbQ2V.js} +1 -1
- package/storybook-static/assets/{triangle-alert-B8H-k2Bq.js → triangle-alert-CVLPpc5j.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-BKAZcf4R.js → useODataSelectBase-Bkht6gRs.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-Bxlcmpg8.js → useODataTreeData-DTWPuC9Y.js} +1 -1
- package/storybook-static/assets/{usePickerDefaultFilter-ien2ZY7g.js → usePickerDefaultFilter-Djn1liy6.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-DJj2HmX9.js → usePickerQuery-BmoBHlzm.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-CiD33ccS.js → usePickerTriggerController-Dvt7LsFZ.js} +1 -1
- package/storybook-static/assets/{x-Dt9SO3SL.js → x-DZpfbNy0.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/base-table-9H5YuVvB.js.map +0 -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/chunks/table-BRC1OTyE.js +0 -141
- package/dist/chunks/table-BRC1OTyE.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/Flex-DpQpF63N.js +0 -61
- package/storybook-static/assets/Flex.stories-DtlKiJno.js +0 -300
- package/storybook-static/assets/FlexContainer-C1d63I55.js +0 -1
- package/storybook-static/assets/FormattedTableCell-B4RRbSFK.js +0 -15
- package/storybook-static/assets/Grid-DsCUaz46.js +0 -61
- package/storybook-static/assets/Grid.stories-DAGg0GWi.js +0 -495
- package/storybook-static/assets/GridContainer-K9R_IHaw.css +0 -1
- package/storybook-static/assets/Table-DcNGLEI6.js +0 -197
- package/storybook-static/assets/Table.stories-DbEzudxD.js +0 -178
- package/storybook-static/assets/iframe-BgBwFMGW.js +0 -1
- package/storybook-static/assets/media-D9cE2tzi.js +0 -1
- package/storybook-static/assets/useFlexClasses-IXK2se1Y.css +0 -1
- package/storybook-static/assets/useFlexClasses-SgVG37Bb.js +0 -1
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import { PolymorphicComponent as e } from "../polymorphic/index.js";
|
|
2
|
+
import { i as t, n, r, t as i } from "./responsiveLayout-D2mtCDdh.js";
|
|
3
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
4
|
+
import { isResponsiveMap as o, resolveProps as s } from "@ryuzaki13/react-foundation-lib/media";
|
|
5
|
+
var c = {
|
|
6
|
+
grid: "_5Z2YQF",
|
|
7
|
+
inline: "gAEXju",
|
|
8
|
+
row: "KdmGbk",
|
|
9
|
+
column: "uOpH1m",
|
|
10
|
+
dense: "EOUgpE",
|
|
11
|
+
gapNone: "PoMD0P",
|
|
12
|
+
gapRowXs: "FBebhA",
|
|
13
|
+
gapRowSm: "rwvhfS",
|
|
14
|
+
gapRowMd: "ZIsGgj",
|
|
15
|
+
gapRowLg: "lbAie9",
|
|
16
|
+
gapRowXl: "ylmmN3",
|
|
17
|
+
gapColumnXs: "Fg86QU",
|
|
18
|
+
gapColumnSm: "_3qWtbZ",
|
|
19
|
+
gapColumnMd: "gIXZ8P",
|
|
20
|
+
gapColumnLg: "xXxHZM",
|
|
21
|
+
gapColumnXl: "zRgpft",
|
|
22
|
+
gapXs: "Fb1W2U",
|
|
23
|
+
gapSm: "_2EojT9",
|
|
24
|
+
gapMd: "gYCGa5",
|
|
25
|
+
gapLg: "JN0CZr",
|
|
26
|
+
gapXl: "_2QvtUb",
|
|
27
|
+
alignStart: "_1kRriS",
|
|
28
|
+
alignCenter: "ocLWZU",
|
|
29
|
+
alignEnd: "TS1qri",
|
|
30
|
+
alignStretch: "FXfvI7",
|
|
31
|
+
alignBaseline: "biKmzi",
|
|
32
|
+
justifyStart: "_4-sIS7",
|
|
33
|
+
justifyCenter: "lbdoyi",
|
|
34
|
+
justifyEnd: "WvAC9I",
|
|
35
|
+
justifyStretch: "LN4Ak-",
|
|
36
|
+
alignContentStart: "XC0FuJ",
|
|
37
|
+
alignContentCenter: "_6b9wZI",
|
|
38
|
+
alignContentEnd: "KevE4M",
|
|
39
|
+
alignContentStretch: "Sn-je4",
|
|
40
|
+
alignContentBetween: "Wnx9iF",
|
|
41
|
+
alignContentAround: "RAoqm2",
|
|
42
|
+
alignContentEvenly: "nUjbmv",
|
|
43
|
+
justifyContentStart: "TjTsA7",
|
|
44
|
+
justifyContentCenter: "VdpzYk",
|
|
45
|
+
justifyContentEnd: "peszxb",
|
|
46
|
+
justifyContentStretch: "E98bqx",
|
|
47
|
+
justifyContentBetween: "CdaBbu",
|
|
48
|
+
justifyContentAround: "leVL0N",
|
|
49
|
+
justifyContentEvenly: "_6mOZVj",
|
|
50
|
+
autoRows1fr: "gUbUDY",
|
|
51
|
+
columnsAuto1fr: "S0HulN",
|
|
52
|
+
singleColumn: "K2fFKT",
|
|
53
|
+
item: "XHgjM3",
|
|
54
|
+
areaAuto: "wtrn5A",
|
|
55
|
+
alignSelfStart: "LkIh-N",
|
|
56
|
+
alignSelfCenter: "Vhdvpo",
|
|
57
|
+
alignSelfEnd: "cyg2du",
|
|
58
|
+
alignSelfStretch: "Ptd1ad",
|
|
59
|
+
alignSelfBaseline: "Z22Yty",
|
|
60
|
+
justifySelfStart: "gycEgN",
|
|
61
|
+
justifySelfCenter: "s69iy2",
|
|
62
|
+
justifySelfEnd: "pKEJ9k",
|
|
63
|
+
justifySelfStretch: "qWkZVw",
|
|
64
|
+
inlineLaptop: "_4CtxXl",
|
|
65
|
+
rowLaptop: "_7IEPF-",
|
|
66
|
+
columnLaptop: "d-tD65",
|
|
67
|
+
denseLaptop: "CNoziu",
|
|
68
|
+
gapNoneLaptop: "_3l62ur",
|
|
69
|
+
gapRowXsLaptop: "XJSe-L",
|
|
70
|
+
gapRowSmLaptop: "Jk3Oxo",
|
|
71
|
+
gapRowMdLaptop: "mAGDBN",
|
|
72
|
+
gapRowLgLaptop: "xdVnQI",
|
|
73
|
+
gapRowXlLaptop: "iTMT-Q",
|
|
74
|
+
gapColumnXsLaptop: "_7LbKjP",
|
|
75
|
+
gapColumnSmLaptop: "ymPYNc",
|
|
76
|
+
gapColumnMdLaptop: "R0s-j-",
|
|
77
|
+
gapColumnLgLaptop: "b6vSrU",
|
|
78
|
+
gapColumnXlLaptop: "_5bf1KV",
|
|
79
|
+
gapXsLaptop: "_7FIhm4",
|
|
80
|
+
gapSmLaptop: "p3nbqJ",
|
|
81
|
+
gapMdLaptop: "uxZyHy",
|
|
82
|
+
gapLgLaptop: "MIBt0q",
|
|
83
|
+
gapXlLaptop: "_7ElnG6",
|
|
84
|
+
alignStartLaptop: "oWHm3X",
|
|
85
|
+
alignCenterLaptop: "f8P8dm",
|
|
86
|
+
alignEndLaptop: "aveFLH",
|
|
87
|
+
alignStretchLaptop: "NX2Bl3",
|
|
88
|
+
alignBaselineLaptop: "JwJql5",
|
|
89
|
+
justifyStartLaptop: "orwPCB",
|
|
90
|
+
justifyCenterLaptop: "hPr8TR",
|
|
91
|
+
justifyEndLaptop: "wRT8T0",
|
|
92
|
+
justifyStretchLaptop: "LE-OWd",
|
|
93
|
+
alignContentStartLaptop: "_38eZrL",
|
|
94
|
+
alignContentCenterLaptop: "NrA6m5",
|
|
95
|
+
alignContentEndLaptop: "NIFV1Z",
|
|
96
|
+
alignContentStretchLaptop: "dOtalM",
|
|
97
|
+
alignContentBetweenLaptop: "_7dPnYN",
|
|
98
|
+
alignContentAroundLaptop: "SleG8p",
|
|
99
|
+
alignContentEvenlyLaptop: "V-Q5PK",
|
|
100
|
+
justifyContentStartLaptop: "JCPRhn",
|
|
101
|
+
justifyContentCenterLaptop: "JBp0Lc",
|
|
102
|
+
justifyContentEndLaptop: "WuV0WD",
|
|
103
|
+
justifyContentStretchLaptop: "cbW-Rf",
|
|
104
|
+
justifyContentBetweenLaptop: "BHc04F",
|
|
105
|
+
justifyContentAroundLaptop: "_8xxnxZ",
|
|
106
|
+
justifyContentEvenlyLaptop: "RnXG5T",
|
|
107
|
+
autoRows1frLaptop: "_46euer",
|
|
108
|
+
columnsAuto1frLaptop: "yfPFHt",
|
|
109
|
+
singleColumnLaptop: "xr12im",
|
|
110
|
+
responsiveTemplateColumns: "ar4ioC",
|
|
111
|
+
responsiveTemplateRows: "xV4rvA",
|
|
112
|
+
responsiveAutoColumns: "Hus718",
|
|
113
|
+
responsiveAutoRows: "TSRpLu",
|
|
114
|
+
responsiveTemplateAreas: "_8Ox2Fo",
|
|
115
|
+
areaAutoLaptop: "OJFFr3",
|
|
116
|
+
alignSelfStartLaptop: "N5lptY",
|
|
117
|
+
alignSelfCenterLaptop: "lyDgZZ",
|
|
118
|
+
alignSelfEndLaptop: "-TBf7-",
|
|
119
|
+
alignSelfStretchLaptop: "EWbLrf",
|
|
120
|
+
alignSelfBaselineLaptop: "N-FQM3",
|
|
121
|
+
justifySelfStartLaptop: "u9CWl4",
|
|
122
|
+
justifySelfCenterLaptop: "bN6da0",
|
|
123
|
+
justifySelfEndLaptop: "OQlVUK",
|
|
124
|
+
justifySelfStretchLaptop: "ZUTnYA",
|
|
125
|
+
responsiveArea: "ZNkmI4",
|
|
126
|
+
responsiveColumn: "oZZBH1",
|
|
127
|
+
responsiveRow: "_0L8HeU",
|
|
128
|
+
inlineTablet: "MBmlnL",
|
|
129
|
+
rowTablet: "vkj62L",
|
|
130
|
+
columnTablet: "yDlGkB",
|
|
131
|
+
denseTablet: "Be51BL",
|
|
132
|
+
gapNoneTablet: "jH-QYx",
|
|
133
|
+
gapRowXsTablet: "moNIhn",
|
|
134
|
+
gapRowSmTablet: "uAr9D8",
|
|
135
|
+
gapRowMdTablet: "ZAOmB8",
|
|
136
|
+
gapRowLgTablet: "KOUXKg",
|
|
137
|
+
gapRowXlTablet: "_8NtZ4Z",
|
|
138
|
+
gapColumnXsTablet: "N36IE8",
|
|
139
|
+
gapColumnSmTablet: "ewqkxx",
|
|
140
|
+
gapColumnMdTablet: "aTaAmG",
|
|
141
|
+
gapColumnLgTablet: "aVCCTI",
|
|
142
|
+
gapColumnXlTablet: "_64cJiZ",
|
|
143
|
+
gapXsTablet: "stJhAM",
|
|
144
|
+
gapSmTablet: "wgtG-4",
|
|
145
|
+
gapMdTablet: "UtCK1c",
|
|
146
|
+
gapLgTablet: "zE-o-N",
|
|
147
|
+
gapXlTablet: "RrExoW",
|
|
148
|
+
alignStartTablet: "_06-bLV",
|
|
149
|
+
alignCenterTablet: "zBT7vv",
|
|
150
|
+
alignEndTablet: "JUbiqu",
|
|
151
|
+
alignStretchTablet: "SBhoGh",
|
|
152
|
+
alignBaselineTablet: "NjPTg-",
|
|
153
|
+
justifyStartTablet: "P8dn3Q",
|
|
154
|
+
justifyCenterTablet: "_6hVh3W",
|
|
155
|
+
justifyEndTablet: "Sumyqw",
|
|
156
|
+
justifyStretchTablet: "S4dT8m",
|
|
157
|
+
alignContentStartTablet: "Z91ayw",
|
|
158
|
+
alignContentCenterTablet: "fuRAz-",
|
|
159
|
+
alignContentEndTablet: "PVtVDT",
|
|
160
|
+
alignContentStretchTablet: "dAd0zJ",
|
|
161
|
+
alignContentBetweenTablet: "uYYkoB",
|
|
162
|
+
alignContentAroundTablet: "nrZx1f",
|
|
163
|
+
alignContentEvenlyTablet: "C-Hg7i",
|
|
164
|
+
justifyContentStartTablet: "VG2lmY",
|
|
165
|
+
justifyContentCenterTablet: "Ldu8se",
|
|
166
|
+
justifyContentEndTablet: "DtMAPq",
|
|
167
|
+
justifyContentStretchTablet: "_4Dy9qu",
|
|
168
|
+
justifyContentBetweenTablet: "O1rFMi",
|
|
169
|
+
justifyContentAroundTablet: "b01r6t",
|
|
170
|
+
justifyContentEvenlyTablet: "Rq2m3C",
|
|
171
|
+
autoRows1frTablet: "-hWzbD",
|
|
172
|
+
columnsAuto1frTablet: "BjGg9N",
|
|
173
|
+
singleColumnTablet: "PYJ4sy",
|
|
174
|
+
areaAutoTablet: "bYE-pF",
|
|
175
|
+
alignSelfStartTablet: "_4cqQkJ",
|
|
176
|
+
alignSelfCenterTablet: "X65XnN",
|
|
177
|
+
alignSelfEndTablet: "_0ko7UR",
|
|
178
|
+
alignSelfStretchTablet: "Nvv-hX",
|
|
179
|
+
alignSelfBaselineTablet: "l45-hR",
|
|
180
|
+
justifySelfStartTablet: "iK-dlj",
|
|
181
|
+
justifySelfCenterTablet: "MnLZQa",
|
|
182
|
+
justifySelfEndTablet: "_3bV9Kz",
|
|
183
|
+
justifySelfStretchTablet: "_6NstfH",
|
|
184
|
+
inlineMobile: "_5MyDRP",
|
|
185
|
+
rowMobile: "Zceu1V",
|
|
186
|
+
columnMobile: "_92EJ-e",
|
|
187
|
+
denseMobile: "_0Rntna",
|
|
188
|
+
gapNoneMobile: "N-TeF-",
|
|
189
|
+
gapRowXsMobile: "ZndqJz",
|
|
190
|
+
gapRowSmMobile: "UOoOjY",
|
|
191
|
+
gapRowMdMobile: "WyUtl6",
|
|
192
|
+
gapRowLgMobile: "IxCgUa",
|
|
193
|
+
gapRowXlMobile: "_0ZHOr6",
|
|
194
|
+
gapColumnXsMobile: "zvI9dF",
|
|
195
|
+
gapColumnSmMobile: "A3G6KH",
|
|
196
|
+
gapColumnMdMobile: "rdsy15",
|
|
197
|
+
gapColumnLgMobile: "Xs-Odj",
|
|
198
|
+
gapColumnXlMobile: "JO4giX",
|
|
199
|
+
gapXsMobile: "-ZXN7c",
|
|
200
|
+
gapSmMobile: "WgaCBL",
|
|
201
|
+
gapMdMobile: "_8LS7Pt",
|
|
202
|
+
gapLgMobile: "gC1t4Z",
|
|
203
|
+
gapXlMobile: "_0-Sjdg",
|
|
204
|
+
alignStartMobile: "W7DnVy",
|
|
205
|
+
alignCenterMobile: "fBRPVT",
|
|
206
|
+
alignEndMobile: "kbi8Mf",
|
|
207
|
+
alignStretchMobile: "_1oIxpH",
|
|
208
|
+
alignBaselineMobile: "l3Bb7h",
|
|
209
|
+
justifyStartMobile: "cl6dWX",
|
|
210
|
+
justifyCenterMobile: "_6yDZ-V",
|
|
211
|
+
justifyEndMobile: "CuLr2P",
|
|
212
|
+
justifyStretchMobile: "bMtDkh",
|
|
213
|
+
alignContentStartMobile: "eQH5tg",
|
|
214
|
+
alignContentCenterMobile: "CqNpUH",
|
|
215
|
+
alignContentEndMobile: "JZ899v",
|
|
216
|
+
alignContentStretchMobile: "amen-5",
|
|
217
|
+
alignContentBetweenMobile: "TpE3W1",
|
|
218
|
+
alignContentAroundMobile: "nHT2Eo",
|
|
219
|
+
alignContentEvenlyMobile: "nAKcVp",
|
|
220
|
+
justifyContentStartMobile: "MoFFze",
|
|
221
|
+
justifyContentCenterMobile: "-h32m6",
|
|
222
|
+
justifyContentEndMobile: "MM6r0X",
|
|
223
|
+
justifyContentStretchMobile: "_0M0JVG",
|
|
224
|
+
justifyContentBetweenMobile: "C6VNZn",
|
|
225
|
+
justifyContentAroundMobile: "_4jCljC",
|
|
226
|
+
justifyContentEvenlyMobile: "iMBy64",
|
|
227
|
+
autoRows1frMobile: "XX114u",
|
|
228
|
+
columnsAuto1frMobile: "aZMi3X",
|
|
229
|
+
singleColumnMobile: "yFEj8M",
|
|
230
|
+
areaAutoMobile: "SLyxJm",
|
|
231
|
+
alignSelfStartMobile: "V9-muU",
|
|
232
|
+
alignSelfCenterMobile: "_47lg3e",
|
|
233
|
+
alignSelfEndMobile: "D4MTwV",
|
|
234
|
+
alignSelfStretchMobile: "YLN6G7",
|
|
235
|
+
alignSelfBaselineMobile: "khb1nb",
|
|
236
|
+
justifySelfStartMobile: "XnocuL",
|
|
237
|
+
justifySelfCenterMobile: "btFVUD",
|
|
238
|
+
justifySelfEndMobile: "uiDBko",
|
|
239
|
+
justifySelfStretchMobile: "EPL4n-"
|
|
240
|
+
}, l = [
|
|
241
|
+
"inline",
|
|
242
|
+
"row",
|
|
243
|
+
"column",
|
|
244
|
+
"dense",
|
|
245
|
+
"gap",
|
|
246
|
+
"gapRow",
|
|
247
|
+
"gapColumn",
|
|
248
|
+
"align",
|
|
249
|
+
"justify",
|
|
250
|
+
"alignContent",
|
|
251
|
+
"justifyContent",
|
|
252
|
+
"variant"
|
|
253
|
+
], u = ["alignSelf", "justifySelf"], d = {
|
|
254
|
+
mobile: "Mobile",
|
|
255
|
+
tablet: "Tablet",
|
|
256
|
+
laptop: "Laptop"
|
|
257
|
+
};
|
|
258
|
+
function f(e, t) {
|
|
259
|
+
return c[t ? `${String(e)}${d[t]}` : e];
|
|
260
|
+
}
|
|
261
|
+
function p(e, t) {
|
|
262
|
+
let n = [];
|
|
263
|
+
return e.inline && n.push(f("inline", t)), e.column ? n.push(f("column", t)) : e.dense ? n.push(f("dense", t)) : e.row && n.push(f("row", t)), e.align && n.push(f(`align${e.align.charAt(0).toUpperCase() + e.align.slice(1)}`, t)), e.justify && n.push(f(`justify${e.justify.charAt(0).toUpperCase() + e.justify.slice(1)}`, t)), e.justifyContent && n.push(f(`justifyContent${e.justifyContent.charAt(0).toUpperCase() + e.justifyContent.slice(1)}`, t)), e.alignContent && n.push(f(`alignContent${e.alignContent.charAt(0).toUpperCase() + e.alignContent.slice(1)}`, t)), e.gap === "none" ? n.push(f("gapNone", t)) : e.gap && n.push(f(`gap${e.gap.charAt(0).toUpperCase() + e.gap.slice(1)}`, t)), e.gapRow && n.push(f(`gapRow${e.gapRow.charAt(0).toUpperCase() + e.gapRow.slice(1)}`, t)), e.gapColumn && n.push(f(`gapColumn${e.gapColumn.charAt(0).toUpperCase() + e.gapColumn.slice(1)}`, t)), e.variant === "single-column" ? n.push(f("singleColumn", t)) : e.variant === "auto-1fr" ? n.push(f("autoRows1fr", t)) : e.variant === "auto1fr-rows-auto" && n.push(f("columnsAuto1fr", t)), n;
|
|
264
|
+
}
|
|
265
|
+
function m(e, t) {
|
|
266
|
+
let n = [];
|
|
267
|
+
return e.alignSelf && n.push(f(`alignSelf${e.alignSelf.charAt(0).toUpperCase() + e.alignSelf.slice(1)}`, t)), e.justifySelf && n.push(f(`justifySelf${e.justifySelf.charAt(0).toUpperCase() + e.justifySelf.slice(1)}`, t)), n;
|
|
268
|
+
}
|
|
269
|
+
function h(e, n, r, a, s) {
|
|
270
|
+
if (a === void 0) return;
|
|
271
|
+
if (!o(a)) {
|
|
272
|
+
Object.assign(e, { [n]: a });
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
let c = t(a);
|
|
276
|
+
for (let t of i) e[`--foundation-grid-${r}-${t}`] = c[t];
|
|
277
|
+
return f(s);
|
|
278
|
+
}
|
|
279
|
+
function g(e) {
|
|
280
|
+
let t = l.map((t) => e[t]), a = [c.grid];
|
|
281
|
+
if (!n(t)) return a.push(...p(s(e, "laptop", l))), a.filter(Boolean).join(" ");
|
|
282
|
+
let o = r(e, l);
|
|
283
|
+
for (let e of i) a.push(...p(o[e], e));
|
|
284
|
+
return a.filter(Boolean).join(" ");
|
|
285
|
+
}
|
|
286
|
+
function _(e) {
|
|
287
|
+
let t = {};
|
|
288
|
+
return {
|
|
289
|
+
className: [
|
|
290
|
+
h(t, "gridTemplateColumns", "template-columns", e.templateColumns, "responsiveTemplateColumns"),
|
|
291
|
+
h(t, "gridTemplateRows", "template-rows", e.templateRows, "responsiveTemplateRows"),
|
|
292
|
+
h(t, "gridAutoColumns", "auto-columns", e.autoColumns, "responsiveAutoColumns"),
|
|
293
|
+
h(t, "gridAutoRows", "auto-rows", e.autoRows, "responsiveAutoRows"),
|
|
294
|
+
h(t, "gridTemplateAreas", "template-areas", e.areas, "responsiveTemplateAreas")
|
|
295
|
+
].filter(Boolean).join(" ") || void 0,
|
|
296
|
+
style: t
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
function v(e) {
|
|
300
|
+
let t = u.map((t) => e[t]), a = [c.item];
|
|
301
|
+
if (!n(t)) return a.push(...m(s(e, "laptop", u))), a.filter(Boolean).join(" ");
|
|
302
|
+
let o = r(e, u);
|
|
303
|
+
for (let e of i) a.push(...m(o[e], e));
|
|
304
|
+
return a.filter(Boolean).join(" ");
|
|
305
|
+
}
|
|
306
|
+
function y(e) {
|
|
307
|
+
let t = {};
|
|
308
|
+
return {
|
|
309
|
+
className: [
|
|
310
|
+
h(t, "gridArea", "area", e.area, "responsiveArea"),
|
|
311
|
+
h(t, "gridColumn", "column", e.column, "responsiveColumn"),
|
|
312
|
+
h(t, "gridRow", "row", e.row, "responsiveRow")
|
|
313
|
+
].filter(Boolean).join(" ") || void 0,
|
|
314
|
+
style: t
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
//#endregion
|
|
318
|
+
//#region src/grid/GridContainer.tsx
|
|
319
|
+
function b({ ref: t, children: n, className: r = "", as: i, style: o, inline: s, row: c, column: l, dense: u, gap: d, gapRow: f, gapColumn: p, align: m, justify: h, alignContent: v, justifyContent: y, templateColumns: b, templateRows: x, autoColumns: S, autoRows: C, areas: w, variant: T, ...E }) {
|
|
320
|
+
let D = g({
|
|
321
|
+
inline: s,
|
|
322
|
+
row: c,
|
|
323
|
+
column: l,
|
|
324
|
+
dense: u,
|
|
325
|
+
gap: d,
|
|
326
|
+
gapRow: f,
|
|
327
|
+
gapColumn: p,
|
|
328
|
+
align: m,
|
|
329
|
+
justify: h,
|
|
330
|
+
alignContent: v,
|
|
331
|
+
justifyContent: y,
|
|
332
|
+
variant: T
|
|
333
|
+
}), O = _({
|
|
334
|
+
templateColumns: b,
|
|
335
|
+
templateRows: x,
|
|
336
|
+
autoColumns: S,
|
|
337
|
+
autoRows: C,
|
|
338
|
+
areas: w
|
|
339
|
+
}), k = [
|
|
340
|
+
D,
|
|
341
|
+
O.className,
|
|
342
|
+
r
|
|
343
|
+
].filter(Boolean).join(" "), A = {
|
|
344
|
+
...O.style,
|
|
345
|
+
...o
|
|
346
|
+
};
|
|
347
|
+
return /* @__PURE__ */ a(e, {
|
|
348
|
+
as: i,
|
|
349
|
+
...E,
|
|
350
|
+
ref: t,
|
|
351
|
+
className: k,
|
|
352
|
+
style: A,
|
|
353
|
+
children: n
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
b.displayName = "GridContainer";
|
|
357
|
+
//#endregion
|
|
358
|
+
//#region src/grid/GridItem.tsx
|
|
359
|
+
function x({ ref: t, children: n, className: r = "", as: i, style: o, area: s, column: c, row: l, alignSelf: u, justifySelf: d, ...f }) {
|
|
360
|
+
let p = v({
|
|
361
|
+
alignSelf: u,
|
|
362
|
+
justifySelf: d
|
|
363
|
+
}), m = y({
|
|
364
|
+
area: s,
|
|
365
|
+
column: c,
|
|
366
|
+
row: l
|
|
367
|
+
}), h = [
|
|
368
|
+
p,
|
|
369
|
+
m.className,
|
|
370
|
+
r
|
|
371
|
+
].filter(Boolean).join(" "), g = {
|
|
372
|
+
...m.style,
|
|
373
|
+
...o
|
|
374
|
+
};
|
|
375
|
+
return /* @__PURE__ */ a(e, {
|
|
376
|
+
as: i,
|
|
377
|
+
...f,
|
|
378
|
+
ref: t,
|
|
379
|
+
className: h,
|
|
380
|
+
style: g,
|
|
381
|
+
children: n
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
x.displayName = "GridItem";
|
|
385
|
+
//#endregion
|
|
386
|
+
//#region src/grid/Grid.tsx
|
|
387
|
+
var S = {
|
|
388
|
+
Container: b,
|
|
389
|
+
Item: x
|
|
390
|
+
};
|
|
391
|
+
//#endregion
|
|
392
|
+
export { x as n, b as r, S as t };
|
|
393
|
+
|
|
394
|
+
//# sourceMappingURL=grid-D6wPRCjx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid-D6wPRCjx.js","names":[],"sources":["../../src/grid/Grid.module.scss","../../src/grid/getGridClasses.ts","../../src/grid/GridContainer.tsx","../../src/grid/GridItem.tsx","../../src/grid/Grid.tsx"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n@mixin container-modifiers($suffix: \"\") {\n\t&.inline#{$suffix} {\n\t\tdisplay: inline-grid;\n\t\tvertical-align: middle;\n\t}\n\n\t// Автоматическое размещение\n\t&.row#{$suffix} {\n\t\tgrid-auto-flow: row;\n\t}\n\t&.column#{$suffix} {\n\t\tgrid-auto-flow: column;\n\t}\n\t&.dense#{$suffix} {\n\t\tgrid-auto-flow: dense;\n\t}\n\n\t// Отступы\n\t&.gapNone#{$suffix} {\n\t\tgap: unset;\n\t}\n\t&.gapRowXs#{$suffix} {\n\t\trow-gap: var(--space-xs);\n\t}\n\t&.gapRowSm#{$suffix} {\n\t\trow-gap: var(--space-sm);\n\t}\n\t&.gapRowMd#{$suffix} {\n\t\trow-gap: var(--space-md);\n\t}\n\t&.gapRowLg#{$suffix} {\n\t\trow-gap: var(--space-lg);\n\t}\n\t&.gapRowXl#{$suffix} {\n\t\trow-gap: var(--space-xl);\n\t}\n\t&.gapColumnXs#{$suffix} {\n\t\tcolumn-gap: var(--space-xs);\n\t}\n\t&.gapColumnSm#{$suffix} {\n\t\tcolumn-gap: var(--space-sm);\n\t}\n\t&.gapColumnMd#{$suffix} {\n\t\tcolumn-gap: var(--space-md);\n\t}\n\t&.gapColumnLg#{$suffix} {\n\t\tcolumn-gap: var(--space-lg);\n\t}\n\t&.gapColumnXl#{$suffix} {\n\t\tcolumn-gap: var(--space-xl);\n\t}\n\t&.gapXs#{$suffix} {\n\t\trow-gap: var(--space-xs);\n\t\tcolumn-gap: var(--space-xs);\n\t}\n\t&.gapSm#{$suffix} {\n\t\trow-gap: var(--space-sm);\n\t\tcolumn-gap: var(--space-sm);\n\t}\n\t&.gapMd#{$suffix} {\n\t\trow-gap: var(--space-md);\n\t\tcolumn-gap: var(--space-md);\n\t}\n\t&.gapLg#{$suffix} {\n\t\trow-gap: var(--space-lg);\n\t\tcolumn-gap: var(--space-lg);\n\t}\n\t&.gapXl#{$suffix} {\n\t\trow-gap: var(--space-xl);\n\t\tcolumn-gap: var(--space-xl);\n\t}\n\n\t// Выравнивание элементов\n\t&.alignStart#{$suffix} {\n\t\talign-items: start;\n\t}\n\t&.alignCenter#{$suffix} {\n\t\talign-items: center;\n\t}\n\t&.alignEnd#{$suffix} {\n\t\talign-items: end;\n\t}\n\t&.alignStretch#{$suffix} {\n\t\talign-items: stretch;\n\t}\n\t&.alignBaseline#{$suffix} {\n\t\talign-items: baseline;\n\t}\n\t&.justifyStart#{$suffix} {\n\t\tjustify-items: start;\n\t}\n\t&.justifyCenter#{$suffix} {\n\t\tjustify-items: center;\n\t}\n\t&.justifyEnd#{$suffix} {\n\t\tjustify-items: end;\n\t}\n\t&.justifyStretch#{$suffix} {\n\t\tjustify-items: stretch;\n\t}\n\n\t// Распределение сетки\n\t&.alignContentStart#{$suffix} {\n\t\talign-content: start;\n\t}\n\t&.alignContentCenter#{$suffix} {\n\t\talign-content: center;\n\t}\n\t&.alignContentEnd#{$suffix} {\n\t\talign-content: end;\n\t}\n\t&.alignContentStretch#{$suffix} {\n\t\talign-content: stretch;\n\t}\n\t&.alignContentBetween#{$suffix} {\n\t\talign-content: space-between;\n\t}\n\t&.alignContentAround#{$suffix} {\n\t\talign-content: space-around;\n\t}\n\t&.alignContentEvenly#{$suffix} {\n\t\talign-content: space-evenly;\n\t}\n\t&.justifyContentStart#{$suffix} {\n\t\tjustify-content: start;\n\t}\n\t&.justifyContentCenter#{$suffix} {\n\t\tjustify-content: center;\n\t}\n\t&.justifyContentEnd#{$suffix} {\n\t\tjustify-content: end;\n\t}\n\t&.justifyContentStretch#{$suffix} {\n\t\tjustify-content: stretch;\n\t}\n\t&.justifyContentBetween#{$suffix} {\n\t\tjustify-content: space-between;\n\t}\n\t&.justifyContentAround#{$suffix} {\n\t\tjustify-content: space-around;\n\t}\n\t&.justifyContentEvenly#{$suffix} {\n\t\tjustify-content: space-evenly;\n\t}\n\n\t// Предопределённые композиции\n\t&.autoRows1fr#{$suffix} {\n\t\tgrid-auto-rows: 1fr;\n\t}\n\t&.columnsAuto1fr#{$suffix} {\n\t\tgrid-template-columns: auto 1fr;\n\t\tgrid-auto-rows: auto;\n\t}\n\t&.singleColumn#{$suffix} {\n\t\tgrid-template-columns: 100%;\n\t\tgrid-auto-rows: auto 1fr;\n\t}\n}\n\n@mixin item-modifiers($suffix: \"\") {\n\t&.areaAuto#{$suffix} {\n\t\tgrid-area: auto;\n\t}\n\t&.alignSelfStart#{$suffix} {\n\t\talign-self: start;\n\t}\n\t&.alignSelfCenter#{$suffix} {\n\t\talign-self: center;\n\t}\n\t&.alignSelfEnd#{$suffix} {\n\t\talign-self: end;\n\t}\n\t&.alignSelfStretch#{$suffix} {\n\t\talign-self: stretch;\n\t}\n\t&.alignSelfBaseline#{$suffix} {\n\t\talign-self: baseline;\n\t}\n\t&.justifySelfStart#{$suffix} {\n\t\tjustify-self: start;\n\t}\n\t&.justifySelfCenter#{$suffix} {\n\t\tjustify-self: center;\n\t}\n\t&.justifySelfEnd#{$suffix} {\n\t\tjustify-self: end;\n\t}\n\t&.justifySelfStretch#{$suffix} {\n\t\tjustify-self: stretch;\n\t}\n}\n\n@mixin responsive-container-values($breakpoint) {\n\t&.responsiveTemplateColumns {\n\t\tgrid-template-columns: var(--foundation-grid-template-columns-#{$breakpoint});\n\t}\n\t&.responsiveTemplateRows {\n\t\tgrid-template-rows: var(--foundation-grid-template-rows-#{$breakpoint});\n\t}\n\t&.responsiveAutoColumns {\n\t\tgrid-auto-columns: var(--foundation-grid-auto-columns-#{$breakpoint});\n\t}\n\t&.responsiveAutoRows {\n\t\tgrid-auto-rows: var(--foundation-grid-auto-rows-#{$breakpoint});\n\t}\n\t&.responsiveTemplateAreas {\n\t\tgrid-template-areas: var(--foundation-grid-template-areas-#{$breakpoint});\n\t}\n}\n\n@mixin responsive-item-values($breakpoint) {\n\t&.responsiveArea {\n\t\tgrid-area: var(--foundation-grid-area-#{$breakpoint});\n\t}\n\t&.responsiveColumn {\n\t\tgrid-column: var(--foundation-grid-column-#{$breakpoint});\n\t}\n\t&.responsiveRow {\n\t\tgrid-row: var(--foundation-grid-row-#{$breakpoint});\n\t}\n}\n\n.grid {\n\tdisplay: grid;\n\t@include container-modifiers;\n}\n\n.item {\n\t@include item-modifiers;\n}\n\n// Ширины и порядок каскада принадлежат единственному источнику — styles/mixins/_media.scss.\n@include tablet-above {\n\t.grid {\n\t\t@include container-modifiers(\"Laptop\");\n\t\t@include responsive-container-values(\"laptop\");\n\t}\n\t.item {\n\t\t@include item-modifiers(\"Laptop\");\n\t\t@include responsive-item-values(\"laptop\");\n\t}\n}\n\n@include tablet {\n\t.grid {\n\t\t@include container-modifiers(\"Tablet\");\n\t\t@include responsive-container-values(\"tablet\");\n\t}\n\t.item {\n\t\t@include item-modifiers(\"Tablet\");\n\t\t@include responsive-item-values(\"tablet\");\n\t}\n}\n\n@include mobile {\n\t.grid {\n\t\t@include container-modifiers(\"Mobile\");\n\t\t@include responsive-container-values(\"mobile\");\n\t}\n\t.item {\n\t\t@include item-modifiers(\"Mobile\");\n\t\t@include responsive-item-values(\"mobile\");\n\t}\n}\n","import type { CSSProperties } from \"react\";\n\nimport {\n\ttype Breakpoint,\n\tisResponsiveMap,\n\tresolveProps,\n\ttype ResolvedProps,\n\ttype ResponsiveValue\n} from \"@ryuzaki13/react-foundation-lib/media\";\n\nimport {\n\thasResponsiveLayoutValue,\n\tRESPONSIVE_LAYOUT_BREAKPOINTS,\n\tresolveLayoutPropsForBreakpoints,\n\tresolveLayoutValueForBreakpoints\n} from \"../responsive-layout/responsiveLayout\";\n\nimport styles from \"./Grid.module.scss\";\n\nimport type { GridContainerLayoutProps, GridItemLayoutProps } from \"./types\";\n\ntype ClassName = string | undefined | null | false;\ntype ResolvedGridContainerProps = ResolvedProps<GridContainerLayoutProps>;\ntype ResolvedGridItemProps = ResolvedProps<GridItemLayoutProps>;\ntype ResponsiveCSSProperties = CSSProperties & Record<`--foundation-grid-${string}`, string | number | undefined>;\n\ntype ResponsiveStyleResult = {\n\tclassName?: string;\n\tstyle: CSSProperties;\n};\n\nconst CONTAINER_CLASS_KEYS = [\n\t\"inline\",\n\t\"row\",\n\t\"column\",\n\t\"dense\",\n\t\"gap\",\n\t\"gapRow\",\n\t\"gapColumn\",\n\t\"align\",\n\t\"justify\",\n\t\"alignContent\",\n\t\"justifyContent\",\n\t\"variant\"\n] as const satisfies readonly (keyof GridContainerLayoutProps)[];\n\nconst ITEM_CLASS_KEYS = [\"alignSelf\", \"justifySelf\"] as const satisfies readonly (keyof GridItemLayoutProps)[];\n\nconst breakpointSuffixes = {\n\tmobile: \"Mobile\",\n\ttablet: \"Tablet\",\n\tlaptop: \"Laptop\"\n} as const satisfies Record<Breakpoint, string>;\n\nfunction getStyleClass(baseName: string, breakpoint?: Breakpoint): string | undefined {\n\tconst className = breakpoint ? `${String(baseName)}${breakpointSuffixes[breakpoint]}` : baseName;\n\treturn styles[className as keyof typeof styles];\n}\n\nfunction getContainerModifierClasses(props: ResolvedGridContainerProps, breakpoint?: Breakpoint): ClassName[] {\n\tconst classes: ClassName[] = [];\n\n\tif (props.inline) classes.push(getStyleClass(\"inline\", breakpoint));\n\n\tif (props.column) classes.push(getStyleClass(\"column\", breakpoint));\n\telse if (props.dense) classes.push(getStyleClass(\"dense\", breakpoint));\n\telse if (props.row) classes.push(getStyleClass(\"row\", breakpoint));\n\n\tif (props.align) {\n\t\tclasses.push(\n\t\t\tgetStyleClass(`align${props.align.charAt(0).toUpperCase() + props.align.slice(1)}` as keyof typeof styles, breakpoint)\n\t\t);\n\t}\n\tif (props.justify) {\n\t\tclasses.push(\n\t\t\tgetStyleClass(`justify${props.justify.charAt(0).toUpperCase() + props.justify.slice(1)}` as keyof typeof styles, breakpoint)\n\t\t);\n\t}\n\tif (props.justifyContent) {\n\t\tclasses.push(\n\t\t\tgetStyleClass(\n\t\t\t\t`justifyContent${props.justifyContent.charAt(0).toUpperCase() + props.justifyContent.slice(1)}` as keyof typeof styles,\n\t\t\t\tbreakpoint\n\t\t\t)\n\t\t);\n\t}\n\tif (props.alignContent) {\n\t\tclasses.push(\n\t\t\tgetStyleClass(\n\t\t\t\t`alignContent${props.alignContent.charAt(0).toUpperCase() + props.alignContent.slice(1)}` as keyof typeof styles,\n\t\t\t\tbreakpoint\n\t\t\t)\n\t\t);\n\t}\n\n\tif (props.gap === \"none\") classes.push(getStyleClass(\"gapNone\", breakpoint));\n\telse if (props.gap) {\n\t\tclasses.push(getStyleClass(`gap${props.gap.charAt(0).toUpperCase() + props.gap.slice(1)}` as keyof typeof styles, breakpoint));\n\t}\n\tif (props.gapRow) {\n\t\tclasses.push(\n\t\t\tgetStyleClass(`gapRow${props.gapRow.charAt(0).toUpperCase() + props.gapRow.slice(1)}` as keyof typeof styles, breakpoint)\n\t\t);\n\t}\n\tif (props.gapColumn) {\n\t\tclasses.push(\n\t\t\tgetStyleClass(\n\t\t\t\t`gapColumn${props.gapColumn.charAt(0).toUpperCase() + props.gapColumn.slice(1)}` as keyof typeof styles,\n\t\t\t\tbreakpoint\n\t\t\t)\n\t\t);\n\t}\n\n\tif (props.variant === \"single-column\") classes.push(getStyleClass(\"singleColumn\", breakpoint));\n\telse if (props.variant === \"auto-1fr\") classes.push(getStyleClass(\"autoRows1fr\", breakpoint));\n\telse if (props.variant === \"auto1fr-rows-auto\") classes.push(getStyleClass(\"columnsAuto1fr\", breakpoint));\n\n\treturn classes;\n}\n\nfunction getItemModifierClasses(props: ResolvedGridItemProps, breakpoint?: Breakpoint): ClassName[] {\n\tconst classes: ClassName[] = [];\n\n\tif (props.alignSelf) {\n\t\tclasses.push(\n\t\t\tgetStyleClass(\n\t\t\t\t`alignSelf${props.alignSelf.charAt(0).toUpperCase() + props.alignSelf.slice(1)}` as keyof typeof styles,\n\t\t\t\tbreakpoint\n\t\t\t)\n\t\t);\n\t}\n\tif (props.justifySelf) {\n\t\tclasses.push(\n\t\t\tgetStyleClass(\n\t\t\t\t`justifySelf${props.justifySelf.charAt(0).toUpperCase() + props.justifySelf.slice(1)}` as keyof typeof styles,\n\t\t\t\tbreakpoint\n\t\t\t)\n\t\t);\n\t}\n\n\treturn classes;\n}\n\nfunction setResponsiveStyle<T extends string | number>(\n\ttarget: ResponsiveCSSProperties,\n\tproperty: keyof CSSProperties,\n\tvariableName: string,\n\tvalue: ResponsiveValue<T> | undefined,\n\tresponsiveClassName: string\n): string | undefined {\n\tif (value === undefined) return undefined;\n\n\tif (!isResponsiveMap(value)) {\n\t\tObject.assign(target, { [property]: value });\n\t\treturn undefined;\n\t}\n\n\tconst values = resolveLayoutValueForBreakpoints(value);\n\tfor (const breakpoint of RESPONSIVE_LAYOUT_BREAKPOINTS) {\n\t\ttarget[`--foundation-grid-${variableName}-${breakpoint}`] = values[breakpoint];\n\t}\n\treturn getStyleClass(responsiveClassName);\n}\n\nexport function getGridContainerClasses(props: GridContainerLayoutProps): string {\n\tconst values = CONTAINER_CLASS_KEYS.map((key) => props[key]);\n\tconst classes: ClassName[] = [styles.grid];\n\n\tif (!hasResponsiveLayoutValue(values)) {\n\t\tclasses.push(...getContainerModifierClasses(resolveProps(props, \"laptop\", CONTAINER_CLASS_KEYS)));\n\t\treturn classes.filter(Boolean).join(\" \");\n\t}\n\n\tconst propsByBreakpoint = resolveLayoutPropsForBreakpoints(props, CONTAINER_CLASS_KEYS);\n\tfor (const breakpoint of RESPONSIVE_LAYOUT_BREAKPOINTS) {\n\t\tclasses.push(...getContainerModifierClasses(propsByBreakpoint[breakpoint], breakpoint));\n\t}\n\n\treturn classes.filter(Boolean).join(\" \");\n}\n\nexport function getGridContainerStyles(\n\tprops: Pick<GridContainerLayoutProps, \"templateColumns\" | \"templateRows\" | \"autoColumns\" | \"autoRows\" | \"areas\">\n): ResponsiveStyleResult {\n\tconst style: ResponsiveCSSProperties = {};\n\tconst classes = [\n\t\tsetResponsiveStyle(style, \"gridTemplateColumns\", \"template-columns\", props.templateColumns, \"responsiveTemplateColumns\"),\n\t\tsetResponsiveStyle(style, \"gridTemplateRows\", \"template-rows\", props.templateRows, \"responsiveTemplateRows\"),\n\t\tsetResponsiveStyle(style, \"gridAutoColumns\", \"auto-columns\", props.autoColumns, \"responsiveAutoColumns\"),\n\t\tsetResponsiveStyle(style, \"gridAutoRows\", \"auto-rows\", props.autoRows, \"responsiveAutoRows\"),\n\t\tsetResponsiveStyle(style, \"gridTemplateAreas\", \"template-areas\", props.areas, \"responsiveTemplateAreas\")\n\t];\n\n\treturn { className: classes.filter(Boolean).join(\" \") || undefined, style };\n}\n\nexport function getGridItemClasses(props: GridItemLayoutProps): string {\n\tconst values = ITEM_CLASS_KEYS.map((key) => props[key]);\n\tconst classes: ClassName[] = [styles.item];\n\n\tif (!hasResponsiveLayoutValue(values)) {\n\t\tclasses.push(...getItemModifierClasses(resolveProps(props, \"laptop\", ITEM_CLASS_KEYS)));\n\t\treturn classes.filter(Boolean).join(\" \");\n\t}\n\n\tconst propsByBreakpoint = resolveLayoutPropsForBreakpoints(props, ITEM_CLASS_KEYS);\n\tfor (const breakpoint of RESPONSIVE_LAYOUT_BREAKPOINTS) {\n\t\tclasses.push(...getItemModifierClasses(propsByBreakpoint[breakpoint], breakpoint));\n\t}\n\n\treturn classes.filter(Boolean).join(\" \");\n}\n\nexport function getGridItemStyles(props: Pick<GridItemLayoutProps, \"area\" | \"column\" | \"row\">): ResponsiveStyleResult {\n\tconst style: ResponsiveCSSProperties = {};\n\tconst classes = [\n\t\tsetResponsiveStyle(style, \"gridArea\", \"area\", props.area, \"responsiveArea\"),\n\t\tsetResponsiveStyle(style, \"gridColumn\", \"column\", props.column, \"responsiveColumn\"),\n\t\tsetResponsiveStyle(style, \"gridRow\", \"row\", props.row, \"responsiveRow\")\n\t];\n\n\treturn { className: classes.filter(Boolean).join(\" \") || undefined, style };\n}\n","import { type Ref } from \"react\";\n\nimport { PolymorphicComponent } from \"../polymorphic\";\n\nimport { getGridContainerClasses, getGridContainerStyles } from \"./getGridClasses\";\nimport { GridContainerProps } from \"./types\";\n\nexport function GridContainer({\n\tref,\n\tchildren,\n\tclassName = \"\",\n\tas,\n\tstyle,\n\tinline,\n\trow,\n\tcolumn,\n\tdense,\n\tgap,\n\tgapRow,\n\tgapColumn,\n\talign,\n\tjustify,\n\talignContent,\n\tjustifyContent,\n\ttemplateColumns,\n\ttemplateRows,\n\tautoColumns,\n\tautoRows,\n\tareas,\n\tvariant,\n\t...htmlProps\n}: GridContainerProps & { ref?: Ref<HTMLElement> }) {\n\tconst gridClasses = getGridContainerClasses({\n\t\tinline,\n\t\trow,\n\t\tcolumn,\n\t\tdense,\n\t\tgap,\n\t\tgapRow,\n\t\tgapColumn,\n\t\talign,\n\t\tjustify,\n\t\talignContent,\n\t\tjustifyContent,\n\t\tvariant\n\t});\n\tconst gridStyles = getGridContainerStyles({ templateColumns, templateRows, autoColumns, autoRows, areas });\n\n\tconst finalClassName = [gridClasses, gridStyles.className, className].filter(Boolean).join(\" \");\n\tconst finalStyle = { ...gridStyles.style, ...style };\n\treturn (\n\t\t<PolymorphicComponent as={as} {...htmlProps} ref={ref} className={finalClassName} style={finalStyle}>\n\t\t\t{children}\n\t\t</PolymorphicComponent>\n\t);\n}\n\nGridContainer.displayName = \"GridContainer\";\n","import { type Ref } from \"react\";\n\nimport { PolymorphicComponent } from \"../polymorphic\";\n\nimport { getGridItemClasses, getGridItemStyles } from \"./getGridClasses\";\nimport { GridItemProps } from \"./types\";\n\nexport function GridItem({\n\tref,\n\tchildren,\n\tclassName = \"\",\n\tas,\n\tstyle,\n\tarea,\n\tcolumn,\n\trow,\n\talignSelf,\n\tjustifySelf,\n\t...htmlProps\n}: GridItemProps & { ref?: Ref<HTMLElement> }) {\n\tconst gridClasses = getGridItemClasses({ alignSelf, justifySelf });\n\tconst gridStyles = getGridItemStyles({ area, column, row });\n\n\tconst finalClassName = [gridClasses, gridStyles.className, className].filter(Boolean).join(\" \");\n\tconst finalStyle = { ...gridStyles.style, ...style };\n\treturn (\n\t\t<PolymorphicComponent as={as} {...htmlProps} ref={ref} className={finalClassName} style={finalStyle}>\n\t\t\t{children}\n\t\t</PolymorphicComponent>\n\t);\n}\n\nGridItem.displayName = \"GridItem\";\n","import { GridContainer } from \"./GridContainer\";\nimport { GridItem } from \"./GridItem\";\n\nexport const Grid = {\n\tContainer: GridContainer,\n\tItem: GridItem\n};\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as e } from "./popover-BJH-yHvb.js";
|
|
2
2
|
import { Text as t } from "../text/index.js";
|
|
3
3
|
import { PolymorphicComponent as n } from "../polymorphic/index.js";
|
|
4
|
-
import { n as r } from "./flex-
|
|
4
|
+
import { n as r } from "./flex-BhrQCH4I.js";
|
|
5
5
|
import { cn as i } from "@ryuzaki13/react-foundation-lib/utils";
|
|
6
6
|
import { CheckCheckIcon as a, ChevronLeftIcon as o, ChevronRightIcon as s, CircleAlertIcon as c, CircleCheckIcon as l, CircleXIcon as u, CopyIcon as d, InfoIcon as f } from "lucide-react";
|
|
7
7
|
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
@@ -332,4 +332,4 @@ function Q({ as: e, state: t, className: r, ...a }) {
|
|
|
332
332
|
//#endregion
|
|
333
333
|
export { O as _, K as a, w as b, W as c, R as d, L as f, A as g, j as h, q as i, U as l, F as m, J as n, X as o, I as p, Z as r, Y as s, Q as t, z as u, E as v, T as y };
|
|
334
334
|
|
|
335
|
-
//# sourceMappingURL=misc-
|
|
335
|
+
//# sourceMappingURL=misc-Dcr24uDY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc-BjdDK6mm.js","names":[],"sources":["../../src/misc/AnimatedLogo.module.scss","../../src/misc/AnimatedLogo.tsx","../../src/misc/AnimatedLogoSegment.tsx","../../src/misc/CopyTextWrapper.tsx","../../src/misc/IconWrapper.module.scss","../../src/misc/IconWrapper.tsx","../../src/misc/LoadingMessage.module.scss","../../src/misc/Message.tsx","../../src/misc/LoadingMessage.tsx","../../src/misc/LazyDynamicComponent.tsx","../../src/misc/SkeletonLine.tsx","../../src/misc/LazyValue.tsx","../../src/misc/NoData.tsx","../../src/misc/Notice.tsx","../../src/misc/OneStepScroller.module.scss","../../src/misc/OneStepScroller.tsx","../../src/misc/Scrollable.tsx","../../src/misc/State.module.scss","../../src/misc/StateIcon.tsx","../../src/misc/StateWrapper.tsx"],"sourcesContent":[".logo {\n\tsvg {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t}\n}\n\n.segment {\n\topacity: 0.2;\n\tanimation: pulseSteps 2s ease-in-out infinite;\n}\n\n@keyframes pulseSteps {\n\t0% {\n\t\topacity: 0.2;\n\t}\n\n\t35%,\n\t55% {\n\t\topacity: 1;\n\t}\n\n\t100% {\n\t\topacity: 0.2;\n\t}\n}\n\n@media (prefers-reduced-motion: reduce) {\n\t.segment {\n\t\tanimation: none;\n\t\topacity: 1;\n\t}\n}\n","import { type ComponentPropsWithoutRef, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./AnimatedLogo.module.scss\";\n\ntype AnimatedLogoProps = Omit<ComponentPropsWithoutRef<\"div\">, \"children\"> & {\n\tchildren: ReactNode;\n};\n\n/**\n * Контейнер анимированного логотипа без брендовой SVG-разметки.\n * Host-проект передаёт собственный `svg`, а его визуальные части оборачивает в `AnimatedLogoSegment`.\n */\nexport function AnimatedLogo({ children, className, ...htmlProps }: AnimatedLogoProps) {\n\treturn (\n\t\t<div {...htmlProps} className={cn(styles.logo, className)}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./AnimatedLogo.module.scss\";\n\ntype AnimatedLogoSegmentProps = Omit<ComponentPropsWithoutRef<\"g\">, \"children\"> & {\n\tchildren: ReactNode;\n\torder: number;\n};\n\n/**\n * Анимирует одну смысловую часть host-логотипа и сдвигает её pulse относительно предыдущих частей.\n * `order` задаётся с нуля в визуальной последовательности сегментов и преобразуется в шаг задержки 200 мс.\n */\nexport function AnimatedLogoSegment({ children, className, order, style, ...svgGroupProps }: AnimatedLogoSegmentProps) {\n\treturn (\n\t\t<g {...svgGroupProps} className={cn(styles.segment, className)} style={{ ...style, animationDelay: `${order * 200}ms` }}>\n\t\t\t{children}\n\t\t</g>\n\t);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport { useCopyElementTextWithFeedback } from \"@ryuzaki13/react-foundation-lib/copy\";\nimport { CheckCheckIcon, CopyIcon } from \"lucide-react\";\n\nimport { FloatingPopover } from \"../popover\";\n\ninterface CopyTextWrapperProps {\n\tchildren: React.ReactNode;\n\tposition?: Placement;\n\tshowOnHover?: boolean;\n\tclassName?: string;\n}\n\nexport function CopyTextWrapper({ children, position = \"top\", showOnHover = true, className }: CopyTextWrapperProps) {\n\tconst { containerRef, copyElementText, isCopied } = useCopyElementTextWithFeedback<HTMLSpanElement>();\n\n\treturn (\n\t\t<span ref={containerRef} className={className}>\n\t\t\t{children}\n\t\t\t<FloatingPopover openOnHover={showOnHover} placement={position} content={isCopied ? \"Скопировано!\" : \"Копировать текст\"}>\n\t\t\t\t<button onClick={copyElementText} aria-label={isCopied ? \"Скопировано!\" : \"Копировать текст\"}>\n\t\t\t\t\t{isCopied ? <CheckCheckIcon className=\"block statusSuccess\" /> : <CopyIcon className=\"block statusInfo\" />}\n\t\t\t\t</button>\n\t\t\t</FloatingPopover>\n\t\t</span>\n\t);\n}\n",".wrapper {\n\twidth: var(--control-height);\n\theight: var(--control-height);\n\tmargin: auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./IconWrapper.module.scss\";\n\ninterface IconWrapperProps {\n\tchildren: ReactNode;\n\tclassName?: string;\n}\n\nexport function IconWrapper({ className, children }: IconWrapperProps) {\n\treturn <div className={cn(styles.wrapper, className)}>{children}</div>;\n}\n",".componentLoader {\n\tmin-height: 10em;\n}\n","import { type AriaAttributes, type AriaRole, type PropsWithChildren } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { FlexCenter } from \"../flex\";\nimport { Text, type TextColor } from \"../text\";\n\ntype MessageProps = PropsWithChildren<\n\tReadonly<{\n\t\tclassName?: string;\n\t\tcolor?: TextColor;\n\t\tminHeight?: string | number;\n\t\tuppercase?: boolean;\n\t\trole?: AriaRole;\n\t}>\n> &\n\tAriaAttributes;\n\nexport function Message({ className, children, color = \"muted\", role, minHeight, uppercase = true, ...ariaAttributes }: MessageProps) {\n\treturn (\n\t\t<FlexCenter className={cn(\"paddingMd textCenter\", className)} minHeight={minHeight}>\n\t\t\t<Text {...ariaAttributes} as=\"p\" weight=\"bold\" color={color} uppercase={uppercase} role={role}>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</FlexCenter>\n\t);\n}\n","import { type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./LoadingMessage.module.scss\";\nimport { Message } from \"./Message\";\n\ntype LoadingMessageProps = {\n\tclassName?: string;\n\t/** Готовый брендовый знак, которым host-проект при необходимости дополняет сообщение о загрузке. */\n\tlogo?: ReactNode;\n\ttext?: string;\n};\n\nexport function LoadingMessage({ className, logo, text }: LoadingMessageProps) {\n\treturn (\n\t\t<Message className={cn(styles.componentLoader, logo ? undefined : \"skeletonLine\", className)}>\n\t\t\t{logo}\n\n\t\t\t{text || \"Загрузка...\"}\n\t\t</Message>\n\t);\n}\n","import { Suspense, useSyncExternalStore, type ComponentType, type ReactNode } from \"react\";\n\nimport { useLazyComponent } from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { LoadingMessage } from \"./LoadingMessage\";\n\ntype LazyDynamicComponentProps<T extends object> = {\n\timportFunc: () => Promise<Record<string, ComponentType<T>> | null>;\n\tcomponentName: string;\n\tcacheKey?: string;\n\tclientOnly?: boolean;\n\tfallback?: ReactNode;\n\tprops?: T;\n};\n\nconst subscribeClientOnlyMount = (onStoreChange: () => void) => {\n\tonStoreChange();\n\n\treturn () => undefined;\n};\n\nconst getClientSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\n/**\n * Компонент ленивой загрузки динамически импортируемого React-компонента. Позволяет отложить загрузку тяжелых частей интерфейса до момента использования.\n */\nexport function LazyDynamicComponent<T extends object>({\n\tfallback,\n\timportFunc,\n\tcomponentName,\n\tclientOnly = false,\n\tcacheKey,\n\tprops\n}: LazyDynamicComponentProps<T>) {\n\tconst Component = useLazyComponent(importFunc, componentName, cacheKey);\n\tconst isClient = useSyncExternalStore(subscribeClientOnlyMount, getClientSnapshot, getServerSnapshot);\n\n\tconst fallbackNode = fallback ?? <LoadingMessage text=\"Ожидание компонента...\" />;\n\n\t// Client-only режим нужен для браузерных модулей, которые нельзя даже пытаться импортировать во время SSR.\n\tif (clientOnly && !isClient) return fallbackNode;\n\n\treturn (\n\t\t<Suspense fallback={fallbackNode}>\n\t\t\t{/* eslint-disable-next-line react-hooks/static-components */}\n\t\t\t<Component {...(props ?? ({} as T))} />\n\t\t</Suspense>\n\t);\n}\n","import React from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { PolymorphicComponent, PolymorphicComponentBaseProps } from \"../polymorphic\";\n\ntype SkeletonLineOwnProps<E extends React.ElementType = React.ElementType> = PolymorphicComponentBaseProps<E> & {\n\tclassName?: string;\n};\n\ntype SkeletonLineProps<E extends React.ElementType> = SkeletonLineOwnProps<E> &\n\tOmit<React.ComponentPropsWithRef<E>, keyof SkeletonLineOwnProps>;\n\nexport function SkeletonLine<E extends React.ElementType>({ as, className, ...props }: SkeletonLineProps<E>) {\n\tconst Component = as || \"div\";\n\n\treturn (\n\t\t<PolymorphicComponent\n\t\t\tas={Component as React.ElementType}\n\t\t\tclassName={cn(\"skeletonLine colorTransparent radiusSm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n","import React from \"react\";\n\nimport { SkeletonLine } from \"./SkeletonLine\";\n\ninterface LazyValueProps {\n\tvalue: React.ReactNode;\n\tisLoading?: boolean;\n}\n\nexport function LazyValue({ value, isLoading }: LazyValueProps) {\n\treturn isLoading ? <SkeletonLine>Загрузка...</SkeletonLine> : (value ?? \"-\");\n}\n","import { type AriaAttributes, type AriaRole } from \"react\";\n\nimport { Message } from \"./Message\";\n\ntype NoDataProps = Readonly<{\n\tclassName?: string;\n\ttext?: string;\n\tminHeight?: string | number;\n\trole?: AriaRole;\n}> &\n\tAriaAttributes;\n\nexport function NoData({ className, text, role, minHeight = \"5em\", ...ariaAttributes }: NoDataProps) {\n\treturn (\n\t\t<Message {...ariaAttributes} className={className} color=\"muted\" minHeight={minHeight} role={role}>\n\t\t\t{text || \"Нет данных\"}\n\t\t</Message>\n\t);\n}\n","import { type AriaAttributes, type AriaRole, type PropsWithChildren } from \"react\";\n\nimport { Message } from \"./Message\";\n\ntype NoticeProps = PropsWithChildren<\n\tReadonly<{\n\t\tisError?: boolean;\n\t\tclassName?: string;\n\t\trole?: AriaRole;\n\t}>\n> &\n\tAriaAttributes;\n\nexport function Notice({ className, isError, role, children, ...ariaAttributes }: NoticeProps) {\n\treturn (\n\t\t<Message {...ariaAttributes} className={className} color={isError ? \"error\" : \"secondary\"} role={role}>\n\t\t\t{children}\n\t\t</Message>\n\t);\n}\n",".oneStepScroller {\n\toverflow: hidden;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n\tmin-width: 0;\n}\n\n.ossViewport {\n\toverflow: hidden;\n\toutline: none;\n\tmin-width: 0;\n\tflex: 1 1 auto;\n}\n\n.ossScroller {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tgap: var(--space-sm);\n\talign-items: end;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tscroll-behavior: smooth;\n\t-webkit-overflow-scrolling: touch;\n\tscrollbar-width: none; /* firefox */\n\n\t::-webkit-scrollbar {\n\t\theight: 0;\n\t}\n}\n\n.ossButton {\n\t// position: absolute;\n\ttop: 0;\n\tz-index: 10;\n\twidth: var(--control-height);\n\theight: 100%;\n\tflex: 0 0 var(--control-height);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\t// border: var(--border);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--content-2);\n\t// background-color: var(--surface-0);\n\t// opacity: 0.75;\n\n\ttransition-property: opacity, color;\n\ttransition-duration: var(--transition-fast);\n\n\t&:hover {\n\t\topacity: 1;\n\t\tcolor: var(--content-0);\n\t}\n\n\t&:disabled {\n\t\topacity: 0.5;\n\t\tpointer-events: none;\n\t}\n\n\t// &.prev {\n\t// \tleft: 0;\n\t// }\n\n\t// &.next {\n\t// \tright: 0;\n\t// }\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport styles from \"./OneStepScroller.module.scss\";\n\ninterface OneStepScrollerProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n\t/**\n\t * CSS-селектор элементов, которые считаются \"шагами\" скролла.\n\t * По умолчанию используются прямые потомки скроллера.\n\t */\n\titemSelector?: string;\n\t/**\n\t * Дополнительный внутренний отступ (px) при прокрутке к фокусируемому элементу.\n\t */\n\tscrollPadding?: number;\n\t/**\n\t * Плавная прокрутка для кнопок и авто-доводки до видимости.\n\t */\n\tsmooth?: boolean;\n}\n\nconst EDGE_EPSILON_PX = 1;\n\nfunction maxScrollLeft(scroller: HTMLElement) {\n\treturn Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n}\n\n/**\n * Горизонтальный скроллер \"по одному элементу\".\n *\n * Ожидает элементы фиксированной ширины (или близкой к фиксированной),\n * чтобы шаг скролла соответствовал ширине одного элемента.\n */\nexport function OneStepScroller({ children, className, itemSelector, scrollPadding = 6, smooth = true }: OneStepScrollerProps) {\n\tconst scrollerRef = useRef<HTMLDivElement | null>(null);\n\tconst rafIdRef = useRef<number | null>(null);\n\n\tconst [canScrollPrev, setCanScrollPrev] = useState(false);\n\tconst [canScrollNext, setCanScrollNext] = useState(false);\n\n\t/**\n\t * Получить список элементов-\"шагов\".\n\t *\n\t * Оптимизация: для дефолтного поведения используем `children` DOM-узла,\n\t * чтобы не выполнять `querySelectorAll` на каждый вызов.\n\t */\n\tconst getItems = useCallback((): HTMLElement[] => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return [];\n\n\t\tif (!itemSelector) {\n\t\t\treturn Array.from(scroller.children).filter((node): node is HTMLElement => node instanceof HTMLElement);\n\t\t}\n\n\t\treturn Array.from(scroller.querySelectorAll<HTMLElement>(itemSelector));\n\t}, [itemSelector]);\n\n\t/**\n\t * Найти \"элемент шага\" для произвольного target внутри скроллера.\n\t */\n\tconst findItemForTarget = useCallback(\n\t\t(target: HTMLElement): HTMLElement | null => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return null;\n\n\t\t\tif (itemSelector) {\n\t\t\t\tconst item = target.closest<HTMLElement>(itemSelector);\n\t\t\t\tif (item && scroller.contains(item)) return item;\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet node: HTMLElement | null = target;\n\t\t\twhile (node && node.parentElement && node.parentElement !== scroller) {\n\t\t\t\tnode = node.parentElement;\n\t\t\t}\n\n\t\t\tif (node && node.parentElement === scroller) return node;\n\t\t\treturn null;\n\t\t},\n\t\t[itemSelector]\n\t);\n\n\t/**\n\t * Обновить состояние кнопок \"назад/вперед\".\n\t * Состояние меняется только при реальном отличии, чтобы не триггерить\n\t * лишние перерисовки на каждом событии scroll.\n\t */\n\tconst updateScrollButtons = useCallback(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) {\n\t\t\tsetCanScrollPrev(false);\n\t\t\tsetCanScrollNext(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst maxScrollLeft = Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n\t\tconst current = Math.max(0, Math.min(scroller.scrollLeft, maxScrollLeft));\n\n\t\tconst nextCanScrollPrev = current > EDGE_EPSILON_PX;\n\t\tconst nextCanScrollNext = current < maxScrollLeft - EDGE_EPSILON_PX;\n\n\t\tsetCanScrollPrev((prev) => (prev === nextCanScrollPrev ? prev : nextCanScrollPrev));\n\t\tsetCanScrollNext((prev) => (prev === nextCanScrollNext ? prev : nextCanScrollNext));\n\t}, []);\n\n\t/**\n\t * Запланировать обновление кнопок в следующий animation frame.\n\t * Это снижает частоту вычислений при интенсивном scroll/resize.\n\t */\n\tconst scheduleUpdateScrollButtons = useCallback(() => {\n\t\tif (rafIdRef.current !== null) return;\n\n\t\trafIdRef.current = requestAnimationFrame(() => {\n\t\t\trafIdRef.current = null;\n\t\t\tupdateScrollButtons();\n\t\t});\n\t}, [updateScrollButtons]);\n\n\t/**\n\t * Прокрутка на N элементов (N может быть отрицательным).\n\t */\n\tconst scrollByItems = useCallback(\n\t\t(count: number) => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return;\n\n\t\t\tconst firstItem = getItems()[0];\n\t\t\tif (!firstItem) return;\n\n\t\t\tconst step = firstItem.getBoundingClientRect().width;\n\t\t\tif (!step) return;\n\n\t\t\tconst delta = Math.round(count * step);\n\t\t\tconst maxScrollLeft = Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n\t\t\tconst target = Math.max(0, Math.min(scroller.scrollLeft + delta, maxScrollLeft));\n\n\t\t\tscroller.scrollTo({\n\t\t\t\tleft: target,\n\t\t\t\tbehavior: smooth ? \"smooth\" : \"auto\"\n\t\t\t});\n\t\t},\n\t\t[getItems, smooth]\n\t);\n\n\t/**\n\t * Гарантировать полную видимость элемента в пределах viewport скроллера.\n\t */\n\tconst ensureFullyVisible = useCallback(\n\t\t(el: HTMLElement) => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return;\n\n\t\t\tconst scrollerRect = scroller.getBoundingClientRect();\n\t\t\tconst elementRect = el.getBoundingClientRect();\n\n\t\t\tconst elementLeft = elementRect.left - scrollerRect.left + scroller.scrollLeft;\n\t\t\tconst elementRight = elementLeft + elementRect.width;\n\n\t\t\tconst visibleLeft = scroller.scrollLeft;\n\t\t\tconst visibleRight = scroller.scrollLeft + scroller.clientWidth;\n\n\t\t\tif (elementLeft >= visibleLeft + EDGE_EPSILON_PX && elementRight <= visibleRight - EDGE_EPSILON_PX) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet targetScrollLeft = scroller.scrollLeft;\n\t\t\tif (elementLeft < visibleLeft) {\n\t\t\t\ttargetScrollLeft = Math.max(0, elementLeft - scrollPadding);\n\t\t\t} else if (elementRight > visibleRight) {\n\t\t\t\ttargetScrollLeft = Math.min(maxScrollLeft(scroller), elementRight - scroller.clientWidth + scrollPadding);\n\t\t\t}\n\n\t\t\tscroller.scrollTo({\n\t\t\t\tleft: Math.round(targetScrollLeft),\n\t\t\t\tbehavior: smooth ? \"smooth\" : \"auto\"\n\t\t\t});\n\t\t},\n\t\t[scrollPadding, smooth]\n\t);\n\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return;\n\n\t\tconst handleFocusIn = (event: FocusEvent) => {\n\t\t\tconst target = event.target;\n\t\t\tif (!(target instanceof HTMLElement)) return;\n\n\t\t\tconst item = findItemForTarget(target);\n\t\t\tif (item) ensureFullyVisible(item);\n\t\t};\n\n\t\tscroller.addEventListener(\"focusin\", handleFocusIn);\n\t\treturn () => scroller.removeEventListener(\"focusin\", handleFocusIn);\n\t}, [ensureFullyVisible, findItemForTarget]);\n\n\t/**\n\t * Наблюдаем только за размером скроллера и изменением его DOM-структуры.\n\t * Это дешевле, чем подписка ResizeObserver на каждый элемент + IntersectionObserver.\n\t */\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return;\n\n\t\tconst onScroll = () => scheduleUpdateScrollButtons();\n\t\tscroller.addEventListener(\"scroll\", onScroll, { passive: true });\n\n\t\tlet resizeObserver: ResizeObserver | null = null;\n\t\tif (typeof ResizeObserver !== \"undefined\") {\n\t\t\tresizeObserver = new ResizeObserver(scheduleUpdateScrollButtons);\n\t\t\tresizeObserver.observe(scroller);\n\t\t}\n\n\t\tlet mutationObserver: MutationObserver | null = null;\n\t\tif (typeof MutationObserver !== \"undefined\") {\n\t\t\tmutationObserver = new MutationObserver(scheduleUpdateScrollButtons);\n\t\t\tmutationObserver.observe(scroller, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: false\n\t\t\t});\n\t\t}\n\n\t\tscheduleUpdateScrollButtons();\n\n\t\treturn () => {\n\t\t\tscroller.removeEventListener(\"scroll\", onScroll);\n\t\t\tresizeObserver?.disconnect();\n\t\t\tmutationObserver?.disconnect();\n\n\t\t\tif (rafIdRef.current !== null) {\n\t\t\t\tcancelAnimationFrame(rafIdRef.current);\n\t\t\t\trafIdRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [scheduleUpdateScrollButtons]);\n\n\t/**\n\t * При изменении children просим пересчитать видимость кнопок.\n\t */\n\tuseEffect(() => {\n\t\tscheduleUpdateScrollButtons();\n\t}, [children, scheduleUpdateScrollButtons]);\n\n\tconst handlePrev = () => scrollByItems(-1);\n\tconst handleNext = () => scrollByItems(1);\n\n\t/**\n\t * Клавиатурная доступность: стрелки влево/вправо двигают на один шаг.\n\t */\n\tconst onWrapperKeyDown = (e: React.KeyboardEvent) => {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (e.key === \"ArrowLeft\") {\n\t\t\te.preventDefault();\n\t\t\thandlePrev();\n\t\t} else if (e.key === \"ArrowRight\") {\n\t\t\te.preventDefault();\n\t\t\thandleNext();\n\t\t}\n\t};\n\n\tconst hasScroll = canScrollPrev || canScrollNext;\n\n\treturn (\n\t\t<div className={cn(styles.oneStepScroller, className)} style={{ position: \"relative\" }}>\n\t\t\t{hasScroll && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label=\"Прокрутить шаг влево\"\n\t\t\t\t\tclassName={styles.ossButton}\n\t\t\t\t\tonClick={handlePrev}\n\t\t\t\t\tdisabled={!canScrollPrev}>\n\t\t\t\t\t<ChevronLeftIcon />\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t<div className={styles.ossViewport} onKeyDown={onWrapperKeyDown} role=\"group\" aria-label=\"Элементы прокрутки\">\n\t\t\t\t<div className={styles.ossScroller} ref={scrollerRef} aria-live=\"polite\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{hasScroll && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label=\"Прокрутить шаг вправо\"\n\t\t\t\t\tclassName={styles.ossButton}\n\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\tdisabled={!canScrollNext}>\n\t\t\t\t\t<ChevronRightIcon />\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nexport interface ScrollableProps extends ComponentPropsWithoutRef<\"div\"> {\n\theight?: string | number;\n\tstable?: boolean;\n\toverscroll?: boolean;\n}\n\nexport function Scrollable({\n\tref,\n\tchildren,\n\theight,\n\tstable,\n\toverscroll,\n\tclassName,\n\tstyle,\n\t...htmlProps\n}: ScrollableProps & { ref?: Ref<HTMLDivElement> }) {\n\treturn (\n\t\t<div\n\t\t\t{...htmlProps}\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"scrollable\", stable && \"stable\", overscroll && \"overscroll\", className)}\n\t\t\tstyle={{ ...style, height: height ?? style?.height }}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nexport interface ScrollableBlockProps extends ScrollableProps {\n\tblockClassName?: string;\n}\n\nexport function ScrollableBlock({ ref, blockClassName, ...props }: ScrollableBlockProps & { ref?: Ref<HTMLDivElement> }) {\n\treturn (\n\t\t<div className={cn(blockClassName, \"overflowHidden w100 h100\")}>\n\t\t\t<Scrollable ref={ref} {...props} />\n\t\t</div>\n\t);\n}\n",".stateWrapper {\n\ttext-decoration: none;\n\tcolor: inherit;\n\tdisplay: block;\n\n\t// border: var(--border-width) solid var(--state-border-color, transparent);\n\tborder-left-style: solid;\n\tborder-left-color: var(--state-border-color, transparent);\n\tborder-left-width: 0.0625em; // 1px\n\tpadding-left: 0.25em; // 4px + 1px border\n\n\t&.status {\n\t\tborder-left-width: 0.3125em; // 5px\n\t\tpadding-left: 0;\n\n\t\t&.information {\n\t\t\tborder-left-color: var(--info-fill);\n\t\t}\n\n\t\t&.success {\n\t\t\tborder-left-color: var(--success-fill);\n\t\t}\n\n\t\t&.warning {\n\t\t\tborder-left-color: var(--warning-fill);\n\t\t}\n\n\t\t&.error {\n\t\t\tborder-left-color: var(--error-fill);\n\t\t}\n\t}\n}\n\n.state {\n\t&.information {\n\t\tcolor: var(--info-text);\n\n\t\tfill: var(--info-fill);\n\t\tstroke: var(--info-on-fill);\n\t}\n\n\t&.success {\n\t\tcolor: var(--success-text);\n\n\t\tfill: var(--success-fill);\n\t\tstroke: var(--success-on-fill);\n\t}\n\n\t&.warning {\n\t\tcolor: var(--warning-text);\n\n\t\tfill: var(--warning-fill);\n\t\tstroke: var(--warning-on-fill);\n\t\tstroke-width: 2px;\n\t}\n\n\t&.error {\n\t\tcolor: var(--error-text);\n\n\t\tfill: var(--error-fill);\n\t\tstroke: var(--error-on-fill);\n\t}\n}\n","import { State } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CircleAlertIcon, CircleCheckIcon, CircleXIcon, InfoIcon } from \"lucide-react\";\n\nimport styles from \"./State.module.scss\";\n\ninterface StateIconProps {\n\tstate: State;\n\ttext: string;\n\tclassName?: string;\n}\n\nexport function StateIcon({ state = \"none\", text, className }: StateIconProps) {\n\tconst renderIcon = () => {\n\t\tswitch (state) {\n\t\t\tcase \"error\":\n\t\t\t\treturn <ErrorIcon />;\n\t\t\tcase \"warning\":\n\t\t\t\treturn <WarningIcon />;\n\t\t\tcase \"success\":\n\t\t\t\treturn <SuccessIcon />;\n\t\t\tcase \"information\":\n\t\t\t\treturn <InformationIcon />;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={cn(\"flexCenter gapSm\", className)}>\n\t\t\t{renderIcon()}\n\t\t\t{text}\n\t\t</div>\n\t);\n}\n\ninterface RenderStateIconProps {\n\tstate?: State;\n}\n\nexport function RenderStateIcon({ state }: RenderStateIconProps) {\n\tswitch (state) {\n\t\tcase \"error\":\n\t\t\treturn <ErrorIcon />;\n\t\tcase \"warning\":\n\t\t\treturn <WarningIcon />;\n\t\tcase \"success\":\n\t\t\treturn <SuccessIcon />;\n\t\tcase \"information\":\n\t\t\treturn <InformationIcon />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nexport function ErrorIcon() {\n\treturn <CircleXIcon className={cn(styles.state, styles.error)} />;\n}\nexport function WarningIcon() {\n\treturn <CircleAlertIcon className={cn(styles.state, styles.warning)} />;\n}\nexport function SuccessIcon() {\n\treturn <CircleCheckIcon className={cn(styles.state, styles.success)} />;\n}\nexport function InformationIcon() {\n\treturn <InfoIcon className={cn(styles.state, styles.information)} />;\n}\n","import React from \"react\";\n\nimport { State } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { PolymorphicComponent, PolymorphicComponentBaseProps } from \"../polymorphic\";\n\nimport styles from \"./State.module.scss\";\n\ntype StateWrapperOwnProps<E extends React.ElementType = React.ElementType> = PolymorphicComponentBaseProps<E> & {\n\tstate?: State;\n\tclassName?: string;\n};\n\ntype StateWrapperProps<E extends React.ElementType> = StateWrapperOwnProps<E> &\n\tOmit<React.ComponentPropsWithRef<E>, keyof StateWrapperOwnProps>;\n\nexport function StateWrapper<E extends React.ElementType>({ as, state, className, ...props }: StateWrapperProps<E>) {\n\tconst status = state?.toLowerCase() ?? \"none\";\n\tconst statusClass = styles[status as keyof typeof styles];\n\tconst isStatused = status && status !== \"none\";\n\n\tconst Component = as || \"div\";\n\n\treturn (\n\t\t<PolymorphicComponent\n\t\t\tas={Component as React.ElementType}\n\t\t\tclassName={cn(styles.stateWrapper, isStatused && styles.status, statusClass, className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"misc-Dcr24uDY.js","names":[],"sources":["../../src/misc/AnimatedLogo.module.scss","../../src/misc/AnimatedLogo.tsx","../../src/misc/AnimatedLogoSegment.tsx","../../src/misc/CopyTextWrapper.tsx","../../src/misc/IconWrapper.module.scss","../../src/misc/IconWrapper.tsx","../../src/misc/LoadingMessage.module.scss","../../src/misc/Message.tsx","../../src/misc/LoadingMessage.tsx","../../src/misc/LazyDynamicComponent.tsx","../../src/misc/SkeletonLine.tsx","../../src/misc/LazyValue.tsx","../../src/misc/NoData.tsx","../../src/misc/Notice.tsx","../../src/misc/OneStepScroller.module.scss","../../src/misc/OneStepScroller.tsx","../../src/misc/Scrollable.tsx","../../src/misc/State.module.scss","../../src/misc/StateIcon.tsx","../../src/misc/StateWrapper.tsx"],"sourcesContent":[".logo {\n\tsvg {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t}\n}\n\n.segment {\n\topacity: 0.2;\n\tanimation: pulseSteps 2s ease-in-out infinite;\n}\n\n@keyframes pulseSteps {\n\t0% {\n\t\topacity: 0.2;\n\t}\n\n\t35%,\n\t55% {\n\t\topacity: 1;\n\t}\n\n\t100% {\n\t\topacity: 0.2;\n\t}\n}\n\n@media (prefers-reduced-motion: reduce) {\n\t.segment {\n\t\tanimation: none;\n\t\topacity: 1;\n\t}\n}\n","import { type ComponentPropsWithoutRef, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./AnimatedLogo.module.scss\";\n\ntype AnimatedLogoProps = Omit<ComponentPropsWithoutRef<\"div\">, \"children\"> & {\n\tchildren: ReactNode;\n};\n\n/**\n * Контейнер анимированного логотипа без брендовой SVG-разметки.\n * Host-проект передаёт собственный `svg`, а его визуальные части оборачивает в `AnimatedLogoSegment`.\n */\nexport function AnimatedLogo({ children, className, ...htmlProps }: AnimatedLogoProps) {\n\treturn (\n\t\t<div {...htmlProps} className={cn(styles.logo, className)}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./AnimatedLogo.module.scss\";\n\ntype AnimatedLogoSegmentProps = Omit<ComponentPropsWithoutRef<\"g\">, \"children\"> & {\n\tchildren: ReactNode;\n\torder: number;\n};\n\n/**\n * Анимирует одну смысловую часть host-логотипа и сдвигает её pulse относительно предыдущих частей.\n * `order` задаётся с нуля в визуальной последовательности сегментов и преобразуется в шаг задержки 200 мс.\n */\nexport function AnimatedLogoSegment({ children, className, order, style, ...svgGroupProps }: AnimatedLogoSegmentProps) {\n\treturn (\n\t\t<g {...svgGroupProps} className={cn(styles.segment, className)} style={{ ...style, animationDelay: `${order * 200}ms` }}>\n\t\t\t{children}\n\t\t</g>\n\t);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport { useCopyElementTextWithFeedback } from \"@ryuzaki13/react-foundation-lib/copy\";\nimport { CheckCheckIcon, CopyIcon } from \"lucide-react\";\n\nimport { FloatingPopover } from \"../popover\";\n\ninterface CopyTextWrapperProps {\n\tchildren: React.ReactNode;\n\tposition?: Placement;\n\tshowOnHover?: boolean;\n\tclassName?: string;\n}\n\nexport function CopyTextWrapper({ children, position = \"top\", showOnHover = true, className }: CopyTextWrapperProps) {\n\tconst { containerRef, copyElementText, isCopied } = useCopyElementTextWithFeedback<HTMLSpanElement>();\n\n\treturn (\n\t\t<span ref={containerRef} className={className}>\n\t\t\t{children}\n\t\t\t<FloatingPopover openOnHover={showOnHover} placement={position} content={isCopied ? \"Скопировано!\" : \"Копировать текст\"}>\n\t\t\t\t<button onClick={copyElementText} aria-label={isCopied ? \"Скопировано!\" : \"Копировать текст\"}>\n\t\t\t\t\t{isCopied ? <CheckCheckIcon className=\"block statusSuccess\" /> : <CopyIcon className=\"block statusInfo\" />}\n\t\t\t\t</button>\n\t\t\t</FloatingPopover>\n\t\t</span>\n\t);\n}\n",".wrapper {\n\twidth: var(--control-height);\n\theight: var(--control-height);\n\tmargin: auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./IconWrapper.module.scss\";\n\ninterface IconWrapperProps {\n\tchildren: ReactNode;\n\tclassName?: string;\n}\n\nexport function IconWrapper({ className, children }: IconWrapperProps) {\n\treturn <div className={cn(styles.wrapper, className)}>{children}</div>;\n}\n",".componentLoader {\n\tmin-height: 10em;\n}\n","import { type AriaAttributes, type AriaRole, type PropsWithChildren } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { FlexCenter } from \"../flex\";\nimport { Text, type TextColor } from \"../text\";\n\ntype MessageProps = PropsWithChildren<\n\tReadonly<{\n\t\tclassName?: string;\n\t\tcolor?: TextColor;\n\t\tminHeight?: string | number;\n\t\tuppercase?: boolean;\n\t\trole?: AriaRole;\n\t}>\n> &\n\tAriaAttributes;\n\nexport function Message({ className, children, color = \"muted\", role, minHeight, uppercase = true, ...ariaAttributes }: MessageProps) {\n\treturn (\n\t\t<FlexCenter className={cn(\"paddingMd textCenter\", className)} minHeight={minHeight}>\n\t\t\t<Text {...ariaAttributes} as=\"p\" weight=\"bold\" color={color} uppercase={uppercase} role={role}>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</FlexCenter>\n\t);\n}\n","import { type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./LoadingMessage.module.scss\";\nimport { Message } from \"./Message\";\n\ntype LoadingMessageProps = {\n\tclassName?: string;\n\t/** Готовый брендовый знак, которым host-проект при необходимости дополняет сообщение о загрузке. */\n\tlogo?: ReactNode;\n\ttext?: string;\n};\n\nexport function LoadingMessage({ className, logo, text }: LoadingMessageProps) {\n\treturn (\n\t\t<Message className={cn(styles.componentLoader, logo ? undefined : \"skeletonLine\", className)}>\n\t\t\t{logo}\n\n\t\t\t{text || \"Загрузка...\"}\n\t\t</Message>\n\t);\n}\n","import { Suspense, useSyncExternalStore, type ComponentType, type ReactNode } from \"react\";\n\nimport { useLazyComponent } from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { LoadingMessage } from \"./LoadingMessage\";\n\ntype LazyDynamicComponentProps<T extends object> = {\n\timportFunc: () => Promise<Record<string, ComponentType<T>> | null>;\n\tcomponentName: string;\n\tcacheKey?: string;\n\tclientOnly?: boolean;\n\tfallback?: ReactNode;\n\tprops?: T;\n};\n\nconst subscribeClientOnlyMount = (onStoreChange: () => void) => {\n\tonStoreChange();\n\n\treturn () => undefined;\n};\n\nconst getClientSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\n/**\n * Компонент ленивой загрузки динамически импортируемого React-компонента. Позволяет отложить загрузку тяжелых частей интерфейса до момента использования.\n */\nexport function LazyDynamicComponent<T extends object>({\n\tfallback,\n\timportFunc,\n\tcomponentName,\n\tclientOnly = false,\n\tcacheKey,\n\tprops\n}: LazyDynamicComponentProps<T>) {\n\tconst Component = useLazyComponent(importFunc, componentName, cacheKey);\n\tconst isClient = useSyncExternalStore(subscribeClientOnlyMount, getClientSnapshot, getServerSnapshot);\n\n\tconst fallbackNode = fallback ?? <LoadingMessage text=\"Ожидание компонента...\" />;\n\n\t// Client-only режим нужен для браузерных модулей, которые нельзя даже пытаться импортировать во время SSR.\n\tif (clientOnly && !isClient) return fallbackNode;\n\n\treturn (\n\t\t<Suspense fallback={fallbackNode}>\n\t\t\t{/* eslint-disable-next-line react-hooks/static-components */}\n\t\t\t<Component {...(props ?? ({} as T))} />\n\t\t</Suspense>\n\t);\n}\n","import React from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { PolymorphicComponent, PolymorphicComponentBaseProps } from \"../polymorphic\";\n\ntype SkeletonLineOwnProps<E extends React.ElementType = React.ElementType> = PolymorphicComponentBaseProps<E> & {\n\tclassName?: string;\n};\n\ntype SkeletonLineProps<E extends React.ElementType> = SkeletonLineOwnProps<E> &\n\tOmit<React.ComponentPropsWithRef<E>, keyof SkeletonLineOwnProps>;\n\nexport function SkeletonLine<E extends React.ElementType>({ as, className, ...props }: SkeletonLineProps<E>) {\n\tconst Component = as || \"div\";\n\n\treturn (\n\t\t<PolymorphicComponent\n\t\t\tas={Component as React.ElementType}\n\t\t\tclassName={cn(\"skeletonLine colorTransparent radiusSm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n","import React from \"react\";\n\nimport { SkeletonLine } from \"./SkeletonLine\";\n\ninterface LazyValueProps {\n\tvalue: React.ReactNode;\n\tisLoading?: boolean;\n}\n\nexport function LazyValue({ value, isLoading }: LazyValueProps) {\n\treturn isLoading ? <SkeletonLine>Загрузка...</SkeletonLine> : (value ?? \"-\");\n}\n","import { type AriaAttributes, type AriaRole } from \"react\";\n\nimport { Message } from \"./Message\";\n\ntype NoDataProps = Readonly<{\n\tclassName?: string;\n\ttext?: string;\n\tminHeight?: string | number;\n\trole?: AriaRole;\n}> &\n\tAriaAttributes;\n\nexport function NoData({ className, text, role, minHeight = \"5em\", ...ariaAttributes }: NoDataProps) {\n\treturn (\n\t\t<Message {...ariaAttributes} className={className} color=\"muted\" minHeight={minHeight} role={role}>\n\t\t\t{text || \"Нет данных\"}\n\t\t</Message>\n\t);\n}\n","import { type AriaAttributes, type AriaRole, type PropsWithChildren } from \"react\";\n\nimport { Message } from \"./Message\";\n\ntype NoticeProps = PropsWithChildren<\n\tReadonly<{\n\t\tisError?: boolean;\n\t\tclassName?: string;\n\t\trole?: AriaRole;\n\t}>\n> &\n\tAriaAttributes;\n\nexport function Notice({ className, isError, role, children, ...ariaAttributes }: NoticeProps) {\n\treturn (\n\t\t<Message {...ariaAttributes} className={className} color={isError ? \"error\" : \"secondary\"} role={role}>\n\t\t\t{children}\n\t\t</Message>\n\t);\n}\n",".oneStepScroller {\n\toverflow: hidden;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n\tmin-width: 0;\n}\n\n.ossViewport {\n\toverflow: hidden;\n\toutline: none;\n\tmin-width: 0;\n\tflex: 1 1 auto;\n}\n\n.ossScroller {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tgap: var(--space-sm);\n\talign-items: end;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tscroll-behavior: smooth;\n\t-webkit-overflow-scrolling: touch;\n\tscrollbar-width: none; /* firefox */\n\n\t::-webkit-scrollbar {\n\t\theight: 0;\n\t}\n}\n\n.ossButton {\n\t// position: absolute;\n\ttop: 0;\n\tz-index: 10;\n\twidth: var(--control-height);\n\theight: 100%;\n\tflex: 0 0 var(--control-height);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\t// border: var(--border);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--content-2);\n\t// background-color: var(--surface-0);\n\t// opacity: 0.75;\n\n\ttransition-property: opacity, color;\n\ttransition-duration: var(--transition-fast);\n\n\t&:hover {\n\t\topacity: 1;\n\t\tcolor: var(--content-0);\n\t}\n\n\t&:disabled {\n\t\topacity: 0.5;\n\t\tpointer-events: none;\n\t}\n\n\t// &.prev {\n\t// \tleft: 0;\n\t// }\n\n\t// &.next {\n\t// \tright: 0;\n\t// }\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport styles from \"./OneStepScroller.module.scss\";\n\ninterface OneStepScrollerProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n\t/**\n\t * CSS-селектор элементов, которые считаются \"шагами\" скролла.\n\t * По умолчанию используются прямые потомки скроллера.\n\t */\n\titemSelector?: string;\n\t/**\n\t * Дополнительный внутренний отступ (px) при прокрутке к фокусируемому элементу.\n\t */\n\tscrollPadding?: number;\n\t/**\n\t * Плавная прокрутка для кнопок и авто-доводки до видимости.\n\t */\n\tsmooth?: boolean;\n}\n\nconst EDGE_EPSILON_PX = 1;\n\nfunction maxScrollLeft(scroller: HTMLElement) {\n\treturn Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n}\n\n/**\n * Горизонтальный скроллер \"по одному элементу\".\n *\n * Ожидает элементы фиксированной ширины (или близкой к фиксированной),\n * чтобы шаг скролла соответствовал ширине одного элемента.\n */\nexport function OneStepScroller({ children, className, itemSelector, scrollPadding = 6, smooth = true }: OneStepScrollerProps) {\n\tconst scrollerRef = useRef<HTMLDivElement | null>(null);\n\tconst rafIdRef = useRef<number | null>(null);\n\n\tconst [canScrollPrev, setCanScrollPrev] = useState(false);\n\tconst [canScrollNext, setCanScrollNext] = useState(false);\n\n\t/**\n\t * Получить список элементов-\"шагов\".\n\t *\n\t * Оптимизация: для дефолтного поведения используем `children` DOM-узла,\n\t * чтобы не выполнять `querySelectorAll` на каждый вызов.\n\t */\n\tconst getItems = useCallback((): HTMLElement[] => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return [];\n\n\t\tif (!itemSelector) {\n\t\t\treturn Array.from(scroller.children).filter((node): node is HTMLElement => node instanceof HTMLElement);\n\t\t}\n\n\t\treturn Array.from(scroller.querySelectorAll<HTMLElement>(itemSelector));\n\t}, [itemSelector]);\n\n\t/**\n\t * Найти \"элемент шага\" для произвольного target внутри скроллера.\n\t */\n\tconst findItemForTarget = useCallback(\n\t\t(target: HTMLElement): HTMLElement | null => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return null;\n\n\t\t\tif (itemSelector) {\n\t\t\t\tconst item = target.closest<HTMLElement>(itemSelector);\n\t\t\t\tif (item && scroller.contains(item)) return item;\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet node: HTMLElement | null = target;\n\t\t\twhile (node && node.parentElement && node.parentElement !== scroller) {\n\t\t\t\tnode = node.parentElement;\n\t\t\t}\n\n\t\t\tif (node && node.parentElement === scroller) return node;\n\t\t\treturn null;\n\t\t},\n\t\t[itemSelector]\n\t);\n\n\t/**\n\t * Обновить состояние кнопок \"назад/вперед\".\n\t * Состояние меняется только при реальном отличии, чтобы не триггерить\n\t * лишние перерисовки на каждом событии scroll.\n\t */\n\tconst updateScrollButtons = useCallback(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) {\n\t\t\tsetCanScrollPrev(false);\n\t\t\tsetCanScrollNext(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst maxScrollLeft = Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n\t\tconst current = Math.max(0, Math.min(scroller.scrollLeft, maxScrollLeft));\n\n\t\tconst nextCanScrollPrev = current > EDGE_EPSILON_PX;\n\t\tconst nextCanScrollNext = current < maxScrollLeft - EDGE_EPSILON_PX;\n\n\t\tsetCanScrollPrev((prev) => (prev === nextCanScrollPrev ? prev : nextCanScrollPrev));\n\t\tsetCanScrollNext((prev) => (prev === nextCanScrollNext ? prev : nextCanScrollNext));\n\t}, []);\n\n\t/**\n\t * Запланировать обновление кнопок в следующий animation frame.\n\t * Это снижает частоту вычислений при интенсивном scroll/resize.\n\t */\n\tconst scheduleUpdateScrollButtons = useCallback(() => {\n\t\tif (rafIdRef.current !== null) return;\n\n\t\trafIdRef.current = requestAnimationFrame(() => {\n\t\t\trafIdRef.current = null;\n\t\t\tupdateScrollButtons();\n\t\t});\n\t}, [updateScrollButtons]);\n\n\t/**\n\t * Прокрутка на N элементов (N может быть отрицательным).\n\t */\n\tconst scrollByItems = useCallback(\n\t\t(count: number) => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return;\n\n\t\t\tconst firstItem = getItems()[0];\n\t\t\tif (!firstItem) return;\n\n\t\t\tconst step = firstItem.getBoundingClientRect().width;\n\t\t\tif (!step) return;\n\n\t\t\tconst delta = Math.round(count * step);\n\t\t\tconst maxScrollLeft = Math.max(0, scroller.scrollWidth - scroller.clientWidth);\n\t\t\tconst target = Math.max(0, Math.min(scroller.scrollLeft + delta, maxScrollLeft));\n\n\t\t\tscroller.scrollTo({\n\t\t\t\tleft: target,\n\t\t\t\tbehavior: smooth ? \"smooth\" : \"auto\"\n\t\t\t});\n\t\t},\n\t\t[getItems, smooth]\n\t);\n\n\t/**\n\t * Гарантировать полную видимость элемента в пределах viewport скроллера.\n\t */\n\tconst ensureFullyVisible = useCallback(\n\t\t(el: HTMLElement) => {\n\t\t\tconst scroller = scrollerRef.current;\n\t\t\tif (!scroller) return;\n\n\t\t\tconst scrollerRect = scroller.getBoundingClientRect();\n\t\t\tconst elementRect = el.getBoundingClientRect();\n\n\t\t\tconst elementLeft = elementRect.left - scrollerRect.left + scroller.scrollLeft;\n\t\t\tconst elementRight = elementLeft + elementRect.width;\n\n\t\t\tconst visibleLeft = scroller.scrollLeft;\n\t\t\tconst visibleRight = scroller.scrollLeft + scroller.clientWidth;\n\n\t\t\tif (elementLeft >= visibleLeft + EDGE_EPSILON_PX && elementRight <= visibleRight - EDGE_EPSILON_PX) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet targetScrollLeft = scroller.scrollLeft;\n\t\t\tif (elementLeft < visibleLeft) {\n\t\t\t\ttargetScrollLeft = Math.max(0, elementLeft - scrollPadding);\n\t\t\t} else if (elementRight > visibleRight) {\n\t\t\t\ttargetScrollLeft = Math.min(maxScrollLeft(scroller), elementRight - scroller.clientWidth + scrollPadding);\n\t\t\t}\n\n\t\t\tscroller.scrollTo({\n\t\t\t\tleft: Math.round(targetScrollLeft),\n\t\t\t\tbehavior: smooth ? \"smooth\" : \"auto\"\n\t\t\t});\n\t\t},\n\t\t[scrollPadding, smooth]\n\t);\n\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return;\n\n\t\tconst handleFocusIn = (event: FocusEvent) => {\n\t\t\tconst target = event.target;\n\t\t\tif (!(target instanceof HTMLElement)) return;\n\n\t\t\tconst item = findItemForTarget(target);\n\t\t\tif (item) ensureFullyVisible(item);\n\t\t};\n\n\t\tscroller.addEventListener(\"focusin\", handleFocusIn);\n\t\treturn () => scroller.removeEventListener(\"focusin\", handleFocusIn);\n\t}, [ensureFullyVisible, findItemForTarget]);\n\n\t/**\n\t * Наблюдаем только за размером скроллера и изменением его DOM-структуры.\n\t * Это дешевле, чем подписка ResizeObserver на каждый элемент + IntersectionObserver.\n\t */\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return;\n\n\t\tconst onScroll = () => scheduleUpdateScrollButtons();\n\t\tscroller.addEventListener(\"scroll\", onScroll, { passive: true });\n\n\t\tlet resizeObserver: ResizeObserver | null = null;\n\t\tif (typeof ResizeObserver !== \"undefined\") {\n\t\t\tresizeObserver = new ResizeObserver(scheduleUpdateScrollButtons);\n\t\t\tresizeObserver.observe(scroller);\n\t\t}\n\n\t\tlet mutationObserver: MutationObserver | null = null;\n\t\tif (typeof MutationObserver !== \"undefined\") {\n\t\t\tmutationObserver = new MutationObserver(scheduleUpdateScrollButtons);\n\t\t\tmutationObserver.observe(scroller, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: false\n\t\t\t});\n\t\t}\n\n\t\tscheduleUpdateScrollButtons();\n\n\t\treturn () => {\n\t\t\tscroller.removeEventListener(\"scroll\", onScroll);\n\t\t\tresizeObserver?.disconnect();\n\t\t\tmutationObserver?.disconnect();\n\n\t\t\tif (rafIdRef.current !== null) {\n\t\t\t\tcancelAnimationFrame(rafIdRef.current);\n\t\t\t\trafIdRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [scheduleUpdateScrollButtons]);\n\n\t/**\n\t * При изменении children просим пересчитать видимость кнопок.\n\t */\n\tuseEffect(() => {\n\t\tscheduleUpdateScrollButtons();\n\t}, [children, scheduleUpdateScrollButtons]);\n\n\tconst handlePrev = () => scrollByItems(-1);\n\tconst handleNext = () => scrollByItems(1);\n\n\t/**\n\t * Клавиатурная доступность: стрелки влево/вправо двигают на один шаг.\n\t */\n\tconst onWrapperKeyDown = (e: React.KeyboardEvent) => {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (e.key === \"ArrowLeft\") {\n\t\t\te.preventDefault();\n\t\t\thandlePrev();\n\t\t} else if (e.key === \"ArrowRight\") {\n\t\t\te.preventDefault();\n\t\t\thandleNext();\n\t\t}\n\t};\n\n\tconst hasScroll = canScrollPrev || canScrollNext;\n\n\treturn (\n\t\t<div className={cn(styles.oneStepScroller, className)} style={{ position: \"relative\" }}>\n\t\t\t{hasScroll && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label=\"Прокрутить шаг влево\"\n\t\t\t\t\tclassName={styles.ossButton}\n\t\t\t\t\tonClick={handlePrev}\n\t\t\t\t\tdisabled={!canScrollPrev}>\n\t\t\t\t\t<ChevronLeftIcon />\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t<div className={styles.ossViewport} onKeyDown={onWrapperKeyDown} role=\"group\" aria-label=\"Элементы прокрутки\">\n\t\t\t\t<div className={styles.ossScroller} ref={scrollerRef} aria-live=\"polite\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{hasScroll && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label=\"Прокрутить шаг вправо\"\n\t\t\t\t\tclassName={styles.ossButton}\n\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\tdisabled={!canScrollNext}>\n\t\t\t\t\t<ChevronRightIcon />\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nexport interface ScrollableProps extends ComponentPropsWithoutRef<\"div\"> {\n\theight?: string | number;\n\tstable?: boolean;\n\toverscroll?: boolean;\n}\n\nexport function Scrollable({\n\tref,\n\tchildren,\n\theight,\n\tstable,\n\toverscroll,\n\tclassName,\n\tstyle,\n\t...htmlProps\n}: ScrollableProps & { ref?: Ref<HTMLDivElement> }) {\n\treturn (\n\t\t<div\n\t\t\t{...htmlProps}\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"scrollable\", stable && \"stable\", overscroll && \"overscroll\", className)}\n\t\t\tstyle={{ ...style, height: height ?? style?.height }}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nexport interface ScrollableBlockProps extends ScrollableProps {\n\tblockClassName?: string;\n}\n\nexport function ScrollableBlock({ ref, blockClassName, ...props }: ScrollableBlockProps & { ref?: Ref<HTMLDivElement> }) {\n\treturn (\n\t\t<div className={cn(blockClassName, \"overflowHidden w100 h100\")}>\n\t\t\t<Scrollable ref={ref} {...props} />\n\t\t</div>\n\t);\n}\n",".stateWrapper {\n\ttext-decoration: none;\n\tcolor: inherit;\n\tdisplay: block;\n\n\t// border: var(--border-width) solid var(--state-border-color, transparent);\n\tborder-left-style: solid;\n\tborder-left-color: var(--state-border-color, transparent);\n\tborder-left-width: 0.0625em; // 1px\n\tpadding-left: 0.25em; // 4px + 1px border\n\n\t&.status {\n\t\tborder-left-width: 0.3125em; // 5px\n\t\tpadding-left: 0;\n\n\t\t&.information {\n\t\t\tborder-left-color: var(--info-fill);\n\t\t}\n\n\t\t&.success {\n\t\t\tborder-left-color: var(--success-fill);\n\t\t}\n\n\t\t&.warning {\n\t\t\tborder-left-color: var(--warning-fill);\n\t\t}\n\n\t\t&.error {\n\t\t\tborder-left-color: var(--error-fill);\n\t\t}\n\t}\n}\n\n.state {\n\t&.information {\n\t\tcolor: var(--info-text);\n\n\t\tfill: var(--info-fill);\n\t\tstroke: var(--info-on-fill);\n\t}\n\n\t&.success {\n\t\tcolor: var(--success-text);\n\n\t\tfill: var(--success-fill);\n\t\tstroke: var(--success-on-fill);\n\t}\n\n\t&.warning {\n\t\tcolor: var(--warning-text);\n\n\t\tfill: var(--warning-fill);\n\t\tstroke: var(--warning-on-fill);\n\t\tstroke-width: 2px;\n\t}\n\n\t&.error {\n\t\tcolor: var(--error-text);\n\n\t\tfill: var(--error-fill);\n\t\tstroke: var(--error-on-fill);\n\t}\n}\n","import { State } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CircleAlertIcon, CircleCheckIcon, CircleXIcon, InfoIcon } from \"lucide-react\";\n\nimport styles from \"./State.module.scss\";\n\ninterface StateIconProps {\n\tstate: State;\n\ttext: string;\n\tclassName?: string;\n}\n\nexport function StateIcon({ state = \"none\", text, className }: StateIconProps) {\n\tconst renderIcon = () => {\n\t\tswitch (state) {\n\t\t\tcase \"error\":\n\t\t\t\treturn <ErrorIcon />;\n\t\t\tcase \"warning\":\n\t\t\t\treturn <WarningIcon />;\n\t\t\tcase \"success\":\n\t\t\t\treturn <SuccessIcon />;\n\t\t\tcase \"information\":\n\t\t\t\treturn <InformationIcon />;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={cn(\"flexCenter gapSm\", className)}>\n\t\t\t{renderIcon()}\n\t\t\t{text}\n\t\t</div>\n\t);\n}\n\ninterface RenderStateIconProps {\n\tstate?: State;\n}\n\nexport function RenderStateIcon({ state }: RenderStateIconProps) {\n\tswitch (state) {\n\t\tcase \"error\":\n\t\t\treturn <ErrorIcon />;\n\t\tcase \"warning\":\n\t\t\treturn <WarningIcon />;\n\t\tcase \"success\":\n\t\t\treturn <SuccessIcon />;\n\t\tcase \"information\":\n\t\t\treturn <InformationIcon />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nexport function ErrorIcon() {\n\treturn <CircleXIcon className={cn(styles.state, styles.error)} />;\n}\nexport function WarningIcon() {\n\treturn <CircleAlertIcon className={cn(styles.state, styles.warning)} />;\n}\nexport function SuccessIcon() {\n\treturn <CircleCheckIcon className={cn(styles.state, styles.success)} />;\n}\nexport function InformationIcon() {\n\treturn <InfoIcon className={cn(styles.state, styles.information)} />;\n}\n","import React from \"react\";\n\nimport { State } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { PolymorphicComponent, PolymorphicComponentBaseProps } from \"../polymorphic\";\n\nimport styles from \"./State.module.scss\";\n\ntype StateWrapperOwnProps<E extends React.ElementType = React.ElementType> = PolymorphicComponentBaseProps<E> & {\n\tstate?: State;\n\tclassName?: string;\n};\n\ntype StateWrapperProps<E extends React.ElementType> = StateWrapperOwnProps<E> &\n\tOmit<React.ComponentPropsWithRef<E>, keyof StateWrapperOwnProps>;\n\nexport function StateWrapper<E extends React.ElementType>({ as, state, className, ...props }: StateWrapperProps<E>) {\n\tconst status = state?.toLowerCase() ?? \"none\";\n\tconst statusClass = styles[status as keyof typeof styles];\n\tconst isStatused = status && status !== \"none\";\n\n\tconst Component = as || \"div\";\n\n\treturn (\n\t\t<PolymorphicComponent\n\t\t\tas={Component as React.ElementType}\n\t\t\tclassName={cn(styles.stateWrapper, isStatused && styles.status, statusClass, className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;ACcA,SAAgB,EAAa,EAAE,aAAU,cAAW,GAAG,KAAgC;CACtF,OACC,kBAAC,OAAD;EAAK,GAAI;EAAW,WAAW,EAAG,EAAO,MAAM,CAAS;EACtD;CACG,CAAA;AAEP;;;ACLA,SAAgB,EAAoB,EAAE,aAAU,cAAW,UAAO,UAAO,GAAG,KAA2C;CACtH,OACC,kBAAC,KAAD;EAAG,GAAI;EAAe,WAAW,EAAG,EAAO,SAAS,CAAS;EAAG,OAAO;GAAE,GAAG;GAAO,gBAAgB,GAAG,IAAQ,IAAI;EAAI;EACpH;CACC,CAAA;AAEL;;;ACRA,SAAgB,EAAgB,EAAE,aAAU,cAAW,OAAO,iBAAc,IAAM,gBAAmC;CACpH,IAAM,EAAE,iBAAc,oBAAiB,gBAAa,EAAgD;CAEpG,OACC,kBAAC,QAAD;EAAM,KAAK;EAAyB;EAApC,UAAA,CACE,GACD,kBAAC,GAAD;GAAiB,aAAa;GAAa,WAAW;GAAU,SAAS,IAAW,iBAAiB;GACpG,UAAA,kBAAC,UAAD;IAAQ,SAAS;IAAiB,cAAY,IAAW,iBAAiB;IACxE,UAAA,IAAW,kBAAC,GAAD,EAAgB,WAAU,sBAAuB,CAAA,IAAI,kBAAC,GAAD,EAAU,WAAU,mBAAoB,CAAA;GAClG,CAAA;EACQ,CAAA,CACZ;;AAER;;;;AEfA,SAAgB,EAAY,EAAE,cAAW,eAA8B;CACtE,OAAO,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,SAAS,CAAS;EAAI;CAAc,CAAA;AACtE;;;;AEKA,SAAgB,EAAQ,EAAE,cAAW,aAAU,WAAQ,SAAS,SAAM,cAAW,eAAY,IAAM,GAAG,KAAgC;CACrI,OACC,kBAAC,GAAD;EAAY,WAAW,EAAG,wBAAwB,CAAS;EAAc;EACxE,UAAA,kBAAC,GAAD;GAAM,GAAI;GAAgB,IAAG;GAAI,QAAO;GAAc;GAAkB;GAAiB;GACvF;EACI,CAAA;CACK,CAAA;AAEd;;;ACZA,SAAgB,EAAe,EAAE,cAAW,SAAM,WAA6B;CAC9E,OACC,kBAAC,GAAD;EAAS,WAAW,EAAG,EAAO,iBAAiB,IAAO,KAAA,IAAY,gBAAgB,CAAS;EAA3F,UAAA,CACE,GAEA,KAAQ,aACD;;AAEX;;;ACPA,IAAM,KAA4B,OACjC,EAAc,SAED,KAAA,IAGR,UAA0B,IAC1B,UAA0B;AAKhC,SAAgB,EAAuC,EACtD,aACA,eACA,kBACA,gBAAa,IACb,aACA,YACgC;CAChC,IAAM,IAAY,EAAiB,GAAY,GAAe,CAAQ,GAChE,IAAW,EAAqB,GAA0B,GAAmB,CAAiB,GAE9F,IAAe,KAAY,kBAAC,GAAD,EAAgB,MAAK,yBAA0B,CAAA;CAKhF,OAFI,KAAc,CAAC,IAAiB,IAGnC,kBAAC,GAAD;EAAU,UAAU;EAEnB,UAAA,kBAAC,GAAD,EAAW,GAAK,KAAU,CAAC,EAAW,CAAA;CAC7B,CAAA;AAEZ;;;ACpCA,SAAgB,EAA0C,EAAE,OAAI,cAAW,GAAG,KAA+B;CAG5G,OACC,kBAAC,GAAD;EACC,IAJgB,KAAM;EAKtB,WAAW,EAAG,0CAA0C,CAAS;EACjE,GAAI;CACJ,CAAA;AAEH;;;ACdA,SAAgB,EAAU,EAAE,UAAO,gBAA6B;CAC/D,OAAO,IAAY,kBAAC,GAAD,EAAA,UAAc,cAAyB,CAAA,IAAK,KAAS;AACzE;;;ACCA,SAAgB,EAAO,EAAE,cAAW,SAAM,SAAM,eAAY,OAAO,GAAG,KAA+B;CACpG,OACC,kBAAC,GAAD;EAAS,GAAI;EAA2B;EAAW,OAAM;EAAmB;EAAiB;EAC3F,UAAA,KAAQ;CACD,CAAA;AAEX;;;ACLA,SAAgB,EAAO,EAAE,cAAW,YAAS,SAAM,aAAU,GAAG,KAA+B;CAC9F,OACC,kBAAC,GAAD;EAAS,GAAI;EAA2B;EAAW,OAAO,IAAU,UAAU;EAAmB;EAC/F;CACO,CAAA;AAEX;;;;;;GEMM,IAAkB;AAExB,SAAS,EAAc,GAAuB;CAC7C,OAAO,KAAK,IAAI,GAAG,EAAS,cAAc,EAAS,WAAW;AAC/D;AAQA,SAAgB,EAAgB,EAAE,aAAU,cAAW,iBAAc,mBAAgB,GAAG,YAAS,MAA8B;CAC9H,IAAM,IAAc,EAA8B,IAAI,GAChD,IAAW,EAAsB,IAAI,GAErC,CAAC,GAAe,KAAoB,EAAS,EAAK,GAClD,CAAC,GAAe,KAAoB,EAAS,EAAK,GAQlD,IAAW,QAAiC;EACjD,IAAM,IAAW,EAAY;EAO7B,OANK,IAEA,IAIE,MAAM,KAAK,EAAS,iBAA8B,CAAY,CAAC,IAH9D,MAAM,KAAK,EAAS,QAAQ,CAAC,CAAC,QAAQ,MAA8B,aAAgB,WAAW,IAHjF,CAAC;CAOxB,GAAG,CAAC,CAAY,CAAC,GAKX,IAAoB,GACxB,MAA4C;EAC5C,IAAM,IAAW,EAAY;EAC7B,IAAI,CAAC,GAAU,OAAO;EAEtB,IAAI,GAAc;GACjB,IAAM,IAAO,EAAO,QAAqB,CAAY;GAErD,OADI,KAAQ,EAAS,SAAS,CAAI,IAAU,IACrC;EACR;EAEA,IAAI,IAA2B;EAC/B,OAAO,KAAQ,EAAK,iBAAiB,EAAK,kBAAkB,IAC3D,IAAO,EAAK;EAIb,OADI,KAAQ,EAAK,kBAAkB,IAAiB,IAC7C;CACR,GACA,CAAC,CAAY,CACd,GAOM,IAAsB,QAAkB;EAC7C,IAAM,IAAW,EAAY;EAC7B,IAAI,CAAC,GAAU;GAEd,AADA,EAAiB,EAAK,GACtB,EAAiB,EAAK;GACtB;EACD;EAEA,IAAM,IAAgB,KAAK,IAAI,GAAG,EAAS,cAAc,EAAS,WAAW,GACvE,IAAU,KAAK,IAAI,GAAG,KAAK,IAAI,EAAS,YAAY,CAAa,CAAC,GAElE,IAAoB,IAAU,GAC9B,IAAoB,IAAU,IAAgB;EAGpD,AADA,GAAkB,MAAU,MAAS,IAAoB,IAAO,CAAkB,GAClF,GAAkB,MAAU,MAAS,IAAoB,IAAO,CAAkB;CACnF,GAAG,CAAC,CAAC,GAMC,IAA8B,QAAkB;EACjD,EAAS,YAAY,SAEzB,EAAS,UAAU,4BAA4B;GAE9C,AADA,EAAS,UAAU,MACnB,EAAoB;EACrB,CAAC;CACF,GAAG,CAAC,CAAmB,CAAC,GAKlB,IAAgB,GACpB,MAAkB;EAClB,IAAM,IAAW,EAAY;EAC7B,IAAI,CAAC,GAAU;EAEf,IAAM,IAAY,EAAS,CAAC,CAAC;EAC7B,IAAI,CAAC,GAAW;EAEhB,IAAM,IAAO,EAAU,sBAAsB,CAAC,CAAC;EAC/C,IAAI,CAAC,GAAM;EAEX,IAAM,IAAQ,KAAK,MAAM,IAAQ,CAAI,GAC/B,IAAgB,KAAK,IAAI,GAAG,EAAS,cAAc,EAAS,WAAW,GACvE,IAAS,KAAK,IAAI,GAAG,KAAK,IAAI,EAAS,aAAa,GAAO,CAAa,CAAC;EAE/E,EAAS,SAAS;GACjB,MAAM;GACN,UAAU,IAAS,WAAW;EAC/B,CAAC;CACF,GACA,CAAC,GAAU,CAAM,CAClB,GAKM,IAAqB,GACzB,MAAoB;EACpB,IAAM,IAAW,EAAY;EAC7B,IAAI,CAAC,GAAU;EAEf,IAAM,IAAe,EAAS,sBAAsB,GAC9C,IAAc,EAAG,sBAAsB,GAEvC,IAAc,EAAY,OAAO,EAAa,OAAO,EAAS,YAC9D,IAAe,IAAc,EAAY,OAEzC,IAAc,EAAS,YACvB,IAAe,EAAS,aAAa,EAAS;EAEpD,IAAI,KAAe,IAAc,KAAmB,KAAgB,IAAe,GAClF;EAGD,IAAI,IAAmB,EAAS;EAOhC,AANI,IAAc,IACjB,IAAmB,KAAK,IAAI,GAAG,IAAc,CAAa,IAChD,IAAe,MACzB,IAAmB,KAAK,IAAI,EAAc,CAAQ,GAAG,IAAe,EAAS,cAAc,CAAa,IAGzG,EAAS,SAAS;GACjB,MAAM,KAAK,MAAM,CAAgB;GACjC,UAAU,IAAS,WAAW;EAC/B,CAAC;CACF,GACA,CAAC,GAAe,CAAM,CACvB;CA6DA,AA3DA,QAAgB;EACf,IAAM,IAAW,EAAY;EAC7B,IAAI,CAAC,GAAU;EAEf,IAAM,KAAiB,MAAsB;GAC5C,IAAM,IAAS,EAAM;GACrB,IAAI,EAAE,aAAkB,cAAc;GAEtC,IAAM,IAAO,EAAkB,CAAM;GACrC,AAAI,KAAM,EAAmB,CAAI;EAClC;EAGA,OADA,EAAS,iBAAiB,WAAW,CAAa,SACrC,EAAS,oBAAoB,WAAW,CAAa;CACnE,GAAG,CAAC,GAAoB,CAAiB,CAAC,GAM1C,QAAgB;EACf,IAAM,IAAW,EAAY;EAC7B,IAAI,CAAC,GAAU;EAEf,IAAM,UAAiB,EAA4B;EACnD,EAAS,iBAAiB,UAAU,GAAU,EAAE,SAAS,GAAK,CAAC;EAE/D,IAAI,IAAwC;EAC5C,AAAI,OAAO,iBAAmB,QAC7B,IAAiB,IAAI,eAAe,CAA2B,GAC/D,EAAe,QAAQ,CAAQ;EAGhC,IAAI,IAA4C;EAWhD,OAVI,OAAO,mBAAqB,QAC/B,IAAmB,IAAI,iBAAiB,CAA2B,GACnE,EAAiB,QAAQ,GAAU;GAClC,WAAW;GACX,SAAS;EACV,CAAC,IAGF,EAA4B,SAEf;GAKZ,AAJA,EAAS,oBAAoB,UAAU,CAAQ,GAC/C,GAAgB,WAAW,GAC3B,GAAkB,WAAW,GAEzB,EAAS,YAAY,SACxB,qBAAqB,EAAS,OAAO,GACrC,EAAS,UAAU;EAErB;CACD,GAAG,CAAC,CAA2B,CAAC,GAKhC,QAAgB;EACf,EAA4B;CAC7B,GAAG,CAAC,GAAU,CAA2B,CAAC;CAE1C,IAAM,UAAmB,EAAc,EAAE,GACnC,UAAmB,EAAc,CAAC,GAKlC,KAAoB,MAA2B;EAChD,EAAE,qBAIF,EAAE,QAAQ,eACb,EAAE,eAAe,GACjB,EAAW,KACD,EAAE,QAAQ,iBACpB,EAAE,eAAe,GACjB,EAAW;CAEb,GAEM,IAAY,KAAiB;CAEnC,OACC,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,iBAAiB,CAAS;EAAG,OAAO,EAAE,UAAU,WAAW;EAArF,UAAA;GACE,KACA,kBAAC,UAAD;IACC,MAAK;IACL,cAAW;IACX,WAAW,EAAO;IAClB,SAAS;IACT,UAAU,CAAC;IACX,UAAA,kBAAC,GAAD,CAAkB,CAAA;GACX,CAAA;GAGT,kBAAC,OAAD;IAAK,WAAW,EAAO;IAAa,WAAW;IAAkB,MAAK;IAAQ,cAAW;IACxF,UAAA,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAa,KAAK;KAAa,aAAU;KAC9D;IACG,CAAA;GACD,CAAA;GAEJ,KACA,kBAAC,UAAD;IACC,MAAK;IACL,cAAW;IACX,WAAW,EAAO;IAClB,SAAS;IACT,UAAU,CAAC;IACX,UAAA,kBAAC,GAAD,CAAmB,CAAA;GACZ,CAAA;EAEL;;AAEP;;;AClSA,SAAgB,EAAW,EAC1B,QACA,aACA,WACA,WACA,eACA,cACA,UACA,GAAG,KACgD;CACnD,OACC,kBAAC,OAAD;EACC,GAAI;EACC;EACL,WAAW,EAAG,cAAc,KAAU,UAAU,KAAc,cAAc,CAAS;EACrF,OAAO;GAAE,GAAG;GAAO,QAAQ,KAAU,GAAO;EAAO;EAClD;CACG,CAAA;AAEP;;;;;;;;;;;;AEjBA,SAAgB,EAAU,EAAE,WAAQ,QAAQ,SAAM,gBAA6B;CAgB9E,OACC,kBAAC,OAAD;EAAK,WAAW,EAAG,oBAAoB,CAAS;EAAhD,UAAA,QAhBwB;GACxB,QAAQ,GAAR;IACC,KAAK,SACJ,OAAO,kBAAC,GAAD,CAAY,CAAA;IACpB,KAAK,WACJ,OAAO,kBAAC,GAAD,CAAc,CAAA;IACtB,KAAK,WACJ,OAAO,kBAAC,GAAD,CAAc,CAAA;IACtB,KAAK,eACJ,OAAO,kBAAC,GAAD,CAAkB,CAAA;IAC1B,SACC,OAAO;GACT;EACD,EAIG,CAAW,GACX,CACG;;AAEP;AAMA,SAAgB,EAAgB,EAAE,YAA+B;CAChE,QAAQ,GAAR;EACC,KAAK,SACJ,OAAO,kBAAC,GAAD,CAAY,CAAA;EACpB,KAAK,WACJ,OAAO,kBAAC,GAAD,CAAc,CAAA;EACtB,KAAK,WACJ,OAAO,kBAAC,GAAD,CAAc,CAAA;EACtB,KAAK,eACJ,OAAO,kBAAC,GAAD,CAAkB,CAAA;EAC1B,SACC,OAAO;CACT;AACD;AAEA,SAAgB,IAAY;CAC3B,OAAO,kBAAC,GAAD,EAAa,WAAW,EAAG,EAAO,OAAO,EAAO,KAAK,EAAI,CAAA;AACjE;AACA,SAAgB,IAAc;CAC7B,OAAO,kBAAC,GAAD,EAAiB,WAAW,EAAG,EAAO,OAAO,EAAO,OAAO,EAAI,CAAA;AACvE;AACA,SAAgB,IAAc;CAC7B,OAAO,kBAAC,GAAD,EAAiB,WAAW,EAAG,EAAO,OAAO,EAAO,OAAO,EAAI,CAAA;AACvE;AACA,SAAgB,IAAkB;CACjC,OAAO,kBAAC,GAAD,EAAU,WAAW,EAAG,EAAO,OAAO,EAAO,WAAW,EAAI,CAAA;AACpE;;;ACjDA,SAAgB,EAA0C,EAAE,OAAI,UAAO,cAAW,GAAG,KAA+B;CACnH,IAAM,IAAS,GAAO,YAAY,KAAK,QACjC,IAAc,EAAO,IACrB,IAAa,KAAU,MAAW;CAIxC,OACC,kBAAC,GAAD;EACC,IAJgB,KAAM;EAKtB,WAAW,EAAG,EAAO,cAAc,KAAc,EAAO,QAAQ,GAAa,CAAS;EACtF,GAAI;CACJ,CAAA;AAEH"}
|