@keboola/design 13.1.2 → 13.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/AGENTS.md +63 -5
- package/CHANGELOG.md +49 -0
- package/COMPONENT-API.md +8 -8
- package/dist/{AIKit-BVCWP9Ks.js → AIKit-C5FbKjwa.js} +22 -22
- package/dist/AIKit-C5FbKjwa.js.map +1 -0
- package/dist/{Alert-UI-CIs-1.js → Alert-DuAGeYyM.js} +7 -7
- package/dist/{Alert-UI-CIs-1.js.map → Alert-DuAGeYyM.js.map} +1 -1
- package/dist/{AlertModal-mbSnuuka.js → AlertModal-BDle9ZVQ.js} +6 -6
- package/dist/AlertModal-BDle9ZVQ.js.map +1 -0
- package/dist/{AppShell-WSQabK8r.js → AppShell-B03fj1j7.js} +2 -2
- package/dist/{AppShell-WSQabK8r.js.map → AppShell-B03fj1j7.js.map} +1 -1
- package/dist/{AutoSaveTextarea-C5iIr2Ts.js → AutoSaveTextarea-jiqNeeE4.js} +3 -3
- package/dist/{AutoSaveTextarea-C5iIr2Ts.js.map → AutoSaveTextarea-jiqNeeE4.js.map} +1 -1
- package/dist/{Badge-Dz0cj6rj.js → Badge-Ba3epgcI.js} +2 -2
- package/dist/{Badge-Dz0cj6rj.js.map → Badge-Ba3epgcI.js.map} +1 -1
- package/dist/{BrandEditor-P8OZX2hi.js → BrandEditor-Dq168RJc.js} +154 -16
- package/dist/BrandEditor-Dq168RJc.js.map +1 -0
- package/dist/{BrandLogo-CKpVSZb6.js → BrandLogo-BfITD0im.js} +2 -2
- package/dist/{BrandLogo-CKpVSZb6.js.map → BrandLogo-BfITD0im.js.map} +1 -1
- package/dist/{Breadcrumb-BUoAZyhO.js → Breadcrumb-CUyYu5Bi.js} +10 -10
- package/dist/Breadcrumb-CUyYu5Bi.js.map +1 -0
- package/dist/{Button-B21oVcPU.js → Button-D2JqBAq7.js} +199 -7
- package/dist/Button-D2JqBAq7.js.map +1 -0
- package/dist/{Calendar-DFtmZzbF.js → Calendar-BnKi1kPu.js} +4 -4
- package/dist/{Calendar-DFtmZzbF.js.map → Calendar-BnKi1kPu.js.map} +1 -1
- package/dist/{Card-BQmBWHXl.js → Card-Bpc_ZlL4.js} +3 -3
- package/dist/Card-Bpc_ZlL4.js.map +1 -0
- package/dist/{Checkbox-8yIIgY7g.js → Checkbox-D9rafoKh.js} +6 -6
- package/dist/Checkbox-D9rafoKh.js.map +1 -0
- package/dist/{Clipboard-_xf6hMDD.js → Clipboard-BHWUodAx.js} +3 -3
- package/dist/{Clipboard-_xf6hMDD.js.map → Clipboard-BHWUodAx.js.map} +1 -1
- package/dist/{ClipboardButton-srUgWgwH.js → ClipboardButton-Urg-kZbh.js} +4 -4
- package/dist/{ClipboardButton-srUgWgwH.js.map → ClipboardButton-Urg-kZbh.js.map} +1 -1
- package/dist/{CodeEditor-Df7VVx08.js → CodeEditor-Y0iE-SwV.js} +5 -5
- package/dist/{CodeEditor-Df7VVx08.js.map → CodeEditor-Y0iE-SwV.js.map} +1 -1
- package/dist/{Collapsible-BQXWEOBC.js → Collapsible-DD4xTL75.js} +2 -2
- package/dist/{Collapsible-BQXWEOBC.js.map → Collapsible-DD4xTL75.js.map} +1 -1
- package/dist/{ColorInput-B3gBZ8Ya.js → ColorInput-D1nC0X6i.js} +5 -5
- package/dist/{ColorInput-B3gBZ8Ya.js.map → ColorInput-D1nC0X6i.js.map} +1 -1
- package/dist/{ColorModeSwitch-D8Cki137.js → ColorModeSwitch-Cxee8jnB.js} +4 -4
- package/dist/{ColorModeSwitch-D8Cki137.js.map → ColorModeSwitch-Cxee8jnB.js.map} +1 -1
- package/dist/{Combobox-BNhW0TDB.js → Combobox-B1Kjoy5J.js} +9 -9
- package/dist/Combobox-B1Kjoy5J.js.map +1 -0
- package/dist/{Command-BQPiZCNz.js → Command-BuOA3V18.js} +5 -5
- package/dist/Command-BuOA3V18.js.map +1 -0
- package/dist/{CopyField-Ba7h8MqZ.js → CopyField-DsOVtV2Q.js} +4 -4
- package/dist/{CopyField-Ba7h8MqZ.js.map → CopyField-DsOVtV2Q.js.map} +1 -1
- package/dist/{DateInput-D0nWUasV.js → DateInput-BlKkequE.js} +5 -5
- package/dist/{DateInput-D0nWUasV.js.map → DateInput-BlKkequE.js.map} +1 -1
- package/dist/{DatePicker-CtSa9b3V.js → DatePicker-CgHAu9KX.js} +3 -3
- package/dist/{DatePicker-CtSa9b3V.js.map → DatePicker-CgHAu9KX.js.map} +1 -1
- package/dist/{DateRangeInput-i6wE45-V.js → DateRangeInput-DOxJHw8V.js} +5 -5
- package/dist/{DateRangeInput-i6wE45-V.js.map → DateRangeInput-DOxJHw8V.js.map} +1 -1
- package/dist/{DateRangePicker-BAnuz6vO.js → DateRangePicker-CXpXPMoh.js} +8 -8
- package/dist/{DateRangePicker-BAnuz6vO.js.map → DateRangePicker-CXpXPMoh.js.map} +1 -1
- package/dist/{DiagramSource-C5_d8Gdj.js → DiagramSource-jTwmmi9g.js} +2 -2
- package/dist/{DiagramSource-C5_d8Gdj.js.map → DiagramSource-jTwmmi9g.js.map} +1 -1
- package/dist/{DiffView-ppTIzh2h.js → DiffView-Dy4z-n-1.js} +3 -3
- package/dist/{DiffView-ppTIzh2h.js.map → DiffView-Dy4z-n-1.js.map} +1 -1
- package/dist/{DropdownMenu-BJGLjpVc.js → DropdownMenu-DtRYcKEx.js} +8 -8
- package/dist/DropdownMenu-DtRYcKEx.js.map +1 -0
- package/dist/{FieldBox-D7DYtX_m.js → FieldBox-BrxLkY9C.js} +8 -6
- package/dist/FieldBox-BrxLkY9C.js.map +1 -0
- package/dist/{FieldItem-BHViBJS3.js → FieldItem-Cf1E3rfQ.js} +4 -4
- package/dist/{FieldItem-BHViBJS3.js.map → FieldItem-Cf1E3rfQ.js.map} +1 -1
- package/dist/{FileUpload-Ch2hrIWq.js → FileUpload-D6vPG3WB.js} +9 -9
- package/dist/FileUpload-D6vPG3WB.js.map +1 -0
- package/dist/{Form-VkzfVPyT.js → Form-CuaAn-lR.js} +10 -10
- package/dist/{Form-VkzfVPyT.js.map → Form-CuaAn-lR.js.map} +1 -1
- package/dist/{FormGroup-CmCppxOn.js → FormGroup-D4O96YPm.js} +4 -4
- package/dist/{FormGroup-CmCppxOn.js.map → FormGroup-D4O96YPm.js.map} +1 -1
- package/dist/{FullScreenModal-Cwnm8WdM.js → FullScreenModal-CUuAakh3.js} +20 -6
- package/dist/{FullScreenModal-Cwnm8WdM.js.map → FullScreenModal-CUuAakh3.js.map} +1 -1
- package/dist/HoverCard-Cy6nhg4u.js +31 -0
- package/dist/HoverCard-Cy6nhg4u.js.map +1 -0
- package/dist/InlineEdit-DSMIEUUa.js +370 -0
- package/dist/InlineEdit-DSMIEUUa.js.map +1 -0
- package/dist/{InputGroup-CrlMRz4X.js → InputGroup-Dm014ruw.js} +4 -4
- package/dist/{InputGroup-CrlMRz4X.js.map → InputGroup-Dm014ruw.js.map} +1 -1
- package/dist/{Kbd-J4n1J6i4.js → Kbd-Du93F3o4.js} +3 -3
- package/dist/{Kbd-J4n1J6i4.js.map → Kbd-Du93F3o4.js.map} +1 -1
- package/dist/{MermaidDiagram-B30x2yV7.js → MermaidDiagram-D2ThT8Q-.js} +3 -3
- package/dist/{MermaidDiagram-B30x2yV7.js.map → MermaidDiagram-D2ThT8Q-.js.map} +1 -1
- package/dist/{Modal-BkSuS9Yz.js → Modal-DQIauzar.js} +6 -6
- package/dist/Modal-DQIauzar.js.map +1 -0
- package/dist/{ModalTitle-BxopkIoQ.js → ModalTitle-CTECVgL8.js} +3 -3
- package/dist/ModalTitle-CTECVgL8.js.map +1 -0
- package/dist/{MultiActionButtonGroup-AWLj1Tg7.js → MultiActionButtonGroup-xKqiucAN.js} +5 -5
- package/dist/{MultiActionButtonGroup-AWLj1Tg7.js.map → MultiActionButtonGroup-xKqiucAN.js.map} +1 -1
- package/dist/{Navbar-B_DNpv5s.js → Navbar-CtVYcRFn.js} +18 -14
- package/dist/Navbar-CtVYcRFn.js.map +1 -0
- package/dist/{OtpInput-I8B8Vjdl.js → OtpInput-CY8yCaJk.js} +4 -4
- package/dist/{OtpInput-I8B8Vjdl.js.map → OtpInput-CY8yCaJk.js.map} +1 -1
- package/dist/{PageHeader-CgfyXpf1.js → PageHeader-CL1A6jFM.js} +21 -14
- package/dist/PageHeader-CL1A6jFM.js.map +1 -0
- package/dist/{PageLayout-DiAAILuS.js → PageLayout-C9aXTpqV.js} +2 -2
- package/dist/{PageLayout-DiAAILuS.js.map → PageLayout-C9aXTpqV.js.map} +1 -1
- package/dist/{PageToolbar-C06RKIif.js → PageToolbar-B_e7HGva.js} +6 -6
- package/dist/{PageToolbar-C06RKIif.js.map → PageToolbar-B_e7HGva.js.map} +1 -1
- package/dist/{Pagination-DH3f6LN0.js → Pagination-DDp6PRqf.js} +5 -5
- package/dist/Pagination-DDp6PRqf.js.map +1 -0
- package/dist/{Popconfirm-Dhzn7sy6.js → Popconfirm-BgV6a0sl.js} +5 -5
- package/dist/{Popconfirm-Dhzn7sy6.js.map → Popconfirm-BgV6a0sl.js.map} +1 -1
- package/dist/{Popover-CEk915I1.js → Popover-BU7nGOv-.js} +3 -3
- package/dist/Popover-BU7nGOv-.js.map +1 -0
- package/dist/{RadioGroup-CYEp8Wnx.js → RadioGroup-C2vk5acr.js} +6 -6
- package/dist/{RadioGroup-CYEp8Wnx.js.map → RadioGroup-C2vk5acr.js.map} +1 -1
- package/dist/{Resizable-D3vYToZH.js → Resizable-D8zs0kcq.js} +2 -2
- package/dist/{Resizable-D3vYToZH.js.map → Resizable-D8zs0kcq.js.map} +1 -1
- package/dist/{Search-DmkQo716.js → Search-CVrv3hqf.js} +4 -4
- package/dist/{Search-DmkQo716.js.map → Search-CVrv3hqf.js.map} +1 -1
- package/dist/{SearchInput-D3qMkHaW.js → SearchInput-BnU6YHgT.js} +4 -4
- package/dist/{SearchInput-D3qMkHaW.js.map → SearchInput-BnU6YHgT.js.map} +1 -1
- package/dist/{SectionNav-I2p2uXTd.js → SectionNav-XlhvXXdF.js} +11 -11
- package/dist/{SectionNav-I2p2uXTd.js.map → SectionNav-XlhvXXdF.js.map} +1 -1
- package/dist/{Select-B4uK0QVm.js → Select-CjQgU_6K.js} +6 -6
- package/dist/Select-CjQgU_6K.js.map +1 -0
- package/dist/{Sheet-D0fAE14T.js → Sheet-utw4_rUa.js} +9 -9
- package/dist/Sheet-utw4_rUa.js.map +1 -0
- package/dist/{Sidebar-D9ytIs8V.js → Sidebar-CKaxOPwY.js} +21 -18
- package/dist/Sidebar-CKaxOPwY.js.map +1 -0
- package/dist/{Slider-B0ou9r0B.js → Slider-Rcc2qVct.js} +5 -5
- package/dist/{Slider-B0ou9r0B.js.map → Slider-Rcc2qVct.js.map} +1 -1
- package/dist/{Stepper-BLkLhfnd.js → Stepper-BBPembeK.js} +3 -3
- package/dist/{Stepper-BLkLhfnd.js.map → Stepper-BBPembeK.js.map} +1 -1
- package/dist/{Switch-DZvNePOm.js → Switch-Dw4tvQls.js} +3 -3
- package/dist/Switch-Dw4tvQls.js.map +1 -0
- package/dist/{Table-BaVT5Tkn.js → Table-CgSC-fSo.js} +4 -4
- package/dist/{Table-BaVT5Tkn.js.map → Table-CgSC-fSo.js.map} +1 -1
- package/dist/{Tabs-CTDmye1N.js → Tabs-C0uvkPHc.js} +5 -5
- package/dist/Tabs-C0uvkPHc.js.map +1 -0
- package/dist/{TextInput-BWYXbfs4.js → TextInput-B5TDDOty.js} +5 -5
- package/dist/{TextInput-BWYXbfs4.js.map → TextInput-B5TDDOty.js.map} +1 -1
- package/dist/{ThemeProvider-VF38VfUa.js → ThemeProvider-Dt9b67sW.js} +22 -5
- package/dist/ThemeProvider-Dt9b67sW.js.map +1 -0
- package/dist/{TimePicker-CDGYrRxi.js → TimePicker-DyyV3nw8.js} +2 -2
- package/dist/{TimePicker-CDGYrRxi.js.map → TimePicker-DyyV3nw8.js.map} +1 -1
- package/dist/{Timeline-B-I6sb0M.js → Timeline-DUXgByUE.js} +3 -3
- package/dist/{Timeline-B-I6sb0M.js.map → Timeline-DUXgByUE.js.map} +1 -1
- package/dist/{Toast-NrOdDDru.js → Toast-BGnUL4jV.js} +2 -2
- package/dist/{Toast-NrOdDDru.js.map → Toast-BGnUL4jV.js.map} +1 -1
- package/dist/{ToggleGroup-Cy_10Mvu.js → ToggleGroup-BOz1yyz6.js} +3 -3
- package/dist/ToggleGroup-BOz1yyz6.js.map +1 -0
- package/dist/{Workbench-DmZzpkj7.js → Workbench-CxgNCs3I.js} +4 -4
- package/dist/{Workbench-DmZzpkj7.js.map → Workbench-CxgNCs3I.js.map} +1 -1
- package/dist/{ZoomableSvg-C65nta_r.js → ZoomableSvg-D8sXKpoV.js} +6 -6
- package/dist/{ZoomableSvg-C65nta_r.js.map → ZoomableSvg-D8sXKpoV.js.map} +1 -1
- package/dist/charts.js +1 -1
- package/dist/classNames-DcGnTh2N.js +21 -0
- package/dist/classNames-DcGnTh2N.js.map +1 -0
- package/dist/editors.js +5 -5
- package/dist/flint.js +2 -2
- package/dist/{icons-wcA70iQx.js → icons-ZIeZXXS7.js} +37 -4
- package/dist/icons-ZIeZXXS7.js.map +1 -0
- package/dist/icons.d.ts +2 -2
- package/dist/icons.js +2 -2
- package/dist/{index-B7k-09i1.d.ts → index-D-itZ3VP.d.ts} +14 -3
- package/dist/index.d.ts +388 -316
- package/dist/index.js +72 -70
- package/dist/internal/blocks/AIKit.js +1 -1
- package/dist/internal/blocks/AppShell.js +1 -1
- package/dist/internal/blocks/AuthLayout.js +2 -2
- package/dist/internal/blocks/AutoSaveTextarea.js +1 -1
- package/dist/internal/blocks/BrandEditor.js +1 -1
- package/dist/internal/blocks/ChartPanel.js +2 -2
- package/dist/internal/blocks/ChipEditor.js +4 -4
- package/dist/internal/blocks/ClipboardButton.js +1 -1
- package/dist/internal/blocks/ColorInput.js +1 -1
- package/dist/internal/blocks/ColorModeSwitch.js +1 -1
- package/dist/internal/blocks/Command.js +1 -1
- package/dist/internal/blocks/CopyField.js +1 -1
- package/dist/internal/blocks/DashboardHero.js +2 -2
- package/dist/internal/blocks/DashboardHero.js.map +1 -1
- package/dist/internal/blocks/DateInput.js +1 -1
- package/dist/internal/blocks/DateRangeInput.js +1 -1
- package/dist/internal/blocks/EmptyConfigurationActionCard.js +1 -1
- package/dist/internal/blocks/ExportMenu.js +4 -4
- package/dist/internal/blocks/FacebookButton.js +66 -0
- package/dist/internal/blocks/FacebookButton.js.map +1 -0
- package/dist/internal/blocks/Form/connectors/ComboboxField.js +2 -2
- package/dist/internal/blocks/Form/connectors/MultiComboboxField.js +1 -1
- package/dist/internal/blocks/Form.js +1 -1
- package/dist/internal/blocks/FormGroup.js +1 -1
- package/dist/internal/blocks/GoogleButton.js +2 -2
- package/dist/internal/blocks/InlineEdit.js +2 -0
- package/dist/internal/blocks/MicrosoftButton.js +2 -2
- package/dist/internal/blocks/MultiActionButtonGroup.js +1 -1
- package/dist/internal/blocks/MultiCombobox.js +2 -2
- package/dist/internal/blocks/NumberInput.js +1 -1
- package/dist/internal/blocks/OtpInput.js +1 -1
- package/dist/internal/blocks/PageHeader.js +1 -1
- package/dist/internal/blocks/PageLayout.js +1 -1
- package/dist/internal/blocks/PageToolbar.js +1 -1
- package/dist/internal/blocks/PasswordInput.js +3 -3
- package/dist/internal/blocks/SearchInput.js +1 -1
- package/dist/internal/blocks/SearchInputWithNavigation.js +5 -5
- package/dist/internal/blocks/SectionNav.js +1 -1
- package/dist/internal/blocks/SplitButton.js +6 -5
- package/dist/internal/blocks/SplitButton.js.map +1 -1
- package/dist/internal/blocks/StatCard.js +2 -2
- package/dist/internal/blocks/TextInput.js +1 -1
- package/dist/internal/blocks/Textarea.js +1 -1
- package/dist/internal/blocks/TimeInput.js +4 -4
- package/dist/internal/components/Alert.js +1 -1
- package/dist/internal/components/AlertModal.js +1 -1
- package/dist/internal/components/Avatar.js +2 -2
- package/dist/internal/components/Badge.js +1 -1
- package/dist/internal/components/BrandLogo.js +1 -1
- package/dist/internal/components/Breadcrumb.js +1 -1
- package/dist/internal/components/Button.js +1 -1
- package/dist/internal/components/ButtonGroup.js +1 -1
- package/dist/internal/components/Calendar.js +1 -1
- package/dist/internal/components/Card.js +1 -1
- package/dist/internal/components/Checkbox.js +1 -1
- package/dist/internal/components/Clipboard.js +1 -1
- package/dist/internal/components/Collapsible.js +1 -1
- package/dist/internal/components/CollapsiblePanel.js +5 -5
- package/dist/internal/components/CollapsiblePanel.js.map +1 -1
- package/dist/internal/components/Combobox.js +1 -1
- package/dist/internal/components/DatePicker.js +1 -1
- package/dist/internal/components/DateRangePicker.js +1 -1
- package/dist/internal/components/DiffView.js +1 -1
- package/dist/internal/components/DotsLoader.js +1 -1
- package/dist/internal/components/DropdownMenu.js +1 -1
- package/dist/internal/components/FileUpload.js +1 -1
- package/dist/internal/components/FullScreenModal.js +1 -1
- package/dist/internal/components/HoverCard.js +1 -1
- package/dist/internal/components/InputGroup.js +1 -1
- package/dist/internal/components/Kbd.js +1 -1
- package/dist/internal/components/Label.js +2 -2
- package/dist/internal/components/Label.js.map +1 -1
- package/dist/internal/components/Link.js +1 -1
- package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +2 -2
- package/dist/internal/components/Modal.js +1 -1
- package/dist/internal/components/Navbar.js +1 -1
- package/dist/internal/components/Pagination.js +1 -1
- package/dist/internal/components/PanelWithDetails.js +3 -3
- package/dist/internal/components/Popconfirm.js +1 -1
- package/dist/internal/components/Popover.js +1 -1
- package/dist/internal/components/Progress.js +1 -1
- package/dist/internal/components/RadioGroup.js +1 -1
- package/dist/internal/components/Resizable.js +1 -1
- package/dist/internal/components/ScrollArea.js +1 -1
- package/dist/internal/components/Search.js +1 -1
- package/dist/internal/components/Select.js +1 -1
- package/dist/internal/components/Separator.js +1 -1
- package/dist/internal/components/Sheet.js +1 -1
- package/dist/internal/components/Sidebar.js +1 -1
- package/dist/internal/components/Skeleton/Skeleton.js +1 -1
- package/dist/internal/components/Skeleton/SkeletonList.js +1 -1
- package/dist/internal/components/Slider.js +1 -1
- package/dist/internal/components/SpotlightBackdrop.js +1 -1
- package/dist/internal/components/Stepper.js +1 -1
- package/dist/internal/components/Switch.js +1 -1
- package/dist/internal/components/Table.js +1 -1
- package/dist/internal/components/Tabs.js +1 -1
- package/dist/internal/components/ThemeProvider.js +1 -1
- package/dist/internal/components/TimePicker.js +1 -1
- package/dist/internal/components/Timeline.js +1 -1
- package/dist/internal/components/Toast.js +2 -2
- package/dist/internal/components/Toggle.js +5 -5
- package/dist/internal/components/Toggle.js.map +1 -1
- package/dist/internal/components/ToggleGroup.js +1 -1
- package/dist/internal/components/Tooltip.js +1 -1
- package/dist/internal/components/Truncated.js +2 -2
- package/dist/internal/components/Workbench.js +1 -1
- package/dist/internal/components/ZoomableSvg.js +1 -1
- package/dist/internal/utils.js +2 -2
- package/dist/markdown-editor.js +116 -78
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.js +1 -1
- package/dist/rjsf.js +12 -12
- package/dist/{styles-DBGXH5-_.js → styles-BDA5rQz3.js} +6 -6
- package/dist/styles-BDA5rQz3.js.map +1 -0
- package/dist/{styles-gzcjOyKv.js → styles-YQdM7G8c.js} +3 -3
- package/dist/{styles-gzcjOyKv.js.map → styles-YQdM7G8c.js.map} +1 -1
- package/dist/styles.css +1 -1
- package/dist/testing.js +1 -1
- package/dist/{toast-CyXEdaCZ.js → toast-D6Z6MOB5.js} +5 -5
- package/dist/toast-D6Z6MOB5.js.map +1 -0
- package/dist/{utils-Bd28bWgm.js → utils-p6tjltbX.js} +4 -4
- package/dist/utils-p6tjltbX.js.map +1 -0
- package/package.json +2 -1
- package/src/styles.css +179 -0
- package/src/theme.css +47 -3
- package/dist/AIKit-BVCWP9Ks.js.map +0 -1
- package/dist/AlertModal-mbSnuuka.js.map +0 -1
- package/dist/BrandEditor-P8OZX2hi.js.map +0 -1
- package/dist/Breadcrumb-BUoAZyhO.js.map +0 -1
- package/dist/Button-B21oVcPU.js.map +0 -1
- package/dist/Card-BQmBWHXl.js.map +0 -1
- package/dist/Checkbox-8yIIgY7g.js.map +0 -1
- package/dist/Combobox-BNhW0TDB.js.map +0 -1
- package/dist/Command-BQPiZCNz.js.map +0 -1
- package/dist/DropdownMenu-BJGLjpVc.js.map +0 -1
- package/dist/FieldBox-D7DYtX_m.js.map +0 -1
- package/dist/FileUpload-Ch2hrIWq.js.map +0 -1
- package/dist/HoverCard-B8OKu9XZ.js +0 -31
- package/dist/HoverCard-B8OKu9XZ.js.map +0 -1
- package/dist/Modal-BkSuS9Yz.js.map +0 -1
- package/dist/ModalTitle-BxopkIoQ.js.map +0 -1
- package/dist/Navbar-B_DNpv5s.js.map +0 -1
- package/dist/PageHeader-CgfyXpf1.js.map +0 -1
- package/dist/Pagination-DH3f6LN0.js.map +0 -1
- package/dist/Popover-CEk915I1.js.map +0 -1
- package/dist/Select-B4uK0QVm.js.map +0 -1
- package/dist/Sheet-D0fAE14T.js.map +0 -1
- package/dist/Sidebar-D9ytIs8V.js.map +0 -1
- package/dist/Switch-DZvNePOm.js.map +0 -1
- package/dist/Tabs-CTDmye1N.js.map +0 -1
- package/dist/ThemeProvider-VF38VfUa.js.map +0 -1
- package/dist/ToggleGroup-Cy_10Mvu.js.map +0 -1
- package/dist/classNames-BzrkDnOD.js +0 -9
- package/dist/classNames-BzrkDnOD.js.map +0 -1
- package/dist/icons-wcA70iQx.js.map +0 -1
- package/dist/styles-DBGXH5-_.js.map +0 -1
- package/dist/toast-CyXEdaCZ.js.map +0 -1
- package/dist/utils-Bd28bWgm.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { cn } from "../../classNames-
|
|
2
|
-
import { Tooltip } from "../../utils-
|
|
1
|
+
import { cn } from "../../classNames-DcGnTh2N.js";
|
|
2
|
+
import { Tooltip } from "../../utils-p6tjltbX.js";
|
|
3
3
|
import { useState } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/Truncated.tsx
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench } from "../../Workbench-
|
|
1
|
+
import { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench } from "../../Workbench-CxgNCs3I.js";
|
|
2
2
|
export { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ZoomableSvg, svgToPngBlob, toSvgFileContent } from "../../ZoomableSvg-
|
|
1
|
+
import { ZoomableSvg, svgToPngBlob, toSvgFileContent } from "../../ZoomableSvg-D8sXKpoV.js";
|
|
2
2
|
export { ZoomableSvg, svgToPngBlob, toSvgFileContent };
|
package/dist/internal/utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { cn } from "../classNames-
|
|
2
|
-
import { DEFAULT_ENTRY_SEPARATOR, copyToClipboard, createChangeInputEvent, createPrefixedString, debounce, isMac, noop, splitEntry, useSHA256, withHiddenFullscreen, withTooltipProvider, withVisualSettle } from "../utils-
|
|
1
|
+
import { cn } from "../classNames-DcGnTh2N.js";
|
|
2
|
+
import { DEFAULT_ENTRY_SEPARATOR, copyToClipboard, createChangeInputEvent, createPrefixedString, debounce, isMac, noop, splitEntry, useSHA256, withHiddenFullscreen, withTooltipProvider, withVisualSettle } from "../utils-p6tjltbX.js";
|
|
3
3
|
import { findLiteralMatches, findLiteralTermMatches, hasLiteralMatch } from "../findLiteralMatches-DgGLzyG0.js";
|
|
4
4
|
import { mergeRefs } from "./utils/mergeRefs.js";
|
|
5
5
|
export { DEFAULT_ENTRY_SEPARATOR, cn, copyToClipboard, createChangeInputEvent, createPrefixedString, debounce, findLiteralMatches, findLiteralTermMatches, hasLiteralMatch, isMac, mergeRefs, noop, splitEntry, useSHA256, withHiddenFullscreen, withTooltipProvider, withVisualSettle };
|
package/dist/markdown-editor.js
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import { cn } from "./classNames-
|
|
2
|
-
import { Tooltip } from "./utils-
|
|
3
|
-
import { AlignCenter, AlignJustify, AlignLeft, AlignRight, Bold, ChevronDown, Code, Heading1, Heading2, Heading3, Italic, Link, List, ListOrdered, Quote, SquareCode, Strikethrough, Type, Underline } from "./icons-
|
|
4
|
-
import { Button } from "./Button-
|
|
1
|
+
import { cn } from "./classNames-DcGnTh2N.js";
|
|
2
|
+
import { Tooltip } from "./utils-p6tjltbX.js";
|
|
3
|
+
import { AlignCenter, AlignJustify, AlignLeft, AlignRight, Bold, ChevronDown, Code, Heading1, Heading2, Heading3, Italic, Link, List, ListOrdered, Quote, SquareCode, Strikethrough, Type, Underline } from "./icons-ZIeZXXS7.js";
|
|
4
|
+
import { Button } from "./Button-D2JqBAq7.js";
|
|
5
5
|
import { ButtonGroup } from "./internal/components/ButtonGroup.js";
|
|
6
|
-
import { DropdownMenu } from "./DropdownMenu-
|
|
6
|
+
import { DropdownMenu } from "./DropdownMenu-DtRYcKEx.js";
|
|
7
7
|
import { Label } from "./internal/components/Label.js";
|
|
8
8
|
import { useStableCallback } from "./internal/hooks/useStableCallback.js";
|
|
9
|
-
import { Popover } from "./Popover-
|
|
10
|
-
import { TextInput } from "./TextInput-
|
|
11
|
-
import { FormGroup } from "./FormGroup-
|
|
9
|
+
import { Popover } from "./Popover-BU7nGOv-.js";
|
|
10
|
+
import { TextInput } from "./TextInput-B5TDDOty.js";
|
|
11
|
+
import { FormGroup } from "./FormGroup-D4O96YPm.js";
|
|
12
|
+
import { Kbd } from "./Kbd-Du93F3o4.js";
|
|
12
13
|
import { Skeleton } from "./internal/components/Skeleton/Skeleton.js";
|
|
13
|
-
import {
|
|
14
|
-
import { toast } from "./toast-CyXEdaCZ.js";
|
|
14
|
+
import { toast } from "./toast-D6Z6MOB5.js";
|
|
15
15
|
import { Suspense, createContext, lazy, use, useCallback, useEffect, useId, useRef, useState } from "react";
|
|
16
16
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
-
import { DismissableLayer } from "@radix-ui/react-dismissable-layer";
|
|
18
17
|
import { $createCodeNode, $isCodeNode, CodeNode } from "@lexical/code";
|
|
19
18
|
import { AutoFocusPlugin } from "@lexical/react/LexicalAutoFocusPlugin";
|
|
20
19
|
import { AutoLinkPlugin } from "@lexical/react/LexicalAutoLinkPlugin";
|
|
@@ -42,6 +41,11 @@ import { $convertFromMarkdownString, $convertToMarkdownString, CHECK_LIST, TRANS
|
|
|
42
41
|
const ImageRendererContext = createContext(null);
|
|
43
42
|
const ImageRendererProvider = ImageRendererContext;
|
|
44
43
|
const useImageRenderer = () => use(ImageRendererContext);
|
|
44
|
+
const EditorLayerContext = createContext(void 0);
|
|
45
|
+
/** Takes the id `MarkdownEditor`'s blur guard matches on its toolbar's portalled layers. */
|
|
46
|
+
const EditorLayerProvider = EditorLayerContext;
|
|
47
|
+
/** Props for a layer the toolbar portals out of the editor, so its blur guard counts focus there. */
|
|
48
|
+
const useEditorLayer = () => ({ "data-editor-layer": use(EditorLayerContext) });
|
|
45
49
|
//#endregion
|
|
46
50
|
//#region src/blocks/MarkdownEditor/nodes/ImageNodeComponent.tsx
|
|
47
51
|
const isPlaceholder = (src) => src.startsWith("upload-placeholder-");
|
|
@@ -277,7 +281,7 @@ const KeyboardPlugin = ({ onSave, onCancel, singleLine, blurOnEscape, skipBlurSa
|
|
|
277
281
|
};
|
|
278
282
|
//#endregion
|
|
279
283
|
//#region src/blocks/MarkdownEditor/nodes/MermaidNodeComponent.tsx
|
|
280
|
-
const MermaidDiagram = lazy(() => import("./MermaidDiagram-
|
|
284
|
+
const MermaidDiagram = lazy(() => import("./MermaidDiagram-D2ThT8Q-.js").then((n) => n.MermaidDiagram_exports).then((m) => ({ default: m.MermaidDiagram }), (error) => {
|
|
281
285
|
console.error("[MarkdownEditor] failed to load MermaidDiagram chunk", error);
|
|
282
286
|
return { default: ({ code }) => /* @__PURE__ */ jsx("pre", { children: /* @__PURE__ */ jsx("code", { children: code }) }) };
|
|
283
287
|
}));
|
|
@@ -760,6 +764,7 @@ const TRIGGER_LABEL = "Text alignment";
|
|
|
760
764
|
const ALIGNMENT_ICONS = Object.fromEntries(ALIGNMENT_OPTIONS.map(({ value, icon }) => [value, icon]));
|
|
761
765
|
const AlignmentDropdown = ({ editor, alignment }) => {
|
|
762
766
|
const savedSelectionRef = useRef(null);
|
|
767
|
+
const editorLayer = useEditorLayer();
|
|
763
768
|
const handleOpenChange = (open) => {
|
|
764
769
|
if (open) editor.getEditorState().read(() => {
|
|
765
770
|
const selection = $getSelection();
|
|
@@ -784,11 +789,12 @@ const AlignmentDropdown = ({ editor, alignment }) => {
|
|
|
784
789
|
children: /* @__PURE__ */ jsxs("button", {
|
|
785
790
|
type: "button",
|
|
786
791
|
"aria-label": TRIGGER_LABEL,
|
|
787
|
-
className: cn("tw:flex tw:h-7 tw:cursor-pointer tw:items-center tw:gap-1 tw:rounded tw:border-0 tw:bg-transparent tw:px-1.5 tw:text-xs tw:text-muted-foreground", "tw:hover:bg-
|
|
792
|
+
className: cn("tw:flex tw:h-7 tw:cursor-pointer tw:items-center tw:gap-1 tw:rounded tw:border-0 tw:bg-transparent tw:px-1.5 tw:text-xs tw:text-muted-foreground", "tw:hover:bg-hover"),
|
|
788
793
|
children: [/* @__PURE__ */ jsx(CurrentAlignmentIcon, { className: "tw:size-4" }), /* @__PURE__ */ jsx(ChevronDown, { className: "tw:size-3" })]
|
|
789
794
|
})
|
|
790
795
|
})
|
|
791
796
|
}), /* @__PURE__ */ jsx(DropdownMenu.Content, {
|
|
797
|
+
...editorLayer,
|
|
792
798
|
align: "start",
|
|
793
799
|
className: "tw:min-w-32",
|
|
794
800
|
children: ALIGNMENT_OPTIONS.map(({ value, label, icon: IconComp }) => /* @__PURE__ */ jsxs(DropdownMenu.Item, {
|
|
@@ -851,6 +857,7 @@ const BLOCK_TYPE_OPTIONS = Object.entries(BLOCK_TYPE_META).filter(([, meta]) =>
|
|
|
851
857
|
const isBlockType = (value) => Object.prototype.hasOwnProperty.call(BLOCK_TYPE_META, value);
|
|
852
858
|
const BlockTypeDropdown = ({ editor, blockType }) => {
|
|
853
859
|
const savedSelectionRef = useRef(null);
|
|
860
|
+
const editorLayer = useEditorLayer();
|
|
854
861
|
const currentMeta = isBlockType(blockType) ? BLOCK_TYPE_META[blockType] : null;
|
|
855
862
|
const CurrentBlockIcon = currentMeta?.icon ?? Type;
|
|
856
863
|
const handleOpenChange = (open) => {
|
|
@@ -889,7 +896,7 @@ const BlockTypeDropdown = ({ editor, blockType }) => {
|
|
|
889
896
|
asChild: true,
|
|
890
897
|
children: /* @__PURE__ */ jsxs("button", {
|
|
891
898
|
type: "button",
|
|
892
|
-
className: cn("tw:flex tw:h-7 tw:cursor-pointer tw:items-center tw:gap-1.5 tw:rounded tw:border-0 tw:bg-transparent tw:px-1.5 tw:text-xs tw:text-muted-foreground", "tw:hover:bg-
|
|
899
|
+
className: cn("tw:flex tw:h-7 tw:cursor-pointer tw:items-center tw:gap-1.5 tw:rounded tw:border-0 tw:bg-transparent tw:px-1.5 tw:text-xs tw:text-muted-foreground", "tw:hover:bg-hover"),
|
|
893
900
|
children: [
|
|
894
901
|
/* @__PURE__ */ jsx(CurrentBlockIcon, { className: "tw:size-4" }),
|
|
895
902
|
currentMeta?.label ?? "Normal",
|
|
@@ -898,6 +905,7 @@ const BlockTypeDropdown = ({ editor, blockType }) => {
|
|
|
898
905
|
})
|
|
899
906
|
})
|
|
900
907
|
}), /* @__PURE__ */ jsx(DropdownMenu.Content, {
|
|
908
|
+
...editorLayer,
|
|
901
909
|
align: "start",
|
|
902
910
|
className: "tw:min-w-40",
|
|
903
911
|
children: BLOCK_TYPE_OPTIONS.map(({ value, label, icon: IconComp }) => /* @__PURE__ */ jsxs(DropdownMenu.Item, {
|
|
@@ -922,7 +930,12 @@ const MOD_KEY = IS_APPLE ? {
|
|
|
922
930
|
aria: "Control",
|
|
923
931
|
symbol: "Ctrl"
|
|
924
932
|
};
|
|
925
|
-
|
|
933
|
+
/**
|
|
934
|
+
* An icon button named by its tooltip.
|
|
935
|
+
*
|
|
936
|
+
* - Other props reach the `<button>`, so it can be a trigger; they cannot rename it.
|
|
937
|
+
*/
|
|
938
|
+
const ToolbarButton = ({ active, tooltip, shortcutKey, children, className: extraClassName, ...props }) => /* @__PURE__ */ jsx(Tooltip, {
|
|
926
939
|
tooltip: shortcutKey ? /* @__PURE__ */ jsxs("span", {
|
|
927
940
|
className: "tw:inline-flex tw:items-center tw:gap-2",
|
|
928
941
|
children: [tooltip, /* @__PURE__ */ jsxs(Kbd.Group, {
|
|
@@ -941,16 +954,16 @@ const ToolbarButton = ({ active, disabled, onClick, tooltip, shortcutKey, childr
|
|
|
941
954
|
triggerAsChild: true,
|
|
942
955
|
children: /* @__PURE__ */ jsx("button", {
|
|
943
956
|
type: "button",
|
|
957
|
+
...props,
|
|
944
958
|
"aria-label": tooltip,
|
|
945
959
|
"aria-keyshortcuts": shortcutKey ? `${MOD_KEY.aria}+${shortcutKey}` : void 0,
|
|
946
|
-
disabled,
|
|
947
|
-
onClick,
|
|
948
|
-
className: cn("tw:flex tw:h-7 tw:min-w-7 tw:cursor-pointer tw:items-center tw:justify-center tw:rounded tw:border-0 tw:bg-transparent tw:px-1 tw:text-xs tw:text-muted-foreground", "tw:hover:bg-accent tw:disabled:cursor-not-allowed tw:disabled:opacity-30", active && "tw:bg-secondary-100 tw:text-secondary-500", extraClassName),
|
|
960
|
+
className: cn("tw:flex tw:h-7 tw:min-w-7 tw:cursor-pointer tw:items-center tw:justify-center tw:rounded tw:border-0 tw:bg-transparent tw:px-1 tw:text-xs tw:text-muted-foreground", "tw:hover:bg-hover tw:disabled:cursor-not-allowed tw:disabled:opacity-30", active && "tw:bg-secondary-100 tw:text-secondary-500", extraClassName),
|
|
949
961
|
children
|
|
950
962
|
})
|
|
951
963
|
});
|
|
952
964
|
//#endregion
|
|
953
965
|
//#region src/blocks/MarkdownEditor/plugins/toolbar/LinkPanel.tsx
|
|
966
|
+
const PANEL_NAME = "Insert Link";
|
|
954
967
|
const insertLink = (editor, url, label, savedSelection) => {
|
|
955
968
|
editor.update(() => {
|
|
956
969
|
$setSelection(savedSelection);
|
|
@@ -969,13 +982,25 @@ const insertLink = (editor, url, label, savedSelection) => {
|
|
|
969
982
|
});
|
|
970
983
|
};
|
|
971
984
|
const LinkPanel = ({ editor, isLink }) => {
|
|
985
|
+
const editorLayer = useEditorLayer();
|
|
972
986
|
const [open, setOpen] = useState(false);
|
|
973
987
|
const [url, setUrl] = useState("");
|
|
974
988
|
const [label, setLabel] = useState("");
|
|
975
989
|
const savedSelectionRef = useRef(null);
|
|
976
990
|
const panelRef = useRef(null);
|
|
991
|
+
const labelRef = useRef(null);
|
|
977
992
|
const labelId = useId();
|
|
978
993
|
const urlId = useId();
|
|
994
|
+
/**
|
|
995
|
+
* Focuses and selects the Label field on every open.
|
|
996
|
+
*
|
|
997
|
+
* - `FocusScope` does it only on mount, and a reopen during the exit animation reuses the panel.
|
|
998
|
+
*/
|
|
999
|
+
useEffect(() => {
|
|
1000
|
+
if (!open) return;
|
|
1001
|
+
labelRef.current?.focus({ preventScroll: true });
|
|
1002
|
+
labelRef.current?.select();
|
|
1003
|
+
}, [open]);
|
|
979
1004
|
const handleOpen = () => {
|
|
980
1005
|
editor.getEditorState().read(() => {
|
|
981
1006
|
const selection = $getSelection();
|
|
@@ -998,14 +1023,14 @@ const LinkPanel = ({ editor, isLink }) => {
|
|
|
998
1023
|
editor.focus();
|
|
999
1024
|
};
|
|
1000
1025
|
/**
|
|
1001
|
-
*
|
|
1026
|
+
* Opens the panel, or closes it however Radix asks: Escape, its button again, an outside click.
|
|
1002
1027
|
*
|
|
1003
|
-
* -
|
|
1004
|
-
* - Focus
|
|
1028
|
+
* - Focus still in the panel (Escape, or the button, which leaves focus put): the editor takes it.
|
|
1029
|
+
* - Focus already elsewhere (an outside click or focus): it stays there.
|
|
1005
1030
|
*/
|
|
1006
|
-
const
|
|
1007
|
-
|
|
1008
|
-
if (panelRef.current?.contains(document.activeElement)) handleClose();
|
|
1031
|
+
const handleOpenChange = (next) => {
|
|
1032
|
+
if (next) handleOpen();
|
|
1033
|
+
else if (panelRef.current?.contains(document.activeElement)) handleClose();
|
|
1009
1034
|
else resetPanel();
|
|
1010
1035
|
};
|
|
1011
1036
|
const handleSubmit = () => {
|
|
@@ -1026,58 +1051,62 @@ const LinkPanel = ({ editor, isLink }) => {
|
|
|
1026
1051
|
tooltip: "Remove Link",
|
|
1027
1052
|
children: /* @__PURE__ */ jsx(Link, { className: "tw:size-4" })
|
|
1028
1053
|
});
|
|
1029
|
-
return /* @__PURE__ */ jsxs(
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
onEscapeKeyDown: handleEscape,
|
|
1039
|
-
className: "tw:absolute tw:left-0 tw:top-full tw:z-50 tw:mt-1 tw:w-80 tw:rounded-md tw:border tw:border-border tw:bg-popover tw:p-3 tw:text-popover-foreground tw:shadow-lg",
|
|
1040
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
1041
|
-
className: "tw:flex tw:flex-col tw:gap-2",
|
|
1042
|
-
children: [
|
|
1043
|
-
/* @__PURE__ */ jsxs(FormGroup, { children: [/* @__PURE__ */ jsx(Label, {
|
|
1044
|
-
htmlFor: labelId,
|
|
1045
|
-
className: "tw:mb-1 tw:text-xs",
|
|
1046
|
-
children: "Label"
|
|
1047
|
-
}), /* @__PURE__ */ jsx(TextInput, {
|
|
1048
|
-
id: labelId,
|
|
1049
|
-
autoFocus: true,
|
|
1050
|
-
placeholder: "Link text",
|
|
1051
|
-
value: label,
|
|
1052
|
-
onValueChange: setLabel,
|
|
1053
|
-
onKeyDown: handleKeyDown,
|
|
1054
|
-
variant: "secondary"
|
|
1055
|
-
})] }),
|
|
1056
|
-
/* @__PURE__ */ jsxs(FormGroup, { children: [/* @__PURE__ */ jsx(Label, {
|
|
1057
|
-
htmlFor: urlId,
|
|
1058
|
-
className: "tw:mb-1 tw:text-xs",
|
|
1059
|
-
children: "URL"
|
|
1060
|
-
}), /* @__PURE__ */ jsx(TextInput, {
|
|
1061
|
-
id: urlId,
|
|
1062
|
-
placeholder: "https://…",
|
|
1063
|
-
value: url,
|
|
1064
|
-
onValueChange: setUrl,
|
|
1065
|
-
onKeyDown: handleKeyDown,
|
|
1066
|
-
variant: "secondary"
|
|
1067
|
-
})] }),
|
|
1068
|
-
/* @__PURE__ */ jsxs(ButtonGroup, { children: [/* @__PURE__ */ jsx(Button, {
|
|
1069
|
-
size: "small",
|
|
1070
|
-
variant: "outline",
|
|
1071
|
-
onClick: handleClose,
|
|
1072
|
-
children: "Cancel"
|
|
1073
|
-
}), /* @__PURE__ */ jsx(Button, {
|
|
1074
|
-
size: "small",
|
|
1075
|
-
onClick: handleSubmit,
|
|
1076
|
-
disabled: !url.trim(),
|
|
1077
|
-
children: "Add link"
|
|
1078
|
-
})] })
|
|
1079
|
-
]
|
|
1054
|
+
return /* @__PURE__ */ jsxs(Popover, {
|
|
1055
|
+
open,
|
|
1056
|
+
onOpenChange: handleOpenChange,
|
|
1057
|
+
children: [/* @__PURE__ */ jsx(Popover.Trigger, {
|
|
1058
|
+
asChild: true,
|
|
1059
|
+
children: /* @__PURE__ */ jsx(ToolbarButton, {
|
|
1060
|
+
active: open,
|
|
1061
|
+
tooltip: PANEL_NAME,
|
|
1062
|
+
children: /* @__PURE__ */ jsx(Link, { className: "tw:size-4" })
|
|
1080
1063
|
})
|
|
1064
|
+
}), /* @__PURE__ */ jsxs(Popover.Content, {
|
|
1065
|
+
ref: panelRef,
|
|
1066
|
+
"aria-label": PANEL_NAME,
|
|
1067
|
+
...editorLayer,
|
|
1068
|
+
align: "start",
|
|
1069
|
+
collisionPadding: 8,
|
|
1070
|
+
onCloseAutoFocus: (event) => event.preventDefault(),
|
|
1071
|
+
className: "tw:w-80 tw:max-w-[calc(100vw-1rem)] tw:gap-2 tw:p-3",
|
|
1072
|
+
children: [
|
|
1073
|
+
/* @__PURE__ */ jsxs(FormGroup, { children: [/* @__PURE__ */ jsx(Label, {
|
|
1074
|
+
htmlFor: labelId,
|
|
1075
|
+
className: "tw:mb-1 tw:text-xs",
|
|
1076
|
+
children: "Label"
|
|
1077
|
+
}), /* @__PURE__ */ jsx(TextInput, {
|
|
1078
|
+
ref: labelRef,
|
|
1079
|
+
id: labelId,
|
|
1080
|
+
placeholder: "Link text",
|
|
1081
|
+
value: label,
|
|
1082
|
+
onValueChange: setLabel,
|
|
1083
|
+
onKeyDown: handleKeyDown,
|
|
1084
|
+
variant: "secondary"
|
|
1085
|
+
})] }),
|
|
1086
|
+
/* @__PURE__ */ jsxs(FormGroup, { children: [/* @__PURE__ */ jsx(Label, {
|
|
1087
|
+
htmlFor: urlId,
|
|
1088
|
+
className: "tw:mb-1 tw:text-xs",
|
|
1089
|
+
children: "URL"
|
|
1090
|
+
}), /* @__PURE__ */ jsx(TextInput, {
|
|
1091
|
+
id: urlId,
|
|
1092
|
+
placeholder: "https://…",
|
|
1093
|
+
value: url,
|
|
1094
|
+
onValueChange: setUrl,
|
|
1095
|
+
onKeyDown: handleKeyDown,
|
|
1096
|
+
variant: "secondary"
|
|
1097
|
+
})] }),
|
|
1098
|
+
/* @__PURE__ */ jsxs(ButtonGroup, { children: [/* @__PURE__ */ jsx(Button, {
|
|
1099
|
+
size: "small",
|
|
1100
|
+
variant: "outline",
|
|
1101
|
+
onClick: handleClose,
|
|
1102
|
+
children: "Cancel"
|
|
1103
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
1104
|
+
size: "small",
|
|
1105
|
+
onClick: handleSubmit,
|
|
1106
|
+
disabled: !url.trim(),
|
|
1107
|
+
children: "Add link"
|
|
1108
|
+
})] })
|
|
1109
|
+
]
|
|
1081
1110
|
})]
|
|
1082
1111
|
});
|
|
1083
1112
|
};
|
|
@@ -1103,6 +1132,7 @@ const hasFocus = (element) => !!element?.contains(document.activeElement);
|
|
|
1103
1132
|
* Keeps focus, and the editor selection with it, where it was when a toolbar control is pressed.
|
|
1104
1133
|
*
|
|
1105
1134
|
* - A link panel field takes focus as usual, so a click there lands the caret in it.
|
|
1135
|
+
* - The link panel is portalled, but React bubbles its events up here all the same.
|
|
1106
1136
|
*/
|
|
1107
1137
|
const keepEditorFocus = (event) => {
|
|
1108
1138
|
if (event.target instanceof HTMLInputElement) return;
|
|
@@ -1110,6 +1140,7 @@ const keepEditorFocus = (event) => {
|
|
|
1110
1140
|
};
|
|
1111
1141
|
const ToolbarPlugin = ({ mode = "floating" }) => {
|
|
1112
1142
|
const [editor] = useLexicalComposerContext();
|
|
1143
|
+
const editorLayer = useEditorLayer();
|
|
1113
1144
|
const [isBold, setIsBold] = useState(false);
|
|
1114
1145
|
const [isItalic, setIsItalic] = useState(false);
|
|
1115
1146
|
const [isUnderline, setIsUnderline] = useState(false);
|
|
@@ -1364,6 +1395,7 @@ const ToolbarPlugin = ({ mode = "floating" }) => {
|
|
|
1364
1395
|
return /* @__PURE__ */ jsxs(Popover, {
|
|
1365
1396
|
open: true,
|
|
1366
1397
|
children: [/* @__PURE__ */ jsx(Popover.Anchor, { virtualRef: { current: anchor } }), /* @__PURE__ */ jsx(Popover.Content, {
|
|
1398
|
+
...editorLayer,
|
|
1367
1399
|
ref: toolbarRef,
|
|
1368
1400
|
role: "toolbar",
|
|
1369
1401
|
"aria-label": "Formatting options",
|
|
@@ -1375,7 +1407,7 @@ const ToolbarPlugin = ({ mode = "floating" }) => {
|
|
|
1375
1407
|
onEscapeKeyDown: handleEscape,
|
|
1376
1408
|
onInteractOutside: handleInteractOutside,
|
|
1377
1409
|
onMouseDown: keepEditorFocus,
|
|
1378
|
-
className: cn(TOOLBAR_BASE_CLASS, "tw:flex-row
|
|
1410
|
+
className: cn(TOOLBAR_BASE_CLASS, "tw:flex-row"),
|
|
1379
1411
|
children: buttons
|
|
1380
1412
|
})]
|
|
1381
1413
|
});
|
|
@@ -1401,6 +1433,7 @@ const editorTheme = {
|
|
|
1401
1433
|
ol: "tw:!list-decimal",
|
|
1402
1434
|
ul: "tw:!list-disc",
|
|
1403
1435
|
checklist: "tw:!list-none tw:!pl-0",
|
|
1436
|
+
nested: { listitem: "tw:list-none tw:before:hidden tw:after:hidden" },
|
|
1404
1437
|
listitemChecked: [
|
|
1405
1438
|
"tw:relative tw:!pl-6 tw:list-none tw:outline-hidden tw:line-through tw:text-muted-foreground",
|
|
1406
1439
|
"tw:before:content-[\"\"] tw:before:absolute tw:before:left-0 tw:before:top-[3px]",
|
|
@@ -1444,12 +1477,14 @@ const MarkdownEditor = ({ value, onChange, readOnly = false, placeholder, autoFo
|
|
|
1444
1477
|
}
|
|
1445
1478
|
}));
|
|
1446
1479
|
const skipBlurSaveRef = useRef(false);
|
|
1480
|
+
const layerId = useId();
|
|
1447
1481
|
const handleBlur = saveOnBlur && onSave ? (event) => {
|
|
1448
1482
|
if (skipBlurSaveRef.current) {
|
|
1449
1483
|
skipBlurSaveRef.current = false;
|
|
1450
1484
|
return;
|
|
1451
1485
|
}
|
|
1452
|
-
|
|
1486
|
+
const next = event.relatedTarget;
|
|
1487
|
+
if (!event.currentTarget.contains(next) && !next?.closest(`[data-editor-layer="${layerId}"]`)) onSave();
|
|
1453
1488
|
} : void 0;
|
|
1454
1489
|
return /* @__PURE__ */ jsx(LexicalComposer, {
|
|
1455
1490
|
initialConfig,
|
|
@@ -1459,7 +1494,10 @@ const MarkdownEditor = ({ value, onChange, readOnly = false, placeholder, autoFo
|
|
|
1459
1494
|
className: cn(!compact && "tw:prose", compact && "tw:[&_p]:m-0 tw:[&_p+p]:mt-2", clampDisplay && "tw:[&:not(:focus-within)]:line-clamp-2", className),
|
|
1460
1495
|
onBlur: handleBlur,
|
|
1461
1496
|
children: [
|
|
1462
|
-
showToolbar && editable && /* @__PURE__ */ jsx(
|
|
1497
|
+
showToolbar && editable && /* @__PURE__ */ jsx(EditorLayerProvider, {
|
|
1498
|
+
value: layerId,
|
|
1499
|
+
children: /* @__PURE__ */ jsx(ToolbarPlugin, { mode: toolbarMode })
|
|
1500
|
+
}),
|
|
1463
1501
|
/* @__PURE__ */ jsx("div", {
|
|
1464
1502
|
className: cn("tw:relative tw:rounded-md tw:transition-colors", contentPadding, compact && "tw:-mx-1.5 tw:-my-0.5", editable && "tw:cursor-text tw:hover:bg-muted tw:focus-within:ring-2 tw:focus-within:ring-ring/40"),
|
|
1465
1503
|
children: /* @__PURE__ */ jsx(RichTextPlugin, {
|