Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
96140f38
Commit
96140f38
authored
Jan 03, 2024
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: tweak dark mode styles
parent
369b8af1
Changes
29
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
62 additions
and
56 deletions
+62
-56
CreateMemoRelationDialog.tsx
web/src/components/CreateMemoRelationDialog.tsx
+1
-1
Code.tsx
web/src/components/MemoContent/Code.tsx
+1
-1
CodeBlock.tsx
web/src/components/MemoContent/CodeBlock.tsx
+1
-1
TagSelector.tsx
web/src/components/MemoEditor/ActionButton/TagSelector.tsx
+6
-3
TagSuggestions.tsx
web/src/components/MemoEditor/Editor/TagSuggestions.tsx
+2
-2
index.tsx
web/src/components/MemoEditor/Editor/index.tsx
+1
-1
MemoEditorDialog.tsx
web/src/components/MemoEditor/MemoEditorDialog.tsx
+1
-1
RelationListView.tsx
web/src/components/MemoEditor/RelationListView.tsx
+2
-2
ResourceListView.tsx
web/src/components/MemoEditor/ResourceListView.tsx
+1
-1
index.tsx
web/src/components/MemoEditor/index.tsx
+5
-3
MemoFilter.tsx
web/src/components/MemoFilter.tsx
+4
-4
MemoRelationListView.tsx
web/src/components/MemoRelationListView.tsx
+1
-1
MobileHeader.tsx
web/src/components/MobileHeader.tsx
+1
-1
PersonalStatistics.tsx
web/src/components/PersonalStatistics.tsx
+8
-12
ResourceIcon.tsx
web/src/components/ResourceIcon.tsx
+1
-1
SearchBar.tsx
web/src/components/SearchBar.tsx
+1
-1
ShareMemoDialog.tsx
web/src/components/ShareMemoDialog.tsx
+1
-1
TagList.tsx
web/src/components/TagList.tsx
+2
-2
global.css
web/src/css/global.css
+1
-1
Root.tsx
web/src/layouts/Root.tsx
+1
-1
base-dialog.less
web/src/less/base-dialog.less
+2
-2
memo.less
web/src/less/memo.less
+3
-3
setting.less
web/src/less/setting.less
+1
-1
Archived.tsx
web/src/pages/Archived.tsx
+1
-1
Inboxes.tsx
web/src/pages/Inboxes.tsx
+2
-2
MemoDetail.tsx
web/src/pages/MemoDetail.tsx
+1
-1
Resources.tsx
web/src/pages/Resources.tsx
+1
-1
SignIn.tsx
web/src/pages/SignIn.tsx
+6
-1
Timeline.tsx
web/src/pages/Timeline.tsx
+3
-3
No files found.
web/src/components/CreateMemoRelationDialog.tsx
View file @
96140f38
...
@@ -96,7 +96,7 @@ const CreateMemoRelationDialog: React.FC<Props> = (props: Props) => {
...
@@ -96,7 +96,7 @@ const CreateMemoRelationDialog: React.FC<Props> = (props: Props) => {
<
div
className=
"w-full flex flex-row justify-start items-start flex-wrap gap-2 mt-1"
>
<
div
className=
"w-full flex flex-row justify-start items-start flex-wrap gap-2 mt-1"
>
{
memoList
.
map
((
memo
)
=>
(
{
memoList
.
map
((
memo
)
=>
(
<
div
<
div
className=
"max-w-[50%] text-sm px-3 py-1 flex flex-row justify-start items-center border rounded-md cursor-pointer truncate opacity-80 dark:text-gray-300 hover:opacity-60 hover:line-through"
className=
"max-w-[50%] text-sm px-3 py-1 flex flex-row justify-start items-center border rounded-md cursor-pointer truncate opacity-80 dark:text-gray-300
dark:border-zinc-700
hover:opacity-60 hover:line-through"
key=
{
memo
.
id
}
key=
{
memo
.
id
}
onClick=
{
()
=>
handleDeleteMemoRelation
(
memo
)
}
onClick=
{
()
=>
handleDeleteMemoRelation
(
memo
)
}
>
>
...
...
web/src/components/MemoContent/Code.tsx
View file @
96140f38
...
@@ -3,7 +3,7 @@ interface Props {
...
@@ -3,7 +3,7 @@ interface Props {
}
}
const
Code
:
React
.
FC
<
Props
>
=
({
content
}:
Props
)
=>
{
const
Code
:
React
.
FC
<
Props
>
=
({
content
}:
Props
)
=>
{
return
<
code
>
{
content
}
</
code
>;
return
<
code
className=
"text-sm"
>
`
{
content
}
`
</
code
>;
};
};
export
default
Code
;
export
default
Code
;
web/src/components/MemoContent/CodeBlock.tsx
View file @
96140f38
...
@@ -29,7 +29,7 @@ const CodeBlock: React.FC<Props> = ({ language, content }: Props) => {
...
@@ -29,7 +29,7 @@ const CodeBlock: React.FC<Props> = ({ language, content }: Props) => {
};
};
return
(
return
(
<
pre
className=
"w-full my-1 p-3 rounded bg-gray-100 dark:bg-zinc-
6
00 whitespace-pre-wrap relative"
>
<
pre
className=
"w-full my-1 p-3 rounded bg-gray-100 dark:bg-zinc-
7
00 whitespace-pre-wrap relative"
>
<
IconButton
<
IconButton
size=
"sm"
size=
"sm"
className=
"!absolute top-0.5 right-0.5 opacity-50"
className=
"!absolute top-0.5 right-0.5 opacity-50"
...
...
web/src/components/MemoEditor/ActionButton/TagSelector.tsx
View file @
96140f38
...
@@ -24,14 +24,17 @@ const TagSelector = (props: Props) => {
...
@@ -24,14 +24,17 @@ const TagSelector = (props: Props) => {
},
[]);
},
[]);
return
(
return
(
<
IconButton
className=
"relative group flex flex-row justify-center items-center p-1 w-auto h-auto mr-1 select-none rounded cursor-pointer text-gray-600 dark:text-gray-400 hover:bg-gray-300 dark:hover:bg-zinc-800 hover:shadow"
>
<
IconButton
className=
"relative group flex flex-row justify-center items-center p-1 w-auto h-auto mr-1 select-none rounded cursor-pointer text-gray-600 dark:!text-gray-400 hover:bg-gray-300 hover:shadow"
size=
"sm"
>
<
Icon
.
Hash
className=
"w-5 h-5 mx-auto"
/>
<
Icon
.
Hash
className=
"w-5 h-5 mx-auto"
/>
<
div
className=
"hidden flex-row justify-start items-start flex-wrap absolute top-8 left-0 mt-1 p-1 z-1 rounded w-52 h-auto max-h-48 overflow-y-auto font-mono shadow bg-zinc-
200 dark:bg-zinc-6
00 group-hover:flex"
>
<
div
className=
"hidden flex-row justify-start items-start flex-wrap absolute top-8 left-0 mt-1 p-1 z-1 rounded w-52 h-auto max-h-48 overflow-y-auto font-mono shadow bg-zinc-
100 dark:bg-zinc-7
00 group-hover:flex"
>
{
tags
.
length
>
0
?
(
{
tags
.
length
>
0
?
(
tags
.
map
((
tag
)
=>
{
tags
.
map
((
tag
)
=>
{
return
(
return
(
<
div
<
div
className=
"w-auto max-w-full text-black dark:text-gray-300 cursor-pointer rounded text-sm leading-6 px-2 hover:bg-zinc-
300 dark:hover:bg-zinc-7
00 shrink-0"
className=
"w-auto max-w-full text-black dark:text-gray-300 cursor-pointer rounded text-sm leading-6 px-2 hover:bg-zinc-
200 dark:hover:bg-zinc-8
00 shrink-0"
onClick=
{
()
=>
onTagSelectorClick
(
tag
)
}
onClick=
{
()
=>
onTagSelectorClick
(
tag
)
}
key=
{
tag
}
key=
{
tag
}
>
>
...
...
web/src/components/MemoEditor/Editor/TagSuggestions.tsx
View file @
96140f38
...
@@ -114,7 +114,7 @@ const TagSuggestions = ({ editorRef, editorActions }: Props) => {
...
@@ -114,7 +114,7 @@ const TagSuggestions = ({ editorRef, editorActions }: Props) => {
if
(
!
isVisibleRef
.
current
||
!
position
)
return
null
;
if
(
!
isVisibleRef
.
current
||
!
position
)
return
null
;
return
(
return
(
<
div
<
div
className=
"z-20 p-1 mt-1 -ml-2 absolute max-w-[12rem] gap-px rounded font-mono flex flex-col justify-start items-start overflow-auto shadow bg-zinc-
200 dark:bg-zinc-6
00"
className=
"z-20 p-1 mt-1 -ml-2 absolute max-w-[12rem] gap-px rounded font-mono flex flex-col justify-start items-start overflow-auto shadow bg-zinc-
100 dark:bg-zinc-7
00"
style=
{
{
left
:
position
.
left
,
top
:
position
.
top
+
position
.
height
}
}
style=
{
{
left
:
position
.
left
,
top
:
position
.
top
+
position
.
height
}
}
>
>
{
suggestionsRef
.
current
.
map
((
tag
,
i
)
=>
(
{
suggestionsRef
.
current
.
map
((
tag
,
i
)
=>
(
...
@@ -122,7 +122,7 @@ const TagSuggestions = ({ editorRef, editorActions }: Props) => {
...
@@ -122,7 +122,7 @@ const TagSuggestions = ({ editorRef, editorActions }: Props) => {
key=
{
tag
}
key=
{
tag
}
onMouseDown=
{
()
=>
autocomplete
(
tag
)
}
onMouseDown=
{
()
=>
autocomplete
(
tag
)
}
className=
{
classNames
(
className=
{
classNames
(
"rounded p-1 px-2 w-full truncate text-sm dark:text-gray-300 cursor-pointer hover:bg-zinc-
300 dark:hover:bg-zinc-7
00"
,
"rounded p-1 px-2 w-full truncate text-sm dark:text-gray-300 cursor-pointer hover:bg-zinc-
200 dark:hover:bg-zinc-8
00"
,
i
===
selected
?
"bg-zinc-300 dark:bg-zinc-700"
:
""
i
===
selected
?
"bg-zinc-300 dark:bg-zinc-700"
:
""
)
}
)
}
>
>
...
...
web/src/components/MemoEditor/Editor/index.tsx
View file @
96140f38
...
@@ -145,7 +145,7 @@ const Editor = forwardRef(function Editor(props: Props, ref: React.ForwardedRef<
...
@@ -145,7 +145,7 @@ const Editor = forwardRef(function Editor(props: Props, ref: React.ForwardedRef<
},
[]);
},
[]);
return
(
return
(
<
div
className=
{
classNames
(
"flex flex-col justify-start items-start relative w-full h-auto bg-inherit dark:text-gray-
2
00"
,
className
)
}
>
<
div
className=
{
classNames
(
"flex flex-col justify-start items-start relative w-full h-auto bg-inherit dark:text-gray-
3
00"
,
className
)
}
>
<
textarea
<
textarea
className=
"w-full h-full max-h-[300px] my-1 text-base resize-none overflow-x-hidden overflow-y-auto bg-transparent outline-none whitespace-pre-wrap word-break"
className=
"w-full h-full max-h-[300px] my-1 text-base resize-none overflow-x-hidden overflow-y-auto bg-transparent outline-none whitespace-pre-wrap word-break"
rows=
{
1
}
rows=
{
1
}
...
...
web/src/components/MemoEditor/MemoEditorDialog.tsx
View file @
96140f38
...
@@ -52,7 +52,7 @@ export default function showMemoEditorDialog(props: Pick<Props, "memoId" | "rela
...
@@ -52,7 +52,7 @@ export default function showMemoEditorDialog(props: Pick<Props, "memoId" | "rela
{
{
className
:
"memo-editor-dialog"
,
className
:
"memo-editor-dialog"
,
dialogName
:
"memo-editor-dialog"
,
dialogName
:
"memo-editor-dialog"
,
containerClassName
:
"dark:!bg-zinc-
7
00"
,
containerClassName
:
"dark:!bg-zinc-
8
00"
,
},
},
MemoEditorDialog
,
MemoEditorDialog
,
props
props
...
...
web/src/components/MemoEditor/RelationListView.tsx
View file @
96140f38
...
@@ -38,13 +38,13 @@ const RelationListView = (props: Props) => {
...
@@ -38,13 +38,13 @@ const RelationListView = (props: Props) => {
return
(
return
(
<
div
<
div
key=
{
memo
.
id
}
key=
{
memo
.
id
}
className=
"w-auto max-w-xs overflow-hidden flex flex-row justify-start items-center bg-
gray-100 dark:bg-zinc-800 hover:opacity-80 rounded-md text-sm p-1 px-2 text-gray-5
00 cursor-pointer hover:line-through"
className=
"w-auto max-w-xs overflow-hidden flex flex-row justify-start items-center bg-
zinc-100 dark:bg-zinc-900 hover:opacity-80 rounded-md text-sm p-1 px-2 text-gray-500 dark:text-gray-4
00 cursor-pointer hover:line-through"
onClick=
{
()
=>
handleDeleteRelation
(
memo
)
}
onClick=
{
()
=>
handleDeleteRelation
(
memo
)
}
>
>
<
Icon
.
Link
className=
"w-4 h-auto shrink-0 opacity-80"
/>
<
Icon
.
Link
className=
"w-4 h-auto shrink-0 opacity-80"
/>
<
span
className=
"px-1 shrink-0 opacity-80"
>
#
{
memo
.
id
}
</
span
>
<
span
className=
"px-1 shrink-0 opacity-80"
>
#
{
memo
.
id
}
</
span
>
<
span
className=
"max-w-full text-ellipsis whitespace-nowrap overflow-hidden"
>
{
memo
.
content
}
</
span
>
<
span
className=
"max-w-full text-ellipsis whitespace-nowrap overflow-hidden"
>
{
memo
.
content
}
</
span
>
<
Icon
.
X
className=
"w-4 h-auto
hover:opacity-80 shrink-0 ml-1
"
/>
<
Icon
.
X
className=
"w-4 h-auto
cursor-pointer opacity-60 hover:opacity-100
"
/>
</
div
>
</
div
>
);
);
})
}
})
}
...
...
web/src/components/MemoEditor/ResourceListView.tsx
View file @
96140f38
...
@@ -22,7 +22,7 @@ const ResourceListView = (props: Props) => {
...
@@ -22,7 +22,7 @@ const ResourceListView = (props: Props) => {
return
(
return
(
<
div
<
div
key=
{
resource
.
id
}
key=
{
resource
.
id
}
className=
"max-w-full flex flex-row justify-start items-center flex-nowrap gap-x-1 bg-
gray-100 dark:bg-zinc-800 px-2 py-1 rounded text-gray-5
00"
className=
"max-w-full flex flex-row justify-start items-center flex-nowrap gap-x-1 bg-
zinc-100 dark:bg-zinc-900 px-2 py-1 rounded text-gray-500 dark:text-gray-4
00"
>
>
<
ResourceIcon
resource=
{
resource
}
className=
"!w-4 !h-4 !opacity-100"
/>
<
ResourceIcon
resource=
{
resource
}
className=
"!w-4 !h-4 !opacity-100"
/>
<
span
className=
"text-sm max-w-[8rem] truncate"
>
{
resource
.
filename
}
</
span
>
<
span
className=
"text-sm max-w-[8rem] truncate"
>
{
resource
.
filename
}
</
span
>
...
...
web/src/components/MemoEditor/index.tsx
View file @
96140f38
...
@@ -357,7 +357,7 @@ const MemoEditor = (props: Props) => {
...
@@ -357,7 +357,7 @@ const MemoEditor = (props: Props) => {
<
div
<
div
className=
{
`${
className=
{
`${
className ?? ""
className ?? ""
} relative w-full flex flex-col justify-start items-start bg-white dark:bg-zinc-
700 px-4 pt-4 rounded-lg border border-gray-200 dark:border-zinc-6
00`
}
} relative w-full flex flex-col justify-start items-start bg-white dark:bg-zinc-
800 px-4 pt-4 rounded-lg border border-gray-200 dark:border-zinc-7
00`
}
tabIndex=
{
0
}
tabIndex=
{
0
}
onKeyDown=
{
handleKeyDown
}
onKeyDown=
{
handleKeyDown
}
onDrop=
{
handleDropEvent
}
onDrop=
{
handleDropEvent
}
...
@@ -368,13 +368,15 @@ const MemoEditor = (props: Props) => {
...
@@ -368,13 +368,15 @@ const MemoEditor = (props: Props) => {
<
div
className=
"flex flex-row justify-start items-center"
>
<
div
className=
"flex flex-row justify-start items-center"
>
<
TagSelector
onTagSelectorClick=
{
(
tag
)
=>
handleTagSelectorClick
(
tag
)
}
/>
<
TagSelector
onTagSelectorClick=
{
(
tag
)
=>
handleTagSelectorClick
(
tag
)
}
/>
<
IconButton
<
IconButton
className=
"flex flex-row justify-center items-center p-1 w-auto h-auto mr-1 select-none rounded cursor-pointer text-gray-600 dark:text-gray-400 hover:bg-gray-300 dark:hover:bg-zinc-800 hover:shadow"
className=
"flex flex-row justify-center items-center p-1 w-auto h-auto mr-1 select-none rounded cursor-pointer text-gray-600 dark:!text-gray-400 hover:bg-gray-300 dark:hover:bg-zinc-800 hover:shadow"
size=
"sm"
onClick=
{
handleUploadFileBtnClick
}
onClick=
{
handleUploadFileBtnClick
}
>
>
<
Icon
.
Image
className=
"w-5 h-5 mx-auto"
/>
<
Icon
.
Image
className=
"w-5 h-5 mx-auto"
/>
</
IconButton
>
</
IconButton
>
<
IconButton
<
IconButton
className=
"flex flex-row justify-center items-center p-1 w-auto h-auto mr-1 select-none rounded cursor-pointer text-gray-600 dark:text-gray-400 hover:bg-gray-300 dark:hover:bg-zinc-800 hover:shadow"
className=
"flex flex-row justify-center items-center p-1 w-auto h-auto mr-1 select-none rounded cursor-pointer text-gray-600 dark:!text-gray-400 hover:bg-gray-300 dark:hover:bg-zinc-800 hover:shadow"
size=
"sm"
onClick=
{
handleAddMemoRelationBtnClick
}
onClick=
{
handleAddMemoRelationBtnClick
}
>
>
<
Icon
.
Link
className=
"w-5 h-5 mx-auto"
/>
<
Icon
.
Link
className=
"w-5 h-5 mx-auto"
/>
...
...
web/src/components/MemoFilter.tsx
View file @
96140f38
...
@@ -18,14 +18,14 @@ const MemoFilter = () => {
...
@@ -18,14 +18,14 @@ const MemoFilter = () => {
return
(
return
(
<
div
<
div
className=
{
`flex flex-row justify-start items-start w-full flex-wrap px-2 pb-2 text-sm font-mono leading-7 dark:text-gray-
3
00 ${
className=
{
`flex flex-row justify-start items-start w-full flex-wrap px-2 pb-2 text-sm font-mono leading-7 dark:text-gray-
4
00 ${
showFilter ? "" : "!hidden"
showFilter ? "" : "!hidden"
}`
}
}`
}
>
>
<
span
className=
"mx-2 text-gray-400"
>
{
t
(
"common.filter"
)
}
:
</
span
>
<
span
className=
"mx-2 text-gray-400"
>
{
t
(
"common.filter"
)
}
:
</
span
>
<
div
<
div
className=
{
className=
{
"max-w-xs flex flex-row justify-start items-center px-2 mr-2 cursor-pointer dark:text-gray-
300 bg-gray-200 dark:bg-zinc-7
00 rounded whitespace-nowrap truncate hover:line-through "
+
"max-w-xs flex flex-row justify-start items-center px-2 mr-2 cursor-pointer dark:text-gray-
400 bg-gray-200 dark:bg-zinc-8
00 rounded whitespace-nowrap truncate hover:line-through "
+
(
tagQuery
?
""
:
"!hidden"
)
(
tagQuery
?
""
:
"!hidden"
)
}
}
onClick=
{
()
=>
{
onClick=
{
()
=>
{
...
@@ -37,7 +37,7 @@ const MemoFilter = () => {
...
@@ -37,7 +37,7 @@ const MemoFilter = () => {
</
div
>
</
div
>
<
div
<
div
className=
{
className=
{
"max-w-xs flex flex-row justify-start items-center px-2 mr-2 cursor-pointer dark:text-gray-
300 bg-gray-200 dark:bg-zinc-7
00 rounded whitespace-nowrap truncate hover:line-through "
+
"max-w-xs flex flex-row justify-start items-center px-2 mr-2 cursor-pointer dark:text-gray-
400 bg-gray-200 dark:bg-zinc-8
00 rounded whitespace-nowrap truncate hover:line-through "
+
(
visibility
?
""
:
"!hidden"
)
(
visibility
?
""
:
"!hidden"
)
}
}
onClick=
{
()
=>
{
onClick=
{
()
=>
{
...
@@ -49,7 +49,7 @@ const MemoFilter = () => {
...
@@ -49,7 +49,7 @@ const MemoFilter = () => {
</
div
>
</
div
>
<
div
<
div
className=
{
className=
{
"max-w-xs flex flex-row justify-start items-center px-2 mr-2 cursor-pointer dark:text-gray-
300 bg-gray-200 dark:bg-zinc-7
00 rounded whitespace-nowrap truncate hover:line-through "
+
"max-w-xs flex flex-row justify-start items-center px-2 mr-2 cursor-pointer dark:text-gray-
400 bg-gray-200 dark:bg-zinc-8
00 rounded whitespace-nowrap truncate hover:line-through "
+
(
textQuery
?
""
:
"!hidden"
)
(
textQuery
?
""
:
"!hidden"
)
}
}
onClick=
{
()
=>
{
onClick=
{
()
=>
{
...
...
web/src/components/MemoRelationListView.tsx
View file @
96140f38
...
@@ -42,7 +42,7 @@ const MemoRelationListView = (props: Props) => {
...
@@ -42,7 +42,7 @@ const MemoRelationListView = (props: Props) => {
return
(
return
(
<
div
key=
{
memo
.
id
}
className=
"block w-auto max-w-[50%]"
>
<
div
key=
{
memo
.
id
}
className=
"block w-auto max-w-[50%]"
>
<
Link
<
Link
className=
"px-2 border rounded-md w-auto text-sm leading-6 flex flex-row justify-start items-center flex-nowrap text-gray-600 dark:text-gray-
300 dark:border-gray-6
00 hover:shadow hover:opacity-80"
className=
"px-2 border rounded-md w-auto text-sm leading-6 flex flex-row justify-start items-center flex-nowrap text-gray-600 dark:text-gray-
400 dark:border-zinc-700 dark:bg-zinc-9
00 hover:shadow hover:opacity-80"
to=
{
`/m/${memo.id}`
}
to=
{
`/m/${memo.id}`
}
unstable_viewTransition
unstable_viewTransition
>
>
...
...
web/src/components/MobileHeader.tsx
View file @
96140f38
...
@@ -17,7 +17,7 @@ const MobileHeader = (props: Props) => {
...
@@ -17,7 +17,7 @@ const MobileHeader = (props: Props) => {
return
(
return
(
<
div
<
div
className=
{
classNames
(
className=
{
classNames
(
"sticky top-0 pt-3 pb-2 sm:pt-2 px-4 sm:px-6 sm:mb-1 bg-zinc-100 dark:bg-zinc-
8
00 bg-opacity-80 backdrop-blur-lg flex md:hidden flex-row justify-between items-center w-full h-auto flex-nowrap shrink-0 z-1"
,
"sticky top-0 pt-3 pb-2 sm:pt-2 px-4 sm:px-6 sm:mb-1 bg-zinc-100 dark:bg-zinc-
9
00 bg-opacity-80 backdrop-blur-lg flex md:hidden flex-row justify-between items-center w-full h-auto flex-nowrap shrink-0 z-1"
,
offsetTop
>
0
&&
"shadow-md"
offsetTop
>
0
&&
"shadow-md"
)
}
)
}
>
>
...
...
web/src/components/PersonalStatistics.tsx
View file @
96140f38
...
@@ -35,32 +35,28 @@ const PersonalStatistics = (props: Props) => {
...
@@ -35,32 +35,28 @@ const PersonalStatistics = (props: Props) => {
},
[
memos
.
length
,
user
.
name
]);
},
[
memos
.
length
,
user
.
name
]);
return
(
return
(
<
div
className=
"w-full border mt-2 py-2 px-3 rounded-md space-y-0.5 bg-zinc-50 dark:bg-zinc-900 dark:border-zinc-800"
>
<
div
className=
"w-full border mt-2 py-2 px-3 rounded-md space-y-0.5
text-gray-500 dark:text-gray-400
bg-zinc-50 dark:bg-zinc-900 dark:border-zinc-800"
>
<
p
className=
"text-sm font-medium
text-gray-500
"
>
Statistics
</
p
>
<
p
className=
"text-sm font-medium"
>
Statistics
</
p
>
<
div
className=
"w-full flex justify-between items-center"
>
<
div
className=
"w-full flex justify-between items-center"
>
<
div
className=
"w-full flex justify-start items-center
text-gray-500
"
>
<
div
className=
"w-full flex justify-start items-center"
>
<
Icon
.
CalendarDays
className=
"w-4 h-auto mr-1"
/>
<
Icon
.
CalendarDays
className=
"w-4 h-auto mr-1"
/>
<
span
className=
"block text-base sm:text-sm"
>
Days
</
span
>
<
span
className=
"block text-base sm:text-sm"
>
Days
</
span
>
</
div
>
</
div
>
<
span
className=
"
text-gray-500
font-mono"
>
{
days
}
</
span
>
<
span
className=
"font-mono"
>
{
days
}
</
span
>
</
div
>
</
div
>
<
div
className=
"w-full flex justify-between items-center"
>
<
div
className=
"w-full flex justify-between items-center"
>
<
div
className=
"w-full flex justify-start items-center
text-gray-500
"
>
<
div
className=
"w-full flex justify-start items-center"
>
<
Icon
.
PencilLine
className=
"w-4 h-auto mr-1"
/>
<
Icon
.
PencilLine
className=
"w-4 h-auto mr-1"
/>
<
span
className=
"block text-base sm:text-sm"
>
Memos
</
span
>
<
span
className=
"block text-base sm:text-sm"
>
Memos
</
span
>
</
div
>
</
div
>
{
isRequesting
?
(
{
isRequesting
?
<
Icon
.
Loader
className=
"animate-spin w-4 h-auto text-gray-400"
/>
:
<
span
className=
"font-mono"
>
{
memoAmount
}
</
span
>
}
<
Icon
.
Loader
className=
"animate-spin w-4 h-auto text-gray-400"
/>
)
:
(
<
span
className=
"text-gray-500 font-mono"
>
{
memoAmount
}
</
span
>
)
}
</
div
>
</
div
>
<
div
className=
"w-full flex justify-between items-center"
>
<
div
className=
"w-full flex justify-between items-center"
>
<
div
className=
"w-full flex justify-start items-center
text-gray-500
"
>
<
div
className=
"w-full flex justify-start items-center"
>
<
Icon
.
Hash
className=
"w-4 h-auto mr-1"
/>
<
Icon
.
Hash
className=
"w-4 h-auto mr-1"
/>
<
span
className=
"block text-base sm:text-sm"
>
Tags
</
span
>
<
span
className=
"block text-base sm:text-sm"
>
Tags
</
span
>
</
div
>
</
div
>
<
span
className=
"
text-gray-500
font-mono"
>
{
tags
}
</
span
>
<
span
className=
"font-mono"
>
{
tags
}
</
span
>
</
div
>
</
div
>
</
div
>
</
div
>
);
);
...
...
web/src/components/ResourceIcon.tsx
View file @
96140f38
...
@@ -27,7 +27,7 @@ const ResourceIcon = (props: Props) => {
...
@@ -27,7 +27,7 @@ const ResourceIcon = (props: Props) => {
return
(
return
(
<
SquareDiv
className=
{
classNames
(
className
,
"flex items-center justify-center overflow-clip"
)
}
>
<
SquareDiv
className=
{
classNames
(
className
,
"flex items-center justify-center overflow-clip"
)
}
>
<
img
<
img
className=
"min-w-full min-h-full object-cover
shadow
"
className=
"min-w-full min-h-full object-cover
border rounded dark:border-none
"
src=
{
resource
.
externalLink
?
resourceUrl
:
resourceUrl
+
"?thumbnail=1"
}
src=
{
resource
.
externalLink
?
resourceUrl
:
resourceUrl
+
"?thumbnail=1"
}
onClick=
{
()
=>
showPreviewImageDialog
(
resourceUrl
)
}
onClick=
{
()
=>
showPreviewImageDialog
(
resourceUrl
)
}
/>
/>
...
...
web/src/components/SearchBar.tsx
View file @
96140f38
...
@@ -30,7 +30,7 @@ const SearchBar = () => {
...
@@ -30,7 +30,7 @@ const SearchBar = () => {
return
(
return
(
<
div
className=
"w-full h-9 flex flex-row justify-start items-center"
>
<
div
className=
"w-full h-9 flex flex-row justify-start items-center"
>
<
Input
<
Input
className=
"w-full !shadow-none !border-gray-200 dark:!border-zinc-800"
className=
"w-full !
text-sm !
shadow-none !border-gray-200 dark:!border-zinc-800"
size=
"md"
size=
"md"
startDecorator=
{
<
Icon
.
Search
className=
"w-4 h-auto opacity-30"
/>
}
startDecorator=
{
<
Icon
.
Search
className=
"w-4 h-auto opacity-30"
/>
}
placeholder=
{
t
(
"memo.search-placeholder"
)
}
placeholder=
{
t
(
"memo.search-placeholder"
)
}
...
...
web/src/components/ShareMemoDialog.tsx
View file @
96140f38
...
@@ -103,7 +103,7 @@ const ShareMemoDialog: React.FC<Props> = (props: Props) => {
...
@@ -103,7 +103,7 @@ const ShareMemoDialog: React.FC<Props> = (props: Props) => {
<
MemoContent
nodes=
{
memo
.
nodes
}
/>
<
MemoContent
nodes=
{
memo
.
nodes
}
/>
<
MemoResourceListView
resourceList=
{
memo
.
resources
}
/>
<
MemoResourceListView
resourceList=
{
memo
.
resources
}
/>
</
div
>
</
div
>
<
div
className=
"flex flex-row justify-between items-center w-full bg-gray-100 dark:bg-zinc-
7
00 py-4 px-6"
>
<
div
className=
"flex flex-row justify-between items-center w-full bg-gray-100 dark:bg-zinc-
9
00 py-4 px-6"
>
<
div
className=
"flex flex-row justify-start items-center"
>
<
div
className=
"flex flex-row justify-start items-center"
>
<
UserAvatar
className=
"mr-2"
avatarUrl=
{
user
.
avatarUrl
}
/>
<
UserAvatar
className=
"mr-2"
avatarUrl=
{
user
.
avatarUrl
}
/>
<
div
className=
"w-auto grow truncate flex mr-2 flex-col justify-center items-start"
>
<
div
className=
"w-auto grow truncate flex mr-2 flex-col justify-center items-start"
>
...
...
web/src/components/TagList.tsx
View file @
96140f38
...
@@ -75,7 +75,7 @@ const TagList = () => {
...
@@ -75,7 +75,7 @@ const TagList = () => {
<
span
className=
"text-sm leading-6 font-mono text-gray-400"
>
{
t
(
"common.tags"
)
}
</
span
>
<
span
className=
"text-sm leading-6 font-mono text-gray-400"
>
{
t
(
"common.tags"
)
}
</
span
>
<
button
<
button
onClick=
{
()
=>
showCreateTagDialog
()
}
onClick=
{
()
=>
showCreateTagDialog
()
}
className=
"flex flex-col justify-center items-center w-5 h-5 bg-gray-200 dark:bg-zinc-
7
00 rounded ml-2 hover:shadow"
className=
"flex flex-col justify-center items-center w-5 h-5 bg-gray-200 dark:bg-zinc-
8
00 rounded ml-2 hover:shadow"
>
>
<
Icon
.
Plus
className=
"w-4 h-4 text-gray-400"
/>
<
Icon
.
Plus
className=
"w-4 h-4 text-gray-400"
/>
</
button
>
</
button
>
...
@@ -141,7 +141,7 @@ const TagItemContainer: React.FC<TagItemContainerProps> = (props: TagItemContain
...
@@ -141,7 +141,7 @@ const TagItemContainer: React.FC<TagItemContainerProps> = (props: TagItemContain
</
div
>
</
div
>
{
hasSubTags
?
(
{
hasSubTags
?
(
<
div
<
div
className=
{
`w-[calc(100%-0.5rem)] flex flex-col justify-start items-start h-auto ml-2 pl-2 border-l-2 border-l-gray-200 dark:border-l-
gray-4
00 ${
className=
{
`w-[calc(100%-0.5rem)] flex flex-col justify-start items-start h-auto ml-2 pl-2 border-l-2 border-l-gray-200 dark:border-l-
zinc-8
00 ${
!showSubTags && "!hidden"
!showSubTags && "!hidden"
}`
}
}`
}
>
>
...
...
web/src/css/global.css
View file @
96140f38
body
{
body
{
@apply
text-base
w-full
min-h-[100svh]
p-0
m-0
bg-zinc-100
dark
:
bg-zinc-
8
00
;
@apply
text-base
w-full
min-h-[100svh]
p-0
m-0
bg-zinc-100
dark
:
bg-zinc-
9
00
;
}
}
#root
{
#root
{
...
...
web/src/layouts/Root.tsx
View file @
96140f38
...
@@ -11,7 +11,7 @@ function Root() {
...
@@ -11,7 +11,7 @@ function Root() {
<
div
className=
"w-full min-h-full"
>
<
div
className=
"w-full min-h-full"
>
<
div
className=
"w-full sm:pl-56 md:pl-64 mx-auto flex flex-row justify-center items-start"
>
<
div
className=
"w-full sm:pl-56 md:pl-64 mx-auto flex flex-row justify-center items-start"
>
{
sm
&&
(
{
sm
&&
(
<
div
className=
"hidden sm:block fixed top-0 left-0 w-56 md:w-64 px-4 border-r dark:border-zinc-800 h-full bg-zinc-50 dark:bg-zinc-
700 dark:bg-opacity-4
0 transition-all hover:shadow-xl z-2"
>
<
div
className=
"hidden sm:block fixed top-0 left-0 w-56 md:w-64 px-4 border-r dark:border-zinc-800 h-full bg-zinc-50 dark:bg-zinc-
800 dark:bg-opacity-6
0 transition-all hover:shadow-xl z-2"
>
<
Navigation
/>
<
Navigation
/>
</
div
>
</
div
>
)
}
)
}
...
...
web/src/less/base-dialog.less
View file @
96140f38
...
@@ -10,14 +10,14 @@
...
@@ -10,14 +10,14 @@
}
}
> .dialog-container {
> .dialog-container {
@apply max-w-full shadow flex flex-col justify-start items-start bg-white dark:bg-zinc-800 dark:text-gray-
2
00 p-4 rounded-lg;
@apply max-w-full shadow flex flex-col justify-start items-start bg-white dark:bg-zinc-800 dark:text-gray-
3
00 p-4 rounded-lg;
> .dialog-header-container {
> .dialog-header-container {
@apply flex flex-row justify-between items-center w-full mb-4;
@apply flex flex-row justify-between items-center w-full mb-4;
> .title-text {
> .title-text {
> .icon-text {
> .icon-text {
@apply mr-2 text-base;
@apply mr-2 text-base
dark:text-gray-300
;
}
}
}
}
...
...
web/src/less/memo.less
View file @
96140f38
.memo-wrapper {
.memo-wrapper {
@apply relative flex flex-col justify-start items-start w-full p-4 pt-3 mb-2 bg-white dark:bg-zinc-
700 rounded-lg border border-white dark:border-zinc-600 hover:border-gray-200 dark:hover:border-zinc-6
00;
@apply relative flex flex-col justify-start items-start w-full p-4 pt-3 mb-2 bg-white dark:bg-zinc-
800 rounded-lg border border-white dark:border-zinc-800 hover:border-gray-200 dark:hover:border-zinc-7
00;
&.pinned {
&.pinned {
@apply border-gray-200 border dark:border-zinc-
6
00;
@apply border-gray-200 border dark:border-zinc-
7
00;
}
}
> .memo-top-wrapper {
> .memo-top-wrapper {
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
@apply hidden flex-col justify-start items-center absolute top-2 -right-4 flex-nowrap hover:flex p-3;
@apply hidden flex-col justify-start items-center absolute top-2 -right-4 flex-nowrap hover:flex p-3;
> .more-action-btns-container {
> .more-action-btns-container {
@apply w-auto h-auto p-1 z-1 whitespace-nowrap rounded-lg bg-white dark:bg-zinc-
8
00;
@apply w-auto h-auto p-1 z-1 whitespace-nowrap rounded-lg bg-white dark:bg-zinc-
7
00;
box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
> .btn {
> .btn {
...
...
web/src/less/setting.less
View file @
96140f38
.setting-page-wrapper {
.setting-page-wrapper {
@apply flex flex-row justify-start items-start relative w-full h-full shadow p-4 rounded-lg bg-white dark:bg-zinc-
700 dark:text-gray-2
00 sm:gap-x-4;
@apply flex flex-row justify-start items-start relative w-full h-full shadow p-4 rounded-lg bg-white dark:bg-zinc-
800 dark:text-gray-3
00 sm:gap-x-4;
> .section-selector-container {
> .section-selector-container {
@apply hidden sm:flex flex-col justify-start items-start sm:w-40 h-auto sm:h-full shrink-0 pb-2 border-r dark:border-r-zinc-600;
@apply hidden sm:flex flex-col justify-start items-start sm:w-40 h-auto sm:h-full shrink-0 pb-2 border-r dark:border-r-zinc-600;
...
...
web/src/pages/Archived.tsx
View file @
96140f38
...
@@ -86,7 +86,7 @@ const Archived = () => {
...
@@ -86,7 +86,7 @@ const Archived = () => {
{
archivedMemos
.
map
((
memo
)
=>
(
{
archivedMemos
.
map
((
memo
)
=>
(
<
div
<
div
key=
{
memo
.
id
}
key=
{
memo
.
id
}
className=
"relative flex flex-col justify-start items-start w-full p-4 pt-3 mb-2 bg-white dark:bg-zinc-
7
00 rounded-lg"
className=
"relative flex flex-col justify-start items-start w-full p-4 pt-3 mb-2 bg-white dark:bg-zinc-
8
00 rounded-lg"
>
>
<
div
className=
"w-full mb-1 flex flex-row justify-between items-center"
>
<
div
className=
"w-full mb-1 flex flex-row justify-between items-center"
>
<
div
className=
"w-full max-w-[calc(100%-20px)] flex flex-row justify-start items-center mr-1"
>
<
div
className=
"w-full max-w-[calc(100%-20px)] flex flex-row justify-start items-center mr-1"
>
...
...
web/src/pages/Inboxes.tsx
View file @
96140f38
...
@@ -23,13 +23,13 @@ const Inboxes = () => {
...
@@ -23,13 +23,13 @@ const Inboxes = () => {
<
section
className=
"@container w-full max-w-5xl min-h-full flex flex-col justify-start items-center sm:pt-3 md:pt-6 pb-8"
>
<
section
className=
"@container w-full max-w-5xl min-h-full flex flex-col justify-start items-center sm:pt-3 md:pt-6 pb-8"
>
<
MobileHeader
/>
<
MobileHeader
/>
<
div
className=
"w-full px-4 sm:px-6"
>
<
div
className=
"w-full px-4 sm:px-6"
>
<
div
className=
"w-full shadow flex flex-col justify-start items-start px-4 py-3 rounded-xl bg-white dark:bg-zinc-
7
00 text-black dark:text-gray-300"
>
<
div
className=
"w-full shadow flex flex-col justify-start items-start px-4 py-3 rounded-xl bg-white dark:bg-zinc-
8
00 text-black dark:text-gray-300"
>
<
div
className=
"relative w-full flex flex-row justify-between items-center"
>
<
div
className=
"relative w-full flex flex-row justify-between items-center"
>
<
p
className=
"px-2 py-1 flex flex-row justify-start items-center select-none opacity-80"
>
<
p
className=
"px-2 py-1 flex flex-row justify-start items-center select-none opacity-80"
>
<
Icon
.
Bell
className=
"w-5 h-auto mr-1"
/>
{
t
(
"common.inbox"
)
}
<
Icon
.
Bell
className=
"w-5 h-auto mr-1"
/>
{
t
(
"common.inbox"
)
}
</
p
>
</
p
>
</
div
>
</
div
>
<
div
className=
"w-full h-auto flex flex-col justify-start items-start px-2 pb-4
bg-white dark:bg-zinc-700
"
>
<
div
className=
"w-full h-auto flex flex-col justify-start items-start px-2 pb-4"
>
{
inboxes
.
length
===
0
&&
(
{
inboxes
.
length
===
0
&&
(
<
div
className=
"w-full mt-4 mb-8 flex flex-col justify-center items-center italic"
>
<
div
className=
"w-full mt-4 mb-8 flex flex-col justify-center items-center italic"
>
<
Empty
/>
<
Empty
/>
...
...
web/src/pages/MemoDetail.tsx
View file @
96140f38
...
@@ -115,7 +115,7 @@ const MemoDetail = () => {
...
@@ -115,7 +115,7 @@ const MemoDetail = () => {
<
section
className=
"@container w-full max-w-5xl min-h-full flex flex-col justify-start items-center sm:pt-3 md:pt-6 pb-8"
>
<
section
className=
"@container w-full max-w-5xl min-h-full flex flex-col justify-start items-center sm:pt-3 md:pt-6 pb-8"
>
<
MobileHeader
/>
<
MobileHeader
/>
<
div
className=
"w-full px-4 sm:px-6"
>
<
div
className=
"w-full px-4 sm:px-6"
>
<
div
className=
"relative flex-grow w-full min-h-full flex flex-col justify-start items-start border dark:border-zinc-700 bg-white dark:bg-zinc-
7
00 shadow hover:shadow-xl transition-all p-4 pb-3 rounded-lg"
>
<
div
className=
"relative flex-grow w-full min-h-full flex flex-col justify-start items-start border dark:border-zinc-700 bg-white dark:bg-zinc-
8
00 shadow hover:shadow-xl transition-all p-4 pb-3 rounded-lg"
>
<
div
className=
"mb-3"
>
<
div
className=
"mb-3"
>
<
Link
to=
{
`/u/${encodeURIComponent(extractUsernameFromName(memo.creator))}`
}
unstable_viewTransition
>
<
Link
to=
{
`/u/${encodeURIComponent(extractUsernameFromName(memo.creator))}`
}
unstable_viewTransition
>
<
span
className=
"w-full flex flex-row justify-start items-center"
>
<
span
className=
"w-full flex flex-row justify-start items-center"
>
...
...
web/src/pages/Resources.tsx
View file @
96140f38
...
@@ -69,7 +69,7 @@ const Resources = () => {
...
@@ -69,7 +69,7 @@ const Resources = () => {
<
section
className=
"@container w-full max-w-5xl min-h-full flex flex-col justify-start items-center sm:pt-3 md:pt-6 pb-8"
>
<
section
className=
"@container w-full max-w-5xl min-h-full flex flex-col justify-start items-center sm:pt-3 md:pt-6 pb-8"
>
<
MobileHeader
/>
<
MobileHeader
/>
<
div
className=
"w-full px-4 sm:px-6"
>
<
div
className=
"w-full px-4 sm:px-6"
>
<
div
className=
"w-full shadow flex flex-col justify-start items-start px-4 py-3 rounded-xl bg-white dark:bg-zinc-
7
00 text-black dark:text-gray-300"
>
<
div
className=
"w-full shadow flex flex-col justify-start items-start px-4 py-3 rounded-xl bg-white dark:bg-zinc-
8
00 text-black dark:text-gray-300"
>
<
div
className=
"relative w-full flex flex-row justify-between items-center"
>
<
div
className=
"relative w-full flex flex-row justify-between items-center"
>
<
p
className=
"px-2 py-1 flex flex-row justify-start items-center select-none opacity-80"
>
<
p
className=
"px-2 py-1 flex flex-row justify-start items-center select-none opacity-80"
>
<
Icon
.
Paperclip
className=
"w-5 h-auto mr-1"
/>
{
t
(
"common.resources"
)
}
<
Icon
.
Paperclip
className=
"w-5 h-auto mr-1"
/>
{
t
(
"common.resources"
)
}
...
...
web/src/pages/SignIn.tsx
View file @
96140f38
...
@@ -142,7 +142,12 @@ const SignIn = () => {
...
@@ -142,7 +142,12 @@ const SignIn = () => {
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className=
"flex flex-row justify-start items-center w-full mt-6"
>
<
div
className=
"flex flex-row justify-start items-center w-full mt-6"
>
<
Checkbox
label=
{
t
(
"common.remember-me"
)
}
checked=
{
remember
}
onChange=
{
(
e
)
=>
setRemember
(
e
.
target
.
checked
)
}
/>
<
Checkbox
className=
"dark:!text-gray-400"
label=
{
t
(
"common.remember-me"
)
}
checked=
{
remember
}
onChange=
{
(
e
)
=>
setRemember
(
e
.
target
.
checked
)
}
/>
</
div
>
</
div
>
<
div
className=
"flex flex-row justify-end items-center w-full mt-6"
>
<
div
className=
"flex flex-row justify-end items-center w-full mt-6"
>
<
Button
<
Button
...
...
web/src/pages/Timeline.tsx
View file @
96140f38
...
@@ -61,7 +61,7 @@ const Timeline = () => {
...
@@ -61,7 +61,7 @@ const Timeline = () => {
<
section
className=
"@container w-full max-w-5xl min-h-full flex flex-col justify-start items-center sm:pt-3 md:pt-6 pb-8"
>
<
section
className=
"@container w-full max-w-5xl min-h-full flex flex-col justify-start items-center sm:pt-3 md:pt-6 pb-8"
>
<
MobileHeader
/>
<
MobileHeader
/>
<
div
className=
"w-full px-4 sm:px-6"
>
<
div
className=
"w-full px-4 sm:px-6"
>
<
div
className=
"w-full shadow flex flex-col justify-start items-start px-4 py-3 rounded-xl bg-white dark:bg-zinc-
7
00 text-black dark:text-gray-300"
>
<
div
className=
"w-full shadow flex flex-col justify-start items-start px-4 py-3 rounded-xl bg-white dark:bg-zinc-
8
00 text-black dark:text-gray-300"
>
<
div
className=
"relative w-full flex flex-row justify-start items-center"
>
<
div
className=
"relative w-full flex flex-row justify-start items-center"
>
<
p
<
p
className=
"px-2 py-1 mr-2 flex flex-row justify-start items-center cursor-pointer select-none rounded opacity-80 hover:bg-gray-100 dark:hover:bg-zinc-700"
className=
"px-2 py-1 mr-2 flex flex-row justify-start items-center cursor-pointer select-none rounded opacity-80 hover:bg-gray-100 dark:hover:bg-zinc-700"
...
@@ -89,7 +89,7 @@ const Timeline = () => {
...
@@ -89,7 +89,7 @@ const Timeline = () => {
handleClickAway=
{
()
=>
toggleShowDatePicker
(
false
)
}
handleClickAway=
{
()
=>
toggleShowDatePicker
(
false
)
}
/>
/>
</
div
>
</
div
>
<
div
className=
"w-full h-auto flex flex-col justify-start items-start px-2 pb-4 bg-white dark:bg-zinc-
7
00"
>
<
div
className=
"w-full h-auto flex flex-col justify-start items-start px-2 pb-4 bg-white dark:bg-zinc-
8
00"
>
<
div
className=
"flex flex-col justify-start items-start w-full mt-2"
>
<
div
className=
"flex flex-col justify-start items-start w-full mt-2"
>
{
sortedMemos
.
map
((
memo
,
index
)
=>
(
{
sortedMemos
.
map
((
memo
,
index
)
=>
(
<
div
<
div
...
@@ -101,7 +101,7 @@ const Timeline = () => {
...
@@ -101,7 +101,7 @@ const Timeline = () => {
{
index
!==
sortedMemos
.
length
-
1
&&
(
{
index
!==
sortedMemos
.
length
-
1
&&
(
<
div
className=
"absolute top-2 left-[7px] h-full w-0.5 bg-gray-400 dark:bg-gray-500 block"
></
div
>
<
div
className=
"absolute top-2 left-[7px] h-full w-0.5 bg-gray-400 dark:bg-gray-500 block"
></
div
>
)
}
)
}
<
div
className=
"border-4 rounded-full border-white relative dark:border-zinc-
7
00"
>
<
div
className=
"border-4 rounded-full border-white relative dark:border-zinc-
8
00"
>
<
Icon
.
Circle
className=
"w-2 h-auto bg-gray-400 text-gray-400 dark:bg-gray-500 dark:text-gray-500 rounded-full"
/>
<
Icon
.
Circle
className=
"w-2 h-auto bg-gray-400 text-gray-400 dark:bg-gray-500 dark:text-gray-500 rounded-full"
/>
</
div
>
</
div
>
</
div
>
</
div
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment