@ryuzaki13/react-foundation-ui 1.0.7 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced-search/index.js +11 -11
- package/dist/badge/index.js +1 -1
- package/dist/base-table/index.js +1 -1
- package/dist/button/index.js +2 -23
- package/dist/check-box/index.js +1 -1
- package/dist/chunks/{CalendarView-DjeTJkTT.js → CalendarView-DCQjO2ho.js} +2 -2
- package/dist/chunks/{CalendarView-DjeTJkTT.js.map → CalendarView-DCQjO2ho.js.map} +1 -1
- package/dist/chunks/{odata-DSW7z3nh.js → SelectOptionContent-lfEtHXfO.js} +404 -381
- package/dist/chunks/SelectOptionContent-lfEtHXfO.js.map +1 -0
- package/dist/chunks/{TextEditorLexicalClient-uvFboXlh.js → TextEditorLexicalClient-Bca3FOUs.js} +8 -8
- package/dist/chunks/{TextEditorLexicalClient-uvFboXlh.js.map → TextEditorLexicalClient-Bca3FOUs.js.map} +1 -1
- package/dist/chunks/{BadgeList-DYgun2rf.js → badge-BfbLPk0z.js} +2 -2
- package/dist/chunks/badge-BfbLPk0z.js.map +1 -0
- package/dist/chunks/{base-table-CoQlKABk.js → base-table-CiYSRI_J.js} +4 -4
- package/dist/chunks/{base-table-CoQlKABk.js.map → base-table-CiYSRI_J.js.map} +1 -1
- package/dist/chunks/button-CC0Jdx1j.js +72 -0
- package/dist/chunks/button-CC0Jdx1j.js.map +1 -0
- package/dist/chunks/{CheckBox-BowNqqd3.js → check-box-BowNqqd3.js} +1 -1
- package/dist/chunks/check-box-BowNqqd3.js.map +1 -0
- package/dist/chunks/{DropdownMenu-DQeR3y7M.js → context-menu-DQeR3y7M.js} +1 -1
- package/dist/chunks/context-menu-DQeR3y7M.js.map +1 -0
- package/dist/chunks/{DateInput-CaKGXluL.js → date-input-DjAQ75n9.js} +5 -5
- package/dist/chunks/date-input-DjAQ75n9.js.map +1 -0
- package/dist/chunks/{DateRangePresetSelect-UgsfaOeM.js → date-range-preset-select-UgsfaOeM.js} +1 -1
- package/dist/chunks/date-range-preset-select-UgsfaOeM.js.map +1 -0
- package/dist/chunks/{Flex-DUYSL5TE.js → flex-CPO6xlPR.js} +38 -33
- package/dist/chunks/{Flex-DUYSL5TE.js.map → flex-CPO6xlPR.js.map} +1 -1
- package/dist/chunks/{Grid-ByIIytjh.js → grid-ByIIytjh.js} +1 -1
- package/dist/chunks/{Grid-ByIIytjh.js.map → grid-ByIIytjh.js.map} +1 -1
- package/dist/chunks/{Input-BYUl3UFn.js → input-CZLUUggm.js} +12 -4
- package/dist/chunks/input-CZLUUggm.js.map +1 -0
- package/dist/chunks/{InputFiles-gIxOPv5y.js → input-files-aB8iaqGk.js} +5 -5
- package/dist/chunks/input-files-aB8iaqGk.js.map +1 -0
- package/dist/chunks/{input-search-BR4LDmyb.js → input-search-eMvnvgV0.js} +2 -2
- package/dist/chunks/{input-search-BR4LDmyb.js.map → input-search-eMvnvgV0.js.map} +1 -1
- package/dist/chunks/{misc-DoqZBMof.js → misc-1PxS8OWD.js} +2 -2
- package/dist/chunks/{misc-DoqZBMof.js.map → misc-1PxS8OWD.js.map} +1 -1
- package/dist/chunks/{modal-ByNRME3b.js → modal-C0j0hEIt.js} +5 -5
- package/dist/chunks/{modal-ByNRME3b.js.map → modal-C0j0hEIt.js.map} +1 -1
- package/dist/chunks/multi-select-r0ekR6Bh.js +541 -0
- package/dist/chunks/multi-select-r0ekR6Bh.js.map +1 -0
- package/dist/chunks/{picker-DGXq3ikg.js → picker-beNX-cW9.js} +11 -11
- package/dist/chunks/{picker-DGXq3ikg.js.map → picker-beNX-cW9.js.map} +1 -1
- package/dist/chunks/{RadioGroup-B9XjkcOy.js → radio-group-B9XjkcOy.js} +1 -1
- package/dist/chunks/radio-group-B9XjkcOy.js.map +1 -0
- package/dist/chunks/select-CFbZS7fx.js +284 -0
- package/dist/chunks/select-CFbZS7fx.js.map +1 -0
- package/dist/chunks/{table-Dc3AqMzP.js → table-BR2VqeEg.js} +2 -2
- package/dist/chunks/{table-Dc3AqMzP.js.map → table-BR2VqeEg.js.map} +1 -1
- package/dist/chunks/{toolbar-BCZNdRXM.js → toolbar-XCDeS2Li.js} +2 -2
- package/dist/chunks/{toolbar-BCZNdRXM.js.map → toolbar-XCDeS2Li.js.map} +1 -1
- package/dist/chunks/{useODataSelectBase-BbeKdq6x.js → useODataSelectBase-BxAvhDww.js} +2 -2
- package/dist/chunks/{useODataSelectBase-BbeKdq6x.js.map → useODataSelectBase-BxAvhDww.js.map} +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/date-input/index.js +2 -2
- package/dist/date-range-preset-select/index.js +1 -1
- package/dist/date-time-input/index.js +458 -2
- package/dist/date-time-input/index.js.map +1 -0
- package/dist/detail/index.js +80 -2
- package/dist/detail/index.js.map +1 -0
- package/dist/dialog/index.js +50 -2
- package/dist/dialog/index.js.map +1 -0
- package/dist/disclosure/index.js +49 -2
- package/dist/disclosure/index.js.map +1 -0
- package/dist/drop-zone/index.js +98 -2
- package/dist/drop-zone/index.js.map +1 -0
- package/dist/errors/index.js +1 -1
- package/dist/expandable-action-panel/index.js +82 -2
- package/dist/expandable-action-panel/index.js.map +1 -0
- package/dist/flex/index.js +2 -14
- package/dist/grid/index.js +1 -1
- package/dist/image/index.js +5 -5
- package/dist/input/Input.d.ts +2 -2
- package/dist/input/Input.d.ts.map +1 -1
- package/dist/input/index.js +2 -14
- package/dist/input-date-time/index.js +258 -2
- package/dist/input-date-time/index.js.map +1 -0
- package/dist/input-file/index.js +105 -2
- package/dist/input-file/index.js.map +1 -0
- package/dist/input-files/index.js +1 -1
- package/dist/input-image/index.js +100 -2
- package/dist/input-image/index.js.map +1 -0
- package/dist/input-search/index.js +1 -1
- package/dist/layout-picker/index.js +1171 -2
- package/dist/layout-picker/index.js.map +1 -0
- package/dist/list/index.js +2 -2
- package/dist/listbox/index.js +81 -2
- package/dist/listbox/index.js.map +1 -0
- package/dist/misc/index.js +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/multi-select/index.js +2 -3
- package/dist/notifications/index.js +151 -3
- package/dist/notifications/index.js.map +1 -0
- package/dist/picker/index.js +1 -1
- package/dist/preset-range-date-input/index.js +52 -3
- package/dist/preset-range-date-input/index.js.map +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/radio-button/index.js +48 -2
- package/dist/radio-button/index.js.map +1 -0
- package/dist/radio-group/index.js +1 -1
- package/dist/select/index.js +2 -4
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/index.js +695 -2
- package/dist/slider/index.js.map +1 -0
- package/dist/splitter/index.js +168 -2
- package/dist/splitter/index.js.map +1 -0
- package/dist/state-select/index.js +78 -2
- package/dist/state-select/index.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/switch/index.js +81 -2
- package/dist/switch/index.js.map +1 -0
- package/dist/table/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tabs/index.js +384 -2
- package/dist/tabs/index.js.map +1 -0
- package/dist/text-editor/index.js +3 -3
- package/dist/text-editor/toolbar/index.js +1 -1
- package/dist/textarea/index.js +44 -2
- package/dist/textarea/index.js.map +1 -0
- package/dist/toggle/index.js +73 -2
- package/dist/toggle/index.js.map +1 -0
- package/dist/toolbar/index.js +2 -3
- package/dist/toolbar/index.js.map +1 -1
- package/dist/tree-select/index.js +569 -89
- package/dist/tree-select/index.js.map +1 -1
- package/dist/tree-table/index.js +1 -1
- package/package.json +5 -304
- package/src/styles/_base.scss +11 -3
- package/src/styles/config/_index.scss +21 -37
- package/src/styles/themes/dark/_default.scss +0 -17
- package/storybook-static/assets/Badge-Cr7bAbxa.css +1 -0
- package/storybook-static/assets/Badge-Q8iX86Mn.js +139 -0
- package/storybook-static/assets/Badge.stories-BEMBzR2f.js +51 -0
- package/storybook-static/assets/Button-BN8Cuwsy.css +1 -0
- package/storybook-static/assets/Button-BUkCW8Zg.js +12 -0
- package/storybook-static/assets/Button-CfX05aoR.js +124 -0
- package/storybook-static/assets/Button.stories-BoNLZb6w.js +75 -0
- package/storybook-static/assets/CheckBox-B1xm2kwz.css +1 -0
- package/storybook-static/assets/CheckBox-CcXGzkSE.js +42 -0
- package/storybook-static/assets/CheckBox-DTSi8Yok.js +2 -0
- package/storybook-static/assets/CheckBox.module-Hr3mvdAC.js +1 -0
- package/storybook-static/assets/CheckBox.stories-Bo53TxC7.js +60 -0
- package/storybook-static/assets/Color-KMSTOMOX-Mbprgrbi.js +1 -0
- package/storybook-static/assets/ContextMenu-DYlSojIE.js +40 -0
- package/storybook-static/assets/ContextMenu.stories-BJr53bsq.js +90 -0
- package/storybook-static/assets/DateInput-Bc-MiPp1.css +1 -0
- package/storybook-static/assets/DateInput-BrmilavO.js +40 -0
- package/storybook-static/assets/DateInput-C72jV86j.js +1 -0
- package/storybook-static/assets/DateInput.stories-0hU_T1iZ.js +115 -0
- package/storybook-static/assets/DateRangePresetSelect-BklzgpCR.js +3 -0
- package/storybook-static/assets/DateRangePresetSelect-C7gJVkMB.js +30 -0
- package/storybook-static/assets/DateRangePresetSelect.stories-DQKDcAdP.js +11 -0
- package/storybook-static/assets/Detail-BKSBSfTO.css +1 -0
- package/storybook-static/assets/Detail-BMu0MY4h.js +40 -0
- package/storybook-static/assets/Detail.stories-CgBJjWQd.js +44 -0
- package/storybook-static/assets/Dialog-M7Uy3LiO.js +40 -0
- package/storybook-static/assets/Dialog.stories-BZ0opvaJ.js +31 -0
- package/storybook-static/assets/Disclosure-BXnfHC6v.js +29 -0
- package/storybook-static/assets/Disclosure-zNgXNDkm.css +1 -0
- package/storybook-static/assets/Disclosure.stories-C7wh6KJU.js +35 -0
- package/storybook-static/assets/DocsRenderer-JROSPFPF-BjXFJaat.js +2 -0
- package/storybook-static/assets/DropZone-C7HIN5ml.css +1 -0
- package/storybook-static/assets/DropZone-cd1aCNT1.js +36 -0
- package/storybook-static/assets/DropZone.stories-CVu731Lk.js +44 -0
- package/storybook-static/assets/DropdownMenu-B97Ad5Dg.js +1 -0
- package/storybook-static/assets/DropdownMenu-BgzIzwzM.css +1 -0
- package/storybook-static/assets/ExpandableActionPanel-D7q9two4.css +1 -0
- package/storybook-static/assets/ExpandableActionPanel.stories-k-eTxMyV.js +20 -0
- package/storybook-static/assets/Flex-BQkqAqL5.js +61 -0
- package/storybook-static/assets/Flex-C_VnI9xY.js +3 -0
- package/storybook-static/assets/Flex-IXK2se1Y.css +1 -0
- package/storybook-static/assets/Flex.stories-C1VO9Ct3.js +300 -0
- package/storybook-static/assets/Grid-Dr3BuEgd.js +61 -0
- package/storybook-static/assets/Grid-K9R_IHaw.css +1 -0
- package/storybook-static/assets/Grid-y8wKyEwc.js +163 -0
- package/storybook-static/assets/Grid.stories-6WUp6Tof.js +495 -0
- package/storybook-static/assets/Input-B7DWcGCL.js +3 -0
- package/storybook-static/assets/Input-BioMOZju.css +1 -0
- package/storybook-static/assets/Input-yly8wxYE.js +39 -0
- package/storybook-static/assets/Input.stories-CkVqvY-C.js +38 -0
- package/storybook-static/assets/InputDateTime-Cv8gmBe0.css +1 -0
- package/storybook-static/assets/InputDateTime-DHirw8rp.js +39 -0
- package/storybook-static/assets/InputDateTime.stories-Dci_81MA.js +35 -0
- package/storybook-static/assets/InputFile-DBFfWIkJ.js +37 -0
- package/storybook-static/assets/InputFile-hNjZ_wlG.css +1 -0
- package/storybook-static/assets/InputFile.stories-Bar27dP5.js +36 -0
- package/storybook-static/assets/InputFiles-ByK52qUe.css +1 -0
- package/storybook-static/assets/InputFiles-DPz7PiOC.js +1 -0
- package/storybook-static/assets/InputFiles-tULKp1KR.js +37 -0
- package/storybook-static/assets/InputFiles.stories-CkZ8et32.js +33 -0
- package/storybook-static/assets/InputImage-C-pnIXhT.css +1 -0
- package/storybook-static/assets/InputImage-D8VckxKl.js +37 -0
- package/storybook-static/assets/InputImage.stories-Dq8ORce3.js +51 -0
- package/storybook-static/assets/LayoutPicker-9tLTatHF.css +1 -0
- package/storybook-static/assets/LayoutPicker-l3XFAkqv.js +65 -0
- package/storybook-static/assets/LayoutPicker.stories-BjUmm2cg.js +449 -0
- package/storybook-static/assets/Listbox-B_6QVPAJ.js +38 -0
- package/storybook-static/assets/Listbox.stories-Cf_ApbmT.js +47 -0
- package/storybook-static/assets/Modal-BL_cTIW7.css +1 -0
- package/storybook-static/assets/Modal-BzienAaa.js +54 -0
- package/storybook-static/assets/Modal.stories-cPIHRa9a.js +180 -0
- package/storybook-static/assets/MultiSelect-CK2D25RA.js +56 -0
- package/storybook-static/assets/MultiSelect-CUQV67Ev.css +1 -0
- package/storybook-static/assets/MultiSelect-CjGBd2pC.js +2 -0
- package/storybook-static/assets/MultiSelect.stories--f_FoBzR.js +29 -0
- package/storybook-static/assets/NotificationsHost-D5Pvn4eu.css +1 -0
- package/storybook-static/assets/NotificationsHost-DKmlmqh0.js +44 -0
- package/storybook-static/assets/NotificationsHost.stories-1bPUJXfm.js +25 -0
- package/storybook-static/assets/ODataMultiSelect-BWUXuzlr.js +53 -0
- package/storybook-static/assets/ODataMultiSelect.stories-DA0f6SUG.js +73 -0
- package/storybook-static/assets/ODataSelect-D7GAFOcM.js +1 -0
- package/storybook-static/assets/ODataSelect-aNdHSjo_.js +52 -0
- package/storybook-static/assets/ODataSelect.stories-CjXA9Y9l.js +73 -0
- package/storybook-static/assets/ODataTreeMultiSelect-DKodulQ8.js +17 -0
- package/storybook-static/assets/ODataTreeMultiSelect.stories-BjRcb4W0.js +24 -0
- package/storybook-static/assets/ODataTreeSelect-Ck8HCh74.js +16 -0
- package/storybook-static/assets/ODataTreeSelect.stories-BgDj08mH.js +21 -0
- package/storybook-static/assets/PeriodSelect-Db7QmUfi.js +35 -0
- package/storybook-static/assets/PeriodSelect.stories-BI6yLRCK.js +23 -0
- package/storybook-static/assets/Popover-DR-r8iC5.js +45 -0
- package/storybook-static/assets/Popover.stories-ReRFMWiO.js +69 -0
- package/storybook-static/assets/PresetRangeDateInput-tSpiPAT9.js +31 -0
- package/storybook-static/assets/PresetRangeDateInput.stories-LVQa2_DG.js +15 -0
- package/storybook-static/assets/RadioButton-C-RjN-wY.css +1 -0
- package/storybook-static/assets/RadioButton-sEzdlL1y.js +38 -0
- package/storybook-static/assets/RadioButton.stories-CR0km0zF.js +36 -0
- package/storybook-static/assets/RadioGroup-BtNCd3Je.js +1 -0
- package/storybook-static/assets/RadioGroup-D-J7t20C.css +1 -0
- package/storybook-static/assets/RadioGroup-DR0H6Z0w.js +42 -0
- package/storybook-static/assets/RadioGroup.stories-FEqmkrs7.js +42 -0
- package/storybook-static/assets/Select-CO4ZHP9h.css +1 -0
- package/storybook-static/assets/Select-CUAevk01.js +57 -0
- package/storybook-static/assets/Select-DYVS7SCZ.js +9 -0
- package/storybook-static/assets/Select.stories-Df_c0IfC.js +37 -0
- package/storybook-static/assets/SelectOptionContent-B7W0Mned.js +1 -0
- package/storybook-static/assets/SerializableSelect-D63xBqOT.js +48 -0
- package/storybook-static/assets/SerializableSelect-DwCnuBgv.js +4 -0
- package/storybook-static/assets/SerializableSelect.stories-BLPXVOtP.js +43 -0
- package/storybook-static/assets/SingleDateTimeInput-mOllNfg2.css +1 -0
- package/storybook-static/assets/SingleDateTimeInput-xMkDodYz.js +53 -0
- package/storybook-static/assets/SingleDateTimeInput.stories-kcuSwx76.js +78 -0
- package/storybook-static/assets/Slider-BHZgpCjC.js +63 -0
- package/storybook-static/assets/Slider.stories-Bias_Soq.js +77 -0
- package/storybook-static/assets/SliderInput-jzFZcWr7.js +58 -0
- package/storybook-static/assets/SliderInput.stories-B7w8bp86.js +67 -0
- package/storybook-static/assets/Sortable-DcmDaPBw.js +72 -0
- package/storybook-static/assets/Sortable.stories-CwhHGCih.js +141 -0
- package/storybook-static/assets/Splitter-Bn7AJiD_.js +83 -0
- package/storybook-static/assets/Splitter-D-LmmQad.css +1 -0
- package/storybook-static/assets/Splitter.stories-CSvjKF-O.js +22 -0
- package/storybook-static/assets/StateSelect-MIGiXD10.js +36 -0
- package/storybook-static/assets/StateSelect-pIMkhj9A.css +1 -0
- package/storybook-static/assets/StateSelect.stories-BGDCnVqb.js +47 -0
- package/storybook-static/assets/Switch-C5zxOq_O.js +36 -0
- package/storybook-static/assets/Switch-DGYGWtPw.css +1 -0
- package/storybook-static/assets/Switch.stories-BmCl_Ts5.js +26 -0
- package/storybook-static/assets/Table-BGvRn9y0.css +1 -0
- package/storybook-static/assets/Table-CoySXvs5.js +197 -0
- package/storybook-static/assets/Table.stories-CA7ARhwC.js +122 -0
- package/storybook-static/assets/Tabs-BLkTB6pp.css +1 -0
- package/storybook-static/assets/Tabs-CQdzU18E.js +72 -0
- package/storybook-static/assets/Tabs.stories-SBWTpiy2.js +58 -0
- package/storybook-static/assets/Textarea-Bo-I0cnE.js +37 -0
- package/storybook-static/assets/Textarea-CPNMR88I.css +1 -0
- package/storybook-static/assets/Textarea.stories-C1wO9PKR.js +27 -0
- package/storybook-static/assets/TimePanel-0-mzaXky.js +1 -0
- package/storybook-static/assets/TimePanel-Bh98qsCo.css +1 -0
- package/storybook-static/assets/TimePanel.stories-C1VM13qN.js +25 -0
- package/storybook-static/assets/Toggle-B9H63WWC.js +37 -0
- package/storybook-static/assets/Toggle-DHulCX3T.css +1 -0
- package/storybook-static/assets/Toggle.stories-CKlGFcZW.js +30 -0
- package/storybook-static/assets/TreeMultiSelect-AXIl2Ge2.js +15 -0
- package/storybook-static/assets/TreeMultiSelect-Ci3bUpmv.js +1 -0
- package/storybook-static/assets/TreeMultiSelect.stories-CXGt4Q_u.js +14 -0
- package/storybook-static/assets/TreePickerBase-Md6Mt9qF.js +19 -0
- package/storybook-static/assets/TreePickerBase-qreyVjhY.css +1 -0
- package/storybook-static/assets/TreeSelect-BWoURakw.js +15 -0
- package/storybook-static/assets/TreeSelect-bOgRYtQQ.js +1 -0
- package/storybook-static/assets/TreeSelect.stories-By0h6wRi.js +16 -0
- package/storybook-static/assets/TreeTable--ZoksUiw.css +1 -0
- package/storybook-static/assets/TreeTable-C52Jh7O_.js +175 -0
- package/storybook-static/assets/TreeTable.stories-BH9Q8NPP.js +83 -0
- package/storybook-static/assets/WithTooltip-7X4HQR7L-DQXHhZoH.js +9 -0
- package/storybook-static/assets/axe-GLfyhAYL.js +20 -0
- package/storybook-static/assets/base-table-BNO0lnTL.css +1 -0
- package/storybook-static/assets/base-table-BSkQBgdx.js +18 -0
- package/storybook-static/assets/blocks-CwEU-ME1.js +285 -0
- package/storybook-static/assets/button-Bl3Hu8CS.js +1 -0
- package/storybook-static/assets/check-box-BrnNQnSi.js +1 -0
- package/storybook-static/assets/chunk-242VQQM5-Dtm7LRbQ.js +1 -0
- package/storybook-static/assets/chunk-3LY4VQVK-BxHCYS2R.js +6 -0
- package/storybook-static/assets/chunk-LITCR56V-euffoZAN.js +18 -0
- package/storybook-static/assets/contextMenu-Do6qEwKB.js +2 -0
- package/storybook-static/assets/date-segments-CzU9k5bl.js +1 -0
- package/storybook-static/assets/error-RVOk7zpw.js +1 -0
- package/storybook-static/assets/file-hArYcyES.js +1 -0
- package/storybook-static/assets/flex-DuYzsEBQ.js +1 -0
- package/storybook-static/assets/floating-ui.react-BR04wkLx.js +1 -0
- package/storybook-static/assets/formatter-L2YTDE3Q-Cdp-Jp2M.js +1 -0
- package/storybook-static/assets/formatters-yIBztcem.js +3 -0
- package/storybook-static/assets/grid-D0WOuGlB.js +1 -0
- package/storybook-static/assets/hooks-BEB2Gqy0.js +5 -0
- package/storybook-static/assets/iframe-SfMJGCsn.js +1117 -0
- package/storybook-static/assets/input-Be5K9_B7.js +1 -0
- package/storybook-static/assets/jsx-runtime-BBQGix-2.js +1 -0
- package/storybook-static/assets/lucide-react-CK2oyDtF.js +1 -0
- package/storybook-static/assets/matchers-JIUQ3HVY-BPS-eazD.js +28 -0
- package/storybook-static/assets/mdx-react-shim-DnKFgFHy.js +1 -0
- package/storybook-static/assets/media-Djn0SUaN.js +1 -0
- package/storybook-static/assets/misc-CPvLzCFJ.js +5 -0
- package/storybook-static/assets/misc-CerLA5Xh.css +1 -0
- package/storybook-static/assets/notifications-Zk996KvR.js +1 -0
- package/storybook-static/assets/odata-C2BNbnc9.js +1 -0
- package/storybook-static/assets/odata-service-8sDCOQ3I.js +1 -0
- package/storybook-static/assets/odataStoryFixtures-BBfdskiC.js +25 -0
- package/storybook-static/assets/picker-BmTTr59E.css +1 -0
- package/storybook-static/assets/picker-De4ZbESe.js +1 -0
- package/storybook-static/assets/popover-BiQHI7Wi.css +1 -0
- package/storybook-static/assets/popover-DWA5VOMQ.js +2 -0
- package/storybook-static/assets/preload-helper-B45gAKPr.js +1 -0
- package/storybook-static/assets/preset-select-DozCGhmu.js +5 -0
- package/storybook-static/assets/react-18-CfpYK14y.js +9 -0
- package/storybook-static/assets/react-BWN-5oQj.js +9 -0
- package/storybook-static/assets/react-dom-CncQzc_h.js +1 -0
- package/storybook-static/assets/select-BPvMbVDe.js +1 -0
- package/storybook-static/assets/slider-39Mty47U.js +2 -0
- package/storybook-static/assets/slider-DMDFRH6B.css +1 -0
- package/storybook-static/assets/sortable-CgCCp3dq.js +1 -0
- package/storybook-static/assets/sortable-DiBavgm0.css +1 -0
- package/storybook-static/assets/syntaxhighlighter-RTCFPKCB-Di6cCrDX.js +6 -0
- package/storybook-static/assets/text-BxA8yj6Z.js +4 -0
- package/storybook-static/assets/theming-DZauqOKI.js +39 -0
- package/storybook-static/assets/treeStoryFixtures-Cd984L7t.js +1 -0
- package/storybook-static/assets/ui-CmVy0trY.js +1 -0
- package/storybook-static/assets/ui-ZWM9zG1I.css +1 -0
- package/storybook-static/assets/ui.module-DS2qtZts.js +1 -0
- package/storybook-static/assets/uiClasses-CZ_HVS3Y.js +1 -0
- package/storybook-static/assets/useODataSelectBase-D33B4x2W.js +1 -0
- package/storybook-static/assets/useODataTreeData-CDdzN-LC.js +1 -0
- package/storybook-static/assets/utils-CReRlw17.js +1 -0
- package/storybook-static/favicon-wrapper.svg +46 -0
- package/storybook-static/favicon.svg +1 -0
- package/storybook-static/iframe.html +709 -0
- package/storybook-static/index.html +146 -0
- package/storybook-static/index.json +1 -0
- package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/project.json +1 -0
- package/storybook-static/sb-addons/a11y-2/manager-bundle.js +57 -0
- package/storybook-static/sb-addons/docs-1/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +630 -0
- package/storybook-static/sb-common-assets/favicon-wrapper.svg +46 -0
- package/storybook-static/sb-common-assets/favicon.svg +1 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/sb-manager/globals-runtime.js +76714 -0
- package/storybook-static/sb-manager/globals.js +24 -0
- package/storybook-static/sb-manager/manager-stores.js +23 -0
- package/storybook-static/sb-manager/runtime.js +27451 -0
- package/storybook-static/vite-inject-mocker-entry.js +2 -0
- package/dist/badge/stories/Badge.stories.d.ts +0 -54
- package/dist/badge/stories/Badge.stories.d.ts.map +0 -1
- package/dist/badge/stories/Badge.stories.js +0 -147
- package/dist/badge/stories/Badge.stories.js.map +0 -1
- package/dist/button/index.js.map +0 -1
- package/dist/button/stories/Button.stories.d.ts +0 -69
- package/dist/button/stories/Button.stories.d.ts.map +0 -1
- package/dist/button/stories/Button.stories.js +0 -223
- package/dist/button/stories/Button.stories.js.map +0 -1
- package/dist/check-box/stories/CheckBox.stories.d.ts +0 -58
- package/dist/check-box/stories/CheckBox.stories.d.ts.map +0 -1
- package/dist/check-box/stories/CheckBox.stories.js +0 -150
- package/dist/check-box/stories/CheckBox.stories.js.map +0 -1
- package/dist/chunks/BadgeList-DYgun2rf.js.map +0 -1
- package/dist/chunks/Button-CCWuggdA.js +0 -55
- package/dist/chunks/Button-CCWuggdA.js.map +0 -1
- package/dist/chunks/CheckBox-BowNqqd3.js.map +0 -1
- package/dist/chunks/DateInput-CaKGXluL.js.map +0 -1
- package/dist/chunks/DateRangePresetSelect-UgsfaOeM.js.map +0 -1
- package/dist/chunks/Detail-DHDMsg8q.js +0 -80
- package/dist/chunks/Detail-DHDMsg8q.js.map +0 -1
- package/dist/chunks/Dialog-CFIvGxER.js +0 -50
- package/dist/chunks/Dialog-CFIvGxER.js.map +0 -1
- package/dist/chunks/DisclosureGroup-CfRTkl6Z.js +0 -49
- package/dist/chunks/DisclosureGroup-CfRTkl6Z.js.map +0 -1
- package/dist/chunks/DropZone-DdFdnC9X.js +0 -98
- package/dist/chunks/DropZone-DdFdnC9X.js.map +0 -1
- package/dist/chunks/DropdownMenu-DQeR3y7M.js.map +0 -1
- package/dist/chunks/Input-BYUl3UFn.js.map +0 -1
- package/dist/chunks/InputDateTime-DBkWb0lk.js +0 -258
- package/dist/chunks/InputDateTime-DBkWb0lk.js.map +0 -1
- package/dist/chunks/InputFile-Bo3CN73O.js +0 -105
- package/dist/chunks/InputFile-Bo3CN73O.js.map +0 -1
- package/dist/chunks/InputFiles-gIxOPv5y.js.map +0 -1
- package/dist/chunks/InputImage-k4l1J_tm.js +0 -100
- package/dist/chunks/InputImage-k4l1J_tm.js.map +0 -1
- package/dist/chunks/LabeledExpandableActionPanel-D3kUvmFH.js +0 -82
- package/dist/chunks/LabeledExpandableActionPanel-D3kUvmFH.js.map +0 -1
- package/dist/chunks/Listbox-BZlp5qHz.js +0 -81
- package/dist/chunks/Listbox-BZlp5qHz.js.map +0 -1
- package/dist/chunks/MultiSelect-B0nfMSpS.js +0 -422
- package/dist/chunks/MultiSelect-B0nfMSpS.js.map +0 -1
- package/dist/chunks/NotificationsHost-_icJx4xR.js +0 -151
- package/dist/chunks/NotificationsHost-_icJx4xR.js.map +0 -1
- package/dist/chunks/PresetRangeDateInput-C5HqkOCG.js +0 -53
- package/dist/chunks/PresetRangeDateInput-C5HqkOCG.js.map +0 -1
- package/dist/chunks/RadioButton-D0uA0rX_.js +0 -48
- package/dist/chunks/RadioButton-D0uA0rX_.js.map +0 -1
- package/dist/chunks/RadioGroup-B9XjkcOy.js.map +0 -1
- package/dist/chunks/Select-B6kxgxK2.js +0 -182
- package/dist/chunks/Select-B6kxgxK2.js.map +0 -1
- package/dist/chunks/SelectOptionContent-CI7wq9Oi.js +0 -27
- package/dist/chunks/SelectOptionContent-CI7wq9Oi.js.map +0 -1
- package/dist/chunks/SerializableSelect-CVGFjCGK.js +0 -33
- package/dist/chunks/SerializableSelect-CVGFjCGK.js.map +0 -1
- package/dist/chunks/SingleDateTimeInput-D2fDMQnI.js +0 -331
- package/dist/chunks/SingleDateTimeInput-D2fDMQnI.js.map +0 -1
- package/dist/chunks/Splitter-BFkVGVRb.js +0 -168
- package/dist/chunks/Splitter-BFkVGVRb.js.map +0 -1
- package/dist/chunks/StateSelect-CEp7kGGg.js +0 -78
- package/dist/chunks/StateSelect-CEp7kGGg.js.map +0 -1
- package/dist/chunks/Switch-B57Qmy1z.js +0 -81
- package/dist/chunks/Switch-B57Qmy1z.js.map +0 -1
- package/dist/chunks/Textarea-T8gXua35.js +0 -44
- package/dist/chunks/Textarea-T8gXua35.js.map +0 -1
- package/dist/chunks/TimePanel-b4saqoUY.js +0 -135
- package/dist/chunks/TimePanel-b4saqoUY.js.map +0 -1
- package/dist/chunks/Toggle-DVqOQXmt.js +0 -73
- package/dist/chunks/Toggle-DVqOQXmt.js.map +0 -1
- package/dist/chunks/TreeMultiSelect-BcPr2Phe.js +0 -40
- package/dist/chunks/TreeMultiSelect-BcPr2Phe.js.map +0 -1
- package/dist/chunks/TreePickerBase-ClXn2q3u.js +0 -423
- package/dist/chunks/TreePickerBase-ClXn2q3u.js.map +0 -1
- package/dist/chunks/TreeSelect-DYWkgryS.js +0 -37
- package/dist/chunks/TreeSelect-DYWkgryS.js.map +0 -1
- package/dist/chunks/layout-picker-C1sizRYa.js +0 -1171
- package/dist/chunks/layout-picker-C1sizRYa.js.map +0 -1
- package/dist/chunks/multi-select-DCY3fonG.js +0 -126
- package/dist/chunks/multi-select-DCY3fonG.js.map +0 -1
- package/dist/chunks/odata-DSW7z3nh.js.map +0 -1
- package/dist/chunks/select-Di99RAVO.js +0 -81
- package/dist/chunks/select-Di99RAVO.js.map +0 -1
- package/dist/chunks/slider-BqeYbdrg.js +0 -695
- package/dist/chunks/slider-BqeYbdrg.js.map +0 -1
- package/dist/chunks/tabs-DlnVVMJl.js +0 -384
- package/dist/chunks/tabs-DlnVVMJl.js.map +0 -1
- package/dist/chunks/treeStoryFixtures-Bhm3Gdky.js +0 -113
- package/dist/chunks/treeStoryFixtures-Bhm3Gdky.js.map +0 -1
- package/dist/context-menu/stories/ContextMenu.stories.d.ts +0 -16
- package/dist/context-menu/stories/ContextMenu.stories.d.ts.map +0 -1
- package/dist/context-menu/stories/ContextMenu.stories.js +0 -136
- package/dist/context-menu/stories/ContextMenu.stories.js.map +0 -1
- package/dist/date-input/stories/DateInput.stories.d.ts +0 -132
- package/dist/date-input/stories/DateInput.stories.d.ts.map +0 -1
- package/dist/date-input/stories/DateInput.stories.js +0 -247
- package/dist/date-input/stories/DateInput.stories.js.map +0 -1
- package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.d.ts +0 -22
- package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.d.ts.map +0 -1
- package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js +0 -41
- package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js.map +0 -1
- package/dist/date-time-input/stories/SingleDateTimeInput.stories.d.ts +0 -95
- package/dist/date-time-input/stories/SingleDateTimeInput.stories.d.ts.map +0 -1
- package/dist/date-time-input/stories/SingleDateTimeInput.stories.js +0 -195
- package/dist/date-time-input/stories/SingleDateTimeInput.stories.js.map +0 -1
- package/dist/date-time-input/stories/TimePanel.stories.d.ts +0 -26
- package/dist/date-time-input/stories/TimePanel.stories.d.ts.map +0 -1
- package/dist/date-time-input/stories/TimePanel.stories.js +0 -53
- package/dist/date-time-input/stories/TimePanel.stories.js.map +0 -1
- package/dist/detail/stories/Detail.stories.d.ts +0 -67
- package/dist/detail/stories/Detail.stories.d.ts.map +0 -1
- package/dist/detail/stories/Detail.stories.js +0 -170
- package/dist/detail/stories/Detail.stories.js.map +0 -1
- package/dist/dialog/stories/Dialog.stories.d.ts +0 -50
- package/dist/dialog/stories/Dialog.stories.d.ts.map +0 -1
- package/dist/dialog/stories/Dialog.stories.js +0 -89
- package/dist/dialog/stories/Dialog.stories.js.map +0 -1
- package/dist/disclosure/stories/Disclosure.stories.d.ts +0 -35
- package/dist/disclosure/stories/Disclosure.stories.d.ts.map +0 -1
- package/dist/disclosure/stories/Disclosure.stories.js +0 -70
- package/dist/disclosure/stories/Disclosure.stories.js.map +0 -1
- package/dist/drop-zone/stories/DropZone.stories.d.ts +0 -63
- package/dist/drop-zone/stories/DropZone.stories.d.ts.map +0 -1
- package/dist/drop-zone/stories/DropZone.stories.js +0 -97
- package/dist/drop-zone/stories/DropZone.stories.js.map +0 -1
- package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.d.ts +0 -44
- package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.d.ts.map +0 -1
- package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js +0 -117
- package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js.map +0 -1
- package/dist/flex/index.js.map +0 -1
- package/dist/flex/stories/Flex.stories.d.ts +0 -24
- package/dist/flex/stories/Flex.stories.d.ts.map +0 -1
- package/dist/flex/stories/Flex.stories.js +0 -607
- package/dist/flex/stories/Flex.stories.js.map +0 -1
- package/dist/grid/stories/Grid.stories.d.ts +0 -24
- package/dist/grid/stories/Grid.stories.d.ts.map +0 -1
- package/dist/grid/stories/Grid.stories.js +0 -840
- package/dist/grid/stories/Grid.stories.js.map +0 -1
- package/dist/input/index.js.map +0 -1
- package/dist/input/stories/Input.stories.d.ts +0 -69
- package/dist/input/stories/Input.stories.d.ts.map +0 -1
- package/dist/input/stories/Input.stories.js +0 -132
- package/dist/input/stories/Input.stories.js.map +0 -1
- package/dist/input-date-time/stories/InputDateTime.stories.d.ts +0 -69
- package/dist/input-date-time/stories/InputDateTime.stories.d.ts.map +0 -1
- package/dist/input-date-time/stories/InputDateTime.stories.js +0 -125
- package/dist/input-date-time/stories/InputDateTime.stories.js.map +0 -1
- package/dist/input-file/stories/InputFile.stories.d.ts +0 -85
- package/dist/input-file/stories/InputFile.stories.d.ts.map +0 -1
- package/dist/input-file/stories/InputFile.stories.js +0 -158
- package/dist/input-file/stories/InputFile.stories.js.map +0 -1
- package/dist/input-files/stories/InputFiles.stories.d.ts +0 -86
- package/dist/input-files/stories/InputFiles.stories.d.ts.map +0 -1
- package/dist/input-files/stories/InputFiles.stories.js +0 -158
- package/dist/input-files/stories/InputFiles.stories.js.map +0 -1
- package/dist/input-image/stories/InputImage.stories.d.ts +0 -81
- package/dist/input-image/stories/InputImage.stories.d.ts.map +0 -1
- package/dist/input-image/stories/InputImage.stories.js +0 -174
- package/dist/input-image/stories/InputImage.stories.js.map +0 -1
- package/dist/layout-picker/stories/LayoutPicker.stories.d.ts +0 -873
- package/dist/layout-picker/stories/LayoutPicker.stories.d.ts.map +0 -1
- package/dist/layout-picker/stories/LayoutPicker.stories.js +0 -422
- package/dist/layout-picker/stories/LayoutPicker.stories.js.map +0 -1
- package/dist/listbox/stories/Listbox.stories.d.ts +0 -76
- package/dist/listbox/stories/Listbox.stories.d.ts.map +0 -1
- package/dist/listbox/stories/Listbox.stories.js +0 -140
- package/dist/listbox/stories/Listbox.stories.js.map +0 -1
- package/dist/modal/stories/Modal.stories.d.ts +0 -74
- package/dist/modal/stories/Modal.stories.d.ts.map +0 -1
- package/dist/modal/stories/Modal.stories.js +0 -320
- package/dist/modal/stories/Modal.stories.js.map +0 -1
- package/dist/multi-select/ui/stories/MultiSelect.stories.d.ts +0 -67
- package/dist/multi-select/ui/stories/MultiSelect.stories.d.ts.map +0 -1
- package/dist/multi-select/ui/stories/MultiSelect.stories.js +0 -114
- package/dist/multi-select/ui/stories/MultiSelect.stories.js.map +0 -1
- package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts +0 -44
- package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts.map +0 -1
- package/dist/notifications/ui/stories/NotificationsHost.stories.d.ts +0 -21
- package/dist/notifications/ui/stories/NotificationsHost.stories.d.ts.map +0 -1
- package/dist/notifications/ui/stories/NotificationsHost.stories.js +0 -326
- package/dist/notifications/ui/stories/NotificationsHost.stories.js.map +0 -1
- package/dist/period-select/stories/PeriodSelect.stories.d.ts +0 -96
- package/dist/period-select/stories/PeriodSelect.stories.d.ts.map +0 -1
- package/dist/period-select/stories/PeriodSelect.stories.js +0 -166
- package/dist/period-select/stories/PeriodSelect.stories.js.map +0 -1
- package/dist/popover/stories/Popover.stories.d.ts +0 -10
- package/dist/popover/stories/Popover.stories.d.ts.map +0 -1
- package/dist/popover/stories/Popover.stories.js +0 -75
- package/dist/popover/stories/Popover.stories.js.map +0 -1
- package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.d.ts +0 -22
- package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.d.ts.map +0 -1
- package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js +0 -45
- package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js.map +0 -1
- package/dist/radio-button/stories/RadioButton.stories.d.ts +0 -60
- package/dist/radio-button/stories/RadioButton.stories.d.ts.map +0 -1
- package/dist/radio-button/stories/RadioButton.stories.js +0 -121
- package/dist/radio-button/stories/RadioButton.stories.js.map +0 -1
- package/dist/radio-group/stories/RadioGroup.stories.d.ts +0 -74
- package/dist/radio-group/stories/RadioGroup.stories.d.ts.map +0 -1
- package/dist/radio-group/stories/RadioGroup.stories.js +0 -146
- package/dist/radio-group/stories/RadioGroup.stories.js.map +0 -1
- package/dist/select/stories/ODataSelect.stories.d.ts +0 -46
- package/dist/select/stories/ODataSelect.stories.d.ts.map +0 -1
- package/dist/select/stories/Select.stories.d.ts +0 -127
- package/dist/select/stories/Select.stories.d.ts.map +0 -1
- package/dist/select/stories/Select.stories.js +0 -214
- package/dist/select/stories/Select.stories.js.map +0 -1
- package/dist/select/stories/SerializableSelect.stories.d.ts +0 -91
- package/dist/select/stories/SerializableSelect.stories.d.ts.map +0 -1
- package/dist/select/stories/SerializableSelect.stories.js +0 -165
- package/dist/select/stories/SerializableSelect.stories.js.map +0 -1
- package/dist/select/stories/odataStoryCollection.d.ts +0 -2
- package/dist/select/stories/odataStoryCollection.d.ts.map +0 -1
- package/dist/select/stories/odataStoryFixtures.d.ts +0 -35
- package/dist/select/stories/odataStoryFixtures.d.ts.map +0 -1
- package/dist/slider/stories/Slider.stories.d.ts +0 -29
- package/dist/slider/stories/Slider.stories.d.ts.map +0 -1
- package/dist/slider/stories/Slider.stories.js +0 -310
- package/dist/slider/stories/Slider.stories.js.map +0 -1
- package/dist/slider/stories/SliderInput.stories.d.ts +0 -30
- package/dist/slider/stories/SliderInput.stories.d.ts.map +0 -1
- package/dist/slider/stories/SliderInput.stories.js +0 -282
- package/dist/slider/stories/SliderInput.stories.js.map +0 -1
- package/dist/sortable/stories/Sortable.stories.d.ts +0 -58
- package/dist/sortable/stories/Sortable.stories.d.ts.map +0 -1
- package/dist/sortable/stories/Sortable.stories.js +0 -255
- package/dist/sortable/stories/Sortable.stories.js.map +0 -1
- package/dist/splitter/stories/Splitter.stories.d.ts +0 -66
- package/dist/splitter/stories/Splitter.stories.d.ts.map +0 -1
- package/dist/splitter/stories/Splitter.stories.js +0 -223
- package/dist/splitter/stories/Splitter.stories.js.map +0 -1
- package/dist/state-select/stories/StateSelect.stories.d.ts +0 -70
- package/dist/state-select/stories/StateSelect.stories.d.ts.map +0 -1
- package/dist/state-select/stories/StateSelect.stories.js +0 -145
- package/dist/state-select/stories/StateSelect.stories.js.map +0 -1
- package/dist/switch/stories/Switch.stories.d.ts +0 -59
- package/dist/switch/stories/Switch.stories.d.ts.map +0 -1
- package/dist/switch/stories/Switch.stories.js +0 -90
- package/dist/switch/stories/Switch.stories.js.map +0 -1
- package/dist/table/stories/Table.stories.d.ts +0 -155
- package/dist/table/stories/Table.stories.d.ts.map +0 -1
- package/dist/tabs/stories/Tabs.stories.d.ts +0 -94
- package/dist/tabs/stories/Tabs.stories.d.ts.map +0 -1
- package/dist/tabs/stories/Tabs.stories.js +0 -283
- package/dist/tabs/stories/Tabs.stories.js.map +0 -1
- package/dist/textarea/stories/Textarea.stories.d.ts +0 -64
- package/dist/textarea/stories/Textarea.stories.d.ts.map +0 -1
- package/dist/textarea/stories/Textarea.stories.js +0 -98
- package/dist/textarea/stories/Textarea.stories.js.map +0 -1
- package/dist/toggle/stories/Toggle.stories.d.ts +0 -61
- package/dist/toggle/stories/Toggle.stories.d.ts.map +0 -1
- package/dist/toggle/stories/Toggle.stories.js +0 -102
- package/dist/toggle/stories/Toggle.stories.js.map +0 -1
- package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts +0 -55
- package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts.map +0 -1
- package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts +0 -54
- package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts.map +0 -1
- package/dist/tree-select/stories/TreeMultiSelect.stories.d.ts +0 -35
- package/dist/tree-select/stories/TreeMultiSelect.stories.d.ts.map +0 -1
- package/dist/tree-select/stories/TreeMultiSelect.stories.js +0 -64
- package/dist/tree-select/stories/TreeMultiSelect.stories.js.map +0 -1
- package/dist/tree-select/stories/TreeSelect.stories.d.ts +0 -35
- package/dist/tree-select/stories/TreeSelect.stories.d.ts.map +0 -1
- package/dist/tree-select/stories/TreeSelect.stories.js +0 -66
- package/dist/tree-select/stories/TreeSelect.stories.js.map +0 -1
- package/dist/tree-select/stories/treeStoryFixtures.d.ts +0 -3
- package/dist/tree-select/stories/treeStoryFixtures.d.ts.map +0 -1
- package/dist/tree-table/stories/TreeTable.stories.d.ts +0 -158
- package/dist/tree-table/stories/TreeTable.stories.d.ts.map +0 -1
- package/src/styles/fonts.scss +0 -47
package/dist/switch/index.js
CHANGED
|
@@ -1,2 +1,81 @@
|
|
|
1
|
-
import { t as e } from "../chunks/
|
|
2
|
-
|
|
1
|
+
import { t as e } from "../chunks/ui.module-BisoTevy.js";
|
|
2
|
+
import { useId as t } from "react";
|
|
3
|
+
import { cn as n } from "@ryuzaki13/react-foundation-lib/utils";
|
|
4
|
+
import { BanIcon as r, CheckCircle2Icon as i } from "lucide-react";
|
|
5
|
+
import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
6
|
+
var c = {
|
|
7
|
+
switchWrapper: "Or5LYA",
|
|
8
|
+
switch: "qge3io",
|
|
9
|
+
iconWrapper: "w0AMfA",
|
|
10
|
+
auto: "P1x4lq",
|
|
11
|
+
checked: "-ZVOZo"
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/switch/Switch.tsx
|
|
15
|
+
function l(l) {
|
|
16
|
+
let { label: u, description: d, disabled: f, checkedIcon: p = /* @__PURE__ */ o(i, {}), uncheckedIcon: m = /* @__PURE__ */ o(r, {}), className: h, type: g, id: _, size: v, placeholder: y, onChange: b, value: x, triState: S, ...C } = l, w = t(), T = _ ?? w, E = d ? `${T}-description` : void 0, D = u ? `${T}-label` : void 0, O = () => {
|
|
17
|
+
if (!l.triState) {
|
|
18
|
+
l.onChange(!l.value);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (l.value === void 0) {
|
|
22
|
+
l.onChange(!0);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (l.value === !0) {
|
|
26
|
+
l.onChange(!1);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
l.value === !1 && l.onChange(void 0);
|
|
30
|
+
}, k = typeof l.value == "boolean" ? l.value : !1, A = l.triState && typeof l.value != "boolean", j = C["aria-label"] ?? (u ? void 0 : "Переключатель");
|
|
31
|
+
return /* @__PURE__ */ s("div", {
|
|
32
|
+
className: n(e.uiElement, f && e.disabled),
|
|
33
|
+
"aria-disabled": f || void 0,
|
|
34
|
+
children: [
|
|
35
|
+
u && /* @__PURE__ */ s("div", {
|
|
36
|
+
id: D,
|
|
37
|
+
className: e.uiLabel,
|
|
38
|
+
children: [u, ":"]
|
|
39
|
+
}),
|
|
40
|
+
d && /* @__PURE__ */ o("p", {
|
|
41
|
+
id: E,
|
|
42
|
+
className: e.uiDescription,
|
|
43
|
+
children: d
|
|
44
|
+
}),
|
|
45
|
+
/* @__PURE__ */ o("button", {
|
|
46
|
+
...C,
|
|
47
|
+
id: T,
|
|
48
|
+
type: g ?? "button",
|
|
49
|
+
role: "switch",
|
|
50
|
+
disabled: f,
|
|
51
|
+
"aria-checked": k,
|
|
52
|
+
"aria-describedby": E,
|
|
53
|
+
"aria-labelledby": D,
|
|
54
|
+
"aria-label": j,
|
|
55
|
+
"aria-disabled": f,
|
|
56
|
+
"data-ui": "switch",
|
|
57
|
+
"data-action": "toggle-switch",
|
|
58
|
+
onClick: O,
|
|
59
|
+
className: n(e.uiInputControl, c.switchWrapper, h),
|
|
60
|
+
children: /* @__PURE__ */ o("div", {
|
|
61
|
+
className: c.switch,
|
|
62
|
+
"data-disabled": f || void 0,
|
|
63
|
+
children: A ? /* @__PURE__ */ o("div", {
|
|
64
|
+
className: n(c.iconWrapper, c.auto, c.checked),
|
|
65
|
+
children: "Auto"
|
|
66
|
+
}) : /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("div", {
|
|
67
|
+
className: n(c.iconWrapper, !l.value && c.checked),
|
|
68
|
+
children: m
|
|
69
|
+
}), /* @__PURE__ */ o("div", {
|
|
70
|
+
className: n(c.iconWrapper, l.value && c.checked),
|
|
71
|
+
children: p
|
|
72
|
+
})] })
|
|
73
|
+
})
|
|
74
|
+
})
|
|
75
|
+
]
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//#endregion
|
|
79
|
+
export { l as Switch };
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/switch/Switch.module.scss","../../src/switch/Switch.tsx"],"sourcesContent":[".switchWrapper {\n\t--size: calc(var(--control-height) - calc(var(--border-width) * 4));\n\n\tdisplay: block;\n\tpadding: 0 var(--border-width);\n}\n\n.switch {\n\twidth: calc(var(--control-height) * 2);\n\tdisplay: flex;\n\tjustify-content: space-between;\n\n\t&[data-disabled] {\n\t\tsvg {\n\t\t\tcolor: var(--content-2);\n\t\t}\n\t}\n}\n\n.iconWrapper {\n\tborder-radius: var(--radius-xs);\n\twidth: var(--size);\n\theight: var(--size);\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\topacity: 0.25;\n\n\tsvg {\n\t\tdisplay: block;\n\t\tcolor: var(--content-0);\n\t}\n\n\t&.auto {\n\t\twidth: 100%;\n\t\tflex: 1 1 100%;\n\t}\n\n\t&.checked {\n\t\tbackground-color: var(--surface-2);\n\t\topacity: 1;\n\t}\n}\n","import React, { useId } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { BanIcon, CheckCircle2Icon } from \"lucide-react\";\n\nimport { UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Switch.module.scss\";\n\ntype BaseSwitchProps = {\n\tcheckedIcon?: React.ReactNode;\n\tuncheckedIcon?: React.ReactNode;\n};\n\ntype BiStateSwitchProps = BaseSwitchProps &\n\tUiBaseProps<boolean> & {\n\t\ttriState?: false;\n\t};\n\ntype TriStateSwitchProps = BaseSwitchProps &\n\tUiBaseProps<boolean | undefined> & {\n\t\ttriState: true;\n\t};\n\ntype SwitchProps = (TriStateSwitchProps | BiStateSwitchProps) &\n\tOmit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\" | \"onChange\" | \"value\">;\n\n/**\n * Переключатель boolean-состояния в виде слайдера. Подходит для быстрых настроек и включения/отключения опций.\n */\nexport function Switch(props: SwitchProps) {\n\tconst {\n\t\tlabel,\n\t\tdescription,\n\t\tdisabled,\n\t\tcheckedIcon = <CheckCircle2Icon />,\n\t\tuncheckedIcon = <BanIcon />,\n\t\tclassName,\n\t\ttype,\n\t\tid: externalId,\n\t\tsize,\n\t\tplaceholder,\n\t\tonChange: _onChange,\n\t\tvalue: _value,\n\t\ttriState: _triState,\n\t\t...buttonProps\n\t} = props;\n\tconst autoId = useId();\n\tconst id = externalId ?? autoId;\n\tconst descriptionId = description ? `${id}-description` : undefined;\n\tconst labelId = label ? `${id}-label` : undefined;\n\tvoid size;\n\tvoid placeholder;\n\tvoid _onChange;\n\tvoid _value;\n\tvoid _triState;\n\n\tconst handleChange = () => {\n\t\tif (!props.triState) {\n\t\t\tprops.onChange(!props.value);\n\t\t\treturn;\n\t\t}\n\n\t\tif (props.value === undefined) {\n\t\t\tprops.onChange(true);\n\t\t\treturn;\n\t\t}\n\n\t\tif (props.value === true) {\n\t\t\tprops.onChange(false);\n\t\t\treturn;\n\t\t}\n\n\t\tif (props.value === false) {\n\t\t\tprops.onChange(undefined);\n\t\t}\n\t};\n\n\tconst isChecked = typeof props.value === \"boolean\" ? props.value : false;\n\tconst showAutoState = props.triState && typeof props.value !== \"boolean\";\n\tconst ariaLabel = buttonProps[\"aria-label\"] ?? (!label ? \"Переключатель\" : undefined);\n\n\treturn (\n\t\t<div className={cn(uiStyles.uiElement, disabled && uiStyles.disabled)} aria-disabled={disabled || undefined}>\n\t\t\t{label && (\n\t\t\t\t<div id={labelId} className={uiStyles.uiLabel}>\n\t\t\t\t\t{label}:\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{description && (\n\t\t\t\t<p id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t\t<button\n\t\t\t\t{...buttonProps}\n\t\t\t\tid={id}\n\t\t\t\ttype={type ?? \"button\"}\n\t\t\t\trole=\"switch\"\n\t\t\t\tdisabled={disabled}\n\t\t\t\taria-checked={isChecked}\n\t\t\t\taria-describedby={descriptionId}\n\t\t\t\taria-labelledby={labelId}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\taria-disabled={disabled}\n\t\t\t\tdata-ui=\"switch\"\n\t\t\t\tdata-action=\"toggle-switch\"\n\t\t\t\tonClick={handleChange}\n\t\t\t\tclassName={cn(uiStyles.uiInputControl, styles.switchWrapper, className)}>\n\t\t\t\t<div className={styles.switch} data-disabled={disabled || undefined}>\n\t\t\t\t\t{showAutoState ? (\n\t\t\t\t\t\t<div className={cn(styles.iconWrapper, styles.auto, styles.checked)}>Auto</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className={cn(styles.iconWrapper, !props.value && styles.checked)}>{uncheckedIcon}</div>\n\t\t\t\t\t\t\t<div className={cn(styles.iconWrapper, props.value && styles.checked)}>{checkedIcon}</div>\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;AC+BA,SAAgB,EAAO,GAAoB;CAC1C,IAAM,EACL,UACA,gBACA,aACA,iBAAc,kBAAC,GAAD,CAAmB,CAAA,GACjC,mBAAgB,kBAAC,GAAD,CAAU,CAAA,GAC1B,cACA,SACA,IAAI,GACJ,SACA,gBACA,UAAU,GACV,OAAO,GACP,UAAU,GACV,GAAG,MACA,GACE,IAAS,EAAM,GACf,IAAK,KAAc,GACnB,IAAgB,IAAc,GAAG,EAAG,gBAAgB,KAAA,GACpD,IAAU,IAAQ,GAAG,EAAG,UAAU,KAAA,GAOlC,UAAqB;EAC1B,IAAI,CAAC,EAAM,UAAU;GACpB,EAAM,SAAS,CAAC,EAAM,KAAK;GAC3B;EACD;EAEA,IAAI,EAAM,UAAU,KAAA,GAAW;GAC9B,EAAM,SAAS,EAAI;GACnB;EACD;EAEA,IAAI,EAAM,UAAU,IAAM;GACzB,EAAM,SAAS,EAAK;GACpB;EACD;EAEA,AAAI,EAAM,UAAU,MACnB,EAAM,SAAS,KAAA,CAAS;CAE1B,GAEM,IAAY,OAAO,EAAM,SAAU,YAAY,EAAM,QAAQ,IAC7D,IAAgB,EAAM,YAAY,OAAO,EAAM,SAAU,WACzD,IAAY,EAAY,kBAAmB,IAA0B,KAAA,IAAlB;CAEzD,OACC,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAS,WAAW,KAAY,EAAS,QAAQ;EAAG,iBAAe,KAAY,KAAA;YAAlG;GACE,KACA,kBAAC,OAAD;IAAK,IAAI;IAAS,WAAW,EAAS;cAAtC,CACE,GAAM,GACH;;GAEL,KACA,kBAAC,KAAD;IAAG,IAAI;IAAe,WAAW,EAAS;cACxC;GACC,CAAA;GAEJ,kBAAC,UAAD;IACC,GAAI;IACA;IACJ,MAAM,KAAQ;IACd,MAAK;IACK;IACV,gBAAc;IACd,oBAAkB;IAClB,mBAAiB;IACjB,cAAY;IACZ,iBAAe;IACf,WAAQ;IACR,eAAY;IACZ,SAAS;IACT,WAAW,EAAG,EAAS,gBAAgB,EAAO,eAAe,CAAS;cACtE,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAQ,iBAAe,KAAY,KAAA;eACxD,IACA,kBAAC,OAAD;MAAK,WAAW,EAAG,EAAO,aAAa,EAAO,MAAM,EAAO,OAAO;gBAAG;KAAS,CAAA,IAE9E,kBAAA,GAAA,EAAA,UAAA,CACC,kBAAC,OAAD;MAAK,WAAW,EAAG,EAAO,aAAa,CAAC,EAAM,SAAS,EAAO,OAAO;gBAAI;KAAmB,CAAA,GAC5F,kBAAC,OAAD;MAAK,WAAW,EAAG,EAAO,aAAa,EAAM,SAAS,EAAO,OAAO;gBAAI;KAAiB,CAAA,CACxF,EAAA,CAAA;IAEC,CAAA;GACE,CAAA;EACJ;;AAEP"}
|
package/dist/table/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../chunks/table-
|
|
1
|
+
import { t as e } from "../chunks/table-BR2VqeEg.js";
|
|
2
2
|
export { e as Table };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as e } from "../chunks/
|
|
1
|
+
import { n as e } from "../chunks/context-menu-DQeR3y7M.js";
|
|
2
2
|
import { BrushCleaningIcon as t, SortAscIcon as n, SortDescIcon as r } from "lucide-react";
|
|
3
3
|
import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
4
4
|
//#region src/table-sorting/TableSortingControls.tsx
|
package/dist/tabs/index.js
CHANGED
|
@@ -1,2 +1,384 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { d as e, h as t, l as n } from "../chunks/misc-1PxS8OWD.js";
|
|
2
|
+
import { Children as r, isValidElement as i, useId as a, useMemo as o, useRef as s, useState as c } from "react";
|
|
3
|
+
import { cn as l, getRovingFocusTargetIndex as u } from "@ryuzaki13/react-foundation-lib/utils";
|
|
4
|
+
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
5
|
+
//#region src/tabs/lib/tabs.ts
|
|
6
|
+
function m(e) {
|
|
7
|
+
return e.find((e) => !e.disabled)?.id ?? null;
|
|
8
|
+
}
|
|
9
|
+
function h(e, t) {
|
|
10
|
+
return t ? e.find((e) => e.id === t && !e.disabled)?.id ?? m(e) : m(e);
|
|
11
|
+
}
|
|
12
|
+
function g(e) {
|
|
13
|
+
return e.filter((e) => !e.disabled);
|
|
14
|
+
}
|
|
15
|
+
function _({ mountStrategy: e, isSelected: t, isVisited: n }) {
|
|
16
|
+
return e === "keep-mounted" || t || e === "lazy" && n;
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/tabs/model/useTabsState.ts
|
|
20
|
+
function v({ items: e, value: t, defaultValue: n, onValueChange: r, orientation: i = "horizontal", activationMode: l = "automatic", loop: d = !0 }) {
|
|
21
|
+
let f = t !== void 0, p = o(() => g(e), [e]), m = p[0]?.id ?? null, [_, v] = c(() => h(e, n)), [y, b] = c(() => h(e, t ?? n)), x = h(e, t ?? n), [S, C] = c(() => x ? /* @__PURE__ */ new Set([x]) : /* @__PURE__ */ new Set()), w = a(), T = s({}), E = h(e, f ? t : _), D = h(e, y) ?? E ?? m, O = o(() => {
|
|
22
|
+
if (!E || S.has(E)) return S;
|
|
23
|
+
let e = new Set(S);
|
|
24
|
+
return e.add(E), e;
|
|
25
|
+
}, [E, S]), k = (t) => {
|
|
26
|
+
let n = h(e, t);
|
|
27
|
+
n && (C((e) => {
|
|
28
|
+
if (e.has(n)) return e;
|
|
29
|
+
let t = new Set(e);
|
|
30
|
+
return t.add(n), t;
|
|
31
|
+
}), f || v(n), r?.(n));
|
|
32
|
+
}, A = (e) => {
|
|
33
|
+
T.current[e]?.focus();
|
|
34
|
+
}, j = (e) => {
|
|
35
|
+
if (p.length < 2) return;
|
|
36
|
+
let t = u({
|
|
37
|
+
currentIndex: Math.max(0, p.findIndex((e) => e.id === (D ?? E ?? m))),
|
|
38
|
+
itemCount: p.length,
|
|
39
|
+
key: e.key,
|
|
40
|
+
orientation: i,
|
|
41
|
+
wrap: d
|
|
42
|
+
});
|
|
43
|
+
if (t === null) return;
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
let n = p[t]?.id;
|
|
46
|
+
n && (b(n), A(n), l === "automatic" && k(n));
|
|
47
|
+
}, M = (e) => {
|
|
48
|
+
let t = e.relatedTarget;
|
|
49
|
+
t instanceof Node && e.currentTarget.contains(t) || b(E ?? m);
|
|
50
|
+
}, N = (e) => `${w}-tab-${e}`, P = (e) => `${w}-panel-${e}`;
|
|
51
|
+
return {
|
|
52
|
+
activationMode: l,
|
|
53
|
+
orientation: i,
|
|
54
|
+
selectedTabId: E,
|
|
55
|
+
tabbableTabId: D,
|
|
56
|
+
onTabListKeyDown: j,
|
|
57
|
+
onTabListBlur: M,
|
|
58
|
+
getTabElementId: N,
|
|
59
|
+
getPanelElementId: P,
|
|
60
|
+
getTabButtonProps: (e) => {
|
|
61
|
+
let t = e.id === E, n = e.id === D;
|
|
62
|
+
return {
|
|
63
|
+
ref: (t) => {
|
|
64
|
+
T.current[e.id] = t;
|
|
65
|
+
},
|
|
66
|
+
type: "button",
|
|
67
|
+
role: "tab",
|
|
68
|
+
id: N(e.id),
|
|
69
|
+
disabled: e.disabled,
|
|
70
|
+
"aria-selected": t,
|
|
71
|
+
"aria-controls": P(e.id),
|
|
72
|
+
"aria-disabled": e.disabled || void 0,
|
|
73
|
+
tabIndex: e.disabled ? -1 : n ? 0 : -1,
|
|
74
|
+
onFocus: () => b(e.id),
|
|
75
|
+
onClick: () => k(e.id)
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
isVisited: (e) => O.has(e)
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
var y = {
|
|
82
|
+
tabsContainer: "pcMjuj",
|
|
83
|
+
bordered: "ITP5v-",
|
|
84
|
+
cleanPanel: "kzs94N",
|
|
85
|
+
tabs: "ZSAoAa",
|
|
86
|
+
panels: "psYhsZ",
|
|
87
|
+
horizontal: "mNDq9-",
|
|
88
|
+
vertical: "g156KO",
|
|
89
|
+
panelScrollable: "C2mO1e",
|
|
90
|
+
tab: "_28F3fs",
|
|
91
|
+
selected: "UKZXTZ",
|
|
92
|
+
panel: "jiTafe",
|
|
93
|
+
panelBody: "nhD0k7",
|
|
94
|
+
layoutPanels: "G8FICe",
|
|
95
|
+
layoutPanel: "W50XHh",
|
|
96
|
+
layoutSection: "vnjXkU",
|
|
97
|
+
layoutContent: "Nzvfhw"
|
|
98
|
+
};
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region src/tabs/ui/TabsLoadingState.tsx
|
|
101
|
+
function b({ containerClassName: e, tabListClassName: n, panelsClassName: r, panelClassName: i, panelBodyClassName: a, loadingText: o }) {
|
|
102
|
+
return /* @__PURE__ */ p("div", {
|
|
103
|
+
className: e,
|
|
104
|
+
children: [/* @__PURE__ */ f("div", {
|
|
105
|
+
className: n,
|
|
106
|
+
"aria-hidden": "true",
|
|
107
|
+
children: /* @__PURE__ */ f("button", {
|
|
108
|
+
type: "button",
|
|
109
|
+
disabled: !0,
|
|
110
|
+
"data-disabled": "",
|
|
111
|
+
className: l(y.tab, "skeletonLine"),
|
|
112
|
+
children: "Загрузка..."
|
|
113
|
+
})
|
|
114
|
+
}), /* @__PURE__ */ f("div", {
|
|
115
|
+
className: r,
|
|
116
|
+
"aria-busy": "true",
|
|
117
|
+
children: /* @__PURE__ */ f("div", {
|
|
118
|
+
className: i,
|
|
119
|
+
children: /* @__PURE__ */ f("div", {
|
|
120
|
+
className: a,
|
|
121
|
+
children: /* @__PURE__ */ f(t, {
|
|
122
|
+
text: o,
|
|
123
|
+
className: "radiusSm"
|
|
124
|
+
})
|
|
125
|
+
})
|
|
126
|
+
})
|
|
127
|
+
})]
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
//#endregion
|
|
131
|
+
//#region src/tabs/ui/TabsNoDataState.tsx
|
|
132
|
+
function x({ containerClassName: t, panelsClassName: n, panelClassName: r, panelBodyClassName: i }) {
|
|
133
|
+
return /* @__PURE__ */ f("div", {
|
|
134
|
+
className: t,
|
|
135
|
+
children: /* @__PURE__ */ f("div", {
|
|
136
|
+
className: n,
|
|
137
|
+
children: /* @__PURE__ */ f("div", {
|
|
138
|
+
className: r,
|
|
139
|
+
children: /* @__PURE__ */ f("div", {
|
|
140
|
+
className: i,
|
|
141
|
+
children: /* @__PURE__ */ f(e, { className: "radiusSm" })
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
})
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
//#endregion
|
|
148
|
+
//#region src/tabs/ui/TabsPanel.tsx
|
|
149
|
+
function S({ tabId: e, isSelected: t, className: n, getTabElementId: r, getPanelElementId: i, children: a }) {
|
|
150
|
+
return /* @__PURE__ */ f("div", {
|
|
151
|
+
role: "tabpanel",
|
|
152
|
+
id: i(e),
|
|
153
|
+
"aria-labelledby": r(e),
|
|
154
|
+
hidden: !t,
|
|
155
|
+
className: n,
|
|
156
|
+
children: a
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
//#endregion
|
|
160
|
+
//#region src/tabs/ui/TabsTabList.tsx
|
|
161
|
+
function C({ items: e, state: t, className: r, ariaLabel: i, ariaLabelledBy: a }) {
|
|
162
|
+
return /* @__PURE__ */ f("div", {
|
|
163
|
+
className: r,
|
|
164
|
+
role: "tablist",
|
|
165
|
+
"aria-orientation": t.orientation,
|
|
166
|
+
"aria-label": i,
|
|
167
|
+
"aria-labelledby": a,
|
|
168
|
+
onKeyDown: t.onTabListKeyDown,
|
|
169
|
+
onBlur: t.onTabListBlur,
|
|
170
|
+
children: ((e) => t.orientation === "horizontal" ? /* @__PURE__ */ f(n, { children: e }) : /* @__PURE__ */ f(d, { children: e }))(e.map((e) => /* @__PURE__ */ f("button", {
|
|
171
|
+
...t.getTabButtonProps(e),
|
|
172
|
+
"data-ui": "tabs-tab",
|
|
173
|
+
"data-action": "select-tab",
|
|
174
|
+
className: l(y.tab, "textWrap", e.id === t.selectedTabId && y.selected),
|
|
175
|
+
children: e.title
|
|
176
|
+
}, e.id)))
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
//#endregion
|
|
180
|
+
//#region src/tabs/ui/TabsBox.tsx
|
|
181
|
+
function w({ items: e, value: t, defaultValue: n, onValueChange: r, className: i, isLoading: a, loadingText: o, cleanPanel: s, bordered: c = !1, orientation: u = "horizontal", activationMode: d = "automatic", mountStrategy: m = "unmount", loop: h = !0, "aria-label": g, "aria-labelledby": w }) {
|
|
182
|
+
let T = v({
|
|
183
|
+
items: e,
|
|
184
|
+
value: t,
|
|
185
|
+
defaultValue: n,
|
|
186
|
+
onValueChange: r,
|
|
187
|
+
orientation: u,
|
|
188
|
+
activationMode: d,
|
|
189
|
+
loop: h
|
|
190
|
+
}), E = l(y.tabsContainer, y[u], c && y.bordered, s && y.cleanPanel, i), D = y.tabs, O = l(y.panels, y.panelScrollable, "scrollable overscroll"), k = y.panel, A = y.panelBody;
|
|
191
|
+
return a ? /* @__PURE__ */ f(b, {
|
|
192
|
+
containerClassName: E,
|
|
193
|
+
tabListClassName: D,
|
|
194
|
+
panelsClassName: O,
|
|
195
|
+
panelClassName: k,
|
|
196
|
+
panelBodyClassName: A,
|
|
197
|
+
loadingText: o
|
|
198
|
+
}) : e.length ? /* @__PURE__ */ p("div", {
|
|
199
|
+
className: E,
|
|
200
|
+
children: [/* @__PURE__ */ f(C, {
|
|
201
|
+
items: e,
|
|
202
|
+
state: T,
|
|
203
|
+
className: D,
|
|
204
|
+
ariaLabel: g,
|
|
205
|
+
ariaLabelledBy: w
|
|
206
|
+
}), /* @__PURE__ */ f("div", {
|
|
207
|
+
className: O,
|
|
208
|
+
children: e.map((e) => {
|
|
209
|
+
let t = e.id === T.selectedTabId;
|
|
210
|
+
return _({
|
|
211
|
+
mountStrategy: m,
|
|
212
|
+
isSelected: t,
|
|
213
|
+
isVisited: T.isVisited(e.id)
|
|
214
|
+
}) ? /* @__PURE__ */ f(S, {
|
|
215
|
+
tabId: e.id,
|
|
216
|
+
isSelected: t,
|
|
217
|
+
className: k,
|
|
218
|
+
getTabElementId: T.getTabElementId,
|
|
219
|
+
getPanelElementId: T.getPanelElementId,
|
|
220
|
+
children: /* @__PURE__ */ f("div", {
|
|
221
|
+
className: A,
|
|
222
|
+
children: e.content
|
|
223
|
+
})
|
|
224
|
+
}, e.id) : null;
|
|
225
|
+
})
|
|
226
|
+
})]
|
|
227
|
+
}) : /* @__PURE__ */ f(x, {
|
|
228
|
+
containerClassName: E,
|
|
229
|
+
panelsClassName: O,
|
|
230
|
+
panelClassName: k,
|
|
231
|
+
panelBodyClassName: A
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
//#endregion
|
|
235
|
+
//#region src/tabs/ui/Tabs.tsx
|
|
236
|
+
function T({ onChange: e, onValueChange: t, ...n }) {
|
|
237
|
+
return /* @__PURE__ */ f(w, {
|
|
238
|
+
...n,
|
|
239
|
+
onValueChange: (n) => {
|
|
240
|
+
t?.(n), e?.(n);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
//#endregion
|
|
245
|
+
//#region src/tabs/ui/TabsLayout.tsx
|
|
246
|
+
var E = "TabsLayout.Tab", D = "TabsLayout.Toolbar", O = "TabsLayout.Content", k = "TabsLayout.Footer";
|
|
247
|
+
function A(e) {
|
|
248
|
+
let { type: t } = e;
|
|
249
|
+
if (typeof t == "function") {
|
|
250
|
+
let e = t;
|
|
251
|
+
return e.displayName ?? e.name ?? null;
|
|
252
|
+
}
|
|
253
|
+
if (typeof t == "object" && t && "displayName" in t) {
|
|
254
|
+
let e = t;
|
|
255
|
+
return typeof e.displayName == "string" ? e.displayName : null;
|
|
256
|
+
}
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
function j(e, t) {
|
|
260
|
+
return i(e) && A(e) === t;
|
|
261
|
+
}
|
|
262
|
+
function M({ children: e }) {
|
|
263
|
+
return /* @__PURE__ */ f(d, { children: e });
|
|
264
|
+
}
|
|
265
|
+
M.displayName = E;
|
|
266
|
+
function N({ children: e }) {
|
|
267
|
+
return /* @__PURE__ */ f(d, { children: e });
|
|
268
|
+
}
|
|
269
|
+
N.displayName = D;
|
|
270
|
+
function P({ children: e }) {
|
|
271
|
+
return /* @__PURE__ */ f(d, { children: e });
|
|
272
|
+
}
|
|
273
|
+
P.displayName = O;
|
|
274
|
+
function F({ children: e }) {
|
|
275
|
+
return /* @__PURE__ */ f(d, { children: e });
|
|
276
|
+
}
|
|
277
|
+
F.displayName = k;
|
|
278
|
+
function I(e, t) {
|
|
279
|
+
let n = null, a = null, o = null;
|
|
280
|
+
for (let s of r.toArray(e)) {
|
|
281
|
+
if (!i(s)) throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);
|
|
282
|
+
if (j(s, D)) {
|
|
283
|
+
if (n) throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Toolbar.`);
|
|
284
|
+
n = s.props;
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
if (j(s, O)) {
|
|
288
|
+
if (a) throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Content.`);
|
|
289
|
+
a = s.props;
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
if (j(s, k)) {
|
|
293
|
+
if (o) throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Footer.`);
|
|
294
|
+
o = s.props;
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);
|
|
298
|
+
}
|
|
299
|
+
if (!a) throw Error(`TabsLayout.Tab "${t}" должен содержать блок TabsLayout.Content.`);
|
|
300
|
+
return {
|
|
301
|
+
toolbar: n,
|
|
302
|
+
content: a,
|
|
303
|
+
footer: o
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
function L(e) {
|
|
307
|
+
return r.toArray(e).map((e) => {
|
|
308
|
+
if (!j(e, E)) throw Error("TabsLayout принимает только дочерние элементы TabsLayout.Tab.");
|
|
309
|
+
return {
|
|
310
|
+
id: e.props.id,
|
|
311
|
+
title: e.props.title,
|
|
312
|
+
disabled: e.props.disabled,
|
|
313
|
+
...I(e.props.children, e.props.id)
|
|
314
|
+
};
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
var R = ({ children: e, value: t, defaultValue: n, onValueChange: r, className: i, bordered: a, cleanPanel: s, orientation: c = "horizontal", activationMode: u = "manual", mountStrategy: d = "lazy", loop: m = !0, "aria-label": h, "aria-labelledby": g }) => {
|
|
318
|
+
let b = o(() => L(e), [e]), x = v({
|
|
319
|
+
items: b,
|
|
320
|
+
value: t,
|
|
321
|
+
defaultValue: n,
|
|
322
|
+
onValueChange: r,
|
|
323
|
+
orientation: c,
|
|
324
|
+
activationMode: u,
|
|
325
|
+
loop: m
|
|
326
|
+
}), w = l(y.tabsContainer, y[c], a && y.bordered, s && y.cleanPanel, i), T = l(y.panels, y.layoutPanels);
|
|
327
|
+
return /* @__PURE__ */ p("div", {
|
|
328
|
+
className: w,
|
|
329
|
+
children: [/* @__PURE__ */ f(C, {
|
|
330
|
+
items: b,
|
|
331
|
+
state: x,
|
|
332
|
+
className: y.tabs,
|
|
333
|
+
ariaLabel: h,
|
|
334
|
+
ariaLabelledBy: g
|
|
335
|
+
}), /* @__PURE__ */ f("div", {
|
|
336
|
+
className: T,
|
|
337
|
+
children: b.map((e) => {
|
|
338
|
+
let t = e.id === x.selectedTabId;
|
|
339
|
+
if (!_({
|
|
340
|
+
mountStrategy: d,
|
|
341
|
+
isSelected: t,
|
|
342
|
+
isVisited: x.isVisited(e.id)
|
|
343
|
+
})) return null;
|
|
344
|
+
let n = `${e.toolbar ? "auto " : ""}minmax(0, 1fr)${e.footer ? " auto" : ""}`;
|
|
345
|
+
return /* @__PURE__ */ f(S, {
|
|
346
|
+
tabId: e.id,
|
|
347
|
+
isSelected: t,
|
|
348
|
+
className: y.panel,
|
|
349
|
+
getTabElementId: x.getTabElementId,
|
|
350
|
+
getPanelElementId: x.getPanelElementId,
|
|
351
|
+
children: /* @__PURE__ */ p("div", {
|
|
352
|
+
className: y.layoutPanel,
|
|
353
|
+
style: { gridTemplateRows: n },
|
|
354
|
+
children: [
|
|
355
|
+
e.toolbar ? /* @__PURE__ */ f("div", {
|
|
356
|
+
className: l(y.layoutSection, e.toolbar.className),
|
|
357
|
+
children: e.toolbar.children
|
|
358
|
+
}) : null,
|
|
359
|
+
/* @__PURE__ */ f("div", {
|
|
360
|
+
className: l(y.layoutSection, y.layoutContent, e.content.className),
|
|
361
|
+
children: e.content.children
|
|
362
|
+
}),
|
|
363
|
+
e.footer ? /* @__PURE__ */ f("div", {
|
|
364
|
+
className: l(y.layoutSection, e.footer.className),
|
|
365
|
+
children: e.footer.children
|
|
366
|
+
}) : null
|
|
367
|
+
]
|
|
368
|
+
})
|
|
369
|
+
}, e.id);
|
|
370
|
+
})
|
|
371
|
+
})]
|
|
372
|
+
});
|
|
373
|
+
};
|
|
374
|
+
R.displayName = "TabsLayout";
|
|
375
|
+
var z = Object.assign(R, {
|
|
376
|
+
Tab: M,
|
|
377
|
+
Toolbar: N,
|
|
378
|
+
Content: P,
|
|
379
|
+
Footer: F
|
|
380
|
+
});
|
|
381
|
+
//#endregion
|
|
382
|
+
export { T as Tabs, w as TabsBox, z as TabsLayout };
|
|
383
|
+
|
|
384
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/tabs/lib/tabs.ts","../../src/tabs/model/useTabsState.ts","../../src/tabs/ui/Tabs.module.scss","../../src/tabs/ui/TabsLoadingState.tsx","../../src/tabs/ui/TabsNoDataState.tsx","../../src/tabs/ui/TabsPanel.tsx","../../src/tabs/ui/TabsTabList.tsx","../../src/tabs/ui/TabsBox.tsx","../../src/tabs/ui/Tabs.tsx","../../src/tabs/ui/TabsLayout.tsx"],"sourcesContent":["import type { TabsDescriptor, TabsMountStrategy } from \"../model/types\";\n\n/**\n * Возвращает идентификатор первой доступной вкладки.\n */\nexport function getFirstEnabledTabId(items: TabsDescriptor[]) {\n\treturn items.find((item) => !item.disabled)?.id ?? null;\n}\n\n/**\n * Возвращает безопасный идентификатор вкладки.\n * Если переданный `candidate` недоступен, выбирается первая доступная вкладка.\n */\nexport function getSafeTabId(items: TabsDescriptor[], candidate: string | undefined | null) {\n\tif (!candidate) {\n\t\treturn getFirstEnabledTabId(items);\n\t}\n\n\tconst matchedItem = items.find((item) => item.id === candidate && !item.disabled);\n\treturn matchedItem?.id ?? getFirstEnabledTabId(items);\n}\n\n/**\n * Возвращает только доступные вкладки для roving focus и клавиатурной навигации.\n */\nexport function getEnabledTabs(items: TabsDescriptor[]) {\n\treturn items.filter((item) => !item.disabled);\n}\n\ninterface ShouldMountTabPanelOptions {\n\tmountStrategy: TabsMountStrategy;\n\tisSelected: boolean;\n\tisVisited: boolean;\n}\n\n/**\n * Определяет, должна ли панель оставаться смонтированной с учётом стратегии монтирования.\n */\nexport function shouldMountTabPanel({ mountStrategy, isSelected, isVisited }: ShouldMountTabPanelOptions) {\n\treturn mountStrategy === \"keep-mounted\" || isSelected || (mountStrategy === \"lazy\" && isVisited);\n}\n","import type React from \"react\";\nimport { FocusEvent, KeyboardEvent, useId, useMemo, useRef, useState } from \"react\";\n\nimport { getRovingFocusTargetIndex } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { getEnabledTabs, getSafeTabId } from \"../lib/tabs\";\n\nimport type { TabsActivationMode, TabsDescriptor, TabsOrientation } from \"./types\";\n\ninterface UseTabsStateOptions {\n\titems: TabsDescriptor[];\n\tvalue?: string;\n\tdefaultValue?: string;\n\tonValueChange?: (value: string) => void;\n\torientation?: TabsOrientation;\n\tactivationMode?: TabsActivationMode;\n\tloop?: boolean;\n}\n\n/**\n * Публичная часть модели, необходимая визуальным подкомпонентам tabs.\n */\nexport interface TabsStateModel {\n\tactivationMode: TabsActivationMode;\n\torientation: TabsOrientation;\n\tselectedTabId: string | null;\n\ttabbableTabId: string | null;\n\tonTabListKeyDown: (event: KeyboardEvent<HTMLDivElement>) => void;\n\tonTabListBlur: (event: FocusEvent<HTMLDivElement>) => void;\n\tgetTabElementId: (tabId: string) => string;\n\tgetPanelElementId: (tabId: string) => string;\n\tgetTabButtonProps: (item: TabsDescriptor) => React.ButtonHTMLAttributes<HTMLButtonElement> & {\n\t\tref: (node: HTMLButtonElement | null) => void;\n\t};\n\tisVisited: (tabId: string) => boolean;\n}\n\n/**\n * Инкапсулирует state, a11y-связки и клавиатурную навигацию для всех оболочек tabs.\n */\nexport function useTabsState({\n\titems,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\torientation = \"horizontal\",\n\tactivationMode = \"automatic\",\n\tloop = true\n}: UseTabsStateOptions): TabsStateModel {\n\tconst isControlled = value !== undefined;\n\tconst enabledTabs = useMemo(() => getEnabledTabs(items), [items]);\n\tconst fallbackTabId = enabledTabs[0]?.id ?? null;\n\tconst [internalValue, setInternalValue] = useState(() => getSafeTabId(items, defaultValue));\n\tconst [focusedTabId, setFocusedTabId] = useState<string | null>(() => getSafeTabId(items, value ?? defaultValue));\n\tconst initialVisitedTabId = getSafeTabId(items, value ?? defaultValue);\n\tconst [visitedTabsState, setVisitedTabsState] = useState<Set<string>>(() =>\n\t\tinitialVisitedTabId ? new Set([initialVisitedTabId]) : new Set()\n\t);\n\tconst tabsId = useId();\n\tconst tabRefs = useRef<Record<string, HTMLButtonElement | null>>({});\n\n\tconst selectedTabId = getSafeTabId(items, isControlled ? value : internalValue);\n\tconst nextTabbableTabId = getSafeTabId(items, focusedTabId) ?? selectedTabId ?? fallbackTabId;\n\tconst visitedTabs = useMemo(() => {\n\t\tif (!selectedTabId || visitedTabsState.has(selectedTabId)) {\n\t\t\treturn visitedTabsState;\n\t\t}\n\n\t\tconst next = new Set(visitedTabsState);\n\t\tnext.add(selectedTabId);\n\t\treturn next;\n\t}, [selectedTabId, visitedTabsState]);\n\n\tconst activateTab = (nextTabId: string) => {\n\t\tconst safeNextTabId = getSafeTabId(items, nextTabId);\n\t\tif (!safeNextTabId) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetVisitedTabsState((prev) => {\n\t\t\tif (prev.has(safeNextTabId)) {\n\t\t\t\treturn prev;\n\t\t\t}\n\n\t\t\tconst next = new Set(prev);\n\t\t\tnext.add(safeNextTabId);\n\t\t\treturn next;\n\t\t});\n\n\t\tif (!isControlled) {\n\t\t\tsetInternalValue(safeNextTabId);\n\t\t}\n\n\t\tonValueChange?.(safeNextTabId);\n\t};\n\n\tconst focusTab = (nextTabId: string) => {\n\t\ttabRefs.current[nextTabId]?.focus();\n\t};\n\n\tconst onTabListKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (enabledTabs.length < 2) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeFocusIndex = Math.max(\n\t\t\t0,\n\t\t\tenabledTabs.findIndex((item) => item.id === (nextTabbableTabId ?? selectedTabId ?? fallbackTabId))\n\t\t);\n\t\tconst nextEnabledIndex = getRovingFocusTargetIndex({\n\t\t\tcurrentIndex: activeFocusIndex,\n\t\t\titemCount: enabledTabs.length,\n\t\t\tkey: event.key,\n\t\t\torientation,\n\t\t\twrap: loop\n\t\t});\n\n\t\tif (nextEnabledIndex === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst nextTabId = enabledTabs[nextEnabledIndex]?.id;\n\t\tif (!nextTabId) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetFocusedTabId(nextTabId);\n\t\tfocusTab(nextTabId);\n\n\t\tif (activationMode === \"automatic\") {\n\t\t\tactivateTab(nextTabId);\n\t\t}\n\t};\n\n\tconst onTabListBlur = (event: FocusEvent<HTMLDivElement>) => {\n\t\tconst nextTarget = event.relatedTarget;\n\n\t\tif (nextTarget instanceof Node && event.currentTarget.contains(nextTarget)) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetFocusedTabId(selectedTabId ?? fallbackTabId);\n\t};\n\n\tconst getTabElementId = (tabId: string) => `${tabsId}-tab-${tabId}`;\n\tconst getPanelElementId = (tabId: string) => `${tabsId}-panel-${tabId}`;\n\n\tconst getTabButtonProps = (item: TabsDescriptor) => {\n\t\tconst isSelected = item.id === selectedTabId;\n\t\tconst isTabbable = item.id === nextTabbableTabId;\n\n\t\treturn {\n\t\t\tref: (node: HTMLButtonElement | null) => {\n\t\t\t\ttabRefs.current[item.id] = node;\n\t\t\t},\n\t\t\ttype: \"button\" as const,\n\t\t\trole: \"tab\" as const,\n\t\t\tid: getTabElementId(item.id),\n\t\t\tdisabled: item.disabled,\n\t\t\t\"aria-selected\": isSelected,\n\t\t\t\"aria-controls\": getPanelElementId(item.id),\n\t\t\t\"aria-disabled\": item.disabled || undefined,\n\t\t\ttabIndex: item.disabled ? -1 : isTabbable ? 0 : -1,\n\t\t\tonFocus: () => setFocusedTabId(item.id),\n\t\t\tonClick: () => activateTab(item.id)\n\t\t};\n\t};\n\n\treturn {\n\t\tactivationMode,\n\t\torientation,\n\t\tselectedTabId,\n\t\ttabbableTabId: nextTabbableTabId,\n\t\tonTabListKeyDown,\n\t\tonTabListBlur,\n\t\tgetTabElementId,\n\t\tgetPanelElementId,\n\t\tgetTabButtonProps,\n\t\tisVisited: (tabId: string) => visitedTabs.has(tabId)\n\t};\n}\n",".tabsContainer {\n\t--tabs-border: none;\n\t--tabs-panel-border: none;\n\t--tabs-panel-padding: var(--space-md);\n\t--tabs-panel-bg: var(--surface-1);\n\n\tdisplay: grid;\n\tgap: var(--space-sm);\n\tmin-width: 0;\n\tmin-height: 0;\n\theight: 100%;\n\toverflow: hidden;\n}\n\n.bordered {\n\t--tabs-border: var(--border);\n\t--tabs-panel-border: var(--border);\n}\n\n.cleanPanel {\n\t--tabs-panel-padding: 0;\n\t--tabs-panel-bg: none;\n\t--tabs-panel-border: none;\n}\n\n.tabs {\n\tdisplay: flex;\n\tgap: var(--space-xs);\n\tmin-width: 0;\n\n\tborder: var(--tabs-border);\n\tbackground-color: var(--surface-1);\n\tpadding: var(--space-xs);\n}\n\n.panels {\n\tmin-width: 0;\n\tmin-height: 0;\n\tborder: var(--tabs-panel-border);\n\tbackground-color: var(--tabs-panel-bg);\n}\n\n.tabs,\n.panels {\n\tborder-radius: var(--radius-sm);\n}\n\n.horizontal {\n\tgrid-template-rows: auto minmax(0, 1fr);\n\n\t// .tabs {\n\t// \tflex-wrap: wrap;\n\t// }\n}\n\n.vertical {\n\tgrid-template-columns: 10em minmax(0, 1fr);\n\tmin-height: 0;\n\n\t.tabs {\n\t\tflex-direction: column;\n\t}\n}\n\n.panelScrollable {\n\toverflow: auto;\n}\n\n.tab {\n\ttext-align: left;\n\n\tposition: relative;\n\tmin-height: var(--control-height);\n\tpadding: var(--space-xs) var(--space-md);\n\tcolor: var(--content-2);\n\tborder-radius: var(--radius-sm);\n\tfont-weight: 700;\n\tfont-variation-settings: \"wght\" 700;\n\n\tflex-shrink: 0;\n\n\t&:hover {\n\t\tcursor: pointer;\n\t\tcolor: var(--content-accent);\n\t\t// background-color: var(--surface-accent);\n\t}\n\n\t&.selected {\n\t\tcolor: var(--status-neutral-on-fill);\n\t\tbackground-color: var(--status-neutral-fill);\n\t\tborder-color: var(--border-0);\n\n\t\tbox-shadow: var(--shadow-xs);\n\t}\n\n\t&:disabled {\n\t\tcursor: not-allowed;\n\t\tcolor: var(--content-2);\n\t\tbackground-color: var(--surface-2);\n\t}\n}\n\n.panel {\n\tpadding: 0;\n\tmin-width: 0;\n\tmin-height: 0;\n\theight: 100%;\n}\n\n.panelBody {\n\tmin-width: 0;\n\tmin-height: 0;\n\n\theight: 100%;\n\tpadding: var(--tabs-panel-padding);\n}\n\n.layoutPanels {\n\toverflow: hidden;\n}\n\n.layoutPanel {\n\tdisplay: grid;\n\tgap: var(--space-md);\n\tmin-width: 0;\n\tmin-height: 0;\n\theight: 100%;\n\tpadding: var(--tabs-panel-padding);\n}\n\n.layoutSection {\n\tmin-width: 0;\n}\n\n.layoutContent {\n\tmin-height: 0;\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { LoadingMessage } from \"../../misc\";\n\nimport styles from \"./Tabs.module.scss\";\n\ninterface TabsLoadingStateProps {\n\tcontainerClassName: string;\n\ttabListClassName: string;\n\tpanelsClassName: string;\n\tpanelClassName: string;\n\tpanelBodyClassName: string;\n\tloadingText?: string;\n}\n\n/**\n * Служебное loading-состояние для `TabsBox`.\n */\nexport function TabsLoadingState({\n\tcontainerClassName,\n\ttabListClassName,\n\tpanelsClassName,\n\tpanelClassName,\n\tpanelBodyClassName,\n\tloadingText\n}: TabsLoadingStateProps) {\n\treturn (\n\t\t<div className={containerClassName}>\n\t\t\t<div className={tabListClassName} aria-hidden=\"true\">\n\t\t\t\t<button type=\"button\" disabled data-disabled=\"\" className={cn(styles.tab, \"skeletonLine\")}>\n\t\t\t\t\tЗагрузка...\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div className={panelsClassName} aria-busy=\"true\">\n\t\t\t\t<div className={panelClassName}>\n\t\t\t\t\t<div className={panelBodyClassName}>\n\t\t\t\t\t\t<LoadingMessage text={loadingText} className=\"radiusSm\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { NoData } from \"../../misc\";\n\ninterface TabsNoDataStateProps {\n\tcontainerClassName: string;\n\tpanelsClassName: string;\n\tpanelClassName: string;\n\tpanelBodyClassName: string;\n}\n\n/**\n * Служебное empty-состояние для `TabsBox`.\n */\nexport function TabsNoDataState({ containerClassName, panelsClassName, panelClassName, panelBodyClassName }: TabsNoDataStateProps) {\n\treturn (\n\t\t<div className={containerClassName}>\n\t\t\t<div className={panelsClassName}>\n\t\t\t\t<div className={panelClassName}>\n\t\t\t\t\t<div className={panelBodyClassName}>\n\t\t\t\t\t\t<NoData className=\"radiusSm\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import React from \"react\";\n\n/**\n * Унифицированная ARIA-обёртка для содержимого активной панели tabs.\n */\ninterface TabsPanelProps {\n\ttabId: string;\n\tisSelected: boolean;\n\tclassName?: string;\n\tgetTabElementId: (tabId: string) => string;\n\tgetPanelElementId: (tabId: string) => string;\n\tchildren: React.ReactNode;\n}\n\nexport function TabsPanel({ tabId, isSelected, className, getTabElementId, getPanelElementId, children }: TabsPanelProps) {\n\treturn (\n\t\t<div\n\t\t\trole=\"tabpanel\"\n\t\t\tid={getPanelElementId(tabId)}\n\t\t\taria-labelledby={getTabElementId(tabId)}\n\t\t\thidden={!isSelected}\n\t\t\tclassName={className}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { OneStepScroller } from \"../../misc\";\n\nimport styles from \"./Tabs.module.scss\";\n\nimport type { TabsDescriptor } from \"../model/types\";\nimport type { TabsStateModel } from \"../model/useTabsState\";\n\n/**\n * Рендерит tablist и кнопки вкладок поверх общей модели tabs.\n */\ninterface TabsTabListProps {\n\titems: TabsDescriptor[];\n\tstate: TabsStateModel;\n\tclassName?: string;\n\tariaLabel?: string;\n\tariaLabelledBy?: string;\n}\n\nexport function TabsTabList({ items, state, className, ariaLabel, ariaLabelledBy }: TabsTabListProps) {\n\tconst wrapItems = (children: ReactNode) => {\n\t\tif (state.orientation === \"horizontal\") {\n\t\t\treturn <OneStepScroller>{children}</OneStepScroller>;\n\t\t}\n\n\t\treturn <>{children}</>;\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={className}\n\t\t\trole=\"tablist\"\n\t\t\taria-orientation={state.orientation}\n\t\t\taria-label={ariaLabel}\n\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\tonKeyDown={state.onTabListKeyDown}\n\t\t\tonBlur={state.onTabListBlur}>\n\t\t\t{wrapItems(\n\t\t\t\titems.map((item) => (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t{...state.getTabButtonProps(item)}\n\t\t\t\t\t\tdata-ui=\"tabs-tab\"\n\t\t\t\t\t\tdata-action=\"select-tab\"\n\t\t\t\t\t\tclassName={cn(styles.tab, \"textWrap\", item.id === state.selectedTabId && styles.selected)}>\n\t\t\t\t\t\t{item.title}\n\t\t\t\t\t</button>\n\t\t\t\t))\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { shouldMountTabPanel } from \"../lib/tabs\";\nimport { TabsBoxProps } from \"../model/types\";\nimport { useTabsState } from \"../model/useTabsState\";\n\nimport styles from \"./Tabs.module.scss\";\nimport { TabsLoadingState } from \"./TabsLoadingState\";\nimport { TabsNoDataState } from \"./TabsNoDataState\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport { TabsTabList } from \"./TabsTabList\";\n\n/**\n * Простой items-based tabs-компонент.\n * Сам управляет областью панели и её прокруткой.\n */\nexport function TabsBox({\n\titems,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tclassName,\n\tisLoading,\n\tloadingText,\n\tcleanPanel,\n\tbordered = false,\n\torientation = \"horizontal\",\n\tactivationMode = \"automatic\",\n\tmountStrategy = \"unmount\",\n\tloop = true,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy\n}: TabsBoxProps) {\n\tconst state = useTabsState({\n\t\titems,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t\torientation,\n\t\tactivationMode,\n\t\tloop\n\t});\n\n\tconst rootClassName = cn(\n\t\tstyles.tabsContainer,\n\t\tstyles[orientation],\n\t\tbordered && styles.bordered,\n\t\tcleanPanel && styles.cleanPanel,\n\t\tclassName\n\t);\n\tconst tabListClassName = styles.tabs;\n\tconst panelsClassName = cn(styles.panels, styles.panelScrollable, \"scrollable overscroll\");\n\tconst panelClassName = styles.panel;\n\tconst panelBodyClassName = styles.panelBody;\n\n\tif (isLoading) {\n\t\treturn (\n\t\t\t<TabsLoadingState\n\t\t\t\tcontainerClassName={rootClassName}\n\t\t\t\ttabListClassName={tabListClassName}\n\t\t\t\tpanelsClassName={panelsClassName}\n\t\t\t\tpanelClassName={panelClassName}\n\t\t\t\tpanelBodyClassName={panelBodyClassName}\n\t\t\t\tloadingText={loadingText}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (!items.length) {\n\t\treturn (\n\t\t\t<TabsNoDataState\n\t\t\t\tcontainerClassName={rootClassName}\n\t\t\t\tpanelsClassName={panelsClassName}\n\t\t\t\tpanelClassName={panelClassName}\n\t\t\t\tpanelBodyClassName={panelBodyClassName}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={rootClassName}>\n\t\t\t<TabsTabList items={items} state={state} className={tabListClassName} ariaLabel={ariaLabel} ariaLabelledBy={ariaLabelledBy} />\n\n\t\t\t<div className={panelsClassName}>\n\t\t\t\t{items.map((item) => {\n\t\t\t\t\tconst isSelected = item.id === state.selectedTabId;\n\t\t\t\t\tconst isMounted = shouldMountTabPanel({\n\t\t\t\t\t\tmountStrategy,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tisVisited: state.isVisited(item.id)\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!isMounted) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TabsPanel\n\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\ttabId={item.id}\n\t\t\t\t\t\t\tisSelected={isSelected}\n\t\t\t\t\t\t\tclassName={panelClassName}\n\t\t\t\t\t\t\tgetTabElementId={state.getTabElementId}\n\t\t\t\t\t\t\tgetPanelElementId={state.getPanelElementId}>\n\t\t\t\t\t\t\t<div className={panelBodyClassName}>{item.content}</div>\n\t\t\t\t\t\t</TabsPanel>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { TabsBox } from \"./TabsBox\";\n\nimport type { TabsBoxItem, TabsBoxProps } from \"../model/types\";\n\n/**\n * Элемент вкладки для устаревшего совместимого API `Tabs`.\n */\nexport type TabsItem = TabsBoxItem;\n\n/**\n * @deprecated Используйте `TabsBox` для простого сценария и `TabsLayout` для составных layout-сценариев.\n */\nexport interface TabsProps extends TabsBoxProps {\n\tonChange?: (value: string) => void;\n}\n\n/**\n * @deprecated Используйте `TabsBox` для простого сценария и `TabsLayout` для составных layout-сценариев.\n */\nexport function Tabs({ onChange, onValueChange, ...props }: TabsProps) {\n\treturn (\n\t\t<TabsBox\n\t\t\t{...props}\n\t\t\tonValueChange={(nextValue) => {\n\t\t\t\tonValueChange?.(nextValue);\n\t\t\t\tonChange?.(nextValue);\n\t\t\t}}\n\t\t/>\n\t);\n}\n","/* eslint-disable react-refresh/only-export-components */\nimport React, { Children, isValidElement, useMemo } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { shouldMountTabPanel } from \"../lib/tabs\";\nimport { useTabsState } from \"../model/useTabsState\";\n\nimport styles from \"./Tabs.module.scss\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport { TabsTabList } from \"./TabsTabList\";\n\nimport type { TabsDescriptor, TabsLayoutProps, TabsLayoutSectionProps, TabsLayoutTabProps } from \"../model/types\";\n\ninterface ParsedTabsLayoutTab extends TabsDescriptor {\n\ttoolbar: TabsLayoutSectionProps | null;\n\tcontent: TabsLayoutSectionProps;\n\tfooter: TabsLayoutSectionProps | null;\n}\n\nconst tabsLayoutTabDisplayName = \"TabsLayout.Tab\";\nconst tabsLayoutToolbarDisplayName = \"TabsLayout.Toolbar\";\nconst tabsLayoutContentDisplayName = \"TabsLayout.Content\";\nconst tabsLayoutFooterDisplayName = \"TabsLayout.Footer\";\n\n/**\n * Возвращает стабильный displayName compound-элемента.\n * Это нужно для корректной работы HMR, где ссылочное сравнение `child.type` может ломаться.\n */\nfunction getTabsLayoutElementDisplayName(child: React.ReactElement) {\n\tconst { type } = child;\n\n\tif (typeof type === \"function\") {\n\t\tconst componentType = type as React.JSXElementConstructor<unknown> & {\n\t\t\tdisplayName?: string;\n\t\t\tname?: string;\n\t\t};\n\n\t\treturn componentType.displayName ?? componentType.name ?? null;\n\t}\n\n\tif (typeof type === \"object\" && type !== null && \"displayName\" in type) {\n\t\tconst componentType = type as {\n\t\t\tdisplayName?: string;\n\t\t};\n\n\t\treturn typeof componentType.displayName === \"string\" ? componentType.displayName : null;\n\t}\n\n\treturn null;\n}\n\nfunction isTabsLayoutElement<Props>(child: React.ReactNode, displayName: string): child is React.ReactElement<Props> {\n\treturn isValidElement<Props>(child) && getTabsLayoutElementDisplayName(child) === displayName;\n}\n\n/**\n * Маркер верхнеуровневой вкладки в compound-режиме `TabsLayout`.\n */\nfunction TabsLayoutTab({ children }: TabsLayoutTabProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutTab.displayName = tabsLayoutTabDisplayName;\n\n/**\n * Верхняя секция панели, исключённая из прокручиваемого содержимого.\n */\nfunction TabsLayoutToolbar({ children }: TabsLayoutSectionProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutToolbar.displayName = tabsLayoutToolbarDisplayName;\n\n/**\n * Основное содержимое панели, которое само управляет своим layout и scroll.\n */\nfunction TabsLayoutContent({ children }: TabsLayoutSectionProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutContent.displayName = tabsLayoutContentDisplayName;\n\n/**\n * Нижняя секция панели, исключённая из прокручиваемого содержимого.\n */\nfunction TabsLayoutFooter({ children }: TabsLayoutSectionProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutFooter.displayName = tabsLayoutFooterDisplayName;\n\nfunction parseTabsLayoutSections(children: React.ReactNode, tabId: string) {\n\tlet toolbar: TabsLayoutSectionProps | null = null;\n\tlet content: TabsLayoutSectionProps | null = null;\n\tlet footer: TabsLayoutSectionProps | null = null;\n\n\tfor (const child of Children.toArray(children)) {\n\t\tif (!isValidElement(child)) {\n\t\t\tthrow new Error(\n\t\t\t\t`TabsLayout.Tab \"${tabId}\" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`\n\t\t\t);\n\t\t}\n\n\t\tif (isTabsLayoutElement<TabsLayoutSectionProps>(child, tabsLayoutToolbarDisplayName)) {\n\t\t\tif (toolbar) {\n\t\t\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" содержит более одного блока TabsLayout.Toolbar.`);\n\t\t\t}\n\n\t\t\ttoolbar = child.props;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isTabsLayoutElement<TabsLayoutSectionProps>(child, tabsLayoutContentDisplayName)) {\n\t\t\tif (content) {\n\t\t\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" содержит более одного блока TabsLayout.Content.`);\n\t\t\t}\n\n\t\t\tcontent = child.props;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isTabsLayoutElement<TabsLayoutSectionProps>(child, tabsLayoutFooterDisplayName)) {\n\t\t\tif (footer) {\n\t\t\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" содержит более одного блока TabsLayout.Footer.`);\n\t\t\t}\n\n\t\t\tfooter = child.props;\n\t\t\tcontinue;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`TabsLayout.Tab \"${tabId}\" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`\n\t\t);\n\t}\n\n\tif (!content) {\n\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" должен содержать блок TabsLayout.Content.`);\n\t}\n\n\treturn { toolbar, content, footer };\n}\n\nfunction parseTabsLayoutChildren(children: React.ReactNode): ParsedTabsLayoutTab[] {\n\treturn Children.toArray(children).map((child) => {\n\t\tif (!isTabsLayoutElement<TabsLayoutTabProps>(child, tabsLayoutTabDisplayName)) {\n\t\t\tthrow new Error(\"TabsLayout принимает только дочерние элементы TabsLayout.Tab.\");\n\t\t}\n\n\t\treturn {\n\t\t\tid: child.props.id,\n\t\t\ttitle: child.props.title,\n\t\t\tdisabled: child.props.disabled,\n\t\t\t...parseTabsLayoutSections(child.props.children, child.props.id)\n\t\t};\n\t});\n}\n\ntype TabsLayoutComposition = React.FC<TabsLayoutProps> & {\n\tTab: typeof TabsLayoutTab;\n\tToolbar: typeof TabsLayoutToolbar;\n\tContent: typeof TabsLayoutContent;\n\tFooter: typeof TabsLayoutFooter;\n};\n\n/**\n * Compound-оболочка tabs для составных panel-layout сценариев.\n * Сам компонент управляет только переключением и каркасом панели.\n */\nconst TabsLayoutRoot: React.FC<TabsLayoutProps> = ({\n\tchildren,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tclassName,\n\tbordered,\n\tcleanPanel,\n\torientation = \"horizontal\",\n\tactivationMode = \"manual\",\n\tmountStrategy = \"lazy\",\n\tloop = true,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy\n}) => {\n\tconst tabs = useMemo(() => parseTabsLayoutChildren(children), [children]);\n\tconst state = useTabsState({\n\t\titems: tabs,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t\torientation,\n\t\tactivationMode,\n\t\tloop\n\t});\n\tconst rootClassName = cn(\n\t\tstyles.tabsContainer,\n\t\tstyles[orientation],\n\t\tbordered && styles.bordered,\n\t\tcleanPanel && styles.cleanPanel,\n\t\tclassName\n\t);\n\tconst panelsClassName = cn(styles.panels, styles.layoutPanels);\n\n\treturn (\n\t\t<div className={rootClassName}>\n\t\t\t<TabsTabList items={tabs} state={state} className={styles.tabs} ariaLabel={ariaLabel} ariaLabelledBy={ariaLabelledBy} />\n\n\t\t\t<div className={panelsClassName}>\n\t\t\t\t{tabs.map((tab) => {\n\t\t\t\t\tconst isSelected = tab.id === state.selectedTabId;\n\t\t\t\t\tconst isMounted = shouldMountTabPanel({\n\t\t\t\t\t\tmountStrategy,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tisVisited: state.isVisited(tab.id)\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!isMounted) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst templateRows = `${tab.toolbar ? \"auto \" : \"\"}minmax(0, 1fr)${tab.footer ? \" auto\" : \"\"}`;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TabsPanel\n\t\t\t\t\t\t\tkey={tab.id}\n\t\t\t\t\t\t\ttabId={tab.id}\n\t\t\t\t\t\t\tisSelected={isSelected}\n\t\t\t\t\t\t\tclassName={styles.panel}\n\t\t\t\t\t\t\tgetTabElementId={state.getTabElementId}\n\t\t\t\t\t\t\tgetPanelElementId={state.getPanelElementId}>\n\t\t\t\t\t\t\t<div className={styles.layoutPanel} style={{ gridTemplateRows: templateRows }}>\n\t\t\t\t\t\t\t\t{tab.toolbar ? (\n\t\t\t\t\t\t\t\t\t<div className={cn(styles.layoutSection, tab.toolbar.className)}>{tab.toolbar.children}</div>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t<div className={cn(styles.layoutSection, styles.layoutContent, tab.content.className)}>\n\t\t\t\t\t\t\t\t\t{tab.content.children}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{tab.footer ? (\n\t\t\t\t\t\t\t\t\t<div className={cn(styles.layoutSection, tab.footer.className)}>{tab.footer.children}</div>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</TabsPanel>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nTabsLayoutRoot.displayName = \"TabsLayout\";\n\nexport const TabsLayout = Object.assign(TabsLayoutRoot, {\n\tTab: TabsLayoutTab,\n\tToolbar: TabsLayoutToolbar,\n\tContent: TabsLayoutContent,\n\tFooter: TabsLayoutFooter\n}) as TabsLayoutComposition;\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { m as e } from "../chunks/misc-
|
|
1
|
+
import { m as e } from "../chunks/misc-1PxS8OWD.js";
|
|
2
2
|
import { t } from "../chunks/editorModel-DCJRgzlr.js";
|
|
3
|
-
import { i as n, r } from "../chunks/toolbar-
|
|
3
|
+
import { i as n, r } from "../chunks/toolbar-XCDeS2Li.js";
|
|
4
4
|
import { jsx as i } from "react/jsx-runtime";
|
|
5
5
|
//#region src/text-editor/TextEditorLexical.tsx
|
|
6
6
|
function a() {
|
|
7
|
-
return import("../chunks/TextEditorLexicalClient-
|
|
7
|
+
return import("../chunks/TextEditorLexicalClient-Bca3FOUs.js").then((e) => ({ TextEditorLexicalClient: e.TextEditorLexicalClient }));
|
|
8
8
|
}
|
|
9
9
|
function o(t) {
|
|
10
10
|
return /* @__PURE__ */ i(e, {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, p as c, r as l, s as u, t as d, u as f } from "../../chunks/toolbar-
|
|
1
|
+
import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, p as c, r as l, s as u, t as d, u as f } from "../../chunks/toolbar-XCDeS2Li.js";
|
|
2
2
|
export { r as ActionControls, n as AlignmentControls, f as HistoryControls, o as LinkButtons, l as LinkTypes, i as TagTypes, e as TextEditorBlockControls, s as TextEditorInlineControls, u as TextEditorStyleClasses, d as TextEditorToolbarLexical, c as ToolbarControl, t as getElementFromElementStyle, a as getTagFromElementStyle };
|
package/dist/textarea/index.js
CHANGED
|
@@ -1,2 +1,44 @@
|
|
|
1
|
-
import { t as e } from "../chunks/
|
|
2
|
-
|
|
1
|
+
import { t as e } from "../chunks/ui.module-BisoTevy.js";
|
|
2
|
+
import { l as t, s as n } from "../chunks/input-CZLUUggm.js";
|
|
3
|
+
import { cn as r } from "@ryuzaki13/react-foundation-lib/utils";
|
|
4
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
5
|
+
var a = { textarea: "TjY2iu" };
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/textarea/Textarea.tsx
|
|
8
|
+
function o({ label: o, description: s, className: c, disabled: l, size: u, value: d, onChange: f, error: p, onClearError: m, id: h, ...g }) {
|
|
9
|
+
let { controlId: _, labelId: v, descriptionId: y, errorId: b, describedBy: x } = t({
|
|
10
|
+
id: h,
|
|
11
|
+
hasLabel: o != null,
|
|
12
|
+
hasDescription: !!s,
|
|
13
|
+
hasError: !!p
|
|
14
|
+
});
|
|
15
|
+
return /* @__PURE__ */ i(n, {
|
|
16
|
+
label: o,
|
|
17
|
+
description: s,
|
|
18
|
+
disabled: l,
|
|
19
|
+
size: u,
|
|
20
|
+
error: p,
|
|
21
|
+
controlId: _,
|
|
22
|
+
labelId: v,
|
|
23
|
+
descriptionId: y,
|
|
24
|
+
errorId: b,
|
|
25
|
+
children: /* @__PURE__ */ i("textarea", {
|
|
26
|
+
...g,
|
|
27
|
+
id: _,
|
|
28
|
+
disabled: l,
|
|
29
|
+
value: d,
|
|
30
|
+
"aria-invalid": !!p || void 0,
|
|
31
|
+
"aria-labelledby": v,
|
|
32
|
+
"aria-describedby": x,
|
|
33
|
+
"data-invalid": p ? "" : void 0,
|
|
34
|
+
className: r(e.uiControl, a.textarea, "scrollable", c),
|
|
35
|
+
onChange: (e) => {
|
|
36
|
+
f?.(e.target.value), p && m && m();
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { o as Textarea };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/textarea/Textarea.module.scss","../../src/textarea/Textarea.tsx"],"sourcesContent":[".textarea {\n\twidth: 100%;\n\tmin-height: 6em;\n\tresize: vertical;\n\tpadding: var(--space-sm);\n\tdisplay: block;\n}\n","import { TextareaHTMLAttributes } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputUI, useInputFieldIds } from \"../input\";\nimport { UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Textarea.module.scss\";\n\nexport interface TextareaProps\n\textends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"children\" | \"onChange\" | \"size\" | \"value\">, UiBaseProps<string> {\n\terror?: string;\n\tonClearError?: () => void;\n}\n\n/**\n * Многострочное текстовое поле для ввода свободного текста. Поддерживает подпись, описание, ошибки и единый визуальный стиль формы.\n */\nexport function Textarea({\n\tlabel,\n\tdescription,\n\tclassName,\n\tdisabled,\n\tsize,\n\tvalue,\n\tonChange,\n\terror,\n\tonClearError,\n\tid: externalId,\n\t...props\n}: TextareaProps) {\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid: externalId,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tsize={size}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t<textarea\n\t\t\t\t{...props}\n\t\t\t\tid={controlId}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tvalue={value}\n\t\t\t\taria-invalid={!!error || undefined}\n\t\t\t\taria-labelledby={labelId}\n\t\t\t\taria-describedby={describedBy}\n\t\t\t\tdata-invalid={error ? \"\" : undefined}\n\t\t\t\tclassName={cn(uiStyles.uiControl, styles.textarea, \"scrollable\", className)}\n\t\t\t\tonChange={(event) => {\n\t\t\t\t\tonChange?.(event.target.value);\n\t\t\t\t\tif (error && onClearError) {\n\t\t\t\t\t\tonClearError();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t</InputUI>\n\t);\n}\n"],"mappings":";;;;;;;ACmBA,SAAgB,EAAS,EACxB,UACA,gBACA,cACA,aACA,SACA,UACA,aACA,UACA,iBACA,IAAI,GACJ,GAAG,KACc;CACjB,IAAM,EAAE,cAAW,YAAS,kBAAe,YAAS,mBAAgB,EAAiB;EACpF,IAAI;EACJ,UAAU,KAAiC;EAC3C,gBAAgB,CAAC,CAAC;EAClB,UAAU,CAAC,CAAC;CACb,CAAC;CAED,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACJ;EACC;EACI;EACF;EACM;EACN;YACT,kBAAC,YAAD;GACC,GAAI;GACJ,IAAI;GACM;GACH;GACP,gBAAc,CAAC,CAAC,KAAS,KAAA;GACzB,mBAAiB;GACjB,oBAAkB;GAClB,gBAAc,IAAQ,KAAK,KAAA;GAC3B,WAAW,EAAG,EAAS,WAAW,EAAO,UAAU,cAAc,CAAS;GAC1E,WAAW,MAAU;IAEpB,AADA,IAAW,EAAM,OAAO,KAAK,GACzB,KAAS,KACZ,EAAa;GAEf;EACA,CAAA;CACO,CAAA;AAEX"}
|