@@ -14,7 +15,8 @@ const TipsDialog = observer(({ content, onConfirm }: any) => {
})
-export const showTipsDialog = async (props: { title: string, content: string, onConfirm }) => {
- RootStore.Get(DialogStore).setData({
+export const showTipsDialog = async (props: { title: string, content: string, onConfirm, onCancel?: any }) => {
+ RootStore.Get(DialogStandaloneStore).setData({
isOpen: true,
onlyContent: false,
size: 'xl',
@@ -33,7 +35,7 @@ export const showTipsDialog = async (props: { title: string, content: string, on
})
}
-export const TipsPopover = observer((props: { children: React.ReactNode, content, onConfirm, isLoading?: boolean }) => {
+export const TipsPopover = observer((props: { children: React.ReactNode, content, onConfirm, onCancel?, isLoading?: boolean }) => {
const { t } = useTranslation()
const { isLoading = false } = props
return
@@ -43,13 +45,14 @@ export const TipsPopover = observer((props: { children: React.ReactNode, content
-
{props.content}
+
{props.content}
-
- {
+ } isLoading={isLoading} className="w-1/2" size="sm" color='danger' onPress={async e => {
props.onConfirm?.()
}}>{t('confirm')}
diff --git a/src/components/Layout/index.tsx b/src/components/Layout/index.tsx
index f0d1724b..1e45e292 100644
--- a/src/components/Layout/index.tsx
+++ b/src/components/Layout/index.tsx
@@ -24,6 +24,7 @@ import { createPortal } from "react-dom";
import { Sidebar } from "./Sidebar";
import { MobileNavBar } from "./MobileNavBar";
import FilterPop from "../Common/PopoverFloat/filterPop";
+import { AppProvider } from "@/store/module/AppProvider";
export const SideBarItem = "p-2 flex flex-row items-center cursor-pointer gap-2 hover:bg-hover rounded-xl transition-all"
@@ -79,6 +80,7 @@ export const CommonLayout = observer(({
return (
{blinkoStore.showAi && createPortal(
, document.body)}
+
@@ -174,9 +176,9 @@ export const CommonLayout = observer(({
{header}
- {/* backdrop */}
-
-
{ }} className="flex h-[calc(100%_-_70px)] overflow-y-scroll scroll-container">
+ {/* backdrop pt-6 -mt-6 to fix the editor tooltip position */}
+
+ { }} className="flex h-[calc(100%_-_70px)] overflow-y-scroll pt-6 -mt-6">
{children}
diff --git a/src/lib/hooks.ts b/src/lib/hooks.ts
index 46c5de9a..1377ccb7 100644
--- a/src/lib/hooks.ts
+++ b/src/lib/hooks.ts
@@ -1,28 +1,30 @@
import { useEffect, useState } from "react";
import { helper } from "./helper";
+export const handlePaste = (event) => {
+ //@ts-ignore
+ const clipboardData = event.clipboardData || window.clipboardData;
+ const items = clipboardData.items;
+ let files = [];
+
+ for (let i = 0; i < items.length; i++) {
+ if (items[i].kind === "file") {
+ const file = items[i].getAsFile();
+ //@ts-ignore
+ files.push(file);
+ }
+ }
+
+ if (files.length > 0) {
+ return files
+ }
+};
+
const usePasteFile = (targetRef) => {
const [pastedFiles, setPastedFiles] = useState([]);
useEffect(() => {
- const handlePaste = (event) => {
- //@ts-ignore
- const clipboardData = event.clipboardData || window.clipboardData;
- const items = clipboardData.items;
- let files = [];
-
- for (let i = 0; i < items.length; i++) {
- if (items[i].kind === "file") {
- const file = items[i].getAsFile();
- //@ts-ignore
- files.push(file);
- }
- }
- if (files.length > 0) {
- setPastedFiles(files);
- }
- };
const targetElement = targetRef.current;
@@ -42,21 +44,21 @@ const usePasteFile = (targetRef) => {
interface HistoryBackProps {
- state: boolean;
- onStateChange: () => void;
+ state: boolean;
+ onStateChange: () => void;
historyState: T;
}
-export const useHistoryBack = ({
- state,
- onStateChange,
- historyState
+export const useHistoryBack = ({
+ state,
+ onStateChange,
+ historyState
}: HistoryBackProps) => {
useEffect(() => {
if (state) {
history.pushState({ [historyState]: true }, '');
}
-
+
const handlePopState = () => {
if (state) {
onStateChange();
@@ -78,6 +80,6 @@ export const useIsIOS = () => {
return isIOS;
};
-export {usePasteFile};
+export { usePasteFile };
diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx
index 406eac35..c3fe420d 100644
--- a/src/pages/_app.tsx
+++ b/src/pages/_app.tsx
@@ -34,7 +34,6 @@ const MyApp = ({ Component, pageProps }) => {
}}
/>
-
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index bc7f1667..482b3dda 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -18,7 +18,7 @@ const Home = observer(() => {
const blinko = RootStore.Get(BlinkoStore)
blinko.useQuery(useRouter())
const store = RootStore.Local(() => ({
- editorHeight: 65,
+ editorHeight: 30,
get showEditor() {
return !blinko.noteListFilterConfig.isArchived && !blinko.noteListFilterConfig.isRecycle
},
@@ -51,7 +51,7 @@ const Home = observer(() => {
{
!blinko.noteList.isEmpty && blinko.onBottom()}
- style={{ height: store.showEditor ? `calc(100% - ${(isPc ? 40 : 0) + (isPc ? store.editorHeight : 1)}px)` : '100%' }}
+ style={{ height: store.showEditor ? `calc(100% - ${(isPc ? store.editorHeight : 1)}px)` : '100%' }}
className={`px-2 mt-0 md:mt-4 md:px-6 w-full h-full transition-all scroll-area`}>
{}[\]|`*-_.])/g, '$1');
- }
+ // if (content != null) {
+ // content = content?.replace(/ /g, ' ')?.replace(/ \\/g, '')?.replace(/\\([#<>{}[\]|`*-_.])/g, '$1');
+ // }
const tagTree = helper.buildHashTagTreeFromHashString(extractHashtags(content?.replace(/\\/g, '') + ' '))
let newTags: Prisma.tagCreateManyInput[] = []
const handleAddTags = async (tagTree: TagTreeNode[], parentTag: Prisma.tagCreateManyInput | undefined, noteId?: number) => {
diff --git a/src/store/aiStore.tsx b/src/store/aiStore.tsx
index 41f1a453..436749a5 100644
--- a/src/store/aiStore.tsx
+++ b/src/store/aiStore.tsx
@@ -197,13 +197,11 @@ export class AiStore implements Store {
eventBus.emit('editor:clear')
}
this.writingResponseText = ''
- // eventBus.emit('editor:setMarkdownLoading', true)
const res = await streamApi.ai.writing.mutate({
question: this.writeQuestion,
type: writeType,
content
}, { signal: this.abortController.signal })
- // eventBus.emit('editor:setMarkdownLoading', false)
for await (const item of res) {
// eventBus.emit('editor:insert', item.content)
this.writingResponseText += item.content
diff --git a/src/store/blinkoStore.tsx b/src/store/blinkoStore.tsx
index 5c8c3afc..0b6dabd0 100644
--- a/src/store/blinkoStore.tsx
+++ b/src/store/blinkoStore.tsx
@@ -279,7 +279,6 @@ export class BlinkoStore implements Store {
@action
setExcludeEmbeddingTagId(tagId: number | null) {
this.excludeEmbeddingTagId = tagId;
- // 可能需要保存到本地存储或发送到服务器
}
constructor() {
diff --git a/src/store/user.ts b/src/store/user.ts
index 433b4be4..1e406648 100644
--- a/src/store/user.ts
+++ b/src/store/user.ts
@@ -24,6 +24,7 @@ export class UserStore implements User, Store {
image?: string = '';
token: string = '';
role: string = '';
+ theme: any = 'light';
wait() {
return new Promise((res, rej) => {
@@ -98,6 +99,7 @@ export class UserStore implements User, Store {
useEffect(() => {
this.updatePWAColor(theme ?? 'light');
+ this.theme = theme
}, [theme]);
useEffect(() => {
@@ -111,7 +113,7 @@ export class UserStore implements User, Store {
}, [session]);
useEffect(() => {
- if(!this.isLogin) return
+ if (!this.isLogin) return
this.setupUserPreferences(setTheme, i18n);
}, [this.isLogin]);
diff --git a/src/styles/editor.css b/src/styles/editor.css
deleted file mode 100644
index 57af02e9..00000000
--- a/src/styles/editor.css
+++ /dev/null
@@ -1,383 +0,0 @@
-.ͼo {
- background-color: transparent;
-}
-
-.ͼ1 .cm-scroller {
- font-family: system-ui;
-}
-
-.prose :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
- color: #0969da;
-}
-
-
-._linkDialogPopoverContent_uazmk_600,
-._tableColumnEditorPopoverContent_uazmk_601,
-._dialogContent_uazmk_602 {
- background-color: var(--background);
-}
-
-
-._contentEditable_uazmk_379 {
- max-height: 60vh;
- overflow-y: scroll;
- color: var(--foreground);
- padding: 0;
- padding-left: 5px;
-}
-
-.mdxeditor-source-editor {
- max-height: 60vh;
- overflow-y: scroll;
-}
-
-.prose :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)),
-.prose :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)),
-.prose :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)),
-.prose :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)),
-.prose :where(h5):not(:where([class~="not-prose"], [class~="not-prose"] *)),
-.prose :where(h6):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
- color: var(--foreground);
-}
-
-.prose :where(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
- color: var(--foreground);
-}
-
-.ͼ1x {
- background-color: var(--background);
- color: var(--foreground);
- height: 100%;
-}
-
-._codeMirrorToolbar_uazmk_408 {
- background-color: transparent;
-}
-
-._codeMirrorWrapper_uazmk_391 {
- border-color: var(--hover);
-}
-
-._selectWithLabel_uazmk_1002 label {
- display: none;
-}
-
-._placeholder_uazmk_1084 p {
- margin-left: 5px;
-}
-
-.ͼo {
- color: var(--foreground);
-}
-
-.ͼo .cm-activeLineGutter {
- background-color: var(--sencondbackground);
-}
-
-div[id^="radix-"][role="dialog"] {
- display: flex;
- /* flex-direction: column; */
- padding-top: 10px;
- border: 2px solid var(--sencondbackground);
-}
-
-div[id^="radix-"][role="dialog"] h2 {
- display: none;
-}
-
-._actionButton_uazmk_694 {
- color: var(--foreground);
- cursor: pointer;
-}
-
-._actionButton_uazmk_694:hover {
- background-color: var(--sencondbackground);
- transition: all 0.2s ease-in-out;
-}
-
-
-
-
-._dialogContent_uazmk_602 {
- border-radius: 16px;
- filter: unset;
-}
-
-._imageWrapper_uazmk_922 img {
- border-radius: 16px;
-}
-
-._imageResizer_uazmk_1027 {
- border-radius: 2px;
- background-color: var(--desc);
-}
-
-._editImageToolbar_uazmk_935 {
- background-color: transparent;
-}
-
-._primaryButton_uazmk_506,
-._secondaryButton_uazmk_507 {
- background-color: var(--primary);
- color: var(--primary-foreground);
- border-radius: 12px;
- cursor: pointer;
- border: none;
- transition: all 0.2s ease-in-out;
-}
-
-._primaryButton_uazmk_506,
-._secondaryButton_uazmk_507:hover {
- transition: all 0.2s ease-in-out;
- opacity: 0.8;
-}
-
-
-
-/* [id^="radix-"]:not(._selectItem_uazmk_300 [id^="radix-"]),
-[id^="radix-"]:not(._dialogContent_uazmk_602 [id^="radix-"]){
- display: none;
-} */
-#radix-\:r1dv\: {
- display: flex;
- flex-direction: column;
- gap: 10px;
-}
-
-._textInput_uazmk_1186 {
- border: none;
- background-color: var(--sencondbackground);
- border-radius: 12px;
-}
-
-#radix-\:rc2\: {
- background-color: var(--background);
- color: var(--foreground);
-}
-
-#radix-\:rm\: {
- display: flex;
- flex-direction: column;
- padding: 10px;
-}
-
-._selectItem_uazmk_300 {
- background-color: var(--background);
- color: var(--foreground);
- cursor: pointer;
- transition: all 0.2s ease-in-out;
- /* height: 30px ;00 */
- padding-top: 2px;
- padding-bottom: 2px;
- padding-left: 10px;
- padding-right: 10px;
-}
-
-
-._code_1tncs_52 {
- background-color: var(--background);
- color: var(--foreground);
-}
-
-#cm-ac-czkr li {
- background-color: var(--background);
- color: var(--foreground);
-}
-
-#cm-ac-czkr li[aria-selected="true"] {
- background-color: var(--foreground);
- color: var(--background);
-}
-
-._selectItem_uazmk_300:hover {
- background-color: var(--sencondbackground);
- transition: all 0.2s ease-in-out;
-}
-
-#radix-\:r4q\: {
- color: var(--foreground);
- display: block;
-}
-
-/* ._codeMirrorToolbar_uazmk_408 {
- background-color: transparent ;
-} */
-
-._toolbarNodeKindSelectTrigger_uazmk_305,
-._toolbarButtonSelectTrigger_uazmk_306,
-._selectTrigger_uazmk_307 {
- background-color: var(--background);
- color: var(--foreground);
-}
-
-@media (hover: hover) {
-
- ._toolbarToggleItem_uazmk_206:hover,
- ._toolbarButton_uazmk_237:hover {
- background-color: var(--sencondbackground);
- }
-}
-
-.mdxeditor-toolbar {
- background-color: transparent;
- padding: 0;
-}
-
-.mdxeditor-toolbar svg {
- width: 20px;
- height: 20px;
- cursor: pointer;
- color: var(--foreground);
-}
-
-.mdxeditor-toolbar .blinko {
- color: #EAB308;
-}
-
-.mdxeditor-toolbar .note {
- color: #3B82F6;
-}
-
-.mdxeditor-toolbar .white {
- color: white;
-}
-
-.mdxeditor-toolbar .green {
- color: var(--green-500);
-}
-
-.mdxeditor-toolbar .red {
- color: var(--red-500);
-}
-
-._toolbarToggleItem_uazmk_206[data-state=on],
-._toolbarButton_uazmk_237[data-state=on],
-._toolbarToggleItem_uazmk_206:active,
-._toolbarButton_uazmk_237:active {
- background-color: var(--sencondbackground);
-
-}
-
-.mdxeditor-toolbar .custom-svg {
- width: 18px;
- height: 18px;
- cursor: pointer;
-}
-
-
-.mdxeditor-root-contenteditable>div:first-of-type {
- padding: 0;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-._popupContainer_uazmk_1220 {
- position: relative;
- z-index: 99;
-}
-
-.mdxeditor {
- display: flex;
- flex-direction: column;
- /* flex-direction: column-reverse; */
-}
-
-._toolbarNodeKindSelectTrigger_uazmk_305,
-._toolbarButtonSelectTrigger_uazmk_306,
-._selectTrigger_uazmk_307 {
- width: 80px;
-}
-
-._toolbarNodeKindSelectContainer_uazmk_284,
-._toolbarButtonDropdownContainer_uazmk_285,
-._toolbarCodeBlockLanguageSelectContent_uazmk_286,
-._selectContainer_uazmk_287 {
- background-color: transparent;
-}
-
-.mdxeditor-diff-source-wrapper {
- margin-top: 5px;
-}
-
-._toolbarNodeKindSelectTrigger_uazmk_305,
-._toolbarButtonSelectTrigger_uazmk_306,
-._selectTrigger_uazmk_307 {
- background-color: transparent;
-}
-
-[data-radix-select-viewport] {
- border-radius: 12px;
-}
-
-.prose {
- max-width: 100%;
-}
-
-.prose li[role=checkbox] {
- text-indent: 2rem;
-}
-
-.prose li[role=checkbox]:before {
- transform: translate(6px, 6px);
-}
-
-.prose li[role=checkbox]:after {
- transform: translate(6px, 6px) rotate(45deg);
-}
-
-.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
- margin-top: 0;
- margin-bottom: 0.75em;
-}
-
-.prose :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
- color: var(--foreground);
-}
-
-.blinko-toolbaricon {
- color: rgb(234 179 8 / var(--tw-text-opacity));
-}
-
-.note-toolbaricon {
- color: rgb(59 130 246 / var(--tw-text-opacity));
-}
-
-.prose :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
- list-style-type: disc;
- padding-inline-start: 15px;
- margin-bottom: 0;
- margin-top: 0;
-}
-
-.prose :where(ol):not(:where([class~=not-prose], [class~=not-prose] *)) {
- list-style-type: decimal !important;
- padding-inline-start: 15px;
- margin-bottom: 0;
- margin-top: 0;
-}
-
-.prose :where(.prose > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
- margin-top: 0;
-}
-
-.prose :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
- margin-top: 1px;
- margin-bottom: 1px;
-}
-
-.prose :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
- padding-inline-start: 0;
-}
-
-.prose ul>li {
- margin: 0;
-}
-
-.prose ol>li {
- margin: 0;
-}
-
-.audio-recorder {
- box-shadow: none;
- background-color: transparent;
-}
\ No newline at end of file
diff --git a/src/styles/github-markdown.css b/src/styles/github-markdown.css
index 1f2f2388..5fae622e 100644
--- a/src/styles/github-markdown.css
+++ b/src/styles/github-markdown.css
@@ -520,7 +520,7 @@ ol {
padding: 2px 1em;
color: var(--foreground);
background-color: var(--sencondbackground);
- border-left: .25em solid #7A1CAC;
+ border-left: .25em solid #EAB308;
}
.markdown-body ul,
diff --git a/src/styles/globals.css b/src/styles/globals.css
index 814256ee..073ad1fc 100644
--- a/src/styles/globals.css
+++ b/src/styles/globals.css
@@ -114,7 +114,7 @@ body {
background-color: var(--sencondbackground) !important;
}
-.PhotoView-Portal{
+.PhotoView-Portal {
z-index: 3000;
}
@@ -188,7 +188,7 @@ body {
--md-editor-text: hsl(222.2 47.4% 11.2%);
--md-editor-separator: #bcbcbe;
--md-editor-border: #e5e7eb;
- --shadow: 0 0 20px rgb(195 195 195 / 36%)
+ --shadow: 1px 1px 7px 3px #b1b1b142;
}
.dark {
@@ -241,7 +241,7 @@ body {
--md-editor-text: hsl(210 40% 98%);
--md-editor-separator: #4b4b4d;
--md-editor-border: #27272a;
- --shadow: 0
+ --shadow: 0 0 1px 1px #303030;
}
}
@@ -289,7 +289,7 @@ body {
border-radius: 0.5rem;
}
-.markmap-foreign{
+.markmap-foreign {
color: var(--foreground);
}
@@ -302,3 +302,6 @@ body {
background: var(--sencondbackground);
}
+.group[data-focus-visible="true"] .group-data-\[focus-visible\=true\]\:ring-2 {
+ --tw-ring-shadow: 0!important;
+}
\ No newline at end of file
diff --git a/src/styles/vditor.css b/src/styles/vditor.css
new file mode 100644
index 00000000..336df35d
--- /dev/null
+++ b/src/styles/vditor.css
@@ -0,0 +1,230 @@
+.vditor {
+ border: none;
+}
+
+.vditor-content {
+ min-height: 20px;
+}
+
+@media screen and (max-width: 520px) {
+ .vditor-toolbar__item {
+ padding: 0 !important;
+ }
+}
+
+.vditor a {
+ color: #C35AF7;
+ font-weight: 700;
+}
+
+.vditor-wysiwyg pre.vditor-reset {}
+
+.vditor-toolbar {
+ padding: 0;
+ padding-left: 4px !important;
+ background-color: transparent;
+ border: none;
+ overflow: visible;
+ height: 25px;
+}
+.vditor-toolbar--hide{
+ display: none;
+}
+.vditor-counter{
+ background-color: var(--background);
+ color: var(--foreground);
+}
+.vditor-reset {
+ padding: 0;
+ padding-left: 10px !important;
+ padding-right: 10px !important;
+ background-color: transparent;
+ color: var(--foreground);
+ max-height: 80vh;
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
+.vditor-reset p {
+ margin-bottom: 8px;
+}
+
+.vditor-reset code:not(.hljs):not(.highlight-chroma) {
+ background-color: var(--background);
+ padding-left: 4px !important;
+ padding-right: 4px !important;
+}
+
+.vditor-reset pre>code {
+ border-radius: 8px;
+}
+
+.vditor-reset:focus {
+ background-color: transparent !important;
+}
+
+.vditor-wysiwyg pre.vditor-reset {
+ background-color: transparent;
+ color: var(--foreground);
+}
+
+.vditor-task input {
+ width: 16px;
+ height: 16px;
+
+ appearance: none;
+ border: 2px solid #EAB308;
+ border-radius: 50%;
+
+ margin-right: 8px;
+ vertical-align: middle;
+ cursor: pointer;
+}
+
+.vditor-task input:checked {
+ background-color: #EAB308;
+ border-color: #EAB308;
+ position: relative;
+}
+
+.vditor-task input:checked::after {
+ content: '';
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ width: 8px;
+ height: 8px;
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z'/%3E%3C/svg%3E");
+ background-size: contain;
+ background-repeat: no-repeat;
+ background-position: center;
+}
+
+.vditor-toolbar__item .vditor-tooltipped {
+ padding: 0;
+ color: var(--foreground);
+ border-radius: 8px;
+ transition: all 0.3s;
+ width: 25px;
+ height: 25px;
+}
+
+.vditor-toolbar__item .vditor-tooltipped:hover {
+ background-color: var(--hover);
+ transition: all 0.3s;
+ color: var(--foreground);
+}
+
+.vditor-toolbar__item svg {
+ fill: var(--foreground);
+ width: 20px;
+ height: 20px;
+ stroke: var(--foreground);
+}
+.vditor-reset img{
+ max-height: 150px;
+}
+/* .vditor-menu--current {
+ color: #C35AF7 !important;
+} */
+.vditor-hint--current,
+.vditor-hint button:not(.vditor-menu--disabled):hover {
+ background-color: var(--sencondbackground) !important;
+ border-radius: 6px;
+ transition: all 0.3s;
+ color: var(--desc) !important;
+}
+
+.vditor-hint {
+ z-index: 2002;
+ box-shadow: var(--shadow);
+ transition: all 0.3s ease-in-out;
+ border-radius: 12px;
+ background-color: var(--background)!important;
+ padding: 3px;
+ gap: 2px;
+}
+
+.vditor-preview__action {
+ display: none;
+}
+
+.vditor-preview {
+ background-color: transparent;
+ color: var(--foreground);
+ border-left: 1px solid var(--ignore);
+}
+
+.vditor-input {
+ background-color: var(--background);
+ color: var(--foreground);
+}
+
+.vditor-input:focus {
+ background-color: var(--sencondbackground);
+}
+
+.vditor-ir pre.vditor-reset {
+ background-color: transparent;
+}
+
+.vditor-hint button {
+ color: var(--foreground);
+ border-radius: 8px;
+}
+
+.vditor-tooltipped::after {
+ z-index: 10000;
+}
+
+/* tooltip toolbar */
+.vditor-panel {
+ box-shadow: var(--shadow);
+ border-radius: 7px;
+ background-color: var(--background);
+ z-index: 100;
+}
+
+.vditor-panel--arrow:before {
+ display: none;
+}
+
+.vditor-outline {
+ margin-top: 16px;
+ border-radius: 14px;
+ background-color: var(--sencondbackground);
+}
+
+.vditor-outline__title {
+ background-color: transparent;
+}
+
+.vditor-reset h1,
+.vditor-reset h2,
+.vditor-reset h3,
+.vditor-reset h4,
+.vditor-reset h5,
+.vditor-reset h6 {
+ margin-top: 12px;
+ margin-bottom: 8px;
+}
+
+.vditor-reset table tr {
+ background-color: var(--background);
+ border-top: 1px solid var(--desc);
+}
+
+.vditor-reset table td,
+.vditor-reset table th {
+ border: 1px solid var(--desc);
+}
+
+.vditor-reset table tbody tr:nth-child(2n) {
+ background-color: var(--background);
+}
+
+.vditor-reset blockquote {
+ border-left: 0.25em solid #EAB308;
+ color: var(--desc);
+}
\ No newline at end of file