@ryuzaki13/react-foundation-ui 2.0.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/COLOR_TOKENS_MIGRATION.md +224 -0
- package/README.md +14 -18
- package/dist/advanced-search/index.js +8 -8
- package/dist/badge/index.js +1 -1
- package/dist/barcode-scanner/index.js +2 -2
- package/dist/base-table/index.js +1 -1
- package/dist/button/index.js +1 -1
- package/dist/check-box/index.js +1 -1
- package/dist/chunks/{CalendarView-Bhaov_XE.js → CalendarView-Dm55k0bN.js} +2 -2
- package/dist/chunks/CalendarView-Dm55k0bN.js.map +1 -0
- package/dist/chunks/ImageViewerRuntime-HGBWp9NM.js.map +1 -1
- package/dist/chunks/{TextEditorLexicalClient-CSXZQOYo.js → TextEditorLexicalClient-D46Zed55.js} +6 -6
- package/dist/chunks/TextEditorLexicalClient-D46Zed55.js.map +1 -0
- package/dist/chunks/{badge-DUI2ET6q.js → badge-6mXO9BWP.js} +2 -2
- package/dist/chunks/badge-6mXO9BWP.js.map +1 -0
- package/dist/chunks/{base-table-BqW1n7tv.js → base-table-BWvKfI2W.js} +2 -2
- package/dist/chunks/{base-table-BqW1n7tv.js.map → base-table-BWvKfI2W.js.map} +1 -1
- package/dist/chunks/{button-BaUlN-nt.js → button-DF21yxVp.js} +3 -3
- package/dist/chunks/{button-BaUlN-nt.js.map → button-DF21yxVp.js.map} +1 -1
- package/dist/chunks/{check-box-CC8CDnSR.js → check-box-CZyhzmR0.js} +3 -3
- package/dist/chunks/{check-box-CC8CDnSR.js.map → check-box-CZyhzmR0.js.map} +1 -1
- package/dist/chunks/{context-menu-Dj6MXgv6.js → context-menu-DgvXGCuI.js} +3 -3
- package/dist/chunks/context-menu-DgvXGCuI.js.map +1 -0
- package/dist/chunks/{date-input-DkLfO3Ng.js → date-input-BwLOiGXp.js} +5 -5
- package/dist/chunks/{date-input-DkLfO3Ng.js.map → date-input-BwLOiGXp.js.map} +1 -1
- package/dist/chunks/{input-D1jOxm0t.js → input-DSPKgiCK.js} +2 -2
- package/dist/chunks/input-DSPKgiCK.js.map +1 -0
- package/dist/chunks/{input-files-CDGpJaUm.js → input-files-tIS17-zX.js} +3 -3
- package/dist/chunks/input-files-tIS17-zX.js.map +1 -0
- package/dist/chunks/{input-search-Ci1ubGox.js → input-search-Cat4c7SM.js} +2 -2
- package/dist/chunks/{input-search-Ci1ubGox.js.map → input-search-Cat4c7SM.js.map} +1 -1
- package/dist/chunks/misc-DeGboAt-.js.map +1 -1
- package/dist/chunks/{modal-CbAwLHlM.js → modal-dplfAaER.js} +2 -2
- package/dist/chunks/{modal-CbAwLHlM.js.map → modal-dplfAaER.js.map} +1 -1
- package/dist/chunks/{multi-select-V7SLAduU.js → multi-select-BZ9N6Dal.js} +4 -4
- package/dist/chunks/{multi-select-V7SLAduU.js.map → multi-select-BZ9N6Dal.js.map} +1 -1
- package/dist/chunks/{picker-DZ4-1BvK.js → picker-lvm82d0A.js} +3 -3
- package/dist/chunks/picker-lvm82d0A.js.map +1 -0
- package/dist/chunks/popover-Bne-Ljbs.js.map +1 -1
- package/dist/chunks/{radio-group-DhpP7JSJ.js → radio-group-CRk_1ODZ.js} +2 -2
- package/dist/chunks/radio-group-CRk_1ODZ.js.map +1 -0
- package/dist/chunks/{select-B7cWlJxL.js → select-aTGupQan.js} +4 -4
- package/dist/chunks/{select-B7cWlJxL.js.map → select-aTGupQan.js.map} +1 -1
- package/dist/chunks/{table-DMLFUBlb.js → table-DxoSOvQK.js} +2 -2
- package/dist/chunks/table-DxoSOvQK.js.map +1 -0
- package/dist/chunks/{ui.module-BsDio9A3.js → ui.module-oRwY3Zli.js} +2 -1
- package/dist/chunks/ui.module-oRwY3Zli.js.map +1 -0
- package/dist/chunks/{uiClasses-BVwFzzsr.js → uiClasses-CQj47jkF.js} +11 -2
- package/dist/chunks/uiClasses-CQj47jkF.js.map +1 -0
- package/dist/chunks/wheel-picker-FS58cRsQ.js.map +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/date-input/index.js +2 -2
- package/dist/date-time-input/index.js +3 -3
- package/dist/disclosure/index.js +2 -2
- package/dist/disclosure/index.js.map +1 -1
- package/dist/drop-zone/index.js +1 -1
- package/dist/drop-zone/index.js.map +1 -1
- package/dist/errors/index.js +4 -4
- package/dist/errors/index.js.map +1 -1
- package/dist/expandable-action-panel/index.js +1 -1
- package/dist/image/index.js +5 -5
- package/dist/image/index.js.map +1 -1
- package/dist/input/index.js +1 -1
- package/dist/input-date-time/index.js +2 -2
- package/dist/input-file/index.js +2 -2
- package/dist/input-files/index.js +1 -1
- package/dist/input-image/index.js +2 -2
- package/dist/input-search/index.js +1 -1
- package/dist/layout-picker/index.js +1 -1
- package/dist/layout-picker/index.js.map +1 -1
- package/dist/listbox/index.js +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/multi-select/index.js +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/notifications/index.js.map +1 -1
- package/dist/option/index.js +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/preset-range-date-input/index.js +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/radio-button/index.js +2 -2
- package/dist/radio-group/index.js +1 -1
- package/dist/select/index.js +1 -1
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/index.js +3 -3
- package/dist/slider/index.js.map +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/status-indicator/StatusIndicator.d.ts +14 -0
- package/dist/status-indicator/StatusIndicator.d.ts.map +1 -0
- package/dist/status-indicator/index.d.ts +2 -0
- package/dist/status-indicator/index.d.ts.map +1 -0
- package/dist/status-indicator/index.js +40 -0
- package/dist/status-indicator/index.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/switch/index.js +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tabs/index.js +2 -2
- package/dist/tabs/index.js.map +1 -1
- package/dist/tag-input/index.js +2 -2
- package/dist/tag-input/index.js.map +1 -1
- package/dist/text-editor/index.js +1 -1
- package/dist/textarea/index.js +2 -2
- package/dist/toggle/index.js +1 -1
- package/dist/toggle/index.js.map +1 -1
- package/dist/tree-select/index.js +3 -3
- package/dist/tree-select/index.js.map +1 -1
- package/dist/tree-table/index.js +1 -1
- package/dist/tree-table/index.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/uiClasses.d.ts.map +1 -1
- package/package.json +6 -1
- package/src/styles/_border.scss +2 -2
- package/src/styles/_color.scss +8 -8
- package/src/styles/_components.scss +2 -2
- package/src/styles/_normalize.scss +4 -4
- package/src/styles/config/_index.scss +95 -182
- package/src/styles/mixins/_controls.scss +43 -26
- package/src/styles/mixins/_mixin.scss +0 -187
- package/src/styles/mixins/controls.test.ts +28 -6
- package/src/styles/themes/_interactive-surface.scss +12 -12
- package/src/styles/themes/_theme.scss +21 -157
- package/src/styles/themes/theme.test.ts +66 -48
- package/storybook-static/assets/{Badge-DTV2OL5k.js → Badge-S6BbyfeX.js} +8 -2
- package/storybook-static/assets/{Badge.stories-D4zH_nK5.js → Badge.stories-mio0RhpX.js} +7 -1
- package/storybook-static/assets/{BadgeList-CD5894x5.css → BadgeList-DbjeNuw0.css} +1 -1
- package/storybook-static/assets/{BadgeList-CnmQ4zmg.js → BadgeList-rtyargPY.js} +2 -2
- package/storybook-static/assets/{BarcodeScannerDialog.stories-Cm7ouwg8.js → BarcodeScannerDialog.stories-DRdXaVuW.js} +1 -1
- package/storybook-static/assets/{Button-6JuiM3Sj.js → Button-CNH5M6QU.js} +12 -2
- package/storybook-static/assets/{Button-HheQm8vu.js → Button-EVzvXVPh.js} +4 -2
- package/storybook-static/assets/Button.stories-VUvnWRnm.js +106 -0
- package/storybook-static/assets/{CalendarView-CEfB4HLd.js → CalendarView-CfSvCqCr.js} +1 -1
- package/storybook-static/assets/CalendarView-dgpVDRJR.css +1 -0
- package/storybook-static/assets/{CheckBox-CWGCGHUS.js → CheckBox-Bynxp5UW.js} +1 -1
- package/storybook-static/assets/{CheckBox-CzvA4ttT.js → CheckBox-C3n5T66c.js} +2 -2
- package/storybook-static/assets/{CheckBox.stories-D2lA5F8B.js → CheckBox.stories-BoF97wxK.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-RvvVvZ9f.js → Color-6AOWCN3U-D-Jlgqzt.js} +1 -1
- package/storybook-static/assets/{ContextMenu-BJnj7lO4.js → ContextMenu-Dg65Ha7g.js} +1 -1
- package/storybook-static/assets/{ContextMenu-DCpglNe4.js → ContextMenu-DwwW3EyB.js} +1 -1
- package/storybook-static/assets/ContextMenu-yhWq2uJ3.css +1 -0
- package/storybook-static/assets/{ContextMenu.stories-CZabvzR6.js → ContextMenu.stories-D-jRdIZD.js} +1 -1
- package/storybook-static/assets/{CustomOptionButton-B9bzr3ba.js → CustomOptionButton-vfj1vLJM.js} +1 -1
- package/storybook-static/assets/{DateInput-DoMGeEvO.js → DateInput-BpuC_NWD.js} +1 -1
- package/storybook-static/assets/{DateInput-Cud2arem.js → DateInput-DJdh5B2X.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-DFd5wyMy.js → DateInput.stories-C9hB_vFy.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-DfGcFHV8.js → DateRangePresetSelect-CDgQfOdZ.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-C8jA3mur.js → DateRangePresetSelect-DYPoeqC2.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-DtR83uwx.js → DateRangePresetSelect.stories-Bx40H_O0.js} +1 -1
- package/storybook-static/assets/{Detail-CMcVxOrr.js → Detail-DWFfdNJH.js} +1 -1
- package/storybook-static/assets/{Detail.stories-DGT8An8z.js → Detail.stories-C9y_rsbc.js} +1 -1
- package/storybook-static/assets/{Dialog-DBh-yDZW.js → Dialog-D8GPZi6H.js} +1 -1
- package/storybook-static/assets/{Dialog-BPzpu7Iw.js → Dialog-XbR8HVsJ.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-DU3SgOkL.js → Dialog.stories-CoU_PusF.js} +1 -1
- package/storybook-static/assets/{Disclosure-BGsPaAxH.js → Disclosure-DrGfFwQt.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-DpwyYh7T.js → Disclosure.stories-CsR1_XK7.js} +1 -1
- package/storybook-static/assets/DisclosureGroup-D_ldcGgp.css +1 -0
- package/storybook-static/assets/{DisclosureGroup-CJI8B2x_.js → DisclosureGroup-DvB5K7gZ.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-Cf85Uxwt.js → DocsRenderer-JROSPFPF-B7AkTp2I.js} +1 -1
- package/storybook-static/assets/{DropZone-C7HIN5ml.css → DropZone-C4gPTIz0.css} +1 -1
- package/storybook-static/assets/{DropZone-C7qTrvkq.js → DropZone-DZi2WVu9.js} +1 -1
- package/storybook-static/assets/{DropZone-cYl1w3wQ.js → DropZone-DesGY4BW.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-o02bE6DI.js → DropZone.stories-KVDb6pHQ.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-DqqPU9RU.js → DropdownMenu-CRoQARS5.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-B_pjHQ5m.js → ExpandableActionPanel-CWKJIcbQ.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-C7dJ5dht.js → ExpandableActionPanel.stories-D-MYdCJ4.js} +1 -1
- package/storybook-static/assets/{Flex-CIHkkwFK.js → Flex-CMPSlVVy.js} +1 -1
- package/storybook-static/assets/{Flex.stories-DteEPY0y.js → Flex.stories-DQH0Q5EF.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-yB9tTk9G.js → FloatingPopover-CBWu6Gxj.js} +1 -1
- package/storybook-static/assets/FloatingPopover-Di16BZj-.css +1 -0
- package/storybook-static/assets/{FormattedTableCell-QVYQepjk.js → FormattedTableCell-CIp2ULPe.js} +1 -1
- package/storybook-static/assets/FormattedTableCell-CTIL_ueu.css +1 -0
- package/storybook-static/assets/{Grid-BUVtGaZY.js → Grid-BlQE5E_9.js} +1 -1
- package/storybook-static/assets/{Grid.stories-CWGqCVB2.js → Grid.stories-CwUCPClP.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-D8l7iHQA.js → ImageCropper.stories-DjaRavSL.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-BcPmp9P9.js → ImageRenderer-JGxgpvv2.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-CcLUz8Ml.js → ImageRenderer.stories-DwH6FgEc.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-BwvjVmuF.js → ImageView.stories-DgYPiNil.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-BjT782dr.js → ImageViewer.stories-_y7d3coa.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-DnQ-rQ_M.js → ImageViewerRuntime-CA6JhQ31.js} +1 -1
- package/storybook-static/assets/ImageViewerRuntime-MxAd4mC-.css +1 -0
- package/storybook-static/assets/{Input-DebpyMJg.js → Input-95LKm7aK.js} +1 -1
- package/storybook-static/assets/{Input-CmEkIaR0.js → Input-CET6HfZH.js} +1 -1
- package/storybook-static/assets/{Input-CYgnggvb.css → Input-CIA3PkB4.css} +1 -1
- package/storybook-static/assets/{Input.stories-y2LCVkT2.js → Input.stories-BDTI2nIV.js} +1 -1
- package/storybook-static/assets/{InputDateTime-B5oKuCea.js → InputDateTime-DsRJZVCO.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-Cwi0acf9.js → InputDateTime.stories-Dah3F9Fq.js} +1 -1
- package/storybook-static/assets/{InputFile-B2dVbDrE.js → InputFile-CF3DRyTX.js} +1 -1
- package/storybook-static/assets/{InputFile-DbRU7crz.js → InputFile-_65sKWXa.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-DrXG5hWA.js → InputFile.stories-B1PFNFPf.js} +1 -1
- package/storybook-static/assets/{InputFiles-DEBKMzlt.js → InputFiles-CUYGDig8.js} +1 -1
- package/storybook-static/assets/{InputFiles-CsgKJXOD.js → InputFiles-RV6K6GmT.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-EZDcefG0.js → InputFiles.stories-ZCzYnboY.js} +1 -1
- package/storybook-static/assets/{InputFilesList-ByK52qUe.css → InputFilesList-BbwB0oHE.css} +1 -1
- package/storybook-static/assets/{InputFilesList-GjMJ14Ln.js → InputFilesList-Co__UO8B.js} +1 -1
- package/storybook-static/assets/{InputImage-qjJ7xrKX.js → InputImage-900lIdui.js} +1 -1
- package/storybook-static/assets/{InputImage-CFFK9MbG.js → InputImage-De56Jwx9.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-B32AtBda.js → InputImage.stories-B_R_kcCD.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-DustBT4l.js → InteractiveComponents-DGTx8enm.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-J-7t7y-v.js → InteractiveComponents.stories-CDZsFUga.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-DwNtjoeb.js → LayoutPicker-BMO8qfbL.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-DlzXd6kS.js → LayoutPicker-CllhDO8J.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-BY4-fUQa.css → LayoutPicker-DaPDA0_s.css} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-2bG0TvXm.js → LayoutPicker.stories-F7K4tSxT.js} +1 -1
- package/storybook-static/assets/{Listbox-BAhrUu_I.js → Listbox-0kjmvCe-.js} +1 -1
- package/storybook-static/assets/{Listbox-C9qCMY31.js → Listbox-D_2t3NpM.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-BfakOrPT.js → Listbox.stories-Cp1Eq7Bz.js} +1 -1
- package/storybook-static/assets/{Modal-wGyoEzau.js → Modal-vdSwQ6xw.js} +1 -1
- package/storybook-static/assets/{Modal-D5znEvBs.js → Modal-zf0JQ124.js} +1 -1
- package/storybook-static/assets/{Modal.stories-DotZ88Ut.js → Modal.stories-Cz47rY2B.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-DXPaYU4j.js → ModalManagerProvider-C_zd0fqC.js} +1 -1
- package/storybook-static/assets/{MultiSelect-BxKmL7sF.js → MultiSelect-Bl3q6kCP.js} +1 -1
- package/storybook-static/assets/{MultiSelect-DN1NhXH9.js → MultiSelect-DE13Ak4N.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-Cdrx9hhT.js → MultiSelect.stories-DG6LGTC9.js} +1 -1
- package/storybook-static/assets/{NoData-mAjM6Vuy.js → NoData-B4AGZs5Q.js} +1 -1
- package/storybook-static/assets/NotificationsHost-BIyd1XQ0.css +1 -0
- package/storybook-static/assets/{NotificationsHost-gBWuk9v-.js → NotificationsHost-CFD2_BpZ.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-DONKtSKb.js → NotificationsHost.stories-CiSu7Vly.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-Daq3ksSA.js → ODataMultiSelect-PcZYhXlN.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-De0WwTKp.js → ODataMultiSelect.stories-xodpVftn.js} +1 -1
- package/storybook-static/assets/{ODataSelect-BUO-vyqK.js → ODataSelect-BuuZhINP.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-CJ2RCZGP.js → ODataSelect.stories-nr7GqOTz.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-Ctyo-uib.js → ODataTreeMultiSelect-BRNITq-6.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-BX4wjGkG.js → ODataTreeMultiSelect.stories-Baxtdxte.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-BZzwG_Ve.js → ODataTreeSelect-BKcyKJr8.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-B0jQNyMj.js → ODataTreeSelect.stories-n6LATF6z.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-BL3gxJh1.js → OneStepScroller-DXykOSPw.js} +1 -1
- package/storybook-static/assets/{Option-JgQ-duDq.js → Option-Cr3vYgCL.js} +1 -1
- package/storybook-static/assets/Option-DD2t6DLq.css +1 -0
- package/storybook-static/assets/{OptionButton-CATaxLh0.js → OptionButton-v-MO3VgJ.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-BIsC_Ew6.js → PeriodSelect-BQ9_EM63.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-4LpRQDP5.js → PeriodSelect-DQXZWIBX.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-D5fKpF2P.js → PeriodSelect.stories-S2ndHVEQ.js} +1 -1
- package/storybook-static/assets/{PickerField-BkqWIWZw.js → PickerField-BeAXSQmp.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-BVrXKKJ9.js → PickerTriggerActions-D6BjZkrN.js} +1 -1
- package/storybook-static/assets/{Popover-BTrxASXR.js → Popover-BAp50b4b.js} +1 -1
- package/storybook-static/assets/{Popover-DZlEnjse.js → Popover-CTCfa72M.js} +1 -1
- package/storybook-static/assets/{Popover.stories-BdyB4Q7K.js → Popover.stories-CZIBppwE.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-DUES355B.js → PresetRangeDateInput-BLAAcq8Y.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-Cp66aUGT.js → PresetRangeDateInput-EIlQEGr0.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-D4jLrF6o.js → PresetRangeDateInput.stories-CShR-Eub.js} +1 -1
- package/storybook-static/assets/{PresetSelect-CmRrk7FZ.js → PresetSelect-BcD8EsSb.js} +1 -1
- package/storybook-static/assets/{README-CU_f1CMq.js → README-5i5ZfRuh.js} +1 -1
- package/storybook-static/assets/{README-B7BK3gkk.js → README-6iRo8dKK.js} +1 -1
- package/storybook-static/assets/{README-BCNsNQNj.js → README-6vpPfmdC.js} +1 -1
- package/storybook-static/assets/{README-DNUrBjgg.js → README-B2J2ATaW.js} +1 -1
- package/storybook-static/assets/{README-BUknkyU6.js → README-B8qFKwiq.js} +1 -1
- package/storybook-static/assets/{README-BmKEL3jy.js → README-BBS739kV.js} +1 -1
- package/storybook-static/assets/{README-B00ewV67.js → README-BDMWo0qS.js} +1 -1
- package/storybook-static/assets/{README-DgudM-2t.js → README-BIpHKVKI.js} +1 -1
- package/storybook-static/assets/{README-CmK6hELS.js → README-BQHgBs-J.js} +1 -1
- package/storybook-static/assets/{README-D7jyja4l.js → README-BUlc8wGR.js} +1 -1
- package/storybook-static/assets/{README-CHw6-PVx.js → README-BW1oyMu_.js} +1 -1
- package/storybook-static/assets/{README-C28SDMRx.js → README-BdBeQtXQ.js} +1 -1
- package/storybook-static/assets/{README-LqD1V5ru.js → README-BkX7iDLJ.js} +1 -1
- package/storybook-static/assets/{README-D-TgbUSA.js → README-BnTk0DyO.js} +1 -1
- package/storybook-static/assets/{README-CnRKlFuJ.js → README-Bwv6SU5o.js} +1 -1
- package/storybook-static/assets/{README-Ds6OSOC0.js → README-CLiuh-fF.js} +1 -1
- package/storybook-static/assets/{README-BGA2Ek3H.js → README-CLv4OeWw.js} +1 -1
- package/storybook-static/assets/{README-BrJaVHU_.js → README-CMBk39py.js} +1 -1
- package/storybook-static/assets/{README-DPuLgYuK.js → README-CQUlYRLa.js} +1 -1
- package/storybook-static/assets/{README-BhRGrTHx.js → README-CVX-4uJ_.js} +1 -1
- package/storybook-static/assets/{README-Bq8FLza7.js → README-CWeupyTO.js} +1 -1
- package/storybook-static/assets/{README-E5QziGK8.js → README-CZJvbdGv.js} +1 -1
- package/storybook-static/assets/{README-B4CJVRtX.js → README-CaECsCl2.js} +1 -1
- package/storybook-static/assets/{README-52AHLz83.js → README-Cntj7my4.js} +1 -1
- package/storybook-static/assets/{README-D6pLFtqL.js → README-CuGPdc3G.js} +1 -1
- package/storybook-static/assets/{README-D8YPmvQw.js → README-D7pP2Sxx.js} +1 -1
- package/storybook-static/assets/{README-Cs-dnvtW.js → README-D9Og-Y7l.js} +1 -1
- package/storybook-static/assets/{README-Duppk6f6.js → README-DDtdZa9N.js} +1 -1
- package/storybook-static/assets/{README-B20cH-BV.js → README-DLQvRDdd.js} +1 -1
- package/storybook-static/assets/{README-BfGp1q9n.js → README-DQpji8GH.js} +1 -1
- package/storybook-static/assets/{README-Bh_zrJ_j.js → README-DUfqdm0p.js} +1 -1
- package/storybook-static/assets/{README-55mkSTZb.js → README-Dd3MCsf2.js} +1 -1
- package/storybook-static/assets/{README-CPYFZwZE.js → README-DehKWpx2.js} +1 -1
- package/storybook-static/assets/{README-lgRhlVsq.js → README-DgFtCu8B.js} +1 -1
- package/storybook-static/assets/{README-C8Xo5jEX.js → README-DhZbllv1.js} +1 -1
- package/storybook-static/assets/{README-DvZ8ZhlH.js → README-Dj9EXnja.js} +1 -1
- package/storybook-static/assets/{README-CzKPWsNs.js → README-DkCWpyid.js} +1 -1
- package/storybook-static/assets/{README-C_SQjJtW.js → README-Dn2AIjeS.js} +1 -1
- package/storybook-static/assets/{README-DG5knhc9.js → README-DoZCaKAx.js} +1 -1
- package/storybook-static/assets/{README-DK-Bw1l1.js → README-DsLoV4ax.js} +1 -1
- package/storybook-static/assets/{README-BlWMNqE5.js → README-DwvyizD7.js} +1 -1
- package/storybook-static/assets/{README--fYBobJK.js → README-DwyqrR4I.js} +1 -1
- package/storybook-static/assets/{README-DyLt9P77.js → README-N-Gy0UYM.js} +1 -1
- package/storybook-static/assets/{README-DzVNZdfo.js → README-Wd5wEw-J.js} +1 -1
- package/storybook-static/assets/{README-CoD7FHU_.js → README-Y4OGhQbo.js} +1 -1
- package/storybook-static/assets/{README-EIhMMZ0t.js → README-ZZiicHm9.js} +1 -1
- package/storybook-static/assets/{README-BsUvf6lk.js → README-bAu0Uk5O.js} +1 -1
- package/storybook-static/assets/{README-B9foBRQ-.js → README-cuvbXAuG.js} +1 -1
- package/storybook-static/assets/{README-DsfBjN9N.js → README-jHuA2mq2.js} +1 -1
- package/storybook-static/assets/{README-C_WyDQDz.js → README-pvA4fK1E.js} +1 -1
- package/storybook-static/assets/{README-4AGJG--w.js → README-sEbspuLw.js} +1 -1
- package/storybook-static/assets/{README-DK-US_zR.js → README-v3TOC_aE.js} +1 -1
- package/storybook-static/assets/{README-BoGNjKgW.js → README-wizqrRgs.js} +1 -1
- package/storybook-static/assets/{RadioButton-CmcExRQs.js → RadioButton-BUPEsqwH.js} +1 -1
- package/storybook-static/assets/{RadioButton-BLHXpf6L.js → RadioButton-Ca0kZdMV.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-P1SEMdJ1.js → RadioButton.stories-aBnizEak.js} +1 -1
- package/storybook-static/assets/{RadioGroup-DkCSA8me.js → RadioGroup-34jH28Sk.js} +1 -1
- package/storybook-static/assets/{RadioGroup-BU95Hbl0.css → RadioGroup-DHnDIEgi.css} +1 -1
- package/storybook-static/assets/{RadioGroup-BBv2Na1n.js → RadioGroup-dq6CbxB6.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-5-uFHs1b.js → RadioGroup.stories--lDrmS8V.js} +1 -1
- package/storybook-static/assets/{Scrollable-XhGz9dwJ.js → Scrollable-BJRiyp9q.js} +1 -1
- package/storybook-static/assets/{Select-BEMtNq5M.js → Select-CwNDJSmq.js} +1 -1
- package/storybook-static/assets/{Select-CyA-PHrU.js → Select-DmwCwS8a.js} +1 -1
- package/storybook-static/assets/{Select.stories-B_GbDG58.js → Select.stories-BXj7A2gM.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-CJ74e_Vc.js → SerializableSelect-IAtBSK9P.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-PUXPFPFx.js → SerializableSelect.stories-D8F5WGtk.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-wqb75Yrz.js → SingleDateTimeInput-CbyyGlmi.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-BlpQ8t9f.js → SingleDateTimeInput-oN2P3eYx.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-CdogRh5M.js → SingleDateTimeInput.stories-BU_wyTmo.js} +1 -1
- package/storybook-static/assets/{Slider-CZa1f0vP.js → Slider-CDJhhSWj.js} +1 -1
- package/storybook-static/assets/{Slider-r8Be9wJ4.js → Slider-ClZTrtRk.js} +1 -1
- package/storybook-static/assets/Slider-DxdPx1Pb.css +1 -0
- package/storybook-static/assets/{Slider.stories-BUwg0h15.js → Slider.stories-PfQf9es7.js} +1 -1
- package/storybook-static/assets/{SliderInput-BWFbcA5R.js → SliderInput-BxFUjetO.js} +1 -1
- package/storybook-static/assets/{SliderInput-BaZBNhhF.js → SliderInput-C7TRql6-.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-Cbxo0ku_.js → SliderInput.stories-yX8DU5pZ.js} +1 -1
- package/storybook-static/assets/{Sortable-JfLmQUdm.js → Sortable-D8cVwatT.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-Cz9xM3Tw.js → Sortable.stories-BI6_E5k7.js} +1 -1
- package/storybook-static/assets/{Splitter-BkQcPRYJ.js → Splitter-B958Wj4G.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-zQf1fK4D.js → Splitter.stories-Dl2YOk9H.js} +1 -1
- package/storybook-static/assets/{StateSelect-DxH1oWnK.js → StateSelect-Cs9-kDRC.js} +1 -1
- package/storybook-static/assets/{StateSelect-TLRMUmko.js → StateSelect-DbV1mGhQ.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-CReLNG_6.js → StateSelect.stories-D6atguQ6.js} +1 -1
- package/storybook-static/assets/StatusIndicator--Y-QdjQI.js +37 -0
- package/storybook-static/assets/StatusIndicator-CpCGmnO7.css +1 -0
- package/storybook-static/assets/StatusIndicator.stories-DxkpP6C1.js +31 -0
- package/storybook-static/assets/{StringToggle.stories-BYqTdRbD.js → StringToggle.stories-C3mdK5Wx.js} +1 -1
- package/storybook-static/assets/{Switch-ChsLVAse.js → Switch-BTFpnXV9.js} +1 -1
- package/storybook-static/assets/{Switch-DE9rqHmp.js → Switch-OPzpWcJw.js} +1 -1
- package/storybook-static/assets/{Switch.stories-BaVgLi3_.js → Switch.stories-C0rVHcRq.js} +1 -1
- package/storybook-static/assets/{Table-qoMvYV1q.js → Table-bWKgagHH.js} +1 -1
- package/storybook-static/assets/Table-j_3ID7Xq.css +1 -0
- package/storybook-static/assets/{Table.stories-BdLScKfS.js → Table.stories-DOuV4G3p.js} +1 -1
- package/storybook-static/assets/{Tabs-CuALrdgt.js → Tabs-ae4daDEA.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-BrLtxZ_a.js → Tabs.stories-Br4RCZKR.js} +1 -1
- package/storybook-static/assets/{TabsBox-D-bkJX9j.css → TabsBox-B3REnb6D.css} +1 -1
- package/storybook-static/assets/{TabsBox-DzfWhIHb.js → TabsBox-X_7yoTw3.js} +1 -1
- package/storybook-static/assets/{TagInput-Tyn5Jgus.js → TagInput-B2w5W05Z.js} +1 -1
- package/storybook-static/assets/{TagInput-ChmW4s9O.css → TagInput-RJbbcfoR.css} +1 -1
- package/storybook-static/assets/{TagInput.stories-Bbs3olyB.js → TagInput.stories-Db9DaNpW.js} +1 -1
- package/storybook-static/assets/{Text-B4GUKigV.js → Text-BT0cn3Bk.js} +1 -1
- package/storybook-static/assets/{Textarea-CNu-scX8.js → Textarea-B9MNOgmF.js} +1 -1
- package/storybook-static/assets/{Textarea-D3iwzB-S.js → Textarea-C_6iOQ3k.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-CE2gt74x.js → Textarea.stories-Ctjb3d47.js} +1 -1
- package/storybook-static/assets/{TimePanel-BESMLCVl.js → TimePanel-C5AucKln.js} +1 -1
- package/storybook-static/assets/{TimePanel-Bh98qsCo.css → TimePanel-D9_hb7w4.css} +1 -1
- package/storybook-static/assets/{TimePanel.stories-BYhTpaoS.js → TimePanel.stories-CiQAJcB_.js} +1 -1
- package/storybook-static/assets/Toggle-ClE8Zovo.css +1 -0
- package/storybook-static/assets/{Toggle-0-SlfDXC.js → Toggle-DxA-Q1KZ.js} +1 -1
- package/storybook-static/assets/{Toggle-BexBc-UO.js → Toggle-q8hxq-LP.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-CG4rBYOZ.js → Toggle.stories-C6Jf_KTc.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-Cne9qXjN.js → TreeMultiSelect-BKF7COzn.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-QId1DJUn.js → TreeMultiSelect-BfduPrgB.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-D6ElJY8Y.js → TreeMultiSelect.stories-C-uztFex.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-B6DED6Hz.css → TreePickerBase-CmFF9pWE.css} +1 -1
- package/storybook-static/assets/{TreePickerBase-Dq3HMrua.js → TreePickerBase-SVDNn9QY.js} +1 -1
- package/storybook-static/assets/{TreeSelect-q4gdFfBH.js → TreeSelect-Bu9HRTvX.js} +1 -1
- package/storybook-static/assets/{TreeSelect-BJKtAh4x.js → TreeSelect-ClJGLBA8.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-DfCxZuVy.js → TreeSelect.stories-C0TeLbpZ.js} +1 -1
- package/storybook-static/assets/{TreeTable-5fAWCnhQ.js → TreeTable-BXia_Imm.js} +1 -1
- package/storybook-static/assets/TreeTable-BvB3kj4h.css +1 -0
- package/storybook-static/assets/{TreeTable.stories-B1fSfYHg.js → TreeTable.stories-Cwo8yjNI.js} +1 -1
- package/storybook-static/assets/{blocks-B_u8Yt1Z.js → blocks-BmNU_R5E.js} +3 -3
- package/storybook-static/assets/{check-r01NGn4c.js → check-HCQdrq3c.js} +1 -1
- package/storybook-static/assets/{chevron-down-DxMviYn3.js → chevron-down-DHrZ_6vS.js} +1 -1
- package/storybook-static/assets/{chevron-left-mKnQH53V.js → chevron-left-CaIBhYcr.js} +1 -1
- package/storybook-static/assets/{chevron-right-CeJNqWTb.js → chevron-right-BpmEWiwv.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-DorleiwX.js → chunk-W22LQPXL-DSMfJqhe.js} +1 -1
- package/storybook-static/assets/{circle-alert-H7OZyDmF.js → circle-alert-DuupFIr9.js} +1 -1
- package/storybook-static/assets/{circle-check-my8Ev6ar.js → circle-check-LYBfAR-E.js} +1 -1
- package/storybook-static/assets/{components-CDMhSXUo.js → components-CBnjb8pL.js} +3 -3
- package/storybook-static/assets/{contextMenu-fMt3iyZv.js → contextMenu-BZ-iSJtD.js} +1 -1
- package/storybook-static/assets/{download-BCwj5k1S.js → download-CsLGqkEl.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-Cy32mouo.js → floating-ui.react-VNDOEKPt.js} +1 -1
- package/storybook-static/assets/{foundationApi-BtZYXGDY.js → foundationApi-BMy7_pDS.js} +1 -1
- package/storybook-static/assets/{foundationLib-CHOUG7NK.js → foundationLib-o95OqhXl.js} +1 -1
- package/storybook-static/assets/{hooks-CEvNG7IN.js → hooks-DMFMD13m.js} +1 -1
- package/storybook-static/assets/iframe-BT_jngkf.css +1 -0
- package/storybook-static/assets/{iframe-DWvPB8Sk.js → iframe-BaXmcmyl.js} +4 -4
- package/storybook-static/assets/iframe-D5qmKm51.js +1 -0
- package/storybook-static/assets/{info-CA6M6l6h.js → info-ZuWgcD4m.js} +1 -1
- package/storybook-static/assets/{odata-CHl7sWAn.js → odata-Brls3R5b.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-BvjpoqqT.js → odataStoryFixtures-BmQo4rAJ.js} +2 -2
- package/storybook-static/assets/{react-B37E__uI.js → react-BnjGKE7V.js} +1 -1
- package/storybook-static/assets/{refresh-cw-Bt4yd-lG.js → refresh-cw-vj55o5c3.js} +1 -1
- package/storybook-static/assets/{settings-2-B7Uyk4j8.js → settings-2-PPom9XND.js} +1 -1
- package/storybook-static/assets/{sortable-B8UMQCaH.js → sortable-CztGPJOI.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-QGUDFNNj.js → syntaxhighlighter-QEQV7K2Y-uXmnHQP7.js} +1 -1
- package/storybook-static/assets/{trash-2-Bhjh1o0B.js → trash-2-DEnKoJjZ.js} +1 -1
- package/storybook-static/assets/{triangle-alert-D1c-iB00.js → triangle-alert-D-oyPLJL.js} +1 -1
- package/storybook-static/assets/ui-DSS1yTEO.css +1 -0
- package/storybook-static/assets/ui.module-SH8ehXul.js +1 -0
- package/storybook-static/assets/uiClasses-e9OQfdw2.js +1 -0
- package/storybook-static/assets/{useODataSelectBase-CYnvX8wM.js → useODataSelectBase-DxsvigTC.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-C2risfo7.js → useODataTreeData-Dzxb75-h.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-CjSFlUmn.js → usePickerQuery-SCKPS_0f.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-Bqo5fhOa.js → usePickerTriggerController-DMA4hla_.js} +1 -1
- package/storybook-static/assets/{x-B3GmOByS.js → x-C5QCK6Ts.js} +1 -1
- package/storybook-static/iframe.html +3 -3
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/dist/chunks/CalendarView-Bhaov_XE.js.map +0 -1
- package/dist/chunks/TextEditorLexicalClient-CSXZQOYo.js.map +0 -1
- package/dist/chunks/badge-DUI2ET6q.js.map +0 -1
- package/dist/chunks/context-menu-Dj6MXgv6.js.map +0 -1
- package/dist/chunks/input-D1jOxm0t.js.map +0 -1
- package/dist/chunks/input-files-CDGpJaUm.js.map +0 -1
- package/dist/chunks/picker-DZ4-1BvK.js.map +0 -1
- package/dist/chunks/radio-group-DhpP7JSJ.js.map +0 -1
- package/dist/chunks/table-DMLFUBlb.js.map +0 -1
- package/dist/chunks/ui.module-BsDio9A3.js.map +0 -1
- package/dist/chunks/uiClasses-BVwFzzsr.js.map +0 -1
- package/storybook-static/assets/Button.stories-B3Q5B_2w.js +0 -93
- package/storybook-static/assets/CalendarView-DKvrkS40.css +0 -1
- package/storybook-static/assets/ContextMenu-CFPrlO2u.css +0 -1
- package/storybook-static/assets/DisclosureGroup-CVFMwx22.css +0 -1
- package/storybook-static/assets/FloatingPopover-jwILx9b0.css +0 -1
- package/storybook-static/assets/FormattedTableCell-AZc2IHfK.css +0 -1
- package/storybook-static/assets/ImageViewerRuntime-CRmlrtpL.css +0 -1
- package/storybook-static/assets/NotificationsHost-D5Pvn4eu.css +0 -1
- package/storybook-static/assets/Option-DXh7BISz.css +0 -1
- package/storybook-static/assets/Slider-CK-W2ZTO.css +0 -1
- package/storybook-static/assets/Table-BGvRn9y0.css +0 -1
- package/storybook-static/assets/Toggle-fKG2dFY0.css +0 -1
- package/storybook-static/assets/TreeTable--ZoksUiw.css +0 -1
- package/storybook-static/assets/iframe-CDVsimPQ.js +0 -1
- package/storybook-static/assets/iframe-IhWQT6NX.css +0 -1
- package/storybook-static/assets/ui-C3BskXT9.css +0 -1
- package/storybook-static/assets/ui.module-31LPbZGK.js +0 -1
- package/storybook-static/assets/uiClasses-Bz6cvlDQ.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/tree-table/TreeTable.module.scss","../../src/tree-table/TreeTable.tsx"],"sourcesContent":[".treeColumnCell {\n\tpadding-inline-start: var(--space-sm);\n}\n\n.selectedIndicatorCell {\n\tbox-shadow: inset 0.1875rem 0 0 var(--content-accent);\n}\n\n.treeCell {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n\tmin-width: 0;\n}\n\n.treeCellContent {\n\tmin-width: 0;\n\tflex: 1 1 auto;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.expanderButton {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex: 0 0 1.5rem;\n\twidth: 1.5rem;\n\theight: 1.5rem;\n\tpadding: 0;\n\tborder: 0;\n\tborder-radius: var(--radius-xs);\n\tbackground: transparent;\n\tcolor: var(--content-0);\n\tcursor: pointer;\n\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground-color: var(--surface-2);\n\t}\n}\n\n.expanderSpacer {\n\tflex: 0 0 1.5rem;\n\twidth: 1.5rem;\n\theight: 1.5rem;\n}\n\n.sentinel {\n\theight: 1px;\n}\n","import { useEffect, useEffectEvent, useMemo, useRef, useState, type ReactNode } from \"react\";\n\nimport { formatPipelineDisplayValue } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport {\n\ttype FoundationTableRow,\n\tfoundationTableFeatures,\n\tresolveTableLength,\n\tTableColumnDef,\n\ttype TableColumnOrderState,\n\ttype TableColumnSizingState,\n\ttype TableColumnVisibilityState,\n\tTableSelectionMode,\n\tuseTableRowSelection\n} from \"@ryuzaki13/react-foundation-lib/table\";\nimport { buildTreeTableRows, type TreeTableFlatHierarchy, type TreeTableRowNode } from \"@ryuzaki13/react-foundation-lib/tree-table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { useTable, type ExpandedState } from \"@tanstack/react-table\";\nimport { ChevronDownIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport {\n\tBaseTable,\n\tbuildBaseTableMergedCellsLayout,\n\tbuildTableFormattingSnapshot,\n\tFormattedTableCell,\n\tgetOrderedVisibleLeafColumns,\n\tshouldUseTableFormatting,\n\tuseTableColumnOrder,\n\tuseTableColumnPinning,\n\tuseTableColumnSizing,\n\tuseTableColumnVisibility,\n\ttype BaseTableCellRenderArgs,\n\ttype BaseTableColumnState,\n\ttype BaseTableProps,\n\ttype TableColumnPinningState\n} from \"../base-table\";\n\nimport styles from \"./TreeTable.module.scss\";\n\nimport type { TableFormulaRowData } from \"@ryuzaki13/react-foundation-lib/formulas\";\n\n/**\n * Внутренний тип строки TreeTable после преобразования в иерархию.\n */\ntype TreeTableRuntimeRow<TData extends object> = TreeTableRowNode<TData>;\n\n/**\n * Пропсы компонента TreeTable.\n *\n * Компонент принимает плоский OData-список и сам строит иерархию,\n * оставляя управление раскрытием и выбором во внутреннем состоянии.\n */\nexport interface TreeTableProps<TData extends object> {\n\t/**\n\t * Необязательный заголовок над таблицей.\n\t */\n\ttitle?: string;\n\t/**\n\t * Признак первичной загрузки.\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Признак фоновой догрузки или обновления данных.\n\t */\n\tisFetching?: boolean;\n\t/**\n\t * Плоский источник строк.\n\t */\n\tdata: readonly TData[] | undefined | null;\n\t/**\n\t * Описание колонок через исходный тип строки.\n\t */\n\tcolumns: readonly TableColumnDef<TData>[];\n\t/**\n\t * Правила восстановления дерева из плоского списка.\n\t */\n\thierarchy: TreeTableFlatHierarchy<TData>;\n\t/**\n\t * Режим выбора строк.\n\t */\n\tselectionMode?: TableSelectionMode;\n\t/**\n\t * Если `true`, при первом появлении данных раскрывает корневой уровень.\n\t */\n\texpandFirstLevel?: boolean;\n\t/**\n\t * Дополнительные строки, которые должны быть раскрыты при первой инициализации.\n\t */\n\tdefaultExpandedRowIds?: readonly string[];\n\t/**\n\t * Идентификатор колонки, в которой нужно рисовать tree-toggle и отступы.\n\t *\n\t * Если не указан, используется первая видимая колонка.\n\t */\n\ttreeColumnId?: string;\n\t/**\n\t * Отступ на один уровень вложенности.\n\t *\n\t * Числовое значение трактуется как `em`.\n\t */\n\tindentSize?: string | number;\n\t/**\n\t * Дополнительный CSS-класс корневого контейнера.\n\t */\n\tclassName?: string;\n\t/**\n\t * Дополнительный CSS-класс тега `table`.\n\t */\n\ttableClassName?: string;\n\t/**\n\t * Внешнее controlled-состояние видимости колонок.\n\t */\n\tcolumnVisibility?: TableColumnVisibilityState;\n\t/**\n\t * Стартовое uncontrolled-состояние видимости колонок.\n\t */\n\tdefaultColumnVisibility?: TableColumnVisibilityState;\n\t/**\n\t * Внешнее controlled-состояние порядка колонок.\n\t */\n\tcolumnOrder?: readonly string[];\n\t/**\n\t * Стартовое uncontrolled-состояние порядка колонок.\n\t */\n\tdefaultColumnOrder?: readonly string[];\n\t/**\n\t * Внешнее controlled-состояние ширин колонок в px.\n\t */\n\tcolumnSizing?: TableColumnSizingState;\n\t/**\n\t * Стартовое uncontrolled-состояние ширин колонок в px.\n\t */\n\tdefaultColumnSizing?: TableColumnSizingState;\n\t/**\n\t * Внешнее controlled-состояние start-pinning для колонок.\n\t */\n\tcolumnPinning?: TableColumnPinningState;\n\t/**\n\t * Стартовое uncontrolled-состояние start-pinning для колонок.\n\t */\n\tdefaultColumnPinning?: TableColumnPinningState;\n\t/**\n\t * Включает изменение ширины колонок через header-handle.\n\t */\n\tenableColumnResizing?: boolean;\n\t/**\n\t * Включает изменение порядка колонок через drag&drop заголовков.\n\t */\n\tenableColumnReordering?: boolean;\n\t/**\n\t * Минимальная ширина колонки при resize в px.\n\t */\n\tcolumnResizeMinWidth?: number;\n\t/**\n\t * Вызывается после изменения видимости колонок.\n\t */\n\tonColumnVisibilityChange?: (state: TableColumnVisibilityState) => void;\n\t/**\n\t * Вызывается после изменения порядка колонок.\n\t */\n\tonColumnOrderChange?: (state: TableColumnOrderState) => void;\n\t/**\n\t * Вызывается после изменения ширины колонок.\n\t */\n\tonColumnSizingChange?: (state: TableColumnSizingState) => void;\n\t/**\n\t * Вызывается после изменения start-pinning state.\n\t */\n\tonColumnPinningChange?: (state: TableColumnPinningState) => void;\n\t/**\n\t * Вызывается при активации строки кликом или клавиатурой.\n\t */\n\tonRowClick?: (row: TData) => void;\n\t/**\n\t * Вызывается после изменения выбранных строк.\n\t */\n\tonRowSelectionChange?: (rows: TData[]) => void;\n\t/**\n\t * Вызывается после изменения раскрытых узлов.\n\t */\n\tonExpandedRowIdsChange?: (rowIds: string[]) => void;\n\t/**\n\t * Вызывается при достижении конца таблицы внутри scroll-контейнера.\n\t */\n\tonReachEnd?: () => void;\n\t/**\n\t * Позволяет запретить выбор отдельных строк.\n\t */\n\tgetRowCanSelect?: (row: TData) => boolean;\n\t/**\n\t * Позволяет добавить CSS-класс для конкретной строки.\n\t */\n\tgetRowClassName?: (row: TData) => string | undefined;\n\t/**\n\t * Контекстное меню заголовка колонки. Получает runtime-строки дерева,\n\t * потому что BaseTable работает уже после сборки flat hierarchy.\n\t */\n\trenderHeaderContextMenu?: BaseTableProps<TreeTableRuntimeRow<TData>>[\"renderHeaderContextMenu\"];\n\t/**\n\t * Точка расширения содержимого ячейки после общего форматирования.\n\t *\n\t * Для tree-column в `defaultContent` передается только содержимое ячейки:\n\t * TreeTable сам добавит expander и отступ после выполнения слота.\n\t */\n\trenderCellContent?: BaseTableProps<TreeTableRuntimeRow<TData>>[\"renderCellContent\"];\n}\n\n/**\n * Преобразует массив идентификаторов в формат состояния раскрытия TanStack.\n */\nfunction toExpandedState(rowIds: readonly string[]): ExpandedState {\n\treturn Object.fromEntries(rowIds.map((rowId) => [rowId, true]));\n}\n\n/**\n * Извлекает из состояния раскрытия только активные идентификаторы.\n */\nfunction extractExpandedRowIds(expanded: ExpandedState): string[] {\n\tif (typeof expanded === \"boolean\") {\n\t\treturn [];\n\t}\n\n\treturn Object.keys(expanded).filter((rowId) => expanded[rowId]);\n}\n\n/**\n * Нормализует исходную строку, убирая зависимость от внутреннего поля `children`.\n */\nfunction resolveOriginalRow<TData extends object>(row: FoundationTableRow<TreeTableRuntimeRow<TData>>, rowById: Map<string, TData>): TData {\n\treturn rowById.get(row.id) ?? (row.original as TData);\n}\n\n/**\n * Рендерит содержимое древовидной ячейки.\n */\nfunction renderTreeCellContent<TData extends object>(\n\targs: BaseTableCellRenderArgs<TreeTableRuntimeRow<TData>>,\n\tcontent: ReactNode,\n\ttreeColumnId: string | undefined,\n\tindentSize: string | number\n): ReactNode {\n\tif (args.cell.column.id !== treeColumnId) {\n\t\treturn content;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={styles.treeCell}\n\t\t\tstyle={{\n\t\t\t\tpaddingInlineStart: `calc(${args.row.depth} * ${resolveTableLength(indentSize) ?? \"0em\"})`\n\t\t\t}}>\n\t\t\t{args.row.getCanExpand() ? (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={styles.expanderButton}\n\t\t\t\t\taria-label={args.row.getIsExpanded() ? \"Свернуть строку\" : \"Развернуть строку\"}\n\t\t\t\t\tdata-tree-table-interactive=\"true\"\n\t\t\t\t\tdata-ui=\"tree-table-expander\"\n\t\t\t\t\tdata-action={args.row.getIsExpanded() ? \"collapse-tree-table-row\" : \"expand-tree-table-row\"}\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\targs.row.toggleExpanded();\n\t\t\t\t\t}}>\n\t\t\t\t\t{args.row.getIsExpanded() ? <ChevronDownIcon size={16} /> : <ChevronRightIcon size={16} />}\n\t\t\t\t</button>\n\t\t\t) : (\n\t\t\t\t<span className={styles.expanderSpacer} aria-hidden=\"true\" />\n\t\t\t)}\n\n\t\t\t<div className={styles.treeCellContent}>{content}</div>\n\t\t</div>\n\t);\n}\n\n/**\n * Древовидная таблица на базе TanStack Table для плоских OData-данных.\n */\nexport function TreeTable<TData extends object>({\n\ttitle,\n\tisLoading,\n\tisFetching,\n\tdata,\n\tcolumns,\n\thierarchy,\n\tselectionMode = \"none\",\n\texpandFirstLevel = false,\n\tdefaultExpandedRowIds,\n\ttreeColumnId,\n\tindentSize = 1,\n\tclassName,\n\ttableClassName,\n\tcolumnVisibility,\n\tdefaultColumnVisibility,\n\tcolumnOrder,\n\tdefaultColumnOrder,\n\tcolumnSizing,\n\tdefaultColumnSizing,\n\tcolumnPinning,\n\tdefaultColumnPinning,\n\tenableColumnResizing = false,\n\tenableColumnReordering = false,\n\tcolumnResizeMinWidth,\n\tonColumnVisibilityChange,\n\tonColumnOrderChange,\n\tonColumnSizingChange,\n\tonColumnPinningChange,\n\tonRowClick,\n\tonRowSelectionChange,\n\tonExpandedRowIdsChange,\n\tonReachEnd,\n\tgetRowCanSelect,\n\tgetRowClassName,\n\trenderHeaderContextMenu,\n\trenderCellContent\n}: TreeTableProps<TData>) {\n\tconst treeData = useMemo(() => buildTreeTableRows(data ?? [], hierarchy), [data, hierarchy]);\n\tconst formattingSnapshot = useMemo(() => buildTableFormattingSnapshot(columns), [columns]);\n\tconst initialExpandedRowIds = useMemo(() => {\n\t\tconst nextExpandedRowIds = new Set(defaultExpandedRowIds ?? []);\n\n\t\tif (expandFirstLevel) {\n\t\t\tfor (const rootRowId of treeData.rootRowIds) {\n\t\t\t\tnextExpandedRowIds.add(rootRowId);\n\t\t\t}\n\t\t}\n\n\t\treturn Array.from(nextExpandedRowIds);\n\t}, [defaultExpandedRowIds, expandFirstLevel, treeData.rootRowIds]);\n\n\tconst [expanded, setExpanded] = useState<ExpandedState>({});\n\tconst hasInitializedExpansionRef = useRef(false);\n\tconst scrollableRef = useRef<HTMLDivElement | null>(null);\n\tconst sentinelRef = useRef<HTMLDivElement | null>(null);\n\n\tconst { rowSelection, activateRowSelection } = useTableRowSelection({\n\t\tavailableRowIds: treeData.allRowIds,\n\t\trowById: treeData.rowById,\n\t\tselectionMode,\n\t\tonRowSelectionChange\n\t});\n\tconst { columnVisibility: resolvedColumnVisibility, onColumnVisibilityChange: handleColumnVisibilityChange } = useTableColumnVisibility(\n\t\t{\n\t\t\tcolumnVisibility,\n\t\t\tdefaultColumnVisibility,\n\t\t\tonColumnVisibilityChange\n\t\t}\n\t);\n\tconst { columnOrder: resolvedColumnOrder, onColumnOrderChange: handleColumnOrderChange } = useTableColumnOrder({\n\t\tcolumnOrder,\n\t\tdefaultColumnOrder,\n\t\tonColumnOrderChange\n\t});\n\tconst { columnSizing: resolvedColumnSizing, onColumnSizingChange: handleColumnSizingChange } = useTableColumnSizing({\n\t\tcolumnSizing,\n\t\tdefaultColumnSizing,\n\t\tcolumnResizeMinWidth,\n\t\tonColumnSizingChange\n\t});\n\tconst { columnPinning: resolvedColumnPinning, onColumnPinningChange: handleColumnPinningChange } = useTableColumnPinning({\n\t\tcolumnPinning,\n\t\tdefaultColumnPinning,\n\t\tonColumnPinningChange\n\t});\n\n\tconst baseTableColumnState = useMemo<BaseTableColumnState>(\n\t\t() => ({\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility\n\t\t}),\n\t\t[resolvedColumnOrder, resolvedColumnPinning, resolvedColumnSizing, resolvedColumnVisibility]\n\t);\n\n\tconst syncExpandedState = useEffectEvent((availableRowIds: readonly string[], nextInitialExpandedRowIds: readonly string[]) => {\n\t\tif (availableRowIds.length === 0) {\n\t\t\thasInitializedExpansionRef.current = false;\n\t\t\tsetExpanded({});\n\t\t\treturn;\n\t\t}\n\n\t\tconst availableRowIdSet = new Set(availableRowIds);\n\n\t\tsetExpanded((currentExpanded) => {\n\t\t\tconst persistedRowIds = extractExpandedRowIds(currentExpanded).filter((rowId) => availableRowIdSet.has(rowId));\n\n\t\t\tif (!hasInitializedExpansionRef.current) {\n\t\t\t\thasInitializedExpansionRef.current = true;\n\n\t\t\t\tconst seededRowIds = Array.from(\n\t\t\t\t\tnew Set([...persistedRowIds, ...nextInitialExpandedRowIds.filter((rowId) => availableRowIdSet.has(rowId))])\n\t\t\t\t);\n\n\t\t\t\treturn toExpandedState(seededRowIds);\n\t\t\t}\n\n\t\t\treturn toExpandedState(persistedRowIds);\n\t\t});\n\t});\n\n\tconst emitExpandedRowIdsChange = useEffectEvent((currentExpanded: ExpandedState) => {\n\t\tonExpandedRowIdsChange?.(extractExpandedRowIds(currentExpanded));\n\t});\n\n\tconst emitReachEnd = useEffectEvent(() => {\n\t\tonReachEnd?.();\n\t});\n\n\tuseEffect(() => {\n\t\tsyncExpandedState(treeData.allRowIds, initialExpandedRowIds);\n\t}, [initialExpandedRowIds, treeData.allRowIds]);\n\n\tuseEffect(() => {\n\t\temitExpandedRowIdsChange(expanded);\n\t}, [expanded]);\n\n\tuseEffect(() => {\n\t\tif (!onReachEnd || !scrollableRef.current || !sentinelRef.current || isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tconst entry = entries[0];\n\n\t\t\t\tif (entry?.isIntersecting) {\n\t\t\t\t\temitReachEnd();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\troot: scrollableRef.current,\n\t\t\t\tthreshold: 0.1\n\t\t\t}\n\t\t);\n\n\t\tobserver.observe(sentinelRef.current);\n\n\t\treturn () => observer.disconnect();\n\t}, [isLoading, onReachEnd, treeData.rows.length]);\n\n\tconst table = useTable({\n\t\tfeatures: foundationTableFeatures,\n\t\tdata: treeData.rows as TreeTableRuntimeRow<TData>[],\n\t\tcolumns: columns as TableColumnDef<TreeTableRuntimeRow<TData>>[],\n\t\tstate: {\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility,\n\t\t\texpanded,\n\t\t\trowSelection\n\t\t},\n\t\tgetRowId: (row) => hierarchy.getRowId(row as TData),\n\t\tgetSubRows: (row) => row.children,\n\t\tonColumnOrderChange: handleColumnOrderChange,\n\t\tonColumnPinningChange: handleColumnPinningChange,\n\t\tonColumnSizingChange: handleColumnSizingChange,\n\t\tonColumnVisibilityChange: handleColumnVisibilityChange,\n\t\tonExpandedChange: setExpanded,\n\t\tenableMultiRowSelection: selectionMode === \"multi\",\n\t\tenableRowSelection: (row) => {\n\t\t\tif (selectionMode === \"none\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\t\treturn getRowCanSelect ? getRowCanSelect(originalRow) : true;\n\t\t}\n\t});\n\n\tconst visibleLeafColumns = getOrderedVisibleLeafColumns(table, baseTableColumnState);\n\tconst resolvedTreeColumnId = treeColumnId ?? visibleLeafColumns[0]?.id;\n\tconst rowModelRows = table.getRowModel().rows;\n\tconst mergedCellLayout = useMemo(\n\t\t() =>\n\t\t\tbuildBaseTableMergedCellsLayout({\n\t\t\t\trows: rowModelRows,\n\t\t\t\tcolumns: visibleLeafColumns,\n\t\t\t\tresolveRowBoundaryKey: (row) => row.depth,\n\t\t\t\texcludeColumnIds: resolvedTreeColumnId ? new Set([resolvedTreeColumnId]) : undefined\n\t\t\t}),\n\t\t[rowModelRows, visibleLeafColumns, resolvedTreeColumnId]\n\t);\n\n\t/**\n\t * Активирует строку: обновляет выбор в соответствии с режимом и вызывает внешний callback.\n\t */\n\tconst activateRow = (row: FoundationTableRow<TreeTableRuntimeRow<TData>>) => {\n\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\tactivateRowSelection(row.id, row.getCanSelect());\n\t\tonRowClick?.(originalRow);\n\t};\n\n\treturn (\n\t\t<BaseTable\n\t\t\ttable={table}\n\t\t\tcolumnState={baseTableColumnState}\n\t\t\ttitle={title}\n\t\t\tisLoading={isLoading}\n\t\t\tisFetching={isFetching}\n\t\t\tclassName={className}\n\t\t\ttableClassName={tableClassName}\n\t\t\tselectionMode={selectionMode}\n\t\t\tscrollableRef={scrollableRef}\n\t\t\tinteractiveElementSelector='[data-tree-table-interactive=\"true\"]'\n\t\t\tonActivateRow={selectionMode !== \"none\" || onRowClick ? activateRow : undefined}\n\t\t\tisRowInteractive={(row) => Boolean(onRowClick || (selectionMode !== \"none\" && row.getCanSelect()))}\n\t\t\tgetRowClassName={(row) => {\n\t\t\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\t\t\treturn getRowClassName?.(originalRow);\n\t\t\t}}\n\t\t\tgetCellClassName={({ row, cell }) =>\n\t\t\t\tcn(\n\t\t\t\t\tcell.column.id === resolvedTreeColumnId && styles.treeColumnCell,\n\t\t\t\t\tcell.column.id === resolvedTreeColumnId && row.getIsSelected() && styles.selectedIndicatorCell\n\t\t\t\t)\n\t\t\t}\n\t\t\tgetCellLayout={({ cell }) => mergedCellLayout.get(cell.id)}\n\t\t\trenderHeaderContextMenu={renderHeaderContextMenu}\n\t\t\tenableColumnResizing={enableColumnResizing}\n\t\t\tenableColumnReordering={enableColumnReordering}\n\t\t\tcolumnResizeMinWidth={columnResizeMinWidth}\n\t\t\trenderCellContent={(args) => {\n\t\t\t\tconst originalRow = resolveOriginalRow(args.row, treeData.rowById);\n\t\t\t\tconst displayValue = formatPipelineDisplayValue({\n\t\t\t\t\tfield: formattingSnapshot.runtimeByColumnId[args.cell.column.id],\n\t\t\t\t\trawValue: args.cell.getValue(),\n\t\t\t\t\trowData: originalRow as TableFormulaRowData,\n\t\t\t\t\trowKind: \"tree\"\n\t\t\t\t});\n\t\t\t\tconst defaultContent = shouldUseTableFormatting({\n\t\t\t\t\tcolumnId: args.cell.column.id,\n\t\t\t\t\truntimeByColumnId: formattingSnapshot.runtimeByColumnId,\n\t\t\t\t\tcustomCellColumnIds: formattingSnapshot.customCellColumnIds\n\t\t\t\t}) ? (\n\t\t\t\t\t<FormattedTableCell displayValue={displayValue} align={args.columnMeta?.align} />\n\t\t\t\t) : (\n\t\t\t\t\targs.defaultContent\n\t\t\t\t);\n\t\t\t\tconst content = renderCellContent\n\t\t\t\t\t? renderCellContent({\n\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\tdefaultContent,\n\t\t\t\t\t\t\tdisplayValue\n\t\t\t\t\t\t})\n\t\t\t\t\t: defaultContent;\n\n\t\t\t\treturn renderTreeCellContent(args, content, resolvedTreeColumnId, indentSize);\n\t\t\t}}\n\t\t\tafterTableContent={onReachEnd ? <div ref={sentinelRef} className={styles.sentinel} aria-hidden=\"true\" /> : null}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/tree-table/TreeTable.module.scss","../../src/tree-table/TreeTable.tsx"],"sourcesContent":[".treeColumnCell {\n\tpadding-inline-start: var(--space-sm);\n}\n\n.selectedIndicatorCell {\n\tbox-shadow: inset 0.1875rem 0 0 var(--accent-text);\n}\n\n.treeCell {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n\tmin-width: 0;\n}\n\n.treeCellContent {\n\tmin-width: 0;\n\tflex: 1 1 auto;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.expanderButton {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex: 0 0 1.5rem;\n\twidth: 1.5rem;\n\theight: 1.5rem;\n\tpadding: 0;\n\tborder: 0;\n\tborder-radius: var(--radius-xs);\n\tbackground: transparent;\n\tcolor: var(--content-0);\n\tcursor: pointer;\n\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground-color: var(--surface-2);\n\t}\n}\n\n.expanderSpacer {\n\tflex: 0 0 1.5rem;\n\twidth: 1.5rem;\n\theight: 1.5rem;\n}\n\n.sentinel {\n\theight: 1px;\n}\n","import { useEffect, useEffectEvent, useMemo, useRef, useState, type ReactNode } from \"react\";\n\nimport { formatPipelineDisplayValue } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport {\n\ttype FoundationTableRow,\n\tfoundationTableFeatures,\n\tresolveTableLength,\n\tTableColumnDef,\n\ttype TableColumnOrderState,\n\ttype TableColumnSizingState,\n\ttype TableColumnVisibilityState,\n\tTableSelectionMode,\n\tuseTableRowSelection\n} from \"@ryuzaki13/react-foundation-lib/table\";\nimport { buildTreeTableRows, type TreeTableFlatHierarchy, type TreeTableRowNode } from \"@ryuzaki13/react-foundation-lib/tree-table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { useTable, type ExpandedState } from \"@tanstack/react-table\";\nimport { ChevronDownIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport {\n\tBaseTable,\n\tbuildBaseTableMergedCellsLayout,\n\tbuildTableFormattingSnapshot,\n\tFormattedTableCell,\n\tgetOrderedVisibleLeafColumns,\n\tshouldUseTableFormatting,\n\tuseTableColumnOrder,\n\tuseTableColumnPinning,\n\tuseTableColumnSizing,\n\tuseTableColumnVisibility,\n\ttype BaseTableCellRenderArgs,\n\ttype BaseTableColumnState,\n\ttype BaseTableProps,\n\ttype TableColumnPinningState\n} from \"../base-table\";\n\nimport styles from \"./TreeTable.module.scss\";\n\nimport type { TableFormulaRowData } from \"@ryuzaki13/react-foundation-lib/formulas\";\n\n/**\n * Внутренний тип строки TreeTable после преобразования в иерархию.\n */\ntype TreeTableRuntimeRow<TData extends object> = TreeTableRowNode<TData>;\n\n/**\n * Пропсы компонента TreeTable.\n *\n * Компонент принимает плоский OData-список и сам строит иерархию,\n * оставляя управление раскрытием и выбором во внутреннем состоянии.\n */\nexport interface TreeTableProps<TData extends object> {\n\t/**\n\t * Необязательный заголовок над таблицей.\n\t */\n\ttitle?: string;\n\t/**\n\t * Признак первичной загрузки.\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Признак фоновой догрузки или обновления данных.\n\t */\n\tisFetching?: boolean;\n\t/**\n\t * Плоский источник строк.\n\t */\n\tdata: readonly TData[] | undefined | null;\n\t/**\n\t * Описание колонок через исходный тип строки.\n\t */\n\tcolumns: readonly TableColumnDef<TData>[];\n\t/**\n\t * Правила восстановления дерева из плоского списка.\n\t */\n\thierarchy: TreeTableFlatHierarchy<TData>;\n\t/**\n\t * Режим выбора строк.\n\t */\n\tselectionMode?: TableSelectionMode;\n\t/**\n\t * Если `true`, при первом появлении данных раскрывает корневой уровень.\n\t */\n\texpandFirstLevel?: boolean;\n\t/**\n\t * Дополнительные строки, которые должны быть раскрыты при первой инициализации.\n\t */\n\tdefaultExpandedRowIds?: readonly string[];\n\t/**\n\t * Идентификатор колонки, в которой нужно рисовать tree-toggle и отступы.\n\t *\n\t * Если не указан, используется первая видимая колонка.\n\t */\n\ttreeColumnId?: string;\n\t/**\n\t * Отступ на один уровень вложенности.\n\t *\n\t * Числовое значение трактуется как `em`.\n\t */\n\tindentSize?: string | number;\n\t/**\n\t * Дополнительный CSS-класс корневого контейнера.\n\t */\n\tclassName?: string;\n\t/**\n\t * Дополнительный CSS-класс тега `table`.\n\t */\n\ttableClassName?: string;\n\t/**\n\t * Внешнее controlled-состояние видимости колонок.\n\t */\n\tcolumnVisibility?: TableColumnVisibilityState;\n\t/**\n\t * Стартовое uncontrolled-состояние видимости колонок.\n\t */\n\tdefaultColumnVisibility?: TableColumnVisibilityState;\n\t/**\n\t * Внешнее controlled-состояние порядка колонок.\n\t */\n\tcolumnOrder?: readonly string[];\n\t/**\n\t * Стартовое uncontrolled-состояние порядка колонок.\n\t */\n\tdefaultColumnOrder?: readonly string[];\n\t/**\n\t * Внешнее controlled-состояние ширин колонок в px.\n\t */\n\tcolumnSizing?: TableColumnSizingState;\n\t/**\n\t * Стартовое uncontrolled-состояние ширин колонок в px.\n\t */\n\tdefaultColumnSizing?: TableColumnSizingState;\n\t/**\n\t * Внешнее controlled-состояние start-pinning для колонок.\n\t */\n\tcolumnPinning?: TableColumnPinningState;\n\t/**\n\t * Стартовое uncontrolled-состояние start-pinning для колонок.\n\t */\n\tdefaultColumnPinning?: TableColumnPinningState;\n\t/**\n\t * Включает изменение ширины колонок через header-handle.\n\t */\n\tenableColumnResizing?: boolean;\n\t/**\n\t * Включает изменение порядка колонок через drag&drop заголовков.\n\t */\n\tenableColumnReordering?: boolean;\n\t/**\n\t * Минимальная ширина колонки при resize в px.\n\t */\n\tcolumnResizeMinWidth?: number;\n\t/**\n\t * Вызывается после изменения видимости колонок.\n\t */\n\tonColumnVisibilityChange?: (state: TableColumnVisibilityState) => void;\n\t/**\n\t * Вызывается после изменения порядка колонок.\n\t */\n\tonColumnOrderChange?: (state: TableColumnOrderState) => void;\n\t/**\n\t * Вызывается после изменения ширины колонок.\n\t */\n\tonColumnSizingChange?: (state: TableColumnSizingState) => void;\n\t/**\n\t * Вызывается после изменения start-pinning state.\n\t */\n\tonColumnPinningChange?: (state: TableColumnPinningState) => void;\n\t/**\n\t * Вызывается при активации строки кликом или клавиатурой.\n\t */\n\tonRowClick?: (row: TData) => void;\n\t/**\n\t * Вызывается после изменения выбранных строк.\n\t */\n\tonRowSelectionChange?: (rows: TData[]) => void;\n\t/**\n\t * Вызывается после изменения раскрытых узлов.\n\t */\n\tonExpandedRowIdsChange?: (rowIds: string[]) => void;\n\t/**\n\t * Вызывается при достижении конца таблицы внутри scroll-контейнера.\n\t */\n\tonReachEnd?: () => void;\n\t/**\n\t * Позволяет запретить выбор отдельных строк.\n\t */\n\tgetRowCanSelect?: (row: TData) => boolean;\n\t/**\n\t * Позволяет добавить CSS-класс для конкретной строки.\n\t */\n\tgetRowClassName?: (row: TData) => string | undefined;\n\t/**\n\t * Контекстное меню заголовка колонки. Получает runtime-строки дерева,\n\t * потому что BaseTable работает уже после сборки flat hierarchy.\n\t */\n\trenderHeaderContextMenu?: BaseTableProps<TreeTableRuntimeRow<TData>>[\"renderHeaderContextMenu\"];\n\t/**\n\t * Точка расширения содержимого ячейки после общего форматирования.\n\t *\n\t * Для tree-column в `defaultContent` передается только содержимое ячейки:\n\t * TreeTable сам добавит expander и отступ после выполнения слота.\n\t */\n\trenderCellContent?: BaseTableProps<TreeTableRuntimeRow<TData>>[\"renderCellContent\"];\n}\n\n/**\n * Преобразует массив идентификаторов в формат состояния раскрытия TanStack.\n */\nfunction toExpandedState(rowIds: readonly string[]): ExpandedState {\n\treturn Object.fromEntries(rowIds.map((rowId) => [rowId, true]));\n}\n\n/**\n * Извлекает из состояния раскрытия только активные идентификаторы.\n */\nfunction extractExpandedRowIds(expanded: ExpandedState): string[] {\n\tif (typeof expanded === \"boolean\") {\n\t\treturn [];\n\t}\n\n\treturn Object.keys(expanded).filter((rowId) => expanded[rowId]);\n}\n\n/**\n * Нормализует исходную строку, убирая зависимость от внутреннего поля `children`.\n */\nfunction resolveOriginalRow<TData extends object>(row: FoundationTableRow<TreeTableRuntimeRow<TData>>, rowById: Map<string, TData>): TData {\n\treturn rowById.get(row.id) ?? (row.original as TData);\n}\n\n/**\n * Рендерит содержимое древовидной ячейки.\n */\nfunction renderTreeCellContent<TData extends object>(\n\targs: BaseTableCellRenderArgs<TreeTableRuntimeRow<TData>>,\n\tcontent: ReactNode,\n\ttreeColumnId: string | undefined,\n\tindentSize: string | number\n): ReactNode {\n\tif (args.cell.column.id !== treeColumnId) {\n\t\treturn content;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={styles.treeCell}\n\t\t\tstyle={{\n\t\t\t\tpaddingInlineStart: `calc(${args.row.depth} * ${resolveTableLength(indentSize) ?? \"0em\"})`\n\t\t\t}}>\n\t\t\t{args.row.getCanExpand() ? (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={styles.expanderButton}\n\t\t\t\t\taria-label={args.row.getIsExpanded() ? \"Свернуть строку\" : \"Развернуть строку\"}\n\t\t\t\t\tdata-tree-table-interactive=\"true\"\n\t\t\t\t\tdata-ui=\"tree-table-expander\"\n\t\t\t\t\tdata-action={args.row.getIsExpanded() ? \"collapse-tree-table-row\" : \"expand-tree-table-row\"}\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\targs.row.toggleExpanded();\n\t\t\t\t\t}}>\n\t\t\t\t\t{args.row.getIsExpanded() ? <ChevronDownIcon size={16} /> : <ChevronRightIcon size={16} />}\n\t\t\t\t</button>\n\t\t\t) : (\n\t\t\t\t<span className={styles.expanderSpacer} aria-hidden=\"true\" />\n\t\t\t)}\n\n\t\t\t<div className={styles.treeCellContent}>{content}</div>\n\t\t</div>\n\t);\n}\n\n/**\n * Древовидная таблица на базе TanStack Table для плоских OData-данных.\n */\nexport function TreeTable<TData extends object>({\n\ttitle,\n\tisLoading,\n\tisFetching,\n\tdata,\n\tcolumns,\n\thierarchy,\n\tselectionMode = \"none\",\n\texpandFirstLevel = false,\n\tdefaultExpandedRowIds,\n\ttreeColumnId,\n\tindentSize = 1,\n\tclassName,\n\ttableClassName,\n\tcolumnVisibility,\n\tdefaultColumnVisibility,\n\tcolumnOrder,\n\tdefaultColumnOrder,\n\tcolumnSizing,\n\tdefaultColumnSizing,\n\tcolumnPinning,\n\tdefaultColumnPinning,\n\tenableColumnResizing = false,\n\tenableColumnReordering = false,\n\tcolumnResizeMinWidth,\n\tonColumnVisibilityChange,\n\tonColumnOrderChange,\n\tonColumnSizingChange,\n\tonColumnPinningChange,\n\tonRowClick,\n\tonRowSelectionChange,\n\tonExpandedRowIdsChange,\n\tonReachEnd,\n\tgetRowCanSelect,\n\tgetRowClassName,\n\trenderHeaderContextMenu,\n\trenderCellContent\n}: TreeTableProps<TData>) {\n\tconst treeData = useMemo(() => buildTreeTableRows(data ?? [], hierarchy), [data, hierarchy]);\n\tconst formattingSnapshot = useMemo(() => buildTableFormattingSnapshot(columns), [columns]);\n\tconst initialExpandedRowIds = useMemo(() => {\n\t\tconst nextExpandedRowIds = new Set(defaultExpandedRowIds ?? []);\n\n\t\tif (expandFirstLevel) {\n\t\t\tfor (const rootRowId of treeData.rootRowIds) {\n\t\t\t\tnextExpandedRowIds.add(rootRowId);\n\t\t\t}\n\t\t}\n\n\t\treturn Array.from(nextExpandedRowIds);\n\t}, [defaultExpandedRowIds, expandFirstLevel, treeData.rootRowIds]);\n\n\tconst [expanded, setExpanded] = useState<ExpandedState>({});\n\tconst hasInitializedExpansionRef = useRef(false);\n\tconst scrollableRef = useRef<HTMLDivElement | null>(null);\n\tconst sentinelRef = useRef<HTMLDivElement | null>(null);\n\n\tconst { rowSelection, activateRowSelection } = useTableRowSelection({\n\t\tavailableRowIds: treeData.allRowIds,\n\t\trowById: treeData.rowById,\n\t\tselectionMode,\n\t\tonRowSelectionChange\n\t});\n\tconst { columnVisibility: resolvedColumnVisibility, onColumnVisibilityChange: handleColumnVisibilityChange } = useTableColumnVisibility(\n\t\t{\n\t\t\tcolumnVisibility,\n\t\t\tdefaultColumnVisibility,\n\t\t\tonColumnVisibilityChange\n\t\t}\n\t);\n\tconst { columnOrder: resolvedColumnOrder, onColumnOrderChange: handleColumnOrderChange } = useTableColumnOrder({\n\t\tcolumnOrder,\n\t\tdefaultColumnOrder,\n\t\tonColumnOrderChange\n\t});\n\tconst { columnSizing: resolvedColumnSizing, onColumnSizingChange: handleColumnSizingChange } = useTableColumnSizing({\n\t\tcolumnSizing,\n\t\tdefaultColumnSizing,\n\t\tcolumnResizeMinWidth,\n\t\tonColumnSizingChange\n\t});\n\tconst { columnPinning: resolvedColumnPinning, onColumnPinningChange: handleColumnPinningChange } = useTableColumnPinning({\n\t\tcolumnPinning,\n\t\tdefaultColumnPinning,\n\t\tonColumnPinningChange\n\t});\n\n\tconst baseTableColumnState = useMemo<BaseTableColumnState>(\n\t\t() => ({\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility\n\t\t}),\n\t\t[resolvedColumnOrder, resolvedColumnPinning, resolvedColumnSizing, resolvedColumnVisibility]\n\t);\n\n\tconst syncExpandedState = useEffectEvent((availableRowIds: readonly string[], nextInitialExpandedRowIds: readonly string[]) => {\n\t\tif (availableRowIds.length === 0) {\n\t\t\thasInitializedExpansionRef.current = false;\n\t\t\tsetExpanded({});\n\t\t\treturn;\n\t\t}\n\n\t\tconst availableRowIdSet = new Set(availableRowIds);\n\n\t\tsetExpanded((currentExpanded) => {\n\t\t\tconst persistedRowIds = extractExpandedRowIds(currentExpanded).filter((rowId) => availableRowIdSet.has(rowId));\n\n\t\t\tif (!hasInitializedExpansionRef.current) {\n\t\t\t\thasInitializedExpansionRef.current = true;\n\n\t\t\t\tconst seededRowIds = Array.from(\n\t\t\t\t\tnew Set([...persistedRowIds, ...nextInitialExpandedRowIds.filter((rowId) => availableRowIdSet.has(rowId))])\n\t\t\t\t);\n\n\t\t\t\treturn toExpandedState(seededRowIds);\n\t\t\t}\n\n\t\t\treturn toExpandedState(persistedRowIds);\n\t\t});\n\t});\n\n\tconst emitExpandedRowIdsChange = useEffectEvent((currentExpanded: ExpandedState) => {\n\t\tonExpandedRowIdsChange?.(extractExpandedRowIds(currentExpanded));\n\t});\n\n\tconst emitReachEnd = useEffectEvent(() => {\n\t\tonReachEnd?.();\n\t});\n\n\tuseEffect(() => {\n\t\tsyncExpandedState(treeData.allRowIds, initialExpandedRowIds);\n\t}, [initialExpandedRowIds, treeData.allRowIds]);\n\n\tuseEffect(() => {\n\t\temitExpandedRowIdsChange(expanded);\n\t}, [expanded]);\n\n\tuseEffect(() => {\n\t\tif (!onReachEnd || !scrollableRef.current || !sentinelRef.current || isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tconst entry = entries[0];\n\n\t\t\t\tif (entry?.isIntersecting) {\n\t\t\t\t\temitReachEnd();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\troot: scrollableRef.current,\n\t\t\t\tthreshold: 0.1\n\t\t\t}\n\t\t);\n\n\t\tobserver.observe(sentinelRef.current);\n\n\t\treturn () => observer.disconnect();\n\t}, [isLoading, onReachEnd, treeData.rows.length]);\n\n\tconst table = useTable({\n\t\tfeatures: foundationTableFeatures,\n\t\tdata: treeData.rows as TreeTableRuntimeRow<TData>[],\n\t\tcolumns: columns as TableColumnDef<TreeTableRuntimeRow<TData>>[],\n\t\tstate: {\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility,\n\t\t\texpanded,\n\t\t\trowSelection\n\t\t},\n\t\tgetRowId: (row) => hierarchy.getRowId(row as TData),\n\t\tgetSubRows: (row) => row.children,\n\t\tonColumnOrderChange: handleColumnOrderChange,\n\t\tonColumnPinningChange: handleColumnPinningChange,\n\t\tonColumnSizingChange: handleColumnSizingChange,\n\t\tonColumnVisibilityChange: handleColumnVisibilityChange,\n\t\tonExpandedChange: setExpanded,\n\t\tenableMultiRowSelection: selectionMode === \"multi\",\n\t\tenableRowSelection: (row) => {\n\t\t\tif (selectionMode === \"none\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\t\treturn getRowCanSelect ? getRowCanSelect(originalRow) : true;\n\t\t}\n\t});\n\n\tconst visibleLeafColumns = getOrderedVisibleLeafColumns(table, baseTableColumnState);\n\tconst resolvedTreeColumnId = treeColumnId ?? visibleLeafColumns[0]?.id;\n\tconst rowModelRows = table.getRowModel().rows;\n\tconst mergedCellLayout = useMemo(\n\t\t() =>\n\t\t\tbuildBaseTableMergedCellsLayout({\n\t\t\t\trows: rowModelRows,\n\t\t\t\tcolumns: visibleLeafColumns,\n\t\t\t\tresolveRowBoundaryKey: (row) => row.depth,\n\t\t\t\texcludeColumnIds: resolvedTreeColumnId ? new Set([resolvedTreeColumnId]) : undefined\n\t\t\t}),\n\t\t[rowModelRows, visibleLeafColumns, resolvedTreeColumnId]\n\t);\n\n\t/**\n\t * Активирует строку: обновляет выбор в соответствии с режимом и вызывает внешний callback.\n\t */\n\tconst activateRow = (row: FoundationTableRow<TreeTableRuntimeRow<TData>>) => {\n\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\tactivateRowSelection(row.id, row.getCanSelect());\n\t\tonRowClick?.(originalRow);\n\t};\n\n\treturn (\n\t\t<BaseTable\n\t\t\ttable={table}\n\t\t\tcolumnState={baseTableColumnState}\n\t\t\ttitle={title}\n\t\t\tisLoading={isLoading}\n\t\t\tisFetching={isFetching}\n\t\t\tclassName={className}\n\t\t\ttableClassName={tableClassName}\n\t\t\tselectionMode={selectionMode}\n\t\t\tscrollableRef={scrollableRef}\n\t\t\tinteractiveElementSelector='[data-tree-table-interactive=\"true\"]'\n\t\t\tonActivateRow={selectionMode !== \"none\" || onRowClick ? activateRow : undefined}\n\t\t\tisRowInteractive={(row) => Boolean(onRowClick || (selectionMode !== \"none\" && row.getCanSelect()))}\n\t\t\tgetRowClassName={(row) => {\n\t\t\t\tconst originalRow = resolveOriginalRow(row, treeData.rowById);\n\n\t\t\t\treturn getRowClassName?.(originalRow);\n\t\t\t}}\n\t\t\tgetCellClassName={({ row, cell }) =>\n\t\t\t\tcn(\n\t\t\t\t\tcell.column.id === resolvedTreeColumnId && styles.treeColumnCell,\n\t\t\t\t\tcell.column.id === resolvedTreeColumnId && row.getIsSelected() && styles.selectedIndicatorCell\n\t\t\t\t)\n\t\t\t}\n\t\t\tgetCellLayout={({ cell }) => mergedCellLayout.get(cell.id)}\n\t\t\trenderHeaderContextMenu={renderHeaderContextMenu}\n\t\t\tenableColumnResizing={enableColumnResizing}\n\t\t\tenableColumnReordering={enableColumnReordering}\n\t\t\tcolumnResizeMinWidth={columnResizeMinWidth}\n\t\t\trenderCellContent={(args) => {\n\t\t\t\tconst originalRow = resolveOriginalRow(args.row, treeData.rowById);\n\t\t\t\tconst displayValue = formatPipelineDisplayValue({\n\t\t\t\t\tfield: formattingSnapshot.runtimeByColumnId[args.cell.column.id],\n\t\t\t\t\trawValue: args.cell.getValue(),\n\t\t\t\t\trowData: originalRow as TableFormulaRowData,\n\t\t\t\t\trowKind: \"tree\"\n\t\t\t\t});\n\t\t\t\tconst defaultContent = shouldUseTableFormatting({\n\t\t\t\t\tcolumnId: args.cell.column.id,\n\t\t\t\t\truntimeByColumnId: formattingSnapshot.runtimeByColumnId,\n\t\t\t\t\tcustomCellColumnIds: formattingSnapshot.customCellColumnIds\n\t\t\t\t}) ? (\n\t\t\t\t\t<FormattedTableCell displayValue={displayValue} align={args.columnMeta?.align} />\n\t\t\t\t) : (\n\t\t\t\t\targs.defaultContent\n\t\t\t\t);\n\t\t\t\tconst content = renderCellContent\n\t\t\t\t\t? renderCellContent({\n\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\tdefaultContent,\n\t\t\t\t\t\t\tdisplayValue\n\t\t\t\t\t\t})\n\t\t\t\t\t: defaultContent;\n\n\t\t\t\treturn renderTreeCellContent(args, content, resolvedTreeColumnId, indentSize);\n\t\t\t}}\n\t\t\tafterTableContent={onReachEnd ? <div ref={sentinelRef} className={styles.sentinel} aria-hidden=\"true\" /> : null}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -17,10 +17,10 @@ export type UiBaseProps<C, V = C> = {
|
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
19
|
* Цветовой тон задаёт смысл цвета, а `UiAppearance` — визуальную иерархию действия.
|
|
20
|
-
* `
|
|
20
|
+
* `accent` отмечает текущий или выбранный элемент, а `brand` — фирменное действие.
|
|
21
21
|
*/
|
|
22
|
-
export type UiTone = "neutral" | "brand" | "error" | "warning" | "success" | "info";
|
|
22
|
+
export type UiTone = "accent" | "neutral" | "brand" | "error" | "warning" | "success" | "info";
|
|
23
23
|
export type UiAppearance = "solid" | "outline" | "ghost" | "transparent";
|
|
24
|
-
export type UiVariant = "transparent" | "ghost" | "neutral" | "brand" | "error" | "warning" | "success" | "info" | "neutralOutline" | "brandOutline" | "errorOutline" | "warningOutline" | "successOutline" | "infoOutline";
|
|
24
|
+
export type UiVariant = "transparent" | "ghost" | "neutral" | "accent" | "brand" | "error" | "warning" | "success" | "info" | "neutralOutline" | "accentOutline" | "brandOutline" | "errorOutline" | "warningOutline" | "successOutline" | "infoOutline";
|
|
25
25
|
export type UiPanelTone = "primary" | "secondary" | "tertiary";
|
|
26
26
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAElD,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAElD,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/F,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC;AAEzE,MAAM,MAAM,SAAS,GAClB,aAAa,GACb,OAAO,GACP,SAAS,GACT,QAAQ,GACR,OAAO,GACP,OAAO,GACP,SAAS,GACT,SAAS,GACT,MAAM,GACN,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,CAAC;AAEjB,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC"}
|
package/dist/uiClasses.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiClasses.d.ts","sourceRoot":"","sources":["../src/uiClasses.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE5E,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,YAAY,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"uiClasses.d.ts","sourceRoot":"","sources":["../src/uiClasses.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE5E,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,YAAY,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC;AA4C/E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,YAAY,GAAG,MAAM,CAEzE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAEjE;AAED,wBAAgB,eAAe,CAAC,EAC/B,OAAO,EACP,IAAI,EACJ,UAAU,EACV,YAAwB,EACxB,kBAA8B,EAC9B,EAAE;IACF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,YAAY,CAAC;CAClC,GAAG,QAAQ,CAgBX"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ryuzaki13/react-foundation-ui",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Reusable React foundation UI primitives and Storybook stories.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ryuzaki13",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"styles",
|
|
34
34
|
"styles.scss",
|
|
35
35
|
"src/styles",
|
|
36
|
+
"COLOR_TOKENS_MIGRATION.md",
|
|
36
37
|
"README.md",
|
|
37
38
|
"LICENSE"
|
|
38
39
|
],
|
|
@@ -274,6 +275,10 @@
|
|
|
274
275
|
"types": "./dist/state-select/index.d.ts",
|
|
275
276
|
"import": "./dist/state-select/index.js"
|
|
276
277
|
},
|
|
278
|
+
"./status-indicator": {
|
|
279
|
+
"types": "./dist/status-indicator/index.d.ts",
|
|
280
|
+
"import": "./dist/status-indicator/index.js"
|
|
281
|
+
},
|
|
277
282
|
"./switch": {
|
|
278
283
|
"types": "./dist/switch/index.d.ts",
|
|
279
284
|
"import": "./dist/switch/index.js"
|
package/src/styles/_border.scss
CHANGED
|
@@ -70,13 +70,13 @@
|
|
|
70
70
|
|
|
71
71
|
// TODO: unused
|
|
72
72
|
.outlineSolid {
|
|
73
|
-
outline: var(--border-width) solid var(--
|
|
73
|
+
outline: var(--border-width) solid var(--accent-text);
|
|
74
74
|
outline-offset: var(--focus-offset);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
// TODO: unused
|
|
78
78
|
.outlineDashed {
|
|
79
|
-
outline: var(--border-width) dashed var(--
|
|
79
|
+
outline: var(--border-width) dashed var(--accent-text);
|
|
80
80
|
outline-offset: var(--focus-offset);
|
|
81
81
|
}
|
|
82
82
|
|
package/src/styles/_color.scss
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
|
|
34
34
|
// TODO: unused
|
|
35
35
|
.surfaceAccent {
|
|
36
|
-
background-color: var(--
|
|
36
|
+
background-color: var(--accent-fill);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
.surfaceBackdrop {
|
|
@@ -62,31 +62,31 @@
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
.contentAccent {
|
|
65
|
-
color: var(--
|
|
65
|
+
color: var(--accent-text);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
.statusSuccess {
|
|
69
|
-
color: var(--
|
|
69
|
+
color: var(--success-text);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
.statusError {
|
|
73
|
-
color: var(--
|
|
73
|
+
color: var(--error-text);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
.textColorDanger {
|
|
77
|
-
color: var(--
|
|
77
|
+
color: var(--error-text);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
.statusWarning {
|
|
81
|
-
color: var(--
|
|
81
|
+
color: var(--warning-text);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
.statusInfo {
|
|
85
|
-
color: var(--
|
|
85
|
+
color: var(--info-text);
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
.statusBrand {
|
|
89
|
-
color: var(--
|
|
89
|
+
color: var(--brand-text);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
.statusNone {
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
&:hover:not(.selected) {
|
|
5
5
|
// filter: contrast(0.9);
|
|
6
|
-
background-color: var(--
|
|
6
|
+
background-color: var(--accent-fill);
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
&.selected {
|
|
10
10
|
cursor: default;
|
|
11
|
-
// color: var(--
|
|
11
|
+
// color: var(--accent-text);
|
|
12
12
|
background-color: var(--surface-1);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -133,18 +133,18 @@ html,
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
.link {
|
|
136
|
-
color: var(--
|
|
136
|
+
color: var(--accent-text);
|
|
137
137
|
|
|
138
138
|
&:visited {
|
|
139
|
-
color: var(--
|
|
139
|
+
color: var(--accent-text);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
&:hover {
|
|
143
|
-
color: var(--
|
|
143
|
+
color: var(--info-fill);
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
&:active {
|
|
147
|
-
color: var(--
|
|
147
|
+
color: var(--error-fill);
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@use "sass:map";
|
|
2
2
|
@use "sass:meta";
|
|
3
|
+
@use "sass:string";
|
|
3
4
|
|
|
4
5
|
$root-token-defaults: (
|
|
5
6
|
"--font-family": (
|
|
@@ -72,8 +73,8 @@ $root-token-defaults: (
|
|
|
72
73
|
"--z-tooltip": 200,
|
|
73
74
|
"--z-image-viewer": 300,
|
|
74
75
|
"--z-notify": 400,
|
|
75
|
-
"--white":
|
|
76
|
-
"--black":
|
|
76
|
+
"--white": #ffffff,
|
|
77
|
+
"--black": #000000
|
|
77
78
|
);
|
|
78
79
|
|
|
79
80
|
$retina-token-defaults: (
|
|
@@ -191,110 +192,62 @@ $paragraph-spacing-preset-defaults: (
|
|
|
191
192
|
|
|
192
193
|
$light-theme-defaults: (
|
|
193
194
|
tokens: (
|
|
194
|
-
"--surface-0":
|
|
195
|
-
"--surface-1":
|
|
196
|
-
"--surface-2":
|
|
197
|
-
"--content-0":
|
|
198
|
-
"--content-1":
|
|
199
|
-
"--content-2":
|
|
200
|
-
"--focus-ring":
|
|
201
|
-
"--overlay-backdrop": var(--hc-overlay-backdrop,
|
|
202
|
-
"--overlay-glass": var(--hc-overlay-glass,
|
|
203
|
-
"--shadow-xs":
|
|
204
|
-
"--shadow-sm":
|
|
205
|
-
"--shadow-md":
|
|
206
|
-
"--shadow-lg":
|
|
207
|
-
"--interactive-color": inherit,
|
|
208
|
-
"--interactive-hover-color": var(--content-0),
|
|
209
|
-
"--interactive-active-color": var(--content-0),
|
|
210
|
-
"--interactive-selected-color": var(--content-0),
|
|
211
|
-
"--interactive-surface": transparent,
|
|
212
|
-
"--interactive-hover-surface": var(--surface-accent),
|
|
213
|
-
"--interactive-active-surface": var(--surface-accent),
|
|
214
|
-
"--interactive-selected-surface": var(--surface-accent),
|
|
215
|
-
"--interactive-border": transparent,
|
|
216
|
-
"--interactive-hover-border": var(--border-accent),
|
|
217
|
-
"--interactive-active-border": var(--border-accent),
|
|
218
|
-
"--interactive-selected-border": var(--border-accent)
|
|
219
|
-
),
|
|
220
|
-
accent: (
|
|
221
|
-
l: 0.55,
|
|
222
|
-
c: 0.22,
|
|
223
|
-
h: 245
|
|
195
|
+
"--surface-0": #ffffff,
|
|
196
|
+
"--surface-1": #f8f8f9,
|
|
197
|
+
"--surface-2": #f1f1f3,
|
|
198
|
+
"--content-0": #202529,
|
|
199
|
+
"--content-1": #646975,
|
|
200
|
+
"--content-2": #8e9298,
|
|
201
|
+
"--focus-ring": #3429ff,
|
|
202
|
+
"--overlay-backdrop": string.unquote("var(--hc-overlay-backdrop, #0000001a)"),
|
|
203
|
+
"--overlay-glass": string.unquote("var(--hc-overlay-glass, #ffffffcc)"),
|
|
204
|
+
"--shadow-xs": string.unquote("var(--hc-shadow-xs, 0 0 0.25em #00000026)"),
|
|
205
|
+
"--shadow-sm": string.unquote("var(--hc-shadow-sm, 0 0 0.25em #00000040)"),
|
|
206
|
+
"--shadow-md": string.unquote("var(--hc-shadow-md, 0 0 0.5em #00000040)"),
|
|
207
|
+
"--shadow-lg": string.unquote("var(--hc-shadow-lg, 0 0 1em #00000040)")
|
|
224
208
|
),
|
|
225
209
|
status: (
|
|
226
|
-
|
|
210
|
+
accent: (
|
|
211
|
+
text: #0073e6,
|
|
212
|
+
border: #006eb3,
|
|
213
|
+
fill: #e2f1fa,
|
|
214
|
+
on-fill: #202529
|
|
215
|
+
),
|
|
227
216
|
brand: (
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
border: (
|
|
234
|
-
l: 0.5,
|
|
235
|
-
c: 0.2,
|
|
236
|
-
h: 262
|
|
237
|
-
)
|
|
238
|
-
),
|
|
217
|
+
text: #0036b0,
|
|
218
|
+
border: #1957d2,
|
|
219
|
+
fill: #1842d2,
|
|
220
|
+
on-fill: #ffffff
|
|
221
|
+
),
|
|
239
222
|
neutral: (
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
),
|
|
245
|
-
border: (
|
|
246
|
-
l: 0.86,
|
|
247
|
-
c: 0.016,
|
|
248
|
-
h: 245
|
|
249
|
-
)
|
|
223
|
+
text: #202529,
|
|
224
|
+
border: #c9d2db,
|
|
225
|
+
fill: #2e3338,
|
|
226
|
+
on-fill: #ffffff
|
|
250
227
|
),
|
|
251
228
|
error: (
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
),
|
|
257
|
-
border: (
|
|
258
|
-
l: 0.52,
|
|
259
|
-
c: 0.19,
|
|
260
|
-
h: 15
|
|
261
|
-
)
|
|
229
|
+
text: #bd1f44,
|
|
230
|
+
border: #bd1f44,
|
|
231
|
+
fill: #dc2447,
|
|
232
|
+
on-fill: #ffffff
|
|
262
233
|
),
|
|
263
234
|
warning: (
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
),
|
|
269
|
-
border: (
|
|
270
|
-
l: 0.55,
|
|
271
|
-
c: 0.16,
|
|
272
|
-
h: 80
|
|
273
|
-
)
|
|
235
|
+
text: #a16200,
|
|
236
|
+
border: #a16200,
|
|
237
|
+
fill: #b67400,
|
|
238
|
+
on-fill: #ffffff
|
|
274
239
|
),
|
|
275
240
|
success: (
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
),
|
|
281
|
-
border: (
|
|
282
|
-
l: 0.5,
|
|
283
|
-
c: 0.14,
|
|
284
|
-
h: 170
|
|
285
|
-
)
|
|
241
|
+
text: #007b57,
|
|
242
|
+
border: #007b57,
|
|
243
|
+
fill: #00906b,
|
|
244
|
+
on-fill: #ffffff
|
|
286
245
|
),
|
|
287
246
|
info: (
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
),
|
|
293
|
-
border: (
|
|
294
|
-
l: 0.52,
|
|
295
|
-
c: 0.15,
|
|
296
|
-
h: 245
|
|
297
|
-
)
|
|
247
|
+
text: #006eb8,
|
|
248
|
+
border: #006eb8,
|
|
249
|
+
fill: #007ed8,
|
|
250
|
+
on-fill: #ffffff
|
|
298
251
|
)
|
|
299
252
|
)
|
|
300
253
|
);
|
|
@@ -304,106 +257,59 @@ $dark-theme-defaults: (
|
|
|
304
257
|
"--surface-0": #222a35,
|
|
305
258
|
"--surface-1": #27313f,
|
|
306
259
|
"--surface-2": #2d3646,
|
|
307
|
-
"--content-0":
|
|
308
|
-
"--content-1":
|
|
309
|
-
"--content-2":
|
|
310
|
-
"--focus-ring":
|
|
311
|
-
"--overlay-backdrop":
|
|
312
|
-
"--overlay-glass":
|
|
313
|
-
"--shadow-xs":
|
|
314
|
-
"--shadow-sm":
|
|
315
|
-
"--shadow-md":
|
|
316
|
-
"--shadow-lg":
|
|
317
|
-
"--interactive-color": inherit,
|
|
318
|
-
"--interactive-hover-color": var(--content-0),
|
|
319
|
-
"--interactive-active-color": var(--content-0),
|
|
320
|
-
"--interactive-selected-color": var(--content-0),
|
|
321
|
-
"--interactive-surface": transparent,
|
|
322
|
-
"--interactive-hover-surface": var(--surface-accent),
|
|
323
|
-
"--interactive-active-surface": var(--surface-accent),
|
|
324
|
-
"--interactive-selected-surface": var(--surface-accent),
|
|
325
|
-
"--interactive-border": transparent,
|
|
326
|
-
"--interactive-hover-border": var(--border-accent),
|
|
327
|
-
"--interactive-active-border": var(--border-accent),
|
|
328
|
-
"--interactive-selected-border": var(--border-accent)
|
|
329
|
-
),
|
|
330
|
-
accent: (
|
|
331
|
-
l: 0.7,
|
|
332
|
-
c: 0.2,
|
|
333
|
-
h: 245
|
|
260
|
+
"--content-0": #dadee5,
|
|
261
|
+
"--content-1": #b6bfcb,
|
|
262
|
+
"--content-2": #969fab,
|
|
263
|
+
"--focus-ring": #ffd300,
|
|
264
|
+
"--overlay-backdrop": string.unquote("var(--hc-overlay-backdrop, #1e252f2e)"),
|
|
265
|
+
"--overlay-glass": string.unquote("var(--hc-overlay-glass, #1e252fcc)"),
|
|
266
|
+
"--shadow-xs": string.unquote("var(--hc-shadow-xs, 0 0 0.25em #00000026)"),
|
|
267
|
+
"--shadow-sm": string.unquote("var(--hc-shadow-sm, 0 0 0.25em #00000040)"),
|
|
268
|
+
"--shadow-md": string.unquote("var(--hc-shadow-md, 0 0 0.5em #00000040)"),
|
|
269
|
+
"--shadow-lg": string.unquote("var(--hc-shadow-lg, 0 0 1em #00000040)")
|
|
334
270
|
),
|
|
335
271
|
status: (
|
|
272
|
+
accent: (
|
|
273
|
+
text: #00a5ff,
|
|
274
|
+
border: #4e8cbe,
|
|
275
|
+
fill: #103243,
|
|
276
|
+
on-fill: #dadee5
|
|
277
|
+
),
|
|
336
278
|
brand: (
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
),
|
|
342
|
-
border: (
|
|
343
|
-
l: 0.7,
|
|
344
|
-
c: 0.18,
|
|
345
|
-
h: 266
|
|
346
|
-
)
|
|
279
|
+
text: #84a0ff,
|
|
280
|
+
border: #6997ff,
|
|
281
|
+
fill: #97b5ff,
|
|
282
|
+
on-fill: #192045
|
|
347
283
|
),
|
|
348
284
|
neutral: (
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
),
|
|
354
|
-
border: (
|
|
355
|
-
l: 0.45,
|
|
356
|
-
c: 0.02,
|
|
357
|
-
h: 256
|
|
358
|
-
)
|
|
285
|
+
text: #a6afbb,
|
|
286
|
+
border: #4e5661,
|
|
287
|
+
fill: #b9c2cd,
|
|
288
|
+
on-fill: #222427
|
|
359
289
|
),
|
|
360
290
|
error: (
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
),
|
|
366
|
-
border: (
|
|
367
|
-
l: 0.75,
|
|
368
|
-
c: 0.18,
|
|
369
|
-
h: 22
|
|
370
|
-
)
|
|
291
|
+
text: #ff7879,
|
|
292
|
+
border: #ff7879,
|
|
293
|
+
fill: #ff8f8e,
|
|
294
|
+
on-fill: #3d1516
|
|
371
295
|
),
|
|
372
296
|
warning: (
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
),
|
|
378
|
-
border: (
|
|
379
|
-
l: 0.77,
|
|
380
|
-
c: 0.14,
|
|
381
|
-
h: 75
|
|
382
|
-
)
|
|
297
|
+
text: #e8a63d,
|
|
298
|
+
border: #e8a63d,
|
|
299
|
+
fill: #faba5b,
|
|
300
|
+
on-fill: #322004
|
|
383
301
|
),
|
|
384
302
|
success: (
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
),
|
|
390
|
-
border: (
|
|
391
|
-
l: 0.75,
|
|
392
|
-
c: 0.14,
|
|
393
|
-
h: 165
|
|
394
|
-
)
|
|
303
|
+
text: #3cc998,
|
|
304
|
+
border: #3cc998,
|
|
305
|
+
fill: #5edcab,
|
|
306
|
+
on-fill: #062b1e
|
|
395
307
|
),
|
|
396
308
|
info: (
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
),
|
|
402
|
-
border: (
|
|
403
|
-
l: 0.75,
|
|
404
|
-
c: 0.16,
|
|
405
|
-
h: 258
|
|
406
|
-
)
|
|
309
|
+
text: #6baeff,
|
|
310
|
+
border: #6baeff,
|
|
311
|
+
fill: #81c2ff,
|
|
312
|
+
on-fill: #12243f
|
|
407
313
|
)
|
|
408
314
|
)
|
|
409
315
|
);
|
|
@@ -430,7 +336,14 @@ $dark-theme: map.deep-merge($dark-theme-defaults, $dark-theme-overrides);
|
|
|
430
336
|
|
|
431
337
|
@mixin emit-declarations($tokens) {
|
|
432
338
|
@each $name, $value in $tokens {
|
|
433
|
-
|
|
339
|
+
@if string.slice($name, 1, 2) == "--" and meta.type-of($value) == color {
|
|
340
|
+
$high-contrast-name: --hc-#{string.slice($name, 3)};
|
|
341
|
+
|
|
342
|
+
// Цвет остаётся fallback, а одноимённый --hc-* можно включить runtime-режимом контрастности.
|
|
343
|
+
#{$name}: var(#{$high-contrast-name}, #{meta.inspect($value)});
|
|
344
|
+
} @else {
|
|
345
|
+
#{$name}: #{meta.inspect($value)};
|
|
346
|
+
}
|
|
434
347
|
}
|
|
435
348
|
}
|
|
436
349
|
|